diff --git a/composer.json b/composer.json index 3ad23955..cec9b8e9 100644 --- a/composer.json +++ b/composer.json @@ -44,6 +44,7 @@ "phpmailer/phpmailer": "^6.9", "phpoffice/phpspreadsheet": "^4.1", "proengsoft/laravel-jsvalidation": "^4.0.0", + "robmorgan/phinx": "^0.16.11", "socialiteproviders/microsoft": "^4.7", "spatie/laravel-query-builder": "^5.0", "vanguardapp/activity-log": "^6.0", diff --git a/composer.lock b/composer.lock index 764458ae..cb668c8c 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9c4f1e3bc3ee2180211c055e70635aef", + "content-hash": "076e7721d08cfea8b06ce75dd8c6c576", "packages": [ { "name": "akaunting/laravel-setting", @@ -251,6 +251,330 @@ ], "time": "2023-11-29T23:19:16+00:00" }, + { + "name": "cakephp/chronos", + "version": "3.5.0", + "source": { + "type": "git", + "url": "https://github.com/cakephp/chronos.git", + "reference": "e6e777b534244911566face8a5dbdbd7f7bda5a6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cakephp/chronos/zipball/e6e777b534244911566face8a5dbdbd7f7bda5a6", + "reference": "e6e777b534244911566face8a5dbdbd7f7bda5a6", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/clock": "^1.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "cakephp/cakephp-codesniffer": "^5.0", + "phpunit/phpunit": "^10.5.58 || ^11.5.3 || ^12.1.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cake\\Chronos\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "http://nesbot.com" + }, + { + "name": "The CakePHP Team", + "homepage": "https://cakephp.org" + } + ], + "description": "A simple API extension for DateTime.", + "homepage": "https://cakephp.org", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "issues": "https://github.com/cakephp/chronos/issues", + "source": "https://github.com/cakephp/chronos" + }, + "time": "2026-04-10T02:50:39+00:00" + }, + { + "name": "cakephp/core", + "version": "5.3.6", + "source": { + "type": "git", + "url": "https://github.com/cakephp/core.git", + "reference": "9c458b0e9322ec88bc4c758b33cde6a0abf49d12" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cakephp/core/zipball/9c458b0e9322ec88bc4c758b33cde6a0abf49d12", + "reference": "9c458b0e9322ec88bc4c758b33cde6a0abf49d12", + "shasum": "" + }, + "require": { + "cakephp/utility": "^5.3.0", + "league/container": "^5.1", + "php": ">=8.2", + "psr/container": "^1.1 || ^2.0" + }, + "provide": { + "psr/container-implementation": "^2.0" + }, + "suggest": { + "cakephp/cache": "To use Configure::store() and restore().", + "cakephp/event": "To use PluginApplicationInterface or plugin applications.", + "league/container": "To use Container and ServiceProvider classes" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-5.next": "5.4.x-dev" + } + }, + "autoload": { + "files": [ + "functions.php" + ], + "psr-4": { + "Cake\\Core\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "CakePHP Community", + "homepage": "https://github.com/cakephp/core/graphs/contributors" + } + ], + "description": "CakePHP Framework Core classes", + "homepage": "https://cakephp.org", + "keywords": [ + "cakephp", + "core", + "framework" + ], + "support": { + "forum": "https://stackoverflow.com/tags/cakephp", + "irc": "irc://irc.freenode.org/cakephp", + "issues": "https://github.com/cakephp/cakephp/issues", + "source": "https://github.com/cakephp/core" + }, + "time": "2026-05-15T03:31:14+00:00" + }, + { + "name": "cakephp/database", + "version": "5.3.6", + "source": { + "type": "git", + "url": "https://github.com/cakephp/database.git", + "reference": "442d12bf0a1edeffc555a59de9f955cb0619c7ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cakephp/database/zipball/442d12bf0a1edeffc555a59de9f955cb0619c7ca", + "reference": "442d12bf0a1edeffc555a59de9f955cb0619c7ca", + "shasum": "" + }, + "require": { + "cakephp/chronos": "^3.3", + "cakephp/core": "^5.3.0", + "cakephp/datasource": "^5.3.0", + "php": ">=8.2", + "psr/log": "^3.0" + }, + "require-dev": { + "cakephp/i18n": "^5.3.0", + "cakephp/log": "^5.3.0" + }, + "suggest": { + "cakephp/i18n": "If you are using locale-aware datetime formats.", + "cakephp/log": "If you want to use query logging without providing a logger yourself." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-5.next": "5.4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Cake\\Database\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "CakePHP Community", + "homepage": "https://github.com/cakephp/database/graphs/contributors" + } + ], + "description": "Flexible and powerful Database abstraction library with a familiar PDO-like API", + "homepage": "https://cakephp.org", + "keywords": [ + "abstraction", + "cakephp", + "database", + "database abstraction", + "pdo" + ], + "support": { + "forum": "https://stackoverflow.com/tags/cakephp", + "irc": "irc://irc.freenode.org/cakephp", + "issues": "https://github.com/cakephp/cakephp/issues", + "source": "https://github.com/cakephp/database" + }, + "time": "2026-05-21T19:38:13+00:00" + }, + { + "name": "cakephp/datasource", + "version": "5.3.6", + "source": { + "type": "git", + "url": "https://github.com/cakephp/datasource.git", + "reference": "b768f0c0bf0fca815f83c4caef14e7fbb2409bf5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cakephp/datasource/zipball/b768f0c0bf0fca815f83c4caef14e7fbb2409bf5", + "reference": "b768f0c0bf0fca815f83c4caef14e7fbb2409bf5", + "shasum": "" + }, + "require": { + "cakephp/core": "^5.3.0", + "php": ">=8.2", + "psr/simple-cache": "^2.0 || ^3.0" + }, + "require-dev": { + "cakephp/cache": "^5.3.0", + "cakephp/collection": "^5.3.0", + "cakephp/utility": "^5.3.0" + }, + "suggest": { + "cakephp/cache": "If you decide to use Query caching.", + "cakephp/collection": "If you decide to use ResultSetInterface.", + "cakephp/utility": "If you decide to use EntityTrait." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-5.next": "5.4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Cake\\Datasource\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "CakePHP Community", + "homepage": "https://github.com/cakephp/datasource/graphs/contributors" + } + ], + "description": "Provides connection managing and traits for Entities and Queries that can be reused for different datastores", + "homepage": "https://cakephp.org", + "keywords": [ + "cakephp", + "connection management", + "datasource", + "entity", + "query" + ], + "support": { + "forum": "https://stackoverflow.com/tags/cakephp", + "irc": "irc://irc.freenode.org/cakephp", + "issues": "https://github.com/cakephp/cakephp/issues", + "source": "https://github.com/cakephp/datasource" + }, + "time": "2026-05-20T10:27:33+00:00" + }, + { + "name": "cakephp/utility", + "version": "5.3.6", + "source": { + "type": "git", + "url": "https://github.com/cakephp/utility.git", + "reference": "4c703a010b9d955fed44731669e35d3043425cc7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cakephp/utility/zipball/4c703a010b9d955fed44731669e35d3043425cc7", + "reference": "4c703a010b9d955fed44731669e35d3043425cc7", + "shasum": "" + }, + "require": { + "cakephp/core": "^5.3.0", + "php": ">=8.2" + }, + "suggest": { + "ext-intl": "To use Text::transliterate() or Text::slug()", + "lib-ICU": "To use Text::transliterate() or Text::slug()" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-5.next": "5.4.x-dev" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Cake\\Utility\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "CakePHP Community", + "homepage": "https://github.com/cakephp/utility/graphs/contributors" + } + ], + "description": "CakePHP Utility classes such as Inflector, String, Hash, and Security", + "homepage": "https://cakephp.org", + "keywords": [ + "cakephp", + "hash", + "inflector", + "security", + "string", + "utility" + ], + "support": { + "forum": "https://stackoverflow.com/tags/cakephp", + "irc": "irc://irc.freenode.org/cakephp", + "issues": "https://github.com/cakephp/cakephp/issues", + "source": "https://github.com/cakephp/utility" + }, + "time": "2026-05-21T19:38:13+00:00" + }, { "name": "carbonphp/carbon-doctrine-types", "version": "3.2.0", @@ -2627,6 +2951,90 @@ ], "time": "2022-12-11T20:36:23+00:00" }, + { + "name": "league/container", + "version": "5.2.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/container.git", + "reference": "58accbc032f0090a9bd08326f93062c5a658b2c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/container/zipball/58accbc032f0090a9bd08326f93062c5a658b2c5", + "reference": "58accbc032f0090a9bd08326f93062c5a658b2c5", + "shasum": "" + }, + "require": { + "php": "^8.1", + "psr/container": "^2.0.2", + "psr/event-dispatcher": "^1.0" + }, + "provide": { + "psr/container-implementation": "^1.0" + }, + "replace": { + "orno/di": "~2.0" + }, + "require-dev": { + "nette/php-generator": "^4.1", + "nikic/php-parser": "^5.0", + "phpstan/phpstan": "^2.1.11", + "phpunit/phpunit": "^10.5.45|^11.5.15|^12.0", + "roave/security-advisories": "dev-latest", + "scrutinizer/ocular": "^1.9", + "squizlabs/php_codesniffer": "^3.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev", + "dev-2.x": "2.x-dev", + "dev-3.x": "3.x-dev", + "dev-4.x": "4.x-dev", + "dev-5.x": "5.x-dev", + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Container\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Phil Bennett", + "email": "mail@philbennett.co.uk", + "role": "Developer" + } + ], + "description": "A fast and intuitive dependency injection container.", + "homepage": "https://github.com/thephpleague/container", + "keywords": [ + "container", + "dependency", + "di", + "injection", + "league", + "provider", + "service" + ], + "support": { + "issues": "https://github.com/thephpleague/container/issues", + "source": "https://github.com/thephpleague/container/tree/5.2.0" + }, + "funding": [ + { + "url": "https://github.com/philipobenito", + "type": "github" + } + ], + "time": "2026-03-19T18:52:39+00:00" + }, { "name": "league/flysystem", "version": "3.28.0", @@ -4980,6 +5388,93 @@ ], "time": "2024-04-27T21:32:50+00:00" }, + { + "name": "robmorgan/phinx", + "version": "0.16.11", + "source": { + "type": "git", + "url": "https://github.com/cakephp/phinx.git", + "reference": "a03014fea316ba021fc0776982e5bed2d10228d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cakephp/phinx/zipball/a03014fea316ba021fc0776982e5bed2d10228d4", + "reference": "a03014fea316ba021fc0776982e5bed2d10228d4", + "shasum": "" + }, + "require": { + "cakephp/database": "^5.0.2", + "composer-runtime-api": "^2.0", + "php-64bit": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/config": "^4.0|^5.0|^6.0|^7.0|^8.0", + "symfony/console": "^6.0|^7.0|^8.0" + }, + "require-dev": { + "cakephp/cakephp-codesniffer": "^5.0", + "cakephp/i18n": "^5.0", + "ext-json": "*", + "ext-pdo": "*", + "phpunit/phpunit": "^10.5", + "symfony/yaml": "^4.0|^5.0|^6.0|^7.0|^8.0" + }, + "suggest": { + "ext-json": "Install if using JSON configuration format", + "ext-pdo": "PDO extension is needed", + "symfony/yaml": "Install if using YAML configuration format" + }, + "bin": [ + "bin/phinx" + ], + "type": "library", + "autoload": { + "psr-4": { + "Phinx\\": "src/Phinx/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Rob Morgan", + "email": "robbym@gmail.com", + "homepage": "https://robmorgan.id.au", + "role": "Lead Developer" + }, + { + "name": "Woody Gilk", + "email": "woody.gilk@gmail.com", + "homepage": "https://shadowhand.me", + "role": "Developer" + }, + { + "name": "Richard Quadling", + "email": "rquadling@gmail.com", + "role": "Developer" + }, + { + "name": "CakePHP Community", + "homepage": "https://github.com/cakephp/phinx/graphs/contributors", + "role": "Developer" + } + ], + "description": "Phinx makes it ridiculously easy to manage the database migrations for your PHP app.", + "homepage": "https://phinx.org", + "keywords": [ + "database", + "database migrations", + "db", + "migrations", + "phinx" + ], + "support": { + "issues": "https://github.com/cakephp/phinx/issues", + "source": "https://github.com/cakephp/phinx/tree/0.16.11" + }, + "time": "2026-03-15T00:04:32+00:00" + }, { "name": "socialiteproviders/manager", "version": "v4.8.1", @@ -5312,6 +5807,85 @@ ], "time": "2024-05-31T14:57:53+00:00" }, + { + "name": "symfony/config", + "version": "v7.4.10", + "source": { + "type": "git", + "url": "https://github.com/symfony/config.git", + "reference": "d91b6c7cd2a8c9a9c2b8d26c8f5ed48edf99ef57" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/config/zipball/d91b6c7cd2a8c9a9c2b8d26c8f5ed48edf99ef57", + "reference": "d91b6c7cd2a8c9a9c2b8d26c8f5ed48edf99ef57", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/filesystem": "^7.1|^8.0", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/finder": "<6.4", + "symfony/service-contracts": "<2.5" + }, + "require-dev": { + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/config/tree/v7.4.10" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-05-03T14:20:49+00:00" + }, { "name": "symfony/console", "version": "v7.1.3", @@ -5768,6 +6342,76 @@ ], "time": "2024-04-18T09:32:20+00:00" }, + { + "name": "symfony/filesystem", + "version": "v7.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "d721ea61b4a5fba8c5b6e7c1feda19efea144b50" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/d721ea61b4a5fba8c5b6e7c1feda19efea144b50", + "reference": "d721ea61b4a5fba8c5b6e7c1feda19efea144b50", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { + "symfony/process": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v7.4.11" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-05-11T16:38:44+00:00" + }, { "name": "symfony/finder", "version": "v7.1.3", @@ -11355,6 +11999,6 @@ "php": "^8.2.0", "ext-json": "*" }, - "platform-dev": [], + "platform-dev": {}, "plugin-api-version": "2.6.0" } diff --git a/db/migrations/20260615093852_create_company_brand_department_tables.php b/db/migrations/20260615093852_create_company_brand_department_tables.php new file mode 100644 index 00000000..ada248dc --- /dev/null +++ b/db/migrations/20260615093852_create_company_brand_department_tables.php @@ -0,0 +1,192 @@ +table('companies', ['id' => 'idcompany', 'signed' => false]) + ->addColumn('company_name', 'string', ['limit' => 255]) + ->addColumn('legal_name', 'string', ['limit' => 255, 'null' => true]) + ->addColumn('vat_number', 'string', ['limit' => 50, 'null' => true]) + ->addColumn('external_code', 'string', ['limit' => 100, 'null' => true]) + ->addColumn('address', 'string', ['limit' => 255, 'null' => true]) + ->addColumn('city', 'string', ['limit' => 100, 'null' => true]) + ->addColumn('zip', 'string', ['limit' => 50, 'null' => true]) + ->addColumn('country_id', 'integer', ['signed' => false, 'null' => true]) + ->addColumn('email', 'string', ['limit' => 191, 'null' => true]) + ->addColumn('phone', 'string', ['limit' => 50, 'null' => true]) + ->addColumn('status', 'enum', [ + 'values' => ['active', 'inactive', 'suspended'], + 'default' => 'active', + ]) + ->addTimestamps() + ->addIndex(['company_name']) + ->addIndex(['external_code']) + ->addIndex(['status']) + ->addForeignKey( + 'country_id', + 'auth_countries', + 'id', + [ + 'delete' => 'SET_NULL', + 'update' => 'CASCADE', + ] + ) + ->create(); + + /* + * Brands table + * Brand/division registry linked to a company. + */ + $this->table('brands', ['id' => 'idbrand', 'signed' => false]) + ->addColumn('idcompany', 'integer', ['signed' => false]) + ->addColumn('brand_name', 'string', ['limit' => 255]) + ->addColumn('external_brand_code', 'string', ['limit' => 100, 'null' => true]) + ->addColumn('status', 'enum', [ + 'values' => ['active', 'inactive'], + 'default' => 'active', + ]) + ->addTimestamps() + ->addIndex(['idcompany']) + ->addIndex(['brand_name']) + ->addIndex(['external_brand_code']) + ->addIndex(['status']) + ->addForeignKey( + 'idcompany', + 'companies', + 'idcompany', + [ + 'delete' => 'CASCADE', + 'update' => 'CASCADE', + ] + ) + ->create(); + + /* + * Departments table + * Department registry linked to a company and optionally to a brand. + */ + $this->table('departments', ['id' => 'iddepartment', 'signed' => false]) + ->addColumn('idcompany', 'integer', ['signed' => false]) + ->addColumn('idbrand', 'integer', ['signed' => false, 'null' => true]) + ->addColumn('department_name', 'string', ['limit' => 255]) + ->addColumn('external_department_code', 'string', ['limit' => 100, 'null' => true]) + ->addColumn('status', 'enum', [ + 'values' => ['active', 'inactive'], + 'default' => 'active', + ]) + ->addTimestamps() + ->addIndex(['idcompany']) + ->addIndex(['idbrand']) + ->addIndex(['department_name']) + ->addIndex(['external_department_code']) + ->addIndex(['status']) + ->addForeignKey( + 'idcompany', + 'companies', + 'idcompany', + [ + 'delete' => 'CASCADE', + 'update' => 'CASCADE', + ] + ) + ->addForeignKey( + 'idbrand', + 'brands', + 'idbrand', + [ + 'delete' => 'SET_NULL', + 'update' => 'CASCADE', + ] + ) + ->create(); + + /* + * Company users table + * Bridge between Vanguard users and TRFgo companies/brands/departments. + * It does not replace auth_users; it only defines data visibility and operational role. + */ + $this->table('company_users', ['id' => 'idcompanyuser', 'signed' => false]) + ->addColumn('iduser', 'integer', ['signed' => false]) + ->addColumn('idcompany', 'integer', ['signed' => false]) + ->addColumn('idbrand', 'integer', ['signed' => false, 'null' => true]) + ->addColumn('iddepartment', 'integer', ['signed' => false, 'null' => true]) + ->addColumn('user_scope', 'enum', [ + 'values' => ['company', 'brand', 'department'], + 'default' => 'company', + ]) + ->addColumn('company_role', 'enum', [ + 'values' => [ + 'owner', + 'admin', + 'manager', + 'operator', + 'viewer', + 'api_user', + 'lab_user', + ], + 'default' => 'viewer', + ]) + ->addColumn('status', 'enum', [ + 'values' => ['active', 'inactive'], + 'default' => 'active', + ]) + ->addTimestamps() + ->addIndex(['iduser']) + ->addIndex(['idcompany']) + ->addIndex(['idbrand']) + ->addIndex(['iddepartment']) + ->addIndex(['user_scope']) + ->addIndex(['company_role']) + ->addIndex(['status']) + ->addIndex( + ['iduser', 'idcompany', 'idbrand', 'iddepartment'], + ['unique' => true, 'name' => 'uq_company_user_scope'] + ) + ->addForeignKey( + 'iduser', + 'auth_users', + 'id', + [ + 'delete' => 'CASCADE', + 'update' => 'CASCADE', + ] + ) + ->addForeignKey( + 'idcompany', + 'companies', + 'idcompany', + [ + 'delete' => 'CASCADE', + 'update' => 'CASCADE', + ] + ) + ->addForeignKey( + 'idbrand', + 'brands', + 'idbrand', + [ + 'delete' => 'SET_NULL', + 'update' => 'CASCADE', + ] + ) + ->addForeignKey( + 'iddepartment', + 'departments', + 'iddepartment', + [ + 'delete' => 'SET_NULL', + 'update' => 'CASCADE', + ] + ) + ->create(); + } +} diff --git a/phinx.php b/phinx.php new file mode 100644 index 00000000..7a81addd --- /dev/null +++ b/phinx.php @@ -0,0 +1,42 @@ +safeLoad(); +} + +return [ + 'paths' => [ + 'migrations' => __DIR__ . '/db/migrations', + 'seeds' => __DIR__ . '/db/seeds', + ], + + 'environments' => [ + 'default_migration_table' => 'phinxlog', + 'default_environment' => 'development', + + 'development' => [ + 'adapter' => 'mysql', + 'host' => $_ENV['DB_HOST'] ?? '127.0.0.1', + 'name' => $_ENV['DB_DATABASE'] ?? 'trfgo', + 'user' => $_ENV['DB_USERNAME'] ?? 'root', + 'pass' => $_ENV['DB_PASSWORD'] ?? '', + 'port' => $_ENV['DB_PORT'] ?? '3306', + 'charset' => 'utf8mb4', + ], + + 'production' => [ + 'adapter' => 'mysql', + 'host' => $_ENV['DB_HOST'] ?? '127.0.0.1', + 'name' => $_ENV['DB_DATABASE'] ?? 'trfgo', + 'user' => $_ENV['DB_USERNAME'] ?? 'root', + 'pass' => $_ENV['DB_PASSWORD'] ?? '', + 'port' => $_ENV['DB_PORT'] ?? '3306', + 'charset' => 'utf8mb4', + ], + ], + + 'version_order' => 'creation', +]; diff --git a/public/userarea/add_part_quick.php b/public/userarea/add_part_quick.php deleted file mode 100644 index b3b4b654..00000000 --- a/public/userarea/add_part_quick.php +++ /dev/null @@ -1,91 +0,0 @@ - 255) { - $p = mb_substr($p, 0, 255); - } - $cleanParts[] = $p; - } - $cleanParts = array_values(array_unique($cleanParts)); - - if (count($cleanParts) === 0) { - throw new Exception('Part description is empty'); - } - - $db = DBHandlerSelect::getInstance(); - $pdo = $db->getConnection(); - - $pdo->beginTransaction(); - - try { - // prende il prossimo part_number per iddatadb - $stmtMax = $pdo->prepare("SELECT COALESCE(MAX(part_number), 0) AS maxnum FROM identification_parts WHERE iddatadb = ?"); - $stmtMax->execute([$iddatadb]); - $nextNumber = (int)$stmtMax->fetchColumn() + 1; - - $stmtIns = $pdo->prepare(" - INSERT INTO identification_parts (iddatadb, part_number, part_description) - VALUES (?, ?, ?) - "); - - $insertedIds = []; - - foreach ($cleanParts as $p) { - $ok = $stmtIns->execute([$iddatadb, $nextNumber, $p]); - if (!$ok) { - throw new Exception('Insert failed'); - } - $insertedIds[] = $pdo->lastInsertId(); - $nextNumber++; - } - - $pdo->commit(); - - echo json_encode([ - 'success' => true, - 'message' => 'Parts added', - 'count' => count($insertedIds), - 'ids' => $insertedIds - ]); - } catch (Exception $e) { - if ($pdo->inTransaction()) $pdo->rollBack(); - throw $e; - } -} catch (Exception $e) { - echo json_encode(['success' => false, 'message' => $e->getMessage()]); -} -exit; diff --git a/public/userarea/add_record.php b/public/userarea/add_record.php deleted file mode 100644 index 4eafe9b9..00000000 --- a/public/userarea/add_record.php +++ /dev/null @@ -1,73 +0,0 @@ -getConnection(); - - // Get default idclient from template - $stmt = $pdo->prepare("SELECT idclient FROM excel_templates WHERE id = ?"); - $stmt->execute([$templateId]); - $template = $stmt->fetch(PDO::FETCH_ASSOC); - $idclient = $template['idclient'] ?? null; - - // Use provided importreferencecode (from filtered page) or generate new - $importReferenceCode = $importRefFromClient !== '' ? $importRefFromClient : date('YmdHis') . '-' . uniqid(); - - // Insert empty record - $stmt = $pdo->prepare(" - INSERT INTO datadb (templateid, user_id, status, idclient, importreferencecode, importdate) - VALUES (?, ?, 'i', ?, ?, NOW()) - "); - $stmt->execute([$templateId, $userId, $idclient, $importReferenceCode]); - $iddatadb = (int)$pdo->lastInsertId(); - - // Create import_data_details for all mappings (with auto_value support) - $mappingStmt = $pdo->prepare("SELECT id, auto_value, manual_default, data_type FROM template_mapping WHERE template_id = ?"); - $mappingStmt->execute([$templateId]); - $mappings = $mappingStmt->fetchAll(PDO::FETCH_ASSOC); - - if (!empty($mappings)) { - $insertStmt = $pdo->prepare("INSERT INTO import_data_details (id, mapping_id, field_value) VALUES (?, ?, ?)"); - foreach ($mappings as $m) { - $val = ''; - $auto = $m['auto_value'] ?? 'none'; - if ($auto === 'import_date') { - $val = date('Y-m-d'); - } elseif ($auto === 'import_time') { - $val = date('H:i'); - } elseif ($m['data_type'] === 'DATE' && ($m['manual_default'] ?? '') === 'today') { - $val = date('Y-m-d'); - } elseif (!empty($m['manual_default'])) { - $val = $m['manual_default']; - } - $insertStmt->execute([$iddatadb, $m['id'], $val]); - } - } - - // Get user name - $userStmt = $pdo->prepare("SELECT CONCAT(first_name, ' ', last_name) AS user_name FROM auth_users WHERE id = ?"); - $userStmt->execute([$userId]); - $userName = $userStmt->fetchColumn() ?: ''; - - echo json_encode([ - 'success' => true, - 'iddatadb' => $iddatadb, - 'importreferencecode' => $importReferenceCode, - 'user_name' => $userName, - ]); -} catch (Exception $e) { - http_response_code(500); - echo json_encode(['success' => false, 'message' => $e->getMessage()]); -} diff --git a/public/userarea/analysisModal.js b/public/userarea/analysisModal.js deleted file mode 100644 index 791121be..00000000 --- a/public/userarea/analysisModal.js +++ /dev/null @@ -1,854 +0,0 @@ -(function () { - "use strict"; - let analysisMatriciMap = {}; - let analysisLoadedCache = {}; - let analysisAssignedState = {}; - let analysisSelectedState = {}; - - function loadAnalysisMatrixNames() { - return $.ajax({ - url: "get_matrici_db.php", - method: "GET", - dataType: "json", - }) - .done(function (data) { - analysisMatriciMap = {}; - - (data.value || []).forEach(function (matrice) { - analysisMatriciMap[String(matrice.IdMatrice)] = - matrice.NomeMatrice || "#" + matrice.IdMatrice; - }); - - applyAnalysisMatrixNames(); - }) - .fail(function () { - analysisMatriciMap = {}; - applyAnalysisMatrixNames(); - }); - } - - function applyAnalysisMatrixNames() { - const modal = document.getElementById("analysisModal"); - if (!modal) return; - - modal.querySelectorAll(".analysis-matrix-item").forEach((item) => { - const matrixId = item.getAttribute("data-matrix-id"); - const nameEl = item.querySelector(".analysis-matrix-name"); - - let matrixName = "No Matrix"; - if (matrixId && matrixId !== "NO_MATRIX") { - matrixName = - analysisMatriciMap[String(matrixId)] || "#" + matrixId; - } - - item.setAttribute("data-matrix-name", matrixName); - - if (nameEl) { - nameEl.textContent = matrixName; - } - }); - - modal.querySelectorAll(".analysis-part-matrix-name").forEach((el) => { - const matrixId = el.getAttribute("data-matrix-id"); - - if (!matrixId || matrixId === "NO_MATRIX") { - el.textContent = "No Matrix"; - return; - } - - el.textContent = - analysisMatriciMap[String(matrixId)] || "#" + matrixId; - }); - } - function readInitialAssignedAnalyses() { - const jsonEl = document.getElementById("analysisAssignedInitialData"); - if (!jsonEl) { - analysisAssignedState = {}; - return; - } - - try { - analysisAssignedState = - JSON.parse(jsonEl.textContent || "{}") || {}; - } catch (e) { - analysisAssignedState = {}; - } - } - - function getSelectedPartIds() { - const modal = document.getElementById("analysisModal"); - if (!modal) return []; - - return Array.from( - modal.querySelectorAll(".analysis-part-checkbox:checked"), - ).map((el) => String(el.value)); - } - - function getCurrentSelectedAnalysisRecordKeys() { - return Object.keys(analysisSelectedState).filter(function (key) { - return analysisSelectedState[key] === true; - }); - } - - function renderAssignedAnalysesForPart(partId) { - const container = document.getElementById( - "analysisAssignedListPart" + partId, - ); - if (!container) return; - - const items = Array.isArray(analysisAssignedState[String(partId)]) - ? analysisAssignedState[String(partId)] - : []; - - if (!items.length) { - container.innerHTML = ""; - return; - } - - container.innerHTML = items - .map(function (item) { - const recordKey = item.analysis_recordkey || ""; - const title = item.analysis_name || "Unnamed analysis"; - const method = item.analysis_method || ""; - - return ` -
-
-
${escapeHtml(title)}
- ${method ? `
${escapeHtml(method)}
` : ""} -
- -
- `; - }) - .join(""); - } - - function renderAssignedAnalysesForSelectedParts() { - const modal = document.getElementById("analysisModal"); - if (!modal) return; - - modal.querySelectorAll(".analysis-part-item").forEach(function (item) { - const partId = item.getAttribute("data-part-id"); - renderAssignedAnalysesForPart(partId); - }); - } - - function syncSelectedAnalysisRows() { - const modal = document.getElementById("analysisModal"); - if (!modal) return; - - modal - .querySelectorAll(".analysis-analysis-item") - .forEach(function (item) { - const recordKey = item.getAttribute("data-recordkey") || ""; - if (recordKey && analysisSelectedState[recordKey]) { - item.classList.add("analysis-selected"); - } else { - item.classList.remove("analysis-selected"); - } - }); - } - - function buildAnalysisPayloadFromRow(rowEl) { - return { - analysis_recordkey: rowEl.getAttribute("data-recordkey") || "", - analysis_name: rowEl.getAttribute("data-analysis-name") || "", - analysis_method: rowEl.getAttribute("data-analysis-method") || "", - analysis_level: rowEl.getAttribute("data-analysis-level") || "", - is_web_selectable: rowEl.getAttribute("data-web") === "1" ? 1 : 0, - is_accredited: - rowEl.getAttribute("data-accredited") === "1" ? 1 : 0, - }; - } - - function addAnalysisToLocalState(partId, payload, iddatadb, idmatrice) { - const key = String(partId); - if (!Array.isArray(analysisAssignedState[key])) { - analysisAssignedState[key] = []; - } - - const exists = analysisAssignedState[key].some(function (item) { - return item.analysis_recordkey === payload.analysis_recordkey; - }); - - if (!exists) { - analysisAssignedState[key].push({ - id: null, - part_id: parseInt(partId, 10), - iddatadb: iddatadb || null, - idmatrice: idmatrice || null, - analysis_recordkey: payload.analysis_recordkey, - analysis_name: payload.analysis_name, - analysis_method: payload.analysis_method, - analysis_level: - payload.analysis_level !== "" - ? parseInt(payload.analysis_level, 10) - : null, - is_web_selectable: payload.is_web_selectable, - is_accredited: payload.is_accredited, - }); - } - } - - function removeAnalysisFromLocalState(partId, recordKey) { - const key = String(partId); - if (!Array.isArray(analysisAssignedState[key])) { - return; - } - - analysisAssignedState[key] = analysisAssignedState[key].filter( - function (item) { - return item.analysis_recordkey !== recordKey; - }, - ); - } - - function saveAnalysisAssociation(partId, payload, callback) { - const modal = document.getElementById("analysisModal"); - if (!modal) return; - - const iddatadb = - modal.querySelector("#analysisModalIddatadb")?.value || ""; - const partItem = modal.querySelector( - '.analysis-part-item[data-part-id="' + partId + '"]', - ); - const idmatrice = partItem - ? partItem.getAttribute("data-matrix-id") || "" - : ""; - - $.ajax({ - url: "save_part_analysis.php", - method: "POST", - dataType: "json", - data: { - part_id: partId, - iddatadb: iddatadb, - idmatrice: idmatrice !== "NO_MATRIX" ? idmatrice : "", - analysis_recordkey: payload.analysis_recordkey, - analysis_name: payload.analysis_name, - analysis_method: payload.analysis_method, - analysis_level: payload.analysis_level, - is_web_selectable: payload.is_web_selectable, - is_accredited: payload.is_accredited, - }, - }) - .done(function () { - addAnalysisToLocalState( - partId, - payload, - iddatadb, - idmatrice !== "NO_MATRIX" ? idmatrice : null, - ); - renderAssignedAnalysesForPart(partId); - if (typeof callback === "function") callback(true); - }) - .fail(function (xhr) { - let message = "Error saving analysis association"; - if (xhr && xhr.responseJSON && xhr.responseJSON.message) { - message = xhr.responseJSON.message; - } - alert(message); - if (typeof callback === "function") callback(false); - }); - } - - function deleteAnalysisAssociation(partId, recordKey, callback) { - $.ajax({ - url: "delete_part_analysis.php", - method: "POST", - dataType: "json", - data: { - part_id: partId, - analysis_recordkey: recordKey, - }, - }) - .done(function () { - removeAnalysisFromLocalState(partId, recordKey); - renderAssignedAnalysesForPart(partId); - if (typeof callback === "function") callback(true); - }) - .fail(function (xhr) { - let message = "Error deleting analysis association"; - if (xhr && xhr.responseJSON && xhr.responseJSON.message) { - message = xhr.responseJSON.message; - } - alert(message); - if (typeof callback === "function") callback(false); - }); - } - function setAnalysisLoadingState(isLoading) { - const modal = document.getElementById("analysisModal"); - if (!modal) return; - - const loadingEl = modal.querySelector("#analysisLoadingBox"); - if (!loadingEl) return; - - if (isLoading) { - loadingEl.classList.remove("d-none"); - } else { - loadingEl.classList.add("d-none"); - } - } - - function showAnalysisError(message) { - const modal = document.getElementById("analysisModal"); - if (!modal) return; - - const errorEl = modal.querySelector("#analysisErrorBox"); - const emptyEl = modal.querySelector("#analysisEmptyBox"); - const listEl = modal.querySelector("#analysisList"); - - if (listEl) listEl.innerHTML = ""; - if (emptyEl) emptyEl.classList.add("d-none"); - - if (errorEl) { - errorEl.textContent = message || "Error loading analyses"; - errorEl.classList.remove("d-none"); - } - } - - function showAnalysisEmpty(message) { - const modal = document.getElementById("analysisModal"); - if (!modal) return; - - const errorEl = modal.querySelector("#analysisErrorBox"); - const emptyEl = modal.querySelector("#analysisEmptyBox"); - const listEl = modal.querySelector("#analysisList"); - - if (listEl) listEl.innerHTML = ""; - if (errorEl) errorEl.classList.add("d-none"); - - if (emptyEl) { - emptyEl.textContent = - message || "No analyses found for this matrix"; - emptyEl.classList.remove("d-none"); - } - } - - function escapeHtml(value) { - return String(value ?? "") - .replace(/&/g, "&") - .replace(//g, ">") - .replace(/"/g, """) - .replace(/'/g, "'"); - } - - function renderAnalysesList(analyses) { - const modal = document.getElementById("analysisModal"); - if (!modal) return; - - const errorEl = modal.querySelector("#analysisErrorBox"); - const emptyEl = modal.querySelector("#analysisEmptyBox"); - const listEl = modal.querySelector("#analysisList"); - - if (!listEl) return; - - if (errorEl) errorEl.classList.add("d-none"); - - if (!Array.isArray(analyses) || analyses.length === 0) { - showAnalysisEmpty("No analyses found for this matrix"); - return; - } - - if (emptyEl) emptyEl.classList.add("d-none"); - - listEl.innerHTML = analyses - .map(function (item) { - const recordKey = item.RecordKey || ""; - const analysisName = - item.NomeAnalisiTraduzione || - item.NomeAnalisi || - "Unnamed analysis"; - const methodName = item.MetodoNome || ""; - const selectable = item.SelezionabileSuWeb === true; - const accredited = item.Accreditato === true; - const level = item.Livello ?? ""; - const searchText = ( - analysisName + - " " + - methodName - ).toLowerCase(); - - let badges = ""; - if (selectable) { - badges += 'Web'; - } else { - badges += 'Not web'; - } - - if (accredited) { - badges += - 'Accredited'; - } - - if (level !== "") { - badges += - 'Level ' + - escapeHtml(level) + - ""; - } - - return ` -
-
${escapeHtml(analysisName)}
- - ${methodName ? `
${escapeHtml(methodName)}
` : ""} - -
- ${badges} -
-
- `; - }) - .join(""); - - filterAnalysisList(); - syncSelectedAnalysisRows(); - } - - function filterAnalysisList() { - const modal = document.getElementById("analysisModal"); - if (!modal) return; - - const webOnlyEl = modal.querySelector("#analysisWebOnly"); - const searchEl = modal.querySelector("#analysisSearchInput"); - const items = modal.querySelectorAll(".analysis-analysis-item"); - const emptyEl = modal.querySelector("#analysisEmptyBox"); - const errorEl = modal.querySelector("#analysisErrorBox"); - - const webOnly = true; - const searchValue = searchEl ? searchEl.value.trim().toLowerCase() : ""; - - let visibleCount = 0; - - items.forEach((item) => { - const isWeb = item.getAttribute("data-web") === "1"; - const searchText = ( - item.getAttribute("data-search") || "" - ).toLowerCase(); - - let visible = true; - - if (webOnly && !isWeb) { - visible = false; - } - - if (visible && searchValue && !searchText.includes(searchValue)) { - visible = false; - } - - item.style.display = visible ? "" : "none"; - - if (visible) { - visibleCount++; - } - }); - - if (errorEl) { - errorEl.classList.add("d-none"); - } - - if (emptyEl) { - if (items.length === 0) { - emptyEl.textContent = "No analyses found for this matrix"; - emptyEl.classList.remove("d-none"); - } else if (visibleCount === 0) { - emptyEl.textContent = "No analyses match the current filters"; - emptyEl.classList.remove("d-none"); - } else { - emptyEl.classList.add("d-none"); - } - } - } - - function loadAnalysesByMatrix(matrixId) { - const modal = document.getElementById("analysisModal"); - if (!modal) return; - - if (!matrixId || matrixId === "NO_MATRIX") { - showAnalysisEmpty("No matrix selected"); - return; - } - - const listEl = modal.querySelector("#analysisList"); - const errorEl = modal.querySelector("#analysisErrorBox"); - const emptyEl = modal.querySelector("#analysisEmptyBox"); - - if (listEl) listEl.innerHTML = ""; - if (errorEl) errorEl.classList.add("d-none"); - if (emptyEl) { - emptyEl.textContent = ""; - emptyEl.classList.add("d-none"); - } - - const cacheKey = String(matrixId) + "_WEB_ONLY"; - - if (analysisLoadedCache[cacheKey]) { - renderAnalysesList(analysisLoadedCache[cacheKey]); - return; - } - - setAnalysisLoadingState(true); - - $.ajax({ - url: "get_analisi_matrice_filter.php", - method: "GET", - dataType: "json", - data: { - id_matrice: matrixId, - web_only: 1, - }, - }) - .done(function (response) { - const analyses = Array.isArray(response.value) - ? response.value.filter(function (item) { - return ( - item.SelezionabileSuWeb === true || - item.SelezionabileSuWeb === 1 || - item.SelezionabileSuWeb === "1" - ); - }) - : []; - - analysisLoadedCache[cacheKey] = analyses; - renderAnalysesList(analyses); - }) - .fail(function (xhr) { - let message = "Error loading analyses"; - if (xhr && xhr.responseJSON && xhr.responseJSON.error) { - message = xhr.responseJSON.error; - } - showAnalysisError(message); - }) - .always(function () { - setAnalysisLoadingState(false); - }); - } - - function updateSelectedPartsInfo() { - const modal = document.getElementById("analysisModal"); - if (!modal) return; - - const checked = modal.querySelectorAll( - ".analysis-part-checkbox:checked", - ); - const ids = Array.from(checked).map((el) => el.value); - - const countEl = modal.querySelector("#analysisSelectedPartsCount"); - const idsEl = modal.querySelector("#analysisSelectedPartsIds"); - - if (countEl) { - countEl.textContent = `${ids.length} selected`; - } - - if (idsEl) { - idsEl.textContent = ids.length ? ids.join(", ") : "-"; - } - - modal.querySelectorAll(".analysis-part-item").forEach((item) => { - const checkbox = item.querySelector(".analysis-part-checkbox"); - if (checkbox && checkbox.checked) { - item.classList.add("part-checked"); - } else { - item.classList.remove("part-checked"); - } - }); - } - - function selectPartsByMatrix(matrixId, matrixLabel) { - const modal = document.getElementById("analysisModal"); - if (!modal) return; - - const partItems = modal.querySelectorAll(".analysis-part-item"); - const matrixLabelEl = modal.querySelector("#analysisCurrentMatrix"); - - partItems.forEach((item) => { - const itemMatrixId = item.getAttribute("data-matrix-id"); - const checkbox = item.querySelector(".analysis-part-checkbox"); - - item.classList.remove("matrix-active"); - - if (itemMatrixId === String(matrixId)) { - item.classList.add("matrix-active"); - if (checkbox) checkbox.checked = true; - } else { - if (checkbox) checkbox.checked = false; - } - }); - - if (matrixLabelEl) { - matrixLabelEl.textContent = matrixLabel || "-"; - } - analysisSelectedState = {}; - - const selectedPartIds = getSelectedPartIds(); - selectedPartIds.forEach(function (partId) { - const assigned = Array.isArray( - analysisAssignedState[String(partId)], - ) - ? analysisAssignedState[String(partId)] - : []; - - assigned.forEach(function (item) { - if (item.analysis_recordkey) { - analysisSelectedState[item.analysis_recordkey] = true; - } - }); - }); - updateSelectedPartsInfo(); - loadAnalysesByMatrix(matrixId); - } - - function clearAnalysisSelection() { - const modal = document.getElementById("analysisModal"); - if (!modal) return; - - modal.querySelectorAll(".analysis-matrix-item").forEach((item) => { - item.classList.remove("active"); - }); - - modal.querySelectorAll(".analysis-part-item").forEach((item) => { - item.classList.remove("matrix-active", "part-checked"); - }); - - modal.querySelectorAll(".analysis-part-checkbox").forEach((cb) => { - cb.checked = false; - }); - - const matrixLabelEl = modal.querySelector("#analysisCurrentMatrix"); - if (matrixLabelEl) matrixLabelEl.textContent = "-"; - - const webOnlyEl = modal.querySelector("#analysisWebOnly"); - if (webOnlyEl) webOnlyEl.checked = false; - - const searchEl = modal.querySelector("#analysisSearchInput"); - if (searchEl) searchEl.value = ""; - - const listEl = modal.querySelector("#analysisList"); - if (listEl) listEl.innerHTML = ""; - - showAnalysisEmpty("Select a matrix to load analyses"); - updateSelectedPartsInfo(); - } - - function initAnalysisModal() { - const modal = document.getElementById("analysisModal"); - if (!modal) return; - - analysisLoadedCache = {}; - analysisSelectedState = {}; - readInitialAssignedAnalyses(); - renderAssignedAnalysesForSelectedParts(); - - modal.querySelectorAll(".analysis-matrix-item").forEach((btn) => { - btn.addEventListener("click", function () { - modal - .querySelectorAll(".analysis-matrix-item") - .forEach((x) => x.classList.remove("active")); - this.classList.add("active"); - - const matrixId = this.getAttribute("data-matrix-id"); - const matrixLabel = - this.getAttribute("data-matrix-name") || - this.textContent.trim(); - - selectPartsByMatrix(matrixId, matrixLabel); - }); - }); - - modal.querySelectorAll(".analysis-part-checkbox").forEach((cb) => { - cb.addEventListener("change", function () { - updateSelectedPartsInfo(); - }); - }); - - const clearBtn = modal.querySelector("#analysisClearSelectionBtn"); - if (clearBtn) { - clearBtn.addEventListener("click", function () { - clearAnalysisSelection(); - }); - } - - // WEB only is now fixed by default - - const searchEl = modal.querySelector("#analysisSearchInput"); - if (searchEl) { - searchEl.addEventListener("input", function () { - filterAnalysisList(); - }); - } - modal.addEventListener("click", function (e) { - const removeBtn = e.target.closest(".analysis-remove-btn"); - if (removeBtn) { - e.preventDefault(); - e.stopPropagation(); - - const partId = removeBtn.getAttribute("data-part-id"); - const recordKey = removeBtn.getAttribute("data-recordkey"); - - deleteAnalysisAssociation(partId, recordKey, function () { - const stillUsed = Object.keys(analysisAssignedState).some( - function (pid) { - return ( - Array.isArray(analysisAssignedState[pid]) && - analysisAssignedState[pid].some( - function (item) { - return ( - item.analysis_recordkey === - recordKey - ); - }, - ) - ); - }, - ); - - if (!stillUsed) { - delete analysisSelectedState[recordKey]; - } - - syncSelectedAnalysisRows(); - }); - - return; - } - - const row = e.target.closest(".analysis-analysis-item"); - if (!row) return; - - const selectedPartIds = getSelectedPartIds(); - if (!selectedPartIds.length) { - alert("Select at least one part first"); - return; - } - - const payload = buildAnalysisPayloadFromRow(row); - if (!payload.analysis_recordkey) { - alert("Invalid analysis record key"); - return; - } - - const recordKey = payload.analysis_recordkey; - const alreadySelected = !!analysisSelectedState[recordKey]; - - if (alreadySelected) { - selectedPartIds.forEach(function (partId) { - deleteAnalysisAssociation(partId, recordKey); - }); - - delete analysisSelectedState[recordKey]; - syncSelectedAnalysisRows(); - return; - } - - let pending = selectedPartIds.length; - let atLeastOneSaved = false; - - selectedPartIds.forEach(function (partId) { - saveAnalysisAssociation(partId, payload, function (ok) { - if (ok) atLeastOneSaved = true; - - pending--; - if (pending <= 0 && atLeastOneSaved) { - analysisSelectedState[recordKey] = true; - syncSelectedAnalysisRows(); - } - }); - }); - }); - - const firstActiveMatrix = modal.querySelector( - ".analysis-matrix-item.active", - ); - if (firstActiveMatrix) { - const matrixId = firstActiveMatrix.getAttribute("data-matrix-id"); - const matrixLabel = - firstActiveMatrix.getAttribute("data-matrix-name") || - firstActiveMatrix.textContent.trim(); - - selectPartsByMatrix(matrixId, matrixLabel); - } else { - updateSelectedPartsInfo(); - } - } - - // OPEN ANALYSIS MODAL FROM PARTS MODAL BUTTON - $(document).on("click", ".open-analysis-modal-btn", function () { - const partsModal = document.getElementById("partsModal"); - const iddatadb = $("#partsModal").data("iddatadb"); - - if (!iddatadb) { - console.error("iddatadb not found on #partsModal"); - alert("iddatadb not found"); - return; - } - - $.ajax({ - url: "modal_analysis.php", - method: "GET", - data: { iddatadb: iddatadb }, - success: function (response) { - $("#analysisModalContainer").html(response); - - const modalElement = document.getElementById("analysisModal"); - if (!modalElement) { - console.error("Analysis modal not found: #analysisModal"); - return; - } - - let modal = bootstrap.Modal.getInstance(modalElement); - if (!modal) { - modal = new bootstrap.Modal(modalElement, { - backdrop: true, - keyboard: true, - focus: true, - }); - } - - loadAnalysisMatrixNames().always(function () { - initAnalysisModal(); - modal.show(); - }); - }, - error: function (xhr, status, error) { - console.error("Error loading analysis modal:", error); - alert("Error loading analysis modal: " + error); - }, - }); - }); - - // CLEANUP ON CLOSE - $(document).on("hidden.bs.modal", "#analysisModal", function () { - const modalElement = document.getElementById("analysisModal"); - if (modalElement) { - const modal = bootstrap.Modal.getInstance(modalElement); - if (modal) modal.dispose(); - } - - $("#analysisModalContainer").empty(); - - // keep parts modal alive, but remove extra backdrop leftovers - $(".modal-backdrop").last().remove(); - - if ($("#partsModal").hasClass("show")) { - $("body").addClass("modal-open"); - } else { - $("body").removeClass("modal-open").css("padding-right", ""); - } - }); -})(); diff --git a/public/userarea/annotationsModal.js b/public/userarea/annotationsModal.js deleted file mode 100644 index a9443f1a..00000000 --- a/public/userarea/annotationsModal.js +++ /dev/null @@ -1,1610 +0,0 @@ -$(document).ready(function () { - // =================== - // GLOBAL STATE - // =================== - let photoData = { - naturalWidth: 0, - naturalHeight: 0, - displayWidth: 0, - displayHeight: 0, - scale: 1, - }; - - let photoAnnotations = {}; - let partColors = {}; - let partSizes = {}; // memorizza la dimensione specifica per parte - let selectedPartNumber = null; - let unsavedChanges = false; - let fabricCanvas = null; - let descriptionTextbox = null; - let markerObjects = {}; - let nextMarkerId = 1; - let partsListData = []; - // DIMENSIONE GLOBALE MARKER - let globalMarkerSize = 16; - // COLORE TESTO LISTA DESCRIZIONI - let globalDescriptionColor = "#000000"; - - // =================== - // MODAL INITIALIZATION - // =================== - window.initAnnotationsModal = function (iddatadb, idquotations, trfHeader) { - console.log("initAnnotationsModal chiamato con:", { - iddatadb, - idquotations, - trfHeader, - }); - - $("#annotationsModal").attr("data-iddatadb", iddatadb); - - if (!iddatadb && !idquotations) { - const errorMsg = $( - '', - ); - $("#annotationsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - return; - } - - $("#trfHeaderAnnotations").text(trfHeader || "N/D"); - $("#annotationsModal") - .data("iddatadb", iddatadb || null) - .data("idquotations", idquotations || null); - - loadPhoto(iddatadb, idquotations); - loadExistingParts(iddatadb, idquotations); - - const modalElement = document.getElementById("annotationsModal"); - if (!modalElement) { - console.error("Elemento #annotationsModal non trovato nel DOM."); - alert( - "Errore: Il modale delle annotazioni non è presente nel DOM.", - ); - return; - } - let modal = bootstrap.Modal.getInstance(modalElement); - if (!modal) { - modal = new bootstrap.Modal(modalElement, { - backdrop: true, - keyboard: true, - focus: true, - }); - } - modal.show(); - // Inizializza slider dimensione marker - $("#markerSizeSlider").val(globalMarkerSize); - $("#markerSizeValue").text(globalMarkerSize + "px"); - - // Debug: Verifica presenza elementi DOM - console.log( - "Presenza #partsListAnnotations:", - $("#partsListAnnotations").length, - ); - console.log( - "Presenza #showMixPartsAnnotations:", - $("#showMixPartsAnnotations").length, - ); - console.log( - "Presenza #addDescriptionsBtnAnnotations:", - $("#addDescriptionsBtnAnnotations").length, - ); - console.log( - "Presenza #removeAnnotationsBtnAnnotations:", - $("#removeAnnotationsBtnAnnotations").length, - ); - console.log( - "Presenza #downloadPhotoBtnAnnotations:", - $("#downloadPhotoBtnAnnotations").length, - ); - console.log( - "Presenza #backToPartsBtnAnnotations:", - $("#backToPartsBtnAnnotations").length, - ); - console.log( - "Presenza #overlayCanvasAnnotations:", - $("#overlayCanvasAnnotations").length, - ); - }; - - $("#annotationsModal").on("hide.bs.modal", function (e) { - if ( - unsavedChanges && - !confirm("Hai modifiche non salvate. Vuoi davvero uscire?") - ) { - e.preventDefault(); - } - }); - - $("#annotationsModal").on("hidden.bs.modal", function () { - photoData = { - naturalWidth: 0, - naturalHeight: 0, - displayWidth: 0, - displayHeight: 0, - scale: 1, - }; - photoAnnotations = {}; - partColors = {}; - selectedPartNumber = null; - unsavedChanges = false; - partsListData = []; - if (fabricCanvas) { - fabricCanvas.off(); - fabricCanvas.dispose(); - fabricCanvas = null; - } - descriptionTextbox = null; - markerObjects = {}; - globalMarkerSize = 16; - globalDescriptionColor = "#000000"; - $("#photoSelectorContainerAnnotations").empty().hide(); - $("#samplePhotoAnnotations").attr("src", ""); - $("#partsListAnnotations").empty(); - $(".temp-alert").remove(); - - const modalElement = document.getElementById("annotationsModal"); - const modal = bootstrap.Modal.getInstance(modalElement); - if (modal) { - modal.dispose(); - } - $(".modal-backdrop").remove(); - $("body").removeClass("modal-open"); - $("body").css("padding-right", ""); - $(":focus").blur(); - }); - - // SLIDER DIMENSIONE MARKER - $(document) - .off("input", "#markerSizeSlider") - .on("input", "#markerSizeSlider", function () { - globalMarkerSize = parseInt($(this).val()); - $("#markerSizeValue").text(globalMarkerSize + "px"); - - partsListData.forEach(function (part) { - if (part && part.part_number != null) { - partSizes[part.part_number] = globalMarkerSize; - } - }); - - $("#partsListAnnotations .marker-size-slider").val( - globalMarkerSize, - ); - $("#partsListAnnotations .marker-size-value").text( - globalMarkerSize + "px", - ); - - updateMarkers(); - markUnsaved(); - }); - // =================== - // COLORE LISTA DESCRIZIONI - // =================== - $(document) - .off("input.descriptionColor", "#descriptionColorPickerAnnotations") - .on( - "input.descriptionColor", - "#descriptionColorPickerAnnotations", - function () { - globalDescriptionColor = $(this).val(); - - if (descriptionTextbox && fabricCanvas) { - descriptionTextbox.set("fill", globalDescriptionColor); - fabricCanvas.renderAll(); - } - - markUnsaved(); - }, - ); - // =================== - // PHOTO LOADERS - // =================== - function loadPhoto(iddatadb, idquotations) { - const currentPhoto = $("#samplePhotoAnnotations").attr("src"); - const endpoint = idquotations - ? "load_photo_quotation.php" - : "load_photo.php"; - const data = idquotations - ? { idquotations: idquotations } - : { iddatadb: iddatadb }; - $.ajax({ - url: endpoint, - method: "GET", - data: data, - success: function (response) { - console.log("Risposta da load_photo:", response); - if (response.success) { - if (response.photos && response.photos.length > 1) { - showPhotoSelector(response.photos, currentPhoto); - } else if ( - response.photos && - response.photos.length === 1 - ) { - loadSinglePhoto(response.photos[0]); - } else { - $("#samplePhotoAnnotations").attr("src", ""); - const errorMsg = $( - '', - ); - $("#annotationsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - } else { - const errorMsg = $( - '", - ); - $("#annotationsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - }, - error: function (xhr, status, error) { - console.error("Errore AJAX in loadPhoto:", { - status, - error, - responseText: xhr.responseText, - }); - const errorMsg = $( - '", - ); - $("#annotationsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }, - }); - } - - function showPhotoSelector(photos, selected = null) { - const selectorContainer = $("#photoSelectorContainerAnnotations"); - selectorContainer.empty().show(); - const selector = $( - '', - ); - photos.forEach((photo, index) => { - const photoName = photo.split("/").pop(); - const option = $("") - .val(photo) - .text(`Photo ${index + 1} - ${photoName}`); - selector.append(option); - }); - selector.on("change", function () { - loadSinglePhoto($(this).val()); - }); - selectorContainer.append(selector); - const photoToSelect = - selected && photos.includes(selected) ? selected : photos[0]; - if (photoToSelect) { - selector.val(photoToSelect); - loadSinglePhoto(photoToSelect); - } - } - - function loadSinglePhoto(photoPath) { - const img = $("#samplePhotoAnnotations"); - img.off("load").attr("src", photoPath); - img.on("load", function () { - console.log("Foto caricata:", photoPath); - const canvas = document.getElementById("photoCanvasAnnotations"); - const ctx = canvas.getContext("2d"); - const naturalWidth = img[0].naturalWidth; - const naturalHeight = img[0].naturalHeight; - const parent = $(canvas).parent(); - const maxW = parent.width(); - const maxH = parent.height(); - const scale = Math.min(maxW / naturalWidth, maxH / naturalHeight); - - photoData = { - naturalWidth, - naturalHeight, - displayWidth: Math.max(1, Math.round(naturalWidth * scale)), - displayHeight: Math.max(1, Math.round(naturalHeight * scale)), - scale, - }; - - canvas.width = naturalWidth; - canvas.height = naturalHeight; - canvas.style.width = `${photoData.displayWidth}px`; - canvas.style.height = `${photoData.displayHeight}px`; - - ctx.clearRect(0, 0, naturalWidth, naturalHeight); - ctx.drawImage(img[0], 0, 0, naturalWidth, naturalHeight); - - if (fabricCanvas) { - fabricCanvas.off(); - fabricCanvas.dispose(); - fabricCanvas = null; - } - - const overlayCanvas = document.getElementById( - "overlayCanvasAnnotations", - ); - const canvasContainer = overlayCanvas.parentElement; - const newOverlayCanvas = document.createElement("canvas"); - newOverlayCanvas.id = "overlayCanvasAnnotations"; - newOverlayCanvas.width = photoData.displayWidth; - newOverlayCanvas.height = photoData.displayHeight; - newOverlayCanvas.style.width = `${photoData.displayWidth}px`; - newOverlayCanvas.style.height = `${photoData.displayHeight}px`; - newOverlayCanvas.style.position = "absolute"; - newOverlayCanvas.style.top = "0"; - newOverlayCanvas.style.left = "0"; - newOverlayCanvas.style.zIndex = "1000"; - - canvasContainer.removeChild(overlayCanvas); - canvasContainer.appendChild(newOverlayCanvas); - - setTimeout(() => { - fabricCanvas = new fabric.Canvas("overlayCanvasAnnotations", { - selection: true, - preserveObjectStacking: true, - width: photoData.displayWidth, - height: photoData.displayHeight, - }); - - fabricCanvas.setDimensions({ - width: photoData.displayWidth, - height: photoData.displayHeight, - }); - - fabricCanvas.on("mouse:down", function (options) { - console.log( - "Evento mouse:down su canvas, selectedPartNumber:", - selectedPartNumber, - ); - if (selectedPartNumber === null) { - console.log( - "Nessuna parte selezionata, ignoro il click.", - ); - return; - } - if (options.target) { - console.log("Click su un oggetto esistente, ignoro."); - return; - } - const pointer = fabricCanvas.getPointer(options.e); - const x = pointer.x / photoData.scale; - const y = pointer.y / photoData.scale; - const currentPhoto = $("#samplePhotoAnnotations").attr( - "src", - ); - - if (!photoAnnotations[currentPhoto]) { - photoAnnotations[currentPhoto] = { - markers: [], - hasDescriptions: false, - descriptionPosition: { x: 10, y: 10 }, - descriptionSize: { - width: photoData.displayWidth * 0.3, - height: photoData.displayHeight * 0.3, - }, - }; - } - - const partColor = - partColors[selectedPartNumber] || "#ff0000"; - photoAnnotations[currentPhoto].markers.push({ - id: nextMarkerId++, - partNumber: selectedPartNumber, - x, - y, - color: partColor, - }); - - console.log("Marker aggiunto/spostato:", { - partNumber: selectedPartNumber, - x, - y, - color: partColor, - }); - updateMarkers(); - markUnsaved(); - }); - - fabricCanvas.upperCanvasEl.focus(); - fabricCanvas.renderAll(); - - updateMarkers(); - updateDescriptions(); - }, 10); - }); - } - - // =================== - // DOWNLOAD PHOTO - // =================== - $(document) - .off("click.downloadPhoto", "#downloadPhotoBtnAnnotations") - .on( - "click.downloadPhoto", - "#downloadPhotoBtnAnnotations", - function (e) { - e.preventDefault(); - e.stopPropagation(); - console.log( - "Evento click su #downloadPhotoBtnAnnotations, ID elemento:", - $(this).attr("id"), - ); - if (!$("#downloadPhotoBtnAnnotations").length) { - console.error( - "Pulsante #downloadPhotoBtnAnnotations non trovato nel DOM.", - ); - const errorMsg = $( - '', - ); - $("#annotationsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - return; - } - const photoSrc = $("#samplePhotoAnnotations").attr("src"); - console.log("URL immagine per il download:", photoSrc); - if (!photoSrc) { - console.error("Nessuna foto caricata da scaricare."); - const errorMsg = $( - '', - ); - $("#annotationsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - return; - } - - // Verifica se l'URL è valido - const img = new Image(); - img.src = photoSrc; - img.onload = function () { - const photoName = - photoSrc.split("/").pop() || "downloaded_photo.png"; - console.log("Nome file per il download:", photoName); - const link = document.createElement("a"); - link.href = photoSrc; - link.download = photoName; - document.body.appendChild(link); - link.click(); - document.body.removeChild(link); - console.log("Download avviato per:", photoName); - }; - img.onerror = function () { - console.error( - "Errore: Impossibile caricare l'immagine per il download:", - photoSrc, - ); - const errorMsg = $( - '', - ); - $("#annotationsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }; - }, - ); - - // =================== - // TORNA AL MODALE PARTI (modal_partsTable.php) - // =================== - $(document) - .off("click.backToParts", "#backToPartsBtnAnnotations") - .on("click.backToParts", "#backToPartsBtnAnnotations", function (e) { - e.preventDefault(); - e.stopPropagation(); - - if ( - unsavedChanges && - !confirm( - "Hai modifiche non salvate. Vuoi davvero tornare al modale delle parti?", - ) - ) { - return; - } - - const iddatadb = $("#annotationsModal").data("iddatadb"); - const idquotations = $("#annotationsModal").data("idquotations"); - const trfHeader = $("#trfHeaderAnnotations").text(); - - // CHIUDI MODALE ANNOTAZIONI IN MODO SICURO - const annotationsModalElement = - document.getElementById("annotationsModal"); - if (annotationsModalElement) { - const modalInstance = bootstrap.Modal.getInstance( - annotationsModalElement, - ); - if (modalInstance) { - modalInstance.hide(); - } else { - $(annotationsModalElement).modal("hide"); // fallback jQuery - } - } - console.log("Torno a modal_partsTable.php con:", { - iddatadb, - idquotations, - trfHeader, - }); - // CARICA E APRI MODALE PARTI - $.get( - "modal_partsTable.php", - { - iddatadb: iddatadb || "", - idquotations: idquotations || "", - trfHeader: trfHeader, - }, - function (data) { - // Rimuovi vecchio modale (con ID corretto) - $("#partsTableModal").remove(); - $(".modal-backdrop").remove(); - - // Aggiungi nuovo modale - $("body").append(data); - - // Apri con Bootstrap 5 - const partsModalElement = - document.getElementById("partsTableModal"); - if (partsModalElement) { - const modal = new bootstrap.Modal(partsModalElement, { - backdrop: true, - keyboard: true, - focus: true, - }); - modal.show(); - } else { - let iddatadb = - $("#annotationsModal").attr("data-iddatadb"); - - $( - "button.parts-btn[data-iddatadb='" + - iddatadb + - "']", - ).trigger("click"); - } - }, - ).fail(function (xhr) { - console.error("Errore caricamento modale parti:", xhr); - alert( - "Errore 404: modal_partsTable.php non trovato o errore server.", - ); - }); - }); - // =================== - // PARTS LIST - // =================== - function updatePartsList() { - console.log( - "updatePartsList chiamato con partsListData:", - partsListData, - ); - const showMixParts = $("#showMixPartsAnnotations").is(":checked"); - console.log("Stato showMixPartsAnnotations:", showMixParts); - const partsListElement = $("#partsListAnnotations"); - - if (!partsListElement.length) { - console.error( - "Elemento #partsListAnnotations non trovato nel DOM.", - ); - const errorMsg = $( - '', - ); - $("#annotationsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - return; - } - - partsListElement.empty(); - const predefinedColors = [ - "#ff0000", // Rosso - "#0000ff", // Blu - "#00ff00", // Verde - "#ffff00", // Giallo - "#ff00ff", // Magenta - "#00ffff", // Ciano - "#800080", // Viola - "#ffa500", // Arancione - ]; - - partsListData.forEach((part) => { - const partNumber = part.part_number; - const partDescription = part.part_description; - const isMixPart = String(part.mix || "N").toUpperCase() === "Y"; - - const partColor = - partColors[partNumber] || (isMixPart ? "#0000ff" : "#ff0000"); - if (partNumber && partDescription && (showMixParts || !isMixPart)) { - const colorOptions = predefinedColors - .map( - (color) => - `
`, - ) - .join(""); - const listItem = ` -
  • -${partNumber} - ${partDescription} -
    -
    - -
    -
    - - ${partSizes[partNumber] || globalMarkerSize}px -
    -
  • `; - partsListElement.append(listItem); - } - }); - - console.log( - "Elementi aggiunti a #partsListAnnotations:", - partsListElement.find("li").length, - ); - console.log("HTML di #partsListAnnotations:", partsListElement.html()); - - // Associa evento di selezione all'intera riga - partsListElement - .off("click.partsList") - .on("click.partsList", ".list-group-item", function (e) { - e.stopPropagation(); - e.preventDefault(); - // Ignora il click se è sulla paletta dei colori - if ($(e.target).closest(".color-picker-container").length) { - console.log( - "Click sulla paletta dei colori, ignoro selezione parte.", - ); - return; - } - - const $listItem = $(this); - const partNumber = $listItem.data("part-number"); - - if ( - selectedPartNumber == partNumber && - $listItem.hasClass("active") - ) { - selectedPartNumber = null; - $listItem.removeClass("active"); - - return; - } - - selectedPartNumber = partNumber; - $listItem.addClass("active").siblings().removeClass("active"); - console.log( - "Parte selezionata tramite riga:", - selectedPartNumber, - ); - }); - - // Associa eventi alla paletta dei colori - partsListElement - .off("click.selectedColor") - .on("click.selectedColor", ".selected-color", function (e) { - e.stopPropagation(); - e.preventDefault(); - const $picker = $(this).siblings(".color-picker"); - console.log( - "Cliccato .selected-color, mostro/nascondo paletta:", - $picker.is(":visible"), - ); - $(".color-picker").not($picker).hide(); - $picker.toggle(); - }); - - // === Gestione cambio colore === - partsListElement - .off("click.colorOption") - .on("click.colorOption", ".color-option", function (e) { - e.stopPropagation(); - e.preventDefault(); - - const $this = $(this); - const color = $this.data("color"); - const $listItem = $this.closest("li"); - const partNumber = $listItem.data("part-number"); - - console.log( - "Cliccato .color-option, colore:", - color, - "per parte:", - partNumber, - ); - - // Salva il nuovo colore - partColors[partNumber] = color; - - // Aggiorna il colore visivo nel selettore - $listItem - .find(".selected-color") - .css("background-color", color); - - let currentPhoto = $("#samplePhotoAnnotations").attr("src"); - let annotations = photoAnnotations[currentPhoto]; - - if (annotations) { - annotations.markers.forEach(function (m) { - if (m.partNumber == partNumber) { - m.color = color; - let group = markerObjects[m.id]; - - if (group) { - let circle = group.item(0); - - circle.set("fill", color); - circle.set("stroke", color); - } - } - }); - fabricCanvas.renderAll(); - } - - // Chiudi la palette e aggiorna canvas - $this.closest(".color-picker").hide(); - updateMarkers(); - markUnsaved(); - }); - - // === Slider locale per dimensione marker === - partsListElement - .off("input.localMarkerSize") - .on("input.localMarkerSize", ".marker-size-slider", function (e) { - e.stopPropagation(); - e.preventDefault(); - - // Riferimenti alla parte e valore scelto - const $slider = $(this); - const partNumber = $slider.closest("li").data("part-number"); - const newSize = parseInt($slider.val()); - - // Aggiorna il valore visivo accanto allo slider - $slider.siblings(".marker-size-value").text(newSize + "px"); - - // Memorizza la nuova dimensione per quella parte - partSizes[partNumber] = newSize; - - // Aggiorna i marker sul canvas - updateMarkers(); - - // Segnala modifiche non salvate - markUnsaved(); - - console.log( - `Dimensione marker aggiornata per parte ${partNumber}: ${newSize}px`, - ); - }); - - $(document) - .off("click.colorPicker") - .on("click.colorPicker", function (e) { - if (!$(e.target).closest(".color-picker-container").length) { - console.log("Cliccato fuori, nascondo tutte le palette."); - $(".color-picker").hide(); - } - }); - } - - function enableDragDropPartsList() { - const list = $("#partsListAnnotations"); - if (!list.length || typeof $.ui === "undefined" || !$.ui.sortable) { - console.warn("jQuery UI o .sortable non disponibile. Ritento..."); - setTimeout(enableDragDropPartsList, 100); - return; - } - - if (list.hasClass("ui-sortable")) { - list.sortable("destroy"); // evita duplicati - } - - list.sortable({ - items: "li.list-group-item", - placeholder: "list-group-item placeholder", - axis: "y", - containment: "parent", - tolerance: "pointer", - start: function (e, ui) { - ui.item.addClass("dragging"); - }, - stop: function (e, ui) { - ui.item.removeClass("dragging"); - const newOrder = []; - list.find("li").each(function () { - const partNumber = $(this).data("part-number"); - const part = partsListData.find( - (p) => p.part_number == partNumber, - ); - if (part) newOrder.push(part); - }); - partsListData = newOrder; - console.log( - "Ordine parti aggiornato:", - partsListData.map((p) => p.part_number), - ); - markUnsaved(); - updateMarkers(); - }, - }); - } - - // Delegazione evento per il checkbox - $(document) - .off("change.showMix", "#showMixPartsAnnotations") - .on("change.showMix", "#showMixPartsAnnotations", function (e) { - e.preventDefault(); - e.stopPropagation(); - console.log( - "Evento change su #showMixPartsAnnotations, ID elemento:", - $(this).attr("id"), - ); - const isChecked = $(this).is(":checked"); - console.log( - "Checkbox #showMixPartsAnnotations cambiato:", - isChecked, - ); - if (!$("#showMixPartsAnnotations").length) { - console.error( - "Checkbox #showMixPartsAnnotations non trovato nel DOM.", - ); - const errorMsg = $( - '', - ); - $("#annotationsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - return; - } - updatePartsList(); - updateMarkers(); - setTimeout(enableDragDropPartsList, 50); - if ( - photoAnnotations[$("#samplePhotoAnnotations").attr("src")] - ?.hasDescriptions - ) { - updateDescriptions(); - } - }); - - // =================== - // LOAD EXISTING PARTS - // =================== - function loadExistingParts(iddatadb, idquotations) { - console.log("loadExistingParts chiamato con:", { - iddatadb, - idquotations, - }); - if (!iddatadb && !idquotations) { - const errorMsg = $( - '', - ); - $("#annotationsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - return; - } - - const endpoint = idquotations - ? "load_parts_quotation.php" - : "load_parts.php"; - const data = idquotations - ? { idquotations: idquotations } - : { iddatadb: iddatadb }; - $.ajax({ - url: endpoint, - method: "GET", - data: data, - success: function (response) { - console.log("Risposta da load_parts:", response); - partsListData = []; - if ( - response.success && - response.parts && - response.parts.length > 0 - ) { - partsListData = response.parts; - response.parts.forEach((part) => { - const isMixPart = - String(part.mix || "N").toUpperCase() === "Y"; - const defaultColor = isMixPart ? "#0000ff" : "#ff0000"; - - partColors[part.part_number] = defaultColor; - }); - updatePartsList(); - // Forza aggiornamento iniziale del checkbox - setTimeout(() => { - $("#showMixPartsAnnotations").trigger("change.showMix"); - }, 100); - } else { - const errorMsg = $( - '", - ); - $("#annotationsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - }, - error: function (xhr, status, error) { - console.error("Errore AJAX in loadExistingParts:", { - status, - error, - responseText: xhr.responseText, - }); - const errorMsg = $( - '", - ); - $("#annotationsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }, - }); - } - - // =================== - // MARKERS & DESCRIPTIONS - // =================== - function updateMarkers() { - console.log( - "updateMarkers chiamato, markerObjects:", - Object.keys(markerObjects), - ); - for (let markerId in markerObjects) { - fabricCanvas.remove(markerObjects[markerId]); - delete markerObjects[markerId]; - } - markerObjects = {}; - - const currentPhoto = $("#samplePhotoAnnotations").attr("src"); - const annotations = photoAnnotations[currentPhoto] || { - markers: [], - hasDescriptions: false, - descriptionPosition: { x: 10, y: 10 }, - descriptionSize: { - width: photoData.displayWidth * 0.3, - height: photoData.displayHeight * 0.3, - }, - }; - const showMixParts = $("#showMixPartsAnnotations").is(":checked"); - - annotations.markers.forEach((marker) => { - const part = partsListData.find( - (p) => p.part_number == marker.partNumber, - ); - const partDescription = part ? part.part_description : ""; - const isMixPart = - part && String(part.mix || "N").toUpperCase() === "Y"; - - if (!showMixParts && isMixPart) { - console.log("Ignoro marker per parte Mix:", marker.partNumber); - return; - } - - const size = partSizes[marker.partNumber] || globalMarkerSize; - const radius = size / 2; - const fontSize = Math.max(10, Math.round(size * 0.65)); - - const markerColor = - marker.color || partColors[marker.partNumber] || "#ff0000"; - - const circle = new fabric.Circle({ - radius: radius, - fill: markerColor, - stroke: markerColor, - strokeWidth: 1, - left: marker.x * photoData.scale, - top: marker.y * photoData.scale, - originX: "center", - originY: "center", - selectable: true, - hasControls: false, - lockScalingX: true, - lockScalingY: true, - lockRotation: true, - }); - - const text = new fabric.Text(marker.partNumber.toString(), { - fontFamily: "Arial", - fontSize: fontSize, - fontWeight: "bold", - fill: "#ffffff", - left: marker.x * photoData.scale, - top: marker.y * photoData.scale, - originX: "center", - originY: "middle", - selectable: true, - hasControls: false, - lockScalingX: true, - lockScalingY: true, - lockRotation: true, - }); - - const group = new fabric.Group([circle, text], { - left: marker.x * photoData.scale, - top: marker.y * photoData.scale, - originX: "center", - originY: "center", - selectable: true, - hasControls: false, - lockScalingX: true, - lockScalingY: true, - lockRotation: true, - }); - - group.markerId = marker.id; - group.partNumber = marker.partNumber; - - group.on("moving", function () { - marker.x = this.left / photoData.scale; - marker.y = this.top / photoData.scale; - console.log("Marker spostato:", { - partNumber: marker.partNumber, - x: marker.x, - y: marker.y, - }); - markUnsaved(); - }); - - fabricCanvas.add(group); - markerObjects[marker.id] = group; - }); - - fabricCanvas.renderAll(); - console.log( - "Canvas aggiornato, numero di marker:", - Object.keys(markerObjects).length, - ); - } - - function updateDescriptions() { - console.log("updateDescriptions chiamato"); - const currentPhoto = $("#samplePhotoAnnotations").attr("src"); - const annotations = photoAnnotations[currentPhoto] || { - markers: [], - hasDescriptions: false, - descriptionPosition: { x: 10, y: 10 }, - descriptionSize: { - width: photoData.displayWidth * 0.3, - height: photoData.displayHeight * 0.3, - }, - }; - const showMixParts = $("#showMixPartsAnnotations").is(":checked"); - - if (!annotations.hasDescriptions) { - if (descriptionTextbox) { - fabricCanvas.remove(descriptionTextbox); - descriptionTextbox = null; - fabricCanvas.renderAll(); - } - console.log( - "Nessuna descrizione attiva, rimuovo textbox se presente.", - ); - return; - } - - const partsList = partsListData - .filter((part) => { - const isMixPart = String(part.mix || "N").toUpperCase() === "Y"; - return showMixParts || !isMixPart; - }) - .map((part) => `${part.part_number} ${part.part_description}`); - - const text = partsList.join("\n"); - console.log("Testo descrizione generato:", text); - - if (descriptionTextbox) { - fabricCanvas.remove(descriptionTextbox); - descriptionTextbox = null; - } - - descriptionTextbox = new fabric.Textbox(text, { - left: annotations.descriptionPosition.x * photoData.scale, - top: annotations.descriptionPosition.y * photoData.scale, - width: annotations.descriptionSize.width, - scaleX: 1, - scaleY: 1, - backgroundColor: "transparent", - fontFamily: "Arial", - fontSize: Math.max(16, Math.round(globalMarkerSize * 0.8)), - fill: globalDescriptionColor, - padding: 10, - editable: false, - selectable: true, - hasControls: true, - borderColor: "#ccc", - cornerColor: "#888", - cornerSize: 10, - transparentCorners: false, - lockRotation: true, - lockScalingFlip: true, - minScaleLimit: 0.1, - }); - - descriptionTextbox.on("scaling", function () { - fitFontToBox(this); - annotations.descriptionSize.width = this.width * this.scaleX; - annotations.descriptionSize.height = this.height * this.scaleY; - console.log( - "Descrizione ridimensionata:", - annotations.descriptionSize, - ); - markUnsaved(); - }); - - descriptionTextbox.on("moving", function () { - annotations.descriptionPosition.x = this.left / photoData.scale; - annotations.descriptionPosition.y = this.top / photoData.scale; - console.log( - "Descrizione spostata:", - annotations.descriptionPosition, - ); - markUnsaved(); - }); - - fabricCanvas.add(descriptionTextbox); - fitFontToBox(descriptionTextbox); - fabricCanvas.renderAll(); - console.log("Descrizione aggiunta al canvas:", text); - } - - function fitFontToBox(textbox) { - let fontSize = 24; - textbox.set("fontSize", fontSize); - textbox.setCoords(); - - while ( - (textbox.textLines.length * textbox.fontSize * 1.2 > - textbox.height * textbox.scaleY || - textbox._getTransformedDimensions().x > - textbox.width * textbox.scaleX) && - fontSize > 8 - ) { - fontSize -= 1; - textbox.set("fontSize", fontSize); - textbox.setCoords(); - } - - while ( - textbox.textLines.length * textbox.fontSize * 1.2 < - textbox.height * textbox.scaleY && - textbox._getTransformedDimensions().x < - textbox.width * textbox.scaleX && - fontSize < 32 - ) { - fontSize += 1; - textbox.set("fontSize", fontSize); - textbox.setCoords(); - } - } - - function clearCanvasMarkers(clearDescriptions = true) { - console.log( - "clearCanvasMarkers chiamato, clearDescriptions:", - clearDescriptions, - ); - const currentPhoto = $("#samplePhotoAnnotations").attr("src"); - if (clearDescriptions && photoAnnotations[currentPhoto]) { - photoAnnotations[currentPhoto].hasDescriptions = false; - photoAnnotations[currentPhoto].descriptionPosition = { - x: 10, - y: 10, - }; - photoAnnotations[currentPhoto].descriptionSize = { - width: photoData.displayWidth * 0.3, - height: photoData.displayHeight * 0.3, - }; - if (descriptionTextbox) { - fabricCanvas.remove(descriptionTextbox); - descriptionTextbox = null; - } - } - - for (let markerId in markerObjects) { - fabricCanvas.remove(markerObjects[markerId]); - delete markerObjects[markerId]; - } - markerObjects = {}; - - const canvas = document.getElementById("photoCanvasAnnotations"); - const ctx = canvas.getContext("2d"); - canvas.width = photoData.naturalWidth; - canvas.height = photoData.naturalHeight; - canvas.style.width = `${photoData.displayWidth}px`; - canvas.style.height = `${photoData.displayHeight}px`; - ctx.clearRect(0, 0, canvas.width, canvas.height); - if ($("#samplePhotoAnnotations")[0].naturalWidth) { - ctx.drawImage( - $("#samplePhotoAnnotations")[0], - 0, - 0, - canvas.width, - canvas.height, - ); - } - updateMarkers(); - if (photoAnnotations[currentPhoto]?.hasDescriptions) { - updateDescriptions(); - } - markUnsaved(); - } - - function undoLastMarker() { - console.log("undoLastMarker chiamato"); - const currentPhoto = $("#samplePhotoAnnotations").attr("src"); - if ( - photoAnnotations[currentPhoto] && - photoAnnotations[currentPhoto].markers.length > 0 - ) { - const lastMarker = photoAnnotations[currentPhoto].markers.pop(); - if (markerObjects[lastMarker.id]) { - fabricCanvas.remove(markerObjects[lastMarker.id]); - delete markerObjects[lastMarker.id]; - fabricCanvas.renderAll(); - } - console.log("Ultimo marker rimosso:", lastMarker); - markUnsaved(); - } - } - - // Delegazione evento per il pulsante "Descrizioni" - $(document) - .off("click.addDescriptions", "#addDescriptionsBtnAnnotations") - .on( - "click.addDescriptions", - "#addDescriptionsBtnAnnotations", - function (e) { - e.preventDefault(); - e.stopPropagation(); - console.log( - "Evento click su #addDescriptionsBtnAnnotations, ID elemento:", - $(this).attr("id"), - ); - if (!$("#addDescriptionsBtnAnnotations").length) { - console.error( - "Pulsante #addDescriptionsBtnAnnotations non trovato nel DOM.", - ); - const errorMsg = $( - '', - ); - $("#annotationsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - return; - } - const currentPhoto = $("#samplePhotoAnnotations").attr("src"); - if (!photoAnnotations[currentPhoto]) { - photoAnnotations[currentPhoto] = { - markers: [], - hasDescriptions: false, - descriptionPosition: { x: 10, y: 10 }, - descriptionSize: { - width: photoData.displayWidth * 0.3, - height: photoData.displayHeight * 0.3, - }, - }; - } - photoAnnotations[currentPhoto].hasDescriptions = true; - updateDescriptions(); - markUnsaved(); - }, - ); - - // Delegazione evento per il pulsante "Rimuovi" - $(document) - .off("click.removeAnnotations", "#removeAnnotationsBtnAnnotations") - .on( - "click.removeAnnotations", - "#removeAnnotationsBtnAnnotations", - function (e) { - e.preventDefault(); - e.stopPropagation(); - console.log( - "Evento click su #removeAnnotationsBtnAnnotations, ID elemento:", - $(this).attr("id"), - ); - if (!$("#removeAnnotationsBtnAnnotations").length) { - console.error( - "Pulsante #removeAnnotationsBtnAnnotations non trovato nel DOM.", - ); - const errorMsg = $( - '', - ); - $("#annotationsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - return; - } - clearCanvasMarkers(true); - }, - ); - - // Delegazione evento per il pulsante "Undo" - $(document) - .off("click.undoMarker", "#undoMarkerBtnAnnotations") - .on("click.undoMarker", "#undoMarkerBtnAnnotations", function (e) { - e.preventDefault(); - e.stopPropagation(); - console.log( - "Evento click su #undoMarkerBtnAnnotations, ID elemento:", - $(this).attr("id"), - ); - undoLastMarker(); - }); - - // =================== - // SAVE PHOTO - // =================== - $(document) - .off("click.savePhoto", "#savePhotoBtnAnnotations") - .on("click.savePhoto", "#savePhotoBtnAnnotations", function (e) { - e.preventDefault(); - e.stopPropagation(); - console.log( - "Evento click su #savePhotoBtnAnnotations, ID elemento:", - $(this).attr("id"), - ); - if (!$("#samplePhotoAnnotations").attr("src")) { - const errorMsg = $( - '', - ); - $("#annotationsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - return; - } - - if (!fabricCanvas) { - const errorMsg = $( - '', - ); - $("#annotationsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - return; - } - - const canvas = document.getElementById("photoCanvasAnnotations"); - const ctx = canvas.getContext("2d"); - const img = $("#samplePhotoAnnotations")[0]; - - if (!img.complete || img.naturalWidth === 0) { - const errorMsg = $( - '', - ); - $("#annotationsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - return; - } - - canvas.width = photoData.naturalWidth; - canvas.height = photoData.naturalHeight; - ctx.drawImage(img, 0, 0, canvas.width, canvas.height); - - try { - const fabricDataURL = fabricCanvas.toDataURL({ - format: "png", - multiplier: 1 / photoData.scale, - }); - - const tempImg = new Image(); - tempImg.src = fabricDataURL; - tempImg.onload = function () { - ctx.drawImage(tempImg, 0, 0, canvas.width, canvas.height); - - fetch(fabricDataURL) - .then((res) => res.blob()) - .then((blob) => { - canvas.toBlob(function (blob) { - if (!blob) { - const errorMsg = $( - '', - ); - $("#annotationsModal .modal-body").prepend( - errorMsg, - ); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - return; - } - - const timestamp = new Date() - .toISOString() - .replace(/[:.]/g, "-"); - const iddatadb = - $("#annotationsModal").data("iddatadb"); - const idquotations = - $("#annotationsModal").data("idquotations"); - const id = iddatadb || idquotations; - const endpoint = idquotations - ? "save_annotated_photo_quotation.php" - : "save_annotated_photo.php"; - const finalName = `photo_${id}_${timestamp}.png`; - - const formData = new FormData(); - formData.append("file", blob, finalName); - formData.append("filename", finalName); - formData.append( - idquotations ? "idquotations" : "iddatadb", - id, - ); - - $.ajax({ - url: endpoint, - method: "POST", - data: formData, - processData: false, - contentType: false, - success: function (response) { - if (response.success) { - const successMsg = $( - '", - ); - $( - "#annotationsModal .modal-body", - ).prepend(successMsg); - setTimeout(function () { - successMsg.fadeOut( - 500, - function () { - $(this).remove(); - }, - ); - }, 5000); - - const photoSelector = $( - "#photoSelectorAnnotations", - ); - if (photoSelector.length > 0) { - const newPhotoPath = - response.file_path; - const newPhotoName = - newPhotoPath - .split("/") - .pop(); - const optionCount = - photoSelector.find( - "option", - ).length; - - const newOption = $( - "", - ) - .val(newPhotoPath) - .text( - `Photo ${optionCount + 1} - ${newPhotoName}`, - ); - photoSelector.append(newOption); - photoSelector - .val(newPhotoPath) - .trigger("change"); - } - - unsavedChanges = false; - } else { - const errorMsg = $( - '", - ); - $( - "#annotationsModal .modal-body", - ).prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut( - 500, - function () { - $(this).remove(); - }, - ); - }, 5000); - } - }, - error: function (xhr, status, error) { - const errorMsg = $( - '", - ); - $( - "#annotationsModal .modal-body", - ).prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }, - }); - }, "image/png"); - }); - }; - } catch (e) { - const errorMsg = $( - '", - ); - $("#annotationsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - }); - - function markUnsaved() { - if (!unsavedChanges) { - unsavedChanges = true; - console.log("Modifiche non salvate rilevate."); - } - } -}); diff --git a/public/userarea/apply_routine.php b/public/userarea/apply_routine.php deleted file mode 100644 index 64670f3e..00000000 --- a/public/userarea/apply_routine.php +++ /dev/null @@ -1,53 +0,0 @@ -safeLoad(); -date_default_timezone_set($_ENV['APP_TIMEZONE'] ?? 'Europe/Rome'); - -$response = ['error' => '', 'rows' => [], 'columns' => [], 'template_id' => 0, 'filename' => '', 'excel_data' => []]; - -try { - if ($_SERVER['REQUEST_METHOD'] === 'POST') { - $input = json_decode(file_get_contents('php://input'), true); - $template_id = isset($input['template_id']) ? intval($input['template_id']) : 0; - $filename = $input['routine_data']['filename'] ?? ''; - $headerrow = $input['routine_data']['headerrow'] ?? 1; - $excelData = $input['excel_data'] ?? []; - $routineData = $input['routine_data'] ?? []; - - if (!$filename || empty($excelData)) { - throw new Exception("Dati della routine mancanti."); - } - - $routineFile = __DIR__ . '/routines/' . $filename; - if (file_exists($routineFile)) { - include_once $routineFile; - $routineData['xls_headers'] = $_SESSION['headers'] ?? []; - applyRoutine($excelData, $routineData); // Modifica $excelData in place - error_log("Routine {$routineData['name']} applicata (file: {$filename}) per template {$template_id}, header row: {$headerrow}"); - } else { - throw new Exception("File della routine non trovato: $routineFile"); - } - - // Aggiorna la sessione con i dati modificati - $_SESSION['excel_data'] = $excelData; - - $response['excel_data'] = $excelData; - $response['rows'] = array_column($excelData, 'data'); - $response['columns'] = $_SESSION['headers']; - $response['template_id'] = $template_id; - $response['filename'] = $input['filename'] ?? ''; - } else { - $response['error'] = "Richiesta non valida."; - } -} catch (Exception $e) { - $response['error'] = "Errore durante l'applicazione della routine: " . $e->getMessage(); - error_log("Exception in apply_routine.php: " . $e->getMessage()); -} - -ob_end_clean(); -header('Content-Type: application/json'); -echo json_encode($response); -exit; diff --git a/public/userarea/auth_proxy.php b/public/userarea/auth_proxy.php deleted file mode 100644 index eff1f638..00000000 --- a/public/userarea/auth_proxy.php +++ /dev/null @@ -1,58 +0,0 @@ - 'WebApiUser', - 'Password' => 'webapiuser01' -]; - -// Inizializza cURL -$ch = curl_init($api_url); - -// Configura le opzioni di cURL -curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); -curl_setopt($ch, CURLOPT_POST, true); -curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($credentials)); -curl_setopt($ch, CURLOPT_HTTPHEADER, [ - 'Content-Type: application/json', - 'Accept: application/json' -]); -curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Solo per test -curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // Solo per test -curl_setopt($ch, CURLOPT_VERBOSE, true); -$log = fopen('curl_auth_debug.log', 'w'); -curl_setopt($ch, CURLOPT_STDERR, $log); - -// Esegui la richiesta -$response = curl_exec($ch); -$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); -$curl_error = curl_error($ch); -fclose($log); - -// Verifica errori -if ($response === false || $http_code != 200) { - http_response_code($http_code ? $http_code : 500); - echo json_encode([ - 'error' => 'Errore nella richiesta API', - 'http_code' => $http_code, - 'curl_error' => $curl_error, - 'response' => substr($response, 0, 1000) - ]); -} else { - $decoded = json_decode($response); - if (json_last_error() === JSON_ERROR_NONE) { - http_response_code($http_code); - echo $response; - } else { - http_response_code(500); - echo json_encode([ - 'error' => 'Risposta non JSON valida', - 'http_code' => $http_code, - 'response' => substr($response, 0, 1000) - ]); - } -} - -curl_close($ch); diff --git a/public/userarea/checkpatch.php b/public/userarea/checkpatch.php deleted file mode 100644 index 7fefccea..00000000 --- a/public/userarea/checkpatch.php +++ /dev/null @@ -1,131 +0,0 @@ -getConnection(); - -header("Content-Type: application/json"); - -// 🔹 Configura directory log (creala se non esiste) -$logDir = __DIR__ . '/logs/api/'; -if (!is_dir($logDir)) { - mkdir($logDir, 0755, true); -} - -// 🔹 Base URL API -$apiBaseUrl = 'https://93.43.5.102/limsapi/api/odata/'; - -// 🔹 Hardcoded values -$iddatadb = 846; -$commessaId = 533357; - -try { - // 🔹 STEP 4: Fetch Field Values with Labels (usa dati reali per iddatadb=845) - $stmt = $pdo->prepare(" - SELECT - idd.field_value, - m.field_label, - m.schema_id, - m.field_id - FROM - import_data_details as idd - JOIN template_mapping m ON idd.mapping_id = m.id - WHERE idd.id = :iddatadb - "); - $stmt->execute(['iddatadb' => $iddatadb]); - $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); - - $fieldValues = []; - $valueMap = []; // Mappa per field_id -> valore - foreach ($rows as $row) { - $fieldValues[] = [ - "IdCommesseCustomFields" => (int) $row['field_id'], - "Valore" => $row['field_value'], - "FieldLabel" => $row['field_label'] - ]; - $valueMap[(int) $row['field_id']] = $row['field_value']; // Mappa per ID definizione - } - - // Logga i fieldValues in error_log - $logFieldValues = "FieldValues dal DB (iddatadb={$iddatadb}):\n" . json_encode($fieldValues, JSON_PRETTY_PRINT); - error_log($logFieldValues); - - // 🔹 Initialize API client - $api = VisualLimsApiClient::getInstance(); - - // 🔹 STEP A: GET iniziale per CommesseCustomFields con espansione CustomField - $expand = "CommesseCustomFields(\$expand=CustomField)"; // Espansione come da istruzioni fornitore - $commessaWithFields = $api->get("CommessaWeb(" . $commessaId . ")?\$expand=" . $expand); - - // 🔹 STEP B: Prepara payload PATCH (tutti i campi, sovrascrivi se match su CustomField.IdCustomField == field_id) - $commessaCustomFields = []; - foreach ($commessaWithFields["CommesseCustomFields"] as $customField) { - $definitionId = (int) ($customField["CustomField"]["IdCustomField"] ?? 0); // Usa IdCustomField dal CustomField - $currentValue = $customField["Valore"] ?? ''; - $newValue = isset($valueMap[$definitionId]) ? $valueMap[$definitionId] : $currentValue; - - $commessaCustomFields[] = [ - "IdCommesseCustomFields" => (int) $customField["IdCommesseCustomFields"], - "Valore" => $newValue - ]; - } - - // 🔹 Unico file di log per tutto - $logFile = $logDir . "commessa_{$commessaId}_patch_and_get_" . time() . ".txt"; - $logContent = "FieldValues dal DB (iddatadb={$iddatadb}):\n" . json_encode($fieldValues, JSON_PRETTY_PRINT) . "\n\n"; - - // Log curl-like per GET iniziale - $logContent .= "GET iniziale:\n" . - "curl --location --request GET '{$apiBaseUrl}CommessaWeb({$commessaId})?\$expand=CommesseCustomFields(\$expand=CustomField)' \\\n" . - "--header 'Authorization: Bearer ••••••'\n\n" . - "RESPONSE:\n" . json_encode($commessaWithFields, JSON_PRETTY_PRINT) . "\n\n---\n"; - - if (!empty($commessaCustomFields)) { - $updatePayload = ["CommesseCustomFields" => $commessaCustomFields]; - - // Log curl-like per PATCH - $jsonPayload = json_encode($updatePayload, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); - $logContent .= "PATCH:\n" . - "curl --location --request PATCH '{$apiBaseUrl}CommessaWeb({$commessaId})' \\\n" . - "--header 'Content-Type: application/json' \\\n" . - "--header 'Authorization: Bearer ••••••' \\\n" . - "--data '{$jsonPayload}'\n\n"; - - $patchResponse = $api->patch("CommessaWeb({$commessaId})", $updatePayload); - - $logContent .= "PATCH RESPONSE:\n" . json_encode($patchResponse, JSON_PRETTY_PRINT) . "\n\n---\n"; - } else { - $logContent .= "PATCH: Nessun campo custom da aggiornare\n\n---\n"; - } - - // 🔹 STEP C: GET di controllo post-PATCH - $commessaAfterPatch = $api->get("CommessaWeb(" . $commessaId . ")?\$expand=" . $expand); - - // Log curl-like per GET di controllo - $logContent .= "GET di controllo:\n" . - "curl --location --request GET '{$apiBaseUrl}CommessaWeb({$commessaId})?\$expand=CommesseCustomFields(\$expand=CustomField)' \\\n" . - "--header 'Authorization: Bearer ••••••'\n\n" . - "RESPONSE:\n" . json_encode($commessaAfterPatch, JSON_PRETTY_PRINT); - - // Salva log unico - file_put_contents($logFile, $logContent); - - // 🔹 Output a schermo - echo json_encode([ - "success" => true, - "message" => "PATCH eseguito su commessa {$commessaId} con dati da iddatadb {$iddatadb}", - "commessaAfterPatch" => $commessaAfterPatch, - "totalCustomFieldsUpdated" => count($commessaCustomFields), - "fieldValues" => $fieldValues, - "logFile" => $logFile - ]); -} catch (Exception $e) { - error_log("Patch Error: " . $e->getMessage() . "\nTrace: " . $e->getTraceAsString()); - - echo json_encode([ - "success" => false, - "message" => "Patch failed: " . $e->getMessage(), - "logFile" => $logFile ?? 'Nessun log generato' - ]); -} diff --git a/public/userarea/clone_parts_to_visible.php b/public/userarea/clone_parts_to_visible.php deleted file mode 100644 index 6c8eb272..00000000 --- a/public/userarea/clone_parts_to_visible.php +++ /dev/null @@ -1,133 +0,0 @@ -getConnection(); -$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - -$data = json_decode(file_get_contents('php://input'), true); - -$sourceIddatadb = isset($data['source_iddatadb']) ? (int)$data['source_iddatadb'] : 0; -$targetList = $data['target_iddatadb_list'] ?? []; - -$targetIds = array_values(array_unique(array_filter(array_map('intval', (array)$targetList), function ($v) use ($sourceIddatadb) { - return $v > 0 && $v !== $sourceIddatadb; -}))); - -if ($sourceIddatadb <= 0 || empty($targetIds)) { - echo json_encode([ - 'success' => false, - 'message' => 'Missing source or target records' - ]); - exit; -} - -try { - $pdo->beginTransaction(); - - // 1. Load source parts - $stmtParts = $pdo->prepare(" - SELECT id, part_number, part_description, mix, idmatrice, note, dateexpiry - FROM identification_parts - WHERE iddatadb = ? - AND part_description IS NOT NULL - AND TRIM(part_description) <> '' - ORDER BY part_number ASC, id ASC - "); - $stmtParts->execute([$sourceIddatadb]); - $sourceParts = $stmtParts->fetchAll(PDO::FETCH_ASSOC); - - if (empty($sourceParts)) { - $pdo->rollBack(); - echo json_encode([ - 'success' => false, - 'message' => 'No parts found for source record' - ]); - exit; - } - - // 2. Prepare statements - $stmtInsertPart = $pdo->prepare(" - INSERT INTO identification_parts - (iddatadb, part_number, part_description, mix, idmatrice, note, dateexpiry, created_at, updated_at) - VALUES - (:iddatadb, :part_number, :part_description, :mix, :idmatrice, :note, :dateexpiry, NOW(), NOW()) - "); - - $stmtLoadCF = $pdo->prepare(" - SELECT field_id, value_id, value_text - FROM identification_parts_customfields - WHERE part_id = ? - ORDER BY id ASC - "); - - $stmtInsertCF = $pdo->prepare(" - INSERT INTO identification_parts_customfields - (part_id, field_id, value_id, value_text, created_at, updated_at) - VALUES - (:part_id, :field_id, :value_id, :value_text, NOW(), NOW()) - "); - - $details = []; - $totalClonedParts = 0; - - // 3. Clone source parts to each target record - foreach ($targetIds as $targetIddatadb) { - $clonedCountForTarget = 0; - - foreach ($sourceParts as $part) { - $stmtInsertPart->execute([ - ':iddatadb' => $targetIddatadb, - ':part_number' => $part['part_number'], - ':part_description' => $part['part_description'], - ':mix' => $part['mix'] ?? 'N', - ':idmatrice' => $part['idmatrice'] !== '' ? $part['idmatrice'] : null, - ':note' => $part['note'] ?? null, - ':dateexpiry' => $part['dateexpiry'] ?? null, - ]); - - $newPartId = (int)$pdo->lastInsertId(); - - // Load source custom fields for this part - $stmtLoadCF->execute([(int)$part['id']]); - $customFields = $stmtLoadCF->fetchAll(PDO::FETCH_ASSOC); - - foreach ($customFields as $cf) { - $stmtInsertCF->execute([ - ':part_id' => $newPartId, - ':field_id' => (int)$cf['field_id'], - ':value_id' => ($cf['value_id'] !== null && $cf['value_id'] !== '') ? (int)$cf['value_id'] : null, - ':value_text' => $cf['value_text'] !== '' ? $cf['value_text'] : null, - ]); - } - - $clonedCountForTarget++; - $totalClonedParts++; - } - - $details[] = [ - 'target_iddatadb' => $targetIddatadb, - 'cloned_parts' => $clonedCountForTarget - ]; - } - - $pdo->commit(); - - echo json_encode([ - 'success' => true, - 'source_iddatadb' => $sourceIddatadb, - 'cloned_targets' => count($targetIds), - 'total_cloned_parts' => $totalClonedParts, - 'details' => $details - ]); -} catch (Throwable $e) { - if ($pdo->inTransaction()) { - $pdo->rollBack(); - } - - echo json_encode([ - 'success' => false, - 'message' => 'Clone failed: ' . $e->getMessage() - ]); -} diff --git a/public/userarea/clone_template.php b/public/userarea/clone_template.php deleted file mode 100644 index 4f756402..00000000 --- a/public/userarea/clone_template.php +++ /dev/null @@ -1,228 +0,0 @@ -getConnection(); - - $pdo->beginTransaction(); - - // 1. Get source template - $stmt = $pdo->prepare(" - SELECT - name, - source_type, - header_row, - start_column, - description, - target_table, - sample_xlsx, - button_size, - button_bg_color, - button_text_color, - button_label, - status, - client_specific_fields, - idclient, - clientname, - schemaname, - idschema, - schemajson, - xls_headers, - api_sample_json, - json_nodes, - idroutine - FROM excel_templates - WHERE id = ? - LIMIT 1 - "); - $stmt->execute([$sourceTemplateId]); - $template = $stmt->fetch(PDO::FETCH_ASSOC); - - if (!$template) { - throw new Exception("Template not found."); - } - - // 2. Generate unique clone name - $baseName = 'Copia di ' . $template['name']; - $newName = $baseName; - - $checkStmt = $pdo->prepare("SELECT COUNT(*) FROM excel_templates WHERE name = ?"); - $checkStmt->execute([$newName]); - - if ((int)$checkStmt->fetchColumn() > 0) { - $counter = 2; - - do { - $newName = $baseName . ' (' . $counter . ')'; - $checkStmt->execute([$newName]); - $exists = (int)$checkStmt->fetchColumn() > 0; - $counter++; - } while ($exists); - } - - // 3. Insert cloned template - $insertTemplate = $pdo->prepare(" - INSERT INTO excel_templates ( - name, - source_type, - created_at, - updated_at, - header_row, - start_column, - description, - target_table, - sample_xlsx, - button_size, - button_bg_color, - button_text_color, - button_label, - status, - client_specific_fields, - idclient, - clientname, - schemaname, - idschema, - schemajson, - xls_headers, - api_sample_json, - json_nodes, - idroutine - ) VALUES ( - :name, - :source_type, - NOW(), - NOW(), - :header_row, - :start_column, - :description, - :target_table, - :sample_xlsx, - :button_size, - :button_bg_color, - :button_text_color, - :button_label, - :status, - :client_specific_fields, - :idclient, - :clientname, - :schemaname, - :idschema, - :schemajson, - :xls_headers, - :api_sample_json, - :json_nodes, - :idroutine - ) - "); - - $insertTemplate->execute([ - ':name' => $newName, - ':source_type' => $template['source_type'], - ':header_row' => $template['header_row'], - ':start_column' => $template['start_column'], - ':description' => $template['description'], - ':target_table' => $template['target_table'], - ':sample_xlsx' => $template['sample_xlsx'], - ':button_size' => $template['button_size'], - ':button_bg_color' => $template['button_bg_color'], - ':button_text_color' => $template['button_text_color'], - ':button_label' => $template['button_label'], - ':status' => $template['status'], - ':client_specific_fields' => $template['client_specific_fields'], - ':idclient' => $template['idclient'], - ':clientname' => $template['clientname'], - ':schemaname' => $template['schemaname'], - ':idschema' => $template['idschema'], - ':schemajson' => $template['schemajson'], - ':xls_headers' => $template['xls_headers'], - ':api_sample_json' => $template['api_sample_json'], - ':json_nodes' => $template['json_nodes'], - ':idroutine' => $template['idroutine'] - ]); - - $newTemplateId = (int)$pdo->lastInsertId(); - - if ($newTemplateId <= 0) { - throw new Exception("Unable to create cloned template."); - } - - // 4. Clone template_mapping rows - $cloneMappings = $pdo->prepare(" - INSERT INTO template_mapping ( - template_id, - schema_id, - field_id, - excel_column, - json_node, - is_manual, - manual_default, - auto_value, - data_type, - is_required, - default_value, - has_list, - length, - decimals, - min_value, - max_value, - default_curr_date, - tablename, - field_label, - main_field, - is_visible_import, - is_visible_parts - ) - SELECT - :new_template_id, - schema_id, - field_id, - excel_column, - json_node, - is_manual, - manual_default, - auto_value, - data_type, - is_required, - default_value, - has_list, - length, - decimals, - min_value, - max_value, - default_curr_date, - tablename, - field_label, - main_field, - is_visible_import, - is_visible_parts - FROM template_mapping - WHERE template_id = :source_template_id - "); - - $cloneMappings->execute([ - ':new_template_id' => $newTemplateId, - ':source_template_id' => $sourceTemplateId - ]); - - $pdo->commit(); - - header("Location: templates_dashboard.php?cloned=1&new_id=" . $newTemplateId); - exit; -} catch (Exception $e) { - if (isset($pdo) && $pdo->inTransaction()) { - $pdo->rollBack(); - } - - die("Clone error: " . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8')); -} diff --git a/public/userarea/connectapi.php b/public/userarea/connectapi.php deleted file mode 100644 index 39d0fa62..00000000 --- a/public/userarea/connectapi.php +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - - - Autenticazione VisualLims - - - - - - -

    Autenticazione VisualLims

    - -
    - - -

    Seleziona un cliente:

    - - - -
    - - - - - - - - - - \ No newline at end of file diff --git a/public/userarea/create_fixed_fields.php b/public/userarea/create_fixed_fields.php deleted file mode 100644 index 57eae375..00000000 --- a/public/userarea/create_fixed_fields.php +++ /dev/null @@ -1,79 +0,0 @@ -getConnection(); - -$input = json_decode(file_get_contents('php://input'), true); -$templateId = (int)($input['template_id'] ?? 0); - -if ($templateId <= 0) { - echo json_encode(['success' => false, 'message' => 'Invalid template_id']); - exit; -} - -// If already exists, do nothing -$stmt = $pdo->prepare("SELECT COUNT(*) FROM template_fixed_mapping WHERE template_id = ?"); -$stmt->execute([$templateId]); -if ((int)$stmt->fetchColumn() > 0) { - echo json_encode(['success' => true, 'created' => 0, 'message' => 'Fixed fields already exist']); - exit; -} - -/** - * FIXED FIELDS STANDARD (no UI selection) - * is_manual always 1 - * is_visible_import default 1 - */ -$fixedFields = [ - // fixed_field_key, data_type - ['ClienteResponsabile', 'INT'], - ['ClienteFornitore', 'INT'], - ['ClienteAnalisi', 'INT'], - ['MoltiplicatorePrezzo', 'INT'], - ['AnagraficaCertestObject', 'INT'], - ['AnagraficaCertestService', 'INT'], - ['ConsegnaRichiesta', 'DATE'], -]; - - -try { - $pdo->beginTransaction(); - - $ins = $pdo->prepare(" - INSERT INTO template_fixed_mapping - (template_id, fixed_field_key, is_manual, data_type, is_required, default_value, is_visible_import) - VALUES - (:template_id, :fixed_field_key, 1, :data_type, 1, NULL, 1) -"); - - - foreach ($fixedFields as $f) { - $ins->execute([ - ':template_id' => $templateId, - ':fixed_field_key' => $f[0], - ':data_type' => $f[1], - ]); - } - - - $pdo->commit(); - - // Return rows (for client render) - $stmt = $pdo->prepare(" - SELECT id, template_id, fixed_field_key, is_manual, data_type, is_required, default_value, is_visible_import - FROM template_fixed_mapping - WHERE template_id = ? - ORDER BY id ASC -"); - - $stmt->execute([$templateId]); - $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); - - echo json_encode(['success' => true, 'created' => count($rows), 'rows' => $rows]); -} catch (Exception $e) { - if ($pdo->inTransaction()) $pdo->rollBack(); - echo json_encode(['success' => false, 'message' => $e->getMessage()]); -} diff --git a/public/userarea/debug_commessa_api.php b/public/userarea/debug_commessa_api.php deleted file mode 100644 index 7f70715e..00000000 --- a/public/userarea/debug_commessa_api.php +++ /dev/null @@ -1,290 +0,0 @@ -No records found'; - return; - } - - $firstRow = reset($items); - if (!is_array($firstRow)) { - echo '
    ' . h(json_encode($items, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)) . '
    '; - return; - } - - $headers = []; - foreach ($items as $row) { - if (is_array($row)) { - $headers = array_unique(array_merge($headers, array_keys($row))); - } - } - - echo '
    '; - echo ''; - echo ''; - foreach ($headers as $header) { - echo ''; - } - echo ''; - - foreach ($items as $row) { - echo ''; - foreach ($headers as $header) { - $value = $row[$header] ?? ''; - if (is_array($value) || is_object($value)) { - $value = json_encode($value, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); - echo ''; - } else { - echo ''; - } - } - echo ''; - } - - echo '
    ' . h($header) . '
    ' . h($value) . '
    ' . h($value) . '
    '; - echo '
    '; -} - -try { - if ($entityId > 0) { - $api = VisualLimsApiClient::getInstance(); - - // Default expands for better debugging - if ($customExpand !== '') { - $expand = $customExpand; - } else { - if ($entityType === 'CommessaWeb') { - $expand = implode(',', [ - 'CommesseCustomFields($expand=CustomField)', - 'Campioni' - ]); - } else { - $expand = implode(',', [ - 'CommesseCustomFields($expand=CustomField)', - 'Campioni' - ]); - } - } - - $rawEndpoint = $entityType . '(' . $entityId . ')?$expand=' . $expand; - $result = $api->get($rawEndpoint); - } -} catch (Exception $e) { - $error = $e->getMessage(); -} -?> - - - - - - - Debug Commessa API - - - - - -
    -
    -

    Commessa / CommessaWeb API Inspector

    - -
    -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - -
    -
    -
    - - -
    -
    Requested Endpoint
    -
    -
    - - - -
    -
    - API Error:
    - -
    -
    - - - -
    -
    Main Information
    -
    -
    - ID - -
    -
    - Code - -
    -
    - Cliente - -
    -
    - SchemaCustomField - -
    -
    - Richiedente - -
    -
    - Descrizione - -
    -
    -
    - -
    -
    Direct Properties
    -
    -
    - - -
    -
    CommesseCustomFields
    - $field['IdCommesseCustomFields'] ?? '', - 'Valore' => $field['Valore'] ?? '', - 'CustomFieldId' => $field['CustomField']['IdCustomField'] ?? '', - 'Label' => $field['CustomField']['Descrizione'] ?? ($field['CustomField']['Name'] ?? ''), - 'Tipo' => $field['CustomField']['Tipo'] ?? '', - ]; - } - renderArrayAsTable($fieldsRows); - ?> -
    - - - -
    -
    Campioni
    - -
    - - -
    -
    Raw JSON
    -
    -
    - 0 && !$error): ?> -
    -
    No data returned from API
    -
    - -
    - - - - - \ No newline at end of file diff --git a/public/userarea/delete_part.php b/public/userarea/delete_part.php deleted file mode 100644 index fc5309a4..00000000 --- a/public/userarea/delete_part.php +++ /dev/null @@ -1,29 +0,0 @@ -getConnection(); - -$data = json_decode(file_get_contents('php://input'), true); - -$partId = $data['part_id'] ?? null; - -if (!$partId) { - echo json_encode(['success' => false, 'message' => 'ID parte mancante']); - exit; -} - -try { - $stmt = $pdo->prepare("DELETE FROM identification_parts WHERE id = :part_id"); - $stmt->execute([':part_id' => $partId]); - $rowCount = $stmt->rowCount(); - if ($rowCount > 0) { - echo json_encode(['success' => true, 'message' => 'Parte eliminata con successo']); - } else { - echo json_encode(['success' => false, 'message' => 'Nessuna parte trovata con ID ' . $partId]); - } -} catch (PDOException $e) { - echo json_encode(['success' => false, 'message' => 'Errore nell\'eliminazione: ' . $e->getMessage()]); -} diff --git a/public/userarea/delete_part_analysis.php b/public/userarea/delete_part_analysis.php deleted file mode 100644 index d8bb4687..00000000 --- a/public/userarea/delete_part_analysis.php +++ /dev/null @@ -1,48 +0,0 @@ - false, 'message' => 'Method not allowed']); - exit; - } - - $partId = isset($_POST['part_id']) ? (int)$_POST['part_id'] : 0; - $analysisRecordkey = trim($_POST['analysis_recordkey'] ?? ''); - - if ($partId <= 0 || $analysisRecordkey === '') { - http_response_code(400); - echo json_encode(['success' => false, 'message' => 'Missing required data']); - exit; - } - - $db = DBHandlerSelect::getInstance(); - $pdo = $db->getConnection(); - - $stmt = $pdo->prepare(" - DELETE FROM identification_parts_analyses - WHERE part_id = :part_id - AND analysis_recordkey = :analysis_recordkey - "); - $stmt->execute([ - ':part_id' => $partId, - ':analysis_recordkey' => $analysisRecordkey, - ]); - - echo json_encode([ - 'success' => true, - 'message' => 'Association deleted' - ]); -} catch (Throwable $e) { - http_response_code(500); - echo json_encode([ - 'success' => false, - 'message' => $e->getMessage() - ]); -} diff --git a/public/userarea/delete_part_quotation.php b/public/userarea/delete_part_quotation.php deleted file mode 100644 index ace1700e..00000000 --- a/public/userarea/delete_part_quotation.php +++ /dev/null @@ -1,28 +0,0 @@ -getConnection(); - -$data = json_decode(file_get_contents('php://input'), true); - -$partId = $data['part_id'] ?? null; - -if (!$partId) { - echo json_encode(['success' => false, 'message' => 'ID parte mancante']); - exit; -} - -try { - $stmt = $pdo->prepare("DELETE FROM identification_parts WHERE id = :part_id"); - $stmt->execute([':part_id' => $partId]); - $rowCount = $stmt->rowCount(); - if ($rowCount > 0) { - echo json_encode(['success' => true, 'message' => 'Parte eliminata con successo']); - } else { - echo json_encode(['success' => false, 'message' => 'Nessuna parte trovata con ID ' . $partId]); - } -} catch (PDOException $e) { - echo json_encode(['success' => false, 'message' => 'Errore nell\'eliminazione: ' . $e->getMessage()]); -} diff --git a/public/userarea/delete_photo.php b/public/userarea/delete_photo.php deleted file mode 100644 index 8e96d30e..00000000 --- a/public/userarea/delete_photo.php +++ /dev/null @@ -1,37 +0,0 @@ - false, 'message' => 'Richiesta non valida']); - exit; -} - -$photoId = intval($_POST['photo_id']); - -$db = DBHandlerSelect::getInstance(); -$pdo = $db->getConnection(); - -// Recupera il percorso del file -$stmt = $pdo->prepare("SELECT file_path FROM datadb_photos WHERE id = ?"); -$stmt->execute([$photoId]); -$photo = $stmt->fetch(PDO::FETCH_ASSOC); - -if (!$photo) { - echo json_encode(['success' => false, 'message' => 'Foto non trovata']); - exit; -} - -// Elimina il file dal server -$filePath = '../photostrf/' . $photo['file_path']; -if (file_exists($filePath)) { - unlink($filePath); -} - -// Elimina il record dal database -$stmt = $pdo->prepare("DELETE FROM datadb_photos WHERE id = ?"); -$stmt->execute([$photoId]); - -echo json_encode(['success' => true, 'message' => 'Foto eliminata con successo']); diff --git a/public/userarea/delete_record.php b/public/userarea/delete_record.php deleted file mode 100644 index 87f0b9cf..00000000 --- a/public/userarea/delete_record.php +++ /dev/null @@ -1,64 +0,0 @@ - false, 'message' => 'ID non valido']); - exit; -} - -// Connessione al database -try { - $db = DBHandlerSelect::getInstance(); - $pdo = $db->getConnection(); -} catch (Exception $e) { - http_response_code(500); - echo json_encode(['success' => false, 'message' => 'Errore di connessione al database: ' . $e->getMessage()]); - error_log("Errore di connessione al database: " . $e->getMessage()); - exit; -} - -// Inizia una transazione -$pdo->beginTransaction(); - -try { - // Elimina i dettagli associati dal tavolo import_data_details - $stmt = $pdo->prepare("DELETE FROM import_data_details WHERE id = ?"); - $stmt->execute([$iddatadb]); - - // Elimina il record principale dal tavolo datadb - $stmt = $pdo->prepare("DELETE FROM datadb WHERE iddatadb = ?"); - $stmt->execute([$iddatadb]); - - // Verifica se il record è stato eliminato - if ($stmt->rowCount() > 0) { - $pdo->commit(); - echo json_encode(['success' => true, 'message' => 'Record eliminato con successo']); - error_log("Record con iddatadb=$iddatadb eliminato con successo"); - } else { - $pdo->rollBack(); - http_response_code(404); - echo json_encode(['success' => false, 'message' => 'Record non trovato']); - error_log("Record con iddatadb=$iddatadb non trovato"); - } -} catch (Exception $e) { - $pdo->rollBack(); - http_response_code(500); - echo json_encode(['success' => false, 'message' => 'Errore durante la cancellazione: ' . $e->getMessage()]); - error_log("Errore durante la cancellazione del record con iddatadb=$iddatadb: " . $e->getMessage()); -} diff --git a/public/userarea/delete_template_xls.php b/public/userarea/delete_template_xls.php deleted file mode 100644 index 13cbe682..00000000 --- a/public/userarea/delete_template_xls.php +++ /dev/null @@ -1,49 +0,0 @@ -getConnection(); - - if (!$pdo) { - throw new Exception('Database connection failed'); - } - - // Verifica se l'ID esiste - $stmtCheck = $pdo->prepare("SELECT id FROM excel_templates WHERE id = ?"); - $stmtCheck->execute([$id]); - if ($stmtCheck->rowCount() === 0) { - throw new Exception('Template not found'); - } - - // Esegui l'eliminazione - $stmt = $pdo->prepare("DELETE FROM excel_templates WHERE id = ?"); - $stmt->execute([$id]); - - if ($stmt->rowCount() > 0) { - $message = "Template deleted successfully!"; - $status = "success"; - } else { - throw new Exception('Failed to delete template'); - } -} catch (Exception $e) { - $message = $e->getMessage(); - $status = "error"; -} - -// Reindirizza con un messaggio -header("Location: templates_dashboard.php?status=$status&message=" . urlencode($message)); -exit; diff --git a/public/userarea/download_rapporto_file.php b/public/userarea/download_rapporto_file.php deleted file mode 100644 index 14ea0aec..00000000 --- a/public/userarea/download_rapporto_file.php +++ /dev/null @@ -1,112 +0,0 @@ -get("RapportoFile({$id})", []); - - file_put_contents( - $debugDir . "rapporto_file_{$id}.json", - json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) - ); - - /** - * Provo vari nomi campo possibili per il contenuto PDF. - * Dopo il primo test potremo adattarlo al nome esatto. - */ - $possibleContentFields = [ - 'File', - 'file', - 'Content', - 'content', - 'FileContent', - 'fileContent', - 'Contenuto', - 'contenuto', - 'Bytes', - 'bytes' - ]; - - $base64 = null; - - foreach ($possibleContentFields as $field) { - if (!empty($data[$field])) { - $base64 = $data[$field]; - break; - } - } - - if (!$base64) { - header('Content-Type: application/json; charset=utf-8'); - echo json_encode([ - 'success' => false, - 'message' => 'Record RapportoFile recuperato, ma non ho trovato un campo base64 del PDF.', - 'hint' => 'Apri logs/lims_get_commessa/rapporto_file_' . $id . '.json e controlla il nome reale del campo file.', - 'data' => $data - ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); - exit; - } - - /** - * Se il contenuto ha prefisso data URI, lo pulisco. - */ - if (strpos($base64, 'base64,') !== false) { - $parts = explode('base64,', $base64); - $base64 = end($parts); - } - - $pdfBinary = base64_decode($base64, true); - - if ($pdfBinary === false) { - throw new Exception("Il contenuto trovato non è un base64 valido"); - } - - $filename = $data['NomeFile'] - ?? $data['nomeFile'] - ?? $data['FileName'] - ?? $data['fileName'] - ?? "rapporto_{$id}.pdf"; - - if (!str_ends_with(strtolower($filename), '.pdf')) { - $filename .= '.pdf'; - } - - header('Content-Type: application/pdf'); - header('Content-Disposition: inline; filename="' . basename($filename) . '"'); - header('Content-Length: ' . strlen($pdfBinary)); - - echo $pdfBinary; -} catch (Exception $e) { - http_response_code(500); - header('Content-Type: application/json; charset=utf-8'); - - echo json_encode([ - 'success' => false, - 'error' => $e->getMessage() - ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); -} diff --git a/public/userarea/edit_template_xls.php b/public/userarea/edit_template_xls.php deleted file mode 100644 index 9677ba6f..00000000 --- a/public/userarea/edit_template_xls.php +++ /dev/null @@ -1,766 +0,0 @@ -getConnection(); - -$stmt = $pdo->prepare("SELECT * FROM excel_templates WHERE id = ?"); -$stmt->execute([$id]); -$template = $stmt->fetch(PDO::FETCH_ASSOC); - -if (!$template) { - header("Location: templates_dashboard.php?status=error&message=" . urlencode("Template not found")); - exit; -} - -// Retrieve all routines -$stmt = $pdo->prepare("SELECT * FROM routine"); -$stmt->execute(); -$routines = $stmt->fetchAll(PDO::FETCH_ASSOC); - -// Retrieve active API/JSON configurations -$stmt = $pdo->prepare(" - SELECT id, name, provider_code, api_type, php_class_name - FROM api_configurations - WHERE is_active = 1 - ORDER BY name ASC -"); -$stmt->execute(); -$apiConfigurations = $stmt->fetchAll(PDO::FETCH_ASSOC); - -$buttonBgPalette = [ - '#0d6efd' => 'Blue', - '#6610f2' => 'Indigo', - '#6f42c1' => 'Purple', - '#d63384' => 'Pink', - '#dc3545' => 'Red', - '#fd7e14' => 'Orange', - '#ffc107' => 'Yellow', - '#198754' => 'Green', - '#20c997' => 'Teal', - '#0dcaf0' => 'Cyan', - '#212529' => 'Dark', - '#6c757d' => 'Gray', - '#495057' => 'Slate', - '#795548' => 'Brown', - '#2f5d50' => 'Sage Green', -]; - -$buttonTextPalette = [ - '#ffffff' => 'White', - '#6c757d' => 'Gray', - '#000000' => 'Black', -]; - -$currentButtonBgColor = strtolower($template['button_bg_color'] ?? '#007bff'); -$currentButtonTextColor = strtolower($template['button_text_color'] ?? '#ffffff'); - -if (!array_key_exists($currentButtonBgColor, array_change_key_case($buttonBgPalette, CASE_LOWER))) { - $currentButtonBgColor = '#0d6efd'; -} - -if (!array_key_exists($currentButtonTextColor, array_change_key_case($buttonTextPalette, CASE_LOWER))) { - $currentButtonTextColor = '#ffffff'; -} -?> - - - - - - - - - - - - - Edit Template <?= htmlspecialchars($titlewebsite, ENT_QUOTES, 'UTF-8'); ?> - - - -
    - - - -
    -
    - -
    -
    -
    Update Template
    -
    -
    -

    Edit the following form in order to update the selected import template

    -

    Mandatory Fields

    -
      -
    • Template Name
    • -
    • Source Type
    • -
    • Schema and Client
    • -
    • Row Header and Column Header only for XLS templates
    • -
    -
    -
    - -
    -
    -
    -
    -
    Edit Template:
    -
    -
    -
    - -
    -
    -
    - - -
    - - -
    - -
    - - - Choose the source used by this template -
    - -
    - - -
    - -
    - - -
    - -
    - - - - Use 0 for the first sheet, 1 for the second sheet, 2 for the third sheet, and so on. - -
    - - - -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - - -
    - $colorLabel): ?> - - - - -
    -
    - -
    - - -
    - $colorLabel): ?> - - - - -
    -
    - -
    - - -
    - -
    - - - -
    - -
    - - - -
    - -
    - - - - -
    - -
    - - Cancel -
    -
    -
    -
    - -
    -
    - -
    - - -
    - - - - - \ No newline at end of file diff --git a/public/userarea/error_log.txt b/public/userarea/error_log.txt deleted file mode 100644 index 9d43509e..00000000 --- a/public/userarea/error_log.txt +++ /dev/null @@ -1,333 +0,0 @@ -2025-06-10 12:21:44 - Errore nel recupero dati: HTTP 404, Risposta: -2025-06-16 11:15:30 - Errore nel recupero dati: HTTP 404, Risposta: {"title":"Not Found","status":404,"detail":"Not Found","instance":"GET /api/odata/Rapporto(2523026)","errorCode":"d25cbd678"} -2025-06-16 11:34:59 - Autenticazione fallita: HTTP 0, Errore cURL: Failed to connect to 93.43.5.102 port 443 after 21033 ms: Couldn't connect to server, Risposta: -2025-06-16 11:42:03 - Errore nella richiesta: Recv failure: Connection was reset -2025-07-04 10:42:49 - Autenticazione fallita: HTTP 400, Errore cURL: , Risposta: {"title":"Bad Request","status":400,"detail":"Cannot persist the object. It was modified or deleted (purged) by another application.","instance":"POST /api/authentication/authenticate","errorCode":"96bfc1252b"} -2025-07-04 10:44:13 - Autenticazione fallita: HTTP 400, Errore cURL: , Risposta: {"title":"Bad Request","status":400,"detail":"Cannot persist the object. It was modified or deleted (purged) by another application.","instance":"POST /api/authentication/authenticate","errorCode":"96bfc1252b"} -2025-07-04 10:48:07 - Autenticazione fallita: HTTP 400, Errore cURL: , Risposta: {"title":"Bad Request","status":400,"detail":"Cannot persist the object. It was modified or deleted (purged) by another application.","instance":"POST /api/authentication/authenticate","errorCode":"96bfc1252b"} -2025-08-19 16:29:25 - Autenticazione fallita: HTTP 400, Errore cURL: , Risposta: {"title":"Bad Request","status":400,"detail":"Cannot persist the object. It was modified or deleted (purged) by another application.","instance":"POST /api/authentication/authenticate","errorCode":"96bfc1252b"} -2025-08-26 16:47:19 - Risposta non JSON valida: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:42 [AnagraficaCertestService] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:42 [AnagraficaCertestObject] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:42 [MoltiplicatorePrezzo] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:42 [AnagraficaCertestService] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:42 [AnagraficaCertestObject] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:42 [MoltiplicatorePrezzo] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:42 [AnagraficaCertestService] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:42 [AnagraficaCertestObject] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:42 [MoltiplicatorePrezzo] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:43 [MoltiplicatorePrezzo] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:43 [AnagraficaCertestObject] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:43 [AnagraficaCertestService] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:52 [AnagraficaCertestObject] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:52 [MoltiplicatorePrezzo] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:52 [AnagraficaCertestService] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:52 [AnagraficaCertestObject] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:52 [MoltiplicatorePrezzo] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:52 [AnagraficaCertestService] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:52 [AnagraficaCertestObject] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:52 [MoltiplicatorePrezzo] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:52 [AnagraficaCertestService] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:52 [MoltiplicatorePrezzo] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:52 [AnagraficaCertestObject] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:44:53 [AnagraficaCertestService] Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:48:26 - Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:48:26 - Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:48:27 - Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:48:27 - Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:48:27 - Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:49:04 - Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:49:04 - Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:49:04 - Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:49:05 - Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 10:49:05 - Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 14:26:52 - Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 14:26:59 - Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 15:54:16 - Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 16:22:45 - Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-23 16:32:17 - Autenticazione fallita: HTTP 404, Errore cURL: , Risposta: -Not Found - -

    Not Found

    -

    HTTP Error 404. The requested resource is not found.

    - - -2026-02-25 15:23:12 [AnagraficaCertestObject] Autenticazione fallita: HTTP 400, Errore cURL: , Risposta: {"title":"Bad Request","status":400,"detail":"Cannot persist the object. It was modified or deleted (purged) by another application.","instance":"POST /api/authentication/authenticate","errorCode":"96bfc1252b"} -2026-02-26 15:01:32 [AnagraficaCertestObject] Autenticazione fallita: HTTP 400, Errore cURL: , Risposta: {"title":"Bad Request","status":400,"detail":"Cannot persist the object. It was modified or deleted (purged) by another application.","instance":"POST /api/authentication/authenticate","errorCode":"96bfc1252b"} -2026-02-28 21:01:27 [AnagraficaCertestService] Autenticazione fallita: HTTP 400, Errore cURL: , Risposta: {"title":"Bad Request","status":400,"detail":"Cannot persist the object. It was modified or deleted (purged) by another application.","instance":"POST /api/authentication/authenticate","errorCode":"96bfc1252b"} -2026-03-01 19:11:58 [AnagraficaCertestObject] Autenticazione fallita: HTTP 400, Errore cURL: , Risposta: {"title":"Bad Request","status":400,"detail":"Cannot persist the object. It was modified or deleted (purged) by another application.","instance":"POST /api/authentication/authenticate","errorCode":"96bfc1252b"} -2026-03-18 15:51:45 [AnagraficaCertestService] Autenticazione fallita: HTTP 400, Errore cURL: , Risposta: {"title":"Bad Request","status":400,"detail":"Cannot persist the object. It was modified or deleted (purged) by another application.","instance":"POST /api/authentication/authenticate","errorCode":"96bfc1252b"} -2026-03-19 09:50:34 [AnagraficaCertestService] Autenticazione fallita: HTTP 400, Errore cURL: , Risposta: {"title":"Bad Request","status":400,"detail":"Cannot persist the object. It was modified or deleted (purged) by another application.","instance":"POST /api/authentication/authenticate","errorCode":"96bfc1252b"} -2026-03-25 14:13:34 - Autenticazione fallita: HTTP 503, Errore cURL: , Risposta: The service is unavailable. -2026-03-25 14:13:34 - Autenticazione fallita: HTTP 503, Errore cURL: , Risposta: The service is unavailable. -2026-03-26 10:57:18 [AnagraficaCertestObject] Autenticazione fallita: HTTP 500, Errore cURL: , Risposta: {"title":"Internal Server Error","status":500,"detail":"Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.","instance":"POST /api/authentication/authenticate","errorCode":"63ab532c6"} -2026-03-26 10:57:21 [AnagraficaCertestObject] Autenticazione fallita: HTTP 500, Errore cURL: , Risposta: {"title":"Internal Server Error","status":500,"detail":"Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.","instance":"POST /api/authentication/authenticate","errorCode":"63ab532c6"} -2026-03-26 10:57:21 [AnagraficaCertestService] Autenticazione fallita: HTTP 500, Errore cURL: , Risposta: {"title":"Internal Server Error","status":500,"detail":"Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.","instance":"POST /api/authentication/authenticate","errorCode":"63ab532c6"} -2026-03-26 10:57:21 [MoltiplicatorePrezzo] Autenticazione fallita: HTTP 500, Errore cURL: , Risposta: {"title":"Internal Server Error","status":500,"detail":"Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.","instance":"POST /api/authentication/authenticate","errorCode":"63ab532c6"} -2026-03-26 10:57:36 [AnagraficaCertestObject] Autenticazione fallita: HTTP 500, Errore cURL: , Risposta: {"title":"Internal Server Error","status":500,"detail":"Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.","instance":"POST /api/authentication/authenticate","errorCode":"63ab532c6"} -2026-03-26 10:57:36 [AnagraficaCertestService] Autenticazione fallita: HTTP 500, Errore cURL: , Risposta: {"title":"Internal Server Error","status":500,"detail":"Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.","instance":"POST /api/authentication/authenticate","errorCode":"63ab532c6"} -2026-03-26 10:57:36 [MoltiplicatorePrezzo] Autenticazione fallita: HTTP 500, Errore cURL: , Risposta: {"title":"Internal Server Error","status":500,"detail":"Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.","instance":"POST /api/authentication/authenticate","errorCode":"63ab532c6"} -2026-03-26 10:57:41 [MoltiplicatorePrezzo] Autenticazione fallita: HTTP 500, Errore cURL: , Risposta: {"title":"Internal Server Error","status":500,"detail":"Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.","instance":"POST /api/authentication/authenticate","errorCode":"63ab532c6"} -2026-03-26 10:57:56 [AnagraficaCertestObject] Autenticazione fallita: HTTP 500, Errore cURL: , Risposta: {"title":"Internal Server Error","status":500,"detail":"Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.","instance":"POST /api/authentication/authenticate","errorCode":"63ab532c6"} -2026-03-26 10:58:11 [AnagraficaCertestService] Autenticazione fallita: HTTP 500, Errore cURL: , Risposta: {"title":"Internal Server Error","status":500,"detail":"Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.","instance":"POST /api/authentication/authenticate","errorCode":"63ab532c6"} -2026-04-30 15:01:25 - Errore nel recupero dati: HTTP 404, Risposta: {"title":"Not Found","status":404,"detail":"Not Found","instance":"GET /api/odata/Rapporto(2621521)","errorCode":"d25cbd678"} -2026-04-30 15:02:04 - Errore nel recupero dati: HTTP 404, Risposta: -2026-04-30 15:03:19 - Errore nella richiesta: URL rejected: Malformed input to a URL function diff --git a/public/userarea/errortest.php b/public/userarea/errortest.php deleted file mode 100644 index e495d093..00000000 --- a/public/userarea/errortest.php +++ /dev/null @@ -1,6 +0,0 @@ - batchRunning }); - - let batchCancelled = false; - let pendingBatchConfirmHandler = null; - - // ── Helpers ────────────────────────────────────────────────────────── - - function cleanupBackdrop() { - document.querySelectorAll(".modal-backdrop").forEach(b => b.remove()); - document.body.classList.remove("modal-open"); - document.body.style.paddingRight = ""; - const overlay = document.querySelector(".overlay.toggle-icon"); - if (overlay) overlay.style.display = "none"; - } - - function getGridRow(iddatadb) { - return document.querySelector(`.grid-row[data-id="${iddatadb}"]`); - } - - function getRowIndexByIddatadb(iddatadb) { - return (window.gridData || []).findIndex(r => String(r.iddatadb) === String(iddatadb)); - } - - // ── Validation ────────────────────────────────────────────────────── - - async function validateRows(rowsToValidate) { - const response = await fetch("validate_export.php", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ rows: rowsToValidate }), - }); - if (!response.ok) throw new Error(`Validation HTTP error: ${response.status}`); - return response.json(); - } - - function clearValidationErrors() { - // Clear from gridData - (window.gridData || []).forEach(row => { delete row._validationErrors; delete row._exportError; }); - - document.querySelectorAll(".grid-cell.validation-error").forEach(cell => { - cell.classList.remove("validation-error"); - cell.querySelectorAll(".input-validation-error").forEach(el => el.classList.remove("input-validation-error")); - const tooltip = cell.querySelector(".validation-tooltip"); - if (tooltip) tooltip.remove(); - }); - document.querySelectorAll(".grid-row.validation-row-error").forEach(row => row.classList.remove("validation-row-error")); - clearAllRowErrors(); - } - - function showValidationErrors(gridRow, iddatadb, errors) { - // Store in gridData for re-render persistence - const idx = getRowIndexByIddatadb(iddatadb); - if (idx >= 0) window.gridData[idx]._validationErrors = errors; - - if (!gridRow) return; - gridRow.classList.add("validation-row-error"); - const messages = []; - - errors.forEach(err => { - messages.push(err.message); - if (!err.field) return; - - let cell = null; - if (err.field.startsWith("field_label:")) { - const label = err.field.substring("field_label:".length); - const headers = document.querySelectorAll(".grid-header"); - let targetIndex = null; - headers.forEach(h => { - if (h.textContent.trim() === label) targetIndex = h.getAttribute("data-index"); - }); - if (targetIndex) { - cell = gridRow.querySelector(`.grid-cell[data-index="${targetIndex}"]`); - } - } else { - cell = gridRow.querySelector(`.grid-cell[data-col="${err.field}"]`); - } - - if (cell) { - cell.classList.add("validation-error"); - cell.querySelectorAll("input, select").forEach(el => el.classList.add("input-validation-error")); - let tooltip = cell.querySelector(".validation-tooltip"); - if (!tooltip) { - tooltip = document.createElement("div"); - tooltip.className = "validation-tooltip"; - cell.appendChild(tooltip); - } - tooltip.textContent = err.message; - } - }); - - showRowError(gridRow, iddatadb, messages.join("\n")); - } - - // ── Send export ───────────────────────────────────────────────────── - - async function sendExport(iddatadb, batchUuid) { - const formData = new FormData(); - formData.append("iddatadb", iddatadb); - if (batchUuid) formData.append("batch_uuid", batchUuid); - - const response = await fetch("export_to_lims.php", { method: "POST", body: formData }); - if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`); - const data = await response.json(); - - if (data.success) { - // Update gridData - const idx = getRowIndexByIddatadb(iddatadb); - if (idx >= 0) { - window.gridData[idx].status = 'l'; - window.gridData[idx].commessaweb = data.commessaweb; - } - - // Update visible DOM row - const gridRow = getGridRow(iddatadb); - if (gridRow) { - const statusBadge = gridRow.querySelector('.grid-cell[data-col="status"] .status-badge'); - if (statusBadge) { - statusBadge.classList.remove("status-i", "status-P"); - statusBadge.classList.add("status-l"); - statusBadge.textContent = "To LIMS"; - } - const statusCell = gridRow.querySelector('.grid-cell[data-col="status"]'); - if (statusCell && data.commessaweb) { - let cwSpan = statusCell.querySelector(".commessaweb-code"); - if (!cwSpan) { - cwSpan = document.createElement("span"); - cwSpan.className = "commessaweb-code"; - cwSpan.style.cssText = "display:block; font-size:0.75em; color:#555; margin-top:2px;"; - statusCell.appendChild(cwSpan); - } - cwSpan.textContent = data.commessaweb; - } - const exportBtn = gridRow.querySelector(".export-lims-btn"); - if (exportBtn) { - exportBtn.disabled = true; - exportBtn.style.background = "#ccc"; - exportBtn.style.cursor = "not-allowed"; - exportBtn.style.opacity = "0.5"; - } - } - } - - return data; - } - - // ── Show result modal ─────────────────────────────────────────────── - - function showExportResult(data) { - const el = document.getElementById("exportResponseModal"); - if (!el) return; - const modal = new bootstrap.Modal(el, { keyboard: false }); - const msg = document.getElementById("exportResponseMessage"); - const label = document.getElementById("exportResponseModalLabel"); - - if (data.success) { - msg.innerHTML = `${data.message.replace(/\n/g, "
    ")}` + - `
    ID CommessaWeb: ${data.idcommessaweb}` + - `
    Codice CommessaWeb: ${data.commessaweb}` + - (data.totalPhotos > 0 ? `
    Foto: ${data.totalPhotos}` : ""); - label.textContent = "Esportazione Completata"; - } else { - msg.textContent = `Errore: ${data.message}`; - label.textContent = "Errore Esportazione"; - } - modal.show(); - el.addEventListener("hidden.bs.modal", cleanupBackdrop, { once: true }); - } - - // ── Row UI helpers ────────────────────────────────────────────────── - - function setRowExporting(row, active) { - if (!row) return; - const btnCell = row.querySelector(".button-cell"); - if (active) { - row.classList.remove("batch-disabled"); - row.classList.add("batch-exporting"); - if (btnCell) { - btnCell.querySelectorAll(".action-btn").forEach(b => { b.dataset.prevDisplay = b.style.display; b.style.display = "none"; }); - const spinner = document.createElement("span"); - spinner.className = "batch-row-spinner"; - spinner.innerHTML = ' Exporting...'; - btnCell.appendChild(spinner); - } - } else { - row.classList.remove("batch-exporting"); - if (btnCell) { - const spinner = btnCell.querySelector(".batch-row-spinner"); - if (spinner) spinner.remove(); - btnCell.querySelectorAll(".action-btn").forEach(b => { b.style.display = b.dataset.prevDisplay || ""; delete b.dataset.prevDisplay; }); - } - } - } - - function showRowError(row, iddatadb, message) { - if (!row) return; - row.classList.add("batch-row-error"); - const btnCell = row.querySelector(".button-cell"); - if (btnCell) { - const old = btnCell.querySelector(".batch-error-msg"); - if (old) old.remove(); - const errorEl = document.createElement("div"); - errorEl.className = "batch-error-msg"; - errorEl.textContent = "Warning — click for details"; - errorEl.addEventListener("click", () => { - document.getElementById("exportResponseMessage").innerHTML = message.replace(/\n/g, "
    "); - document.getElementById("exportResponseModalLabel").textContent = "Error (id: " + iddatadb + ")"; - new bootstrap.Modal(document.getElementById("exportResponseModal"), { keyboard: false }).show(); - }); - btnCell.appendChild(errorEl); - } - } - - function clearAllRowErrors() { - document.querySelectorAll(".grid-row.batch-row-error").forEach(row => { - row.classList.remove("batch-row-error"); - const msg = row.querySelector(".batch-error-msg"); - if (msg) msg.remove(); - }); - } - - function disableAllRowButtons() { - document.querySelectorAll(".grid-row[data-id]").forEach(row => row.classList.add("batch-disabled")); - const toggle = document.querySelector(".actions-dropdown .dropdown-toggle"); - if (toggle) { toggle.disabled = true; toggle.style.opacity = "0.5"; toggle.style.pointerEvents = "none"; } - } - - function enableAllRowButtons() { - document.querySelectorAll(".grid-row[data-id]").forEach(row => row.classList.remove("batch-disabled")); - const toggle = document.querySelector(".actions-dropdown .dropdown-toggle"); - if (toggle) { toggle.disabled = false; toggle.style.opacity = ""; toggle.style.pointerEvents = ""; } - } - - // ── Single row export: validate → confirm → send ──────────────────── - - function startExportConfirmFlow(iddatadb, rowIndex) { - const gridRow = getGridRow(iddatadb); - clearValidationErrors(); - - if (gridRow) { - setRowExporting(gridRow, true); - const spinner = gridRow.querySelector(".batch-row-spinner"); - if (spinner) spinner.innerHTML = ' Validating...'; - } - - validateRows([{ iddatadb: parseInt(iddatadb), index: rowIndex }]) - .then(validationData => { - if (gridRow) { setRowExporting(gridRow, false); gridRow.classList.remove("batch-disabled"); } - - if (!validationData.success) { - showExportResult({ success: false, message: validationData.message || "Validation error" }); - return; - } - const result = validationData.results[rowIndex]; - if (result && !result.valid) { - if (gridRow) showValidationErrors(gridRow, iddatadb, result.errors); - return; - } - showConfirmAndExport(iddatadb, rowIndex); - }) - .catch(error => { - if (gridRow) { setRowExporting(gridRow, false); gridRow.classList.remove("batch-disabled"); } - showExportResult({ success: false, message: "Validation error: " + error.message }); - }); - } - - function showConfirmAndExport(iddatadb, rowIndex) { - const confirmModalElement = document.getElementById("exportConfirmModal"); - if (!confirmModalElement) return; - - const confirmModal = new bootstrap.Modal(confirmModalElement, { keyboard: false }); - document.getElementById("exportIddatadb").textContent = iddatadb; - confirmModal.show(); - - const confirmBtn = document.getElementById("exportConfirmBtn"); - if (!confirmBtn) { confirmModal.hide(); return; } - - const confirmHandler = async () => { - pendingConfirmHandler = null; - confirmModal.hide(); - - const gridRow = getGridRow(iddatadb); - if (gridRow) setRowExporting(gridRow, true); - - try { - const data = await sendExport(iddatadb); - if (gridRow) { setRowExporting(gridRow, false); gridRow.classList.remove("batch-disabled"); } - if (!data.success) showRowError(gridRow, iddatadb, data.message || "Unknown error"); - showExportResult(data); - } catch (error) { - if (gridRow) { setRowExporting(gridRow, false); gridRow.classList.remove("batch-disabled"); } - showRowError(gridRow, iddatadb, error.message); - showExportResult({ success: false, message: error.message }); - } - }; - - if (pendingConfirmHandler) confirmBtn.removeEventListener("click", pendingConfirmHandler); - pendingConfirmHandler = confirmHandler; - confirmBtn.addEventListener("click", confirmHandler, { once: true }); - } - - // ── Single row click (event delegation) ───────────────────────────── - - $(document).on('click', '.export-lims-btn', function (e) { - e.preventDefault(); - if (batchRunning) return; - - const iddatadb = this.dataset.iddatadb; - const rowIndex = parseInt(this.dataset.row); - const gridRow = getGridRow(iddatadb); - - // Check unsaved changes for this row - const dataRow = window.gridData?.[rowIndex]; - if (dataRow && dataRow._dirty) { - const unsavedModal = new bootstrap.Modal(document.getElementById("exportUnsavedModal"), { keyboard: false }); - unsavedModal.show(); - - document.getElementById("saveAndExportBtn")?.addEventListener("click", () => { - unsavedModal.hide(); - // Save first, then export - const formData = window.buildSavePayload(rowIndex); - fetch('save_edited_row.php', { method: 'POST', body: formData }) - .then(r => r.json()) - .then(result => { - if (result.success) { - dataRow._dirty = false; - startExportConfirmFlow(iddatadb, rowIndex); - } else { - alert('Save failed: ' + result.message); - } - }); - }, { once: true }); - return; - } - - startExportConfirmFlow(iddatadb, rowIndex); - }); - - // ── Batch export (Export All) ─────────────────────────────────────── - - function collectEligibleRows() { - // Read from gridData, not DOM - const eligible = []; - (window.gridData || []).forEach((row, index) => { - if (row.status !== 'l') { - eligible.push({ iddatadb: row.iddatadb, index, row: getGridRow(row.iddatadb) }); - } - }); - return eligible; - } - - function hasUnsavedChanges() { - return (window.gridData || []).some(r => r._dirty); - } - - async function validateAndFilter(eligibleRows) { - const rowsToValidate = eligibleRows.map(({ iddatadb, index }) => ({ - iddatadb: parseInt(iddatadb), - index, - })); - const validationData = await validateRows(rowsToValidate); - if (!validationData.success) throw new Error(validationData.message || "Validation error"); - - const validRows = []; - let invalidCount = 0; - - for (const item of eligibleRows) { - const result = validationData.results[item.index]; - if (result && !result.valid) { - if (item.row) showValidationErrors(item.row, item.iddatadb, result.errors); - invalidCount++; - } else { - validRows.push(item); - } - } - return { validRows, invalidCount }; - } - - function showValidationSpinner(show) { - const bar = document.getElementById("batchExportBar"); - const statusEl = document.getElementById("batchExportStatus"); - const cancelBtn = document.getElementById("exportBatchCancelBtn"); - if (show) { - if (bar) bar.style.display = ""; - if (statusEl) statusEl.textContent = "Validating..."; - if (cancelBtn) cancelBtn.style.display = "none"; - } else { - if (bar) bar.style.display = "none"; - if (cancelBtn) cancelBtn.style.display = ""; - } - } - - function showBatchConfirm(eligibleRows) { - clearValidationErrors(); - showValidationSpinner(true); - - validateAndFilter(eligibleRows) - .then(({ validRows, invalidCount }) => { - showValidationSpinner(false); - if (validRows.length === 0) { - document.getElementById("exportResponseMessage").innerHTML = - `No valid rows for export.
    ${invalidCount} rows with validation errors.`; - document.getElementById("exportResponseModalLabel").textContent = "Validation Failed"; - new bootstrap.Modal(document.getElementById("exportResponseModal"), { keyboard: false }).show(); - return; - } - - const confirmModal = new bootstrap.Modal(document.getElementById("exportBatchConfirmModal"), { keyboard: false }); - let countText = String(validRows.length); - if (invalidCount > 0) countText += ` (${invalidCount} excluded due to errors)`; - document.getElementById("exportBatchCount").textContent = countText; - confirmModal.show(); - - const confirmBtn = document.getElementById("exportBatchConfirmBtn"); - if (pendingBatchConfirmHandler) confirmBtn.removeEventListener("click", pendingBatchConfirmHandler); - pendingBatchConfirmHandler = () => { - pendingBatchConfirmHandler = null; - confirmModal.hide(); - startBatchExport(validRows); - }; - confirmBtn.addEventListener("click", pendingBatchConfirmHandler, { once: true }); - }) - .catch(error => { - showValidationSpinner(false); - document.getElementById("exportResponseMessage").textContent = "Validation error: " + error.message; - document.getElementById("exportResponseModalLabel").textContent = "Validation Error"; - new bootstrap.Modal(document.getElementById("exportResponseModal"), { keyboard: false }).show(); - }); - } - - $(document).on('click', '.export-all-lims-btn', function (e) { - e.preventDefault(); - if (batchRunning) return; - - if (hasUnsavedChanges()) { - const unsavedModal = new bootstrap.Modal(document.getElementById("exportBatchUnsavedModal"), { keyboard: false }); - unsavedModal.show(); - document.getElementById("batchSaveAndExportBtn")?.addEventListener("click", () => { - unsavedModal.hide(); - // Trigger save all first — listen for completion - alert("Please Save All first, then Export All."); - }, { once: true }); - return; - } - - const eligibleRows = collectEligibleRows(); - if (eligibleRows.length === 0) { - document.getElementById("exportResponseMessage").textContent = "All rows already exported to LIMS."; - document.getElementById("exportResponseModalLabel").textContent = "Export All"; - new bootstrap.Modal(document.getElementById("exportResponseModal"), { keyboard: false }).show(); - return; - } - showBatchConfirm(eligibleRows); - }); - - function startBatchExport(eligibleRows) { - batchCancelled = false; - batchRunning = true; - const batchUuid = crypto.randomUUID(); - const total = eligibleRows.length; - let processed = 0, succeeded = 0, failed = 0; - - disableAllRowButtons(); - - const bar = document.getElementById("batchExportBar"); - const statusEl = document.getElementById("batchExportStatus"); - const cancelBtn = document.getElementById("exportBatchCancelBtn"); - if (bar) bar.style.display = ""; - if (cancelBtn) cancelBtn.disabled = false; - if (statusEl) statusEl.textContent = `Exporting 0 / ${total}...`; - - cancelBtn?.addEventListener("click", () => { - batchCancelled = true; - if (statusEl) statusEl.textContent = "Cancelling... (waiting for current row)"; - if (cancelBtn) cancelBtn.disabled = true; - }, { once: true }); - - (async () => { - for (let i = 0; i < eligibleRows.length; i++) { - if (batchCancelled) break; - - const { iddatadb, row } = eligibleRows[i]; - if (statusEl) statusEl.textContent = `Exporting ${processed + 1} / ${total} (id: ${iddatadb})...`; - - const gridRow = row || getGridRow(iddatadb); - if (gridRow) setRowExporting(gridRow, true); - - try { - const data = await sendExport(iddatadb, batchUuid); - processed++; - if (data.success) { - succeeded++; - } else { - failed++; - const errIdx = getRowIndexByIddatadb(iddatadb); - if (errIdx >= 0) window.gridData[errIdx]._exportError = data.message || "Unknown error"; - if (gridRow) showRowError(gridRow, iddatadb, data.message || "Unknown error"); - } - } catch (error) { - processed++; - failed++; - const errIdx = getRowIndexByIddatadb(iddatadb); - if (errIdx >= 0) window.gridData[errIdx]._exportError = error.message; - if (gridRow) showRowError(gridRow, iddatadb, error.message); - } - - if (gridRow) { setRowExporting(gridRow, false); gridRow.classList.remove("batch-disabled"); } - } - - batchRunning = false; - enableAllRowButtons(); - if (bar) bar.style.display = "none"; - - // Re-render to reflect status changes, then restore error indicators - const gr = window.gridRenderer; - if (gr) gr.renderVisibleRows(); - - // Restore error state from gridData._exportError - (window.gridData || []).forEach((row, idx) => { - if (row._exportError) { - const gridRow = getGridRow(row.iddatadb); - if (gridRow) showRowError(gridRow, row.iddatadb, row._exportError); - } - }); - - const msgEl = document.getElementById("exportResponseMessage"); - const labelEl = document.getElementById("exportResponseModalLabel"); - - if (batchCancelled) { - labelEl.textContent = "Export All — Cancelled"; - msgEl.innerHTML = `Exported: ${succeeded}
    Errors: ${failed}
    Not processed: ${total - processed}`; - } else if (failed === 0) { - labelEl.textContent = "Export All — Complete"; - msgEl.innerHTML = `All ${succeeded} rows exported successfully.`; - } else { - labelEl.textContent = "Export All — Completed with errors"; - msgEl.innerHTML = `Exported: ${succeeded}
    Errors: ${failed}`; - } - - const modalEl = document.getElementById("exportResponseModal"); - new bootstrap.Modal(modalEl, { keyboard: false }).show(); - modalEl.addEventListener("hidden.bs.modal", cleanupBackdrop, { once: true }); - })(); - } -})(); diff --git a/public/userarea/export_to_lims.js b/public/userarea/export_to_lims.js deleted file mode 100644 index cf28fad0..00000000 --- a/public/userarea/export_to_lims.js +++ /dev/null @@ -1,800 +0,0 @@ -document.addEventListener("DOMContentLoaded", () => { - console.log("export_to_lims.js loaded"); - - const exportButtons = document.querySelectorAll(".export-lims-btn"); - console.log(`Found ${exportButtons.length} export-lims-btn buttons`); - - // Tracks the active confirm handler so it can be replaced on re-open - let pendingConfirmHandler = null; - let batchRunning = false; - // Expose for Save All to check - Object.defineProperty(window, "batchRunning", { - get: () => batchRunning, - }); - - // ── Helpers ────────────────────────────────────────────────────────────── - - function cleanupBackdrop() { - document.querySelectorAll(".modal-backdrop").forEach((b) => b.remove()); - document.body.classList.remove("modal-open"); - document.body.style.paddingRight = ""; - const overlay = document.querySelector(".overlay.toggle-icon"); - if (overlay) overlay.style.display = "none"; - } - - // ── Validation ─────────────────────────────────────────────────────────── - - /** - * Call the validation endpoint for an array of { iddatadb, index } objects. - * Returns the parsed JSON response. - */ - async function validateRows(rowsToValidate) { - const response = await fetch("validate_export.php", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ rows: rowsToValidate }), - }); - if (!response.ok) - throw new Error(`Validation HTTP error: ${response.status}`); - return response.json(); - } - - /** - * Clear all validation-error highlights from the grid. - */ - function clearValidationErrors() { - document.querySelectorAll(".grid-cell.validation-error").forEach((cell) => { - cell.classList.remove("validation-error"); - cell.querySelectorAll(".input-validation-error").forEach((el) => { - el.classList.remove("input-validation-error"); - }); - const tooltip = cell.querySelector(".validation-tooltip"); - if (tooltip) tooltip.remove(); - }); - document.querySelectorAll(".grid-row.validation-row-error").forEach((row) => { - row.classList.remove("validation-row-error"); - }); - // Also clear batch-row-error that came from validation - clearAllRowErrors(); - } - - /** - * Highlight specific cells on a row based on validation errors. - * Each error has { field, message }. - * field can be: a data-col value, "parts", "field_label:SomeLabel", or null (row-level). - */ - function showValidationErrors(row, iddatadb, errors) { - row.classList.add("validation-row-error"); - - const messages = []; - - errors.forEach((err) => { - messages.push(err.message); - - if (!err.field) return; // row-level error, no specific cell - - let cell = null; - - if (err.field === "parts") { - // No specific cell to highlight, but we highlight the parts button area - // just add to messages - return; - } else if (err.field.startsWith("field_label:")) { - // Match by field_label text — find the header with this label, get its index - const label = err.field.substring("field_label:".length); - const headers = document.querySelectorAll(".grid-header"); - let targetIndex = null; - headers.forEach((h) => { - if (h.textContent.trim() === label) { - targetIndex = h.getAttribute("data-index"); - } - }); - if (targetIndex) { - const rowIndex = row.querySelector(".grid-cell[data-row]")?.getAttribute("data-row"); - if (rowIndex !== null) { - cell = row.querySelector(`.grid-cell[data-row="${rowIndex}"][data-index="${targetIndex}"]`); - } - } - } else { - // Direct data-col match - const rowIndex = row.querySelector(".grid-cell[data-row]")?.getAttribute("data-row"); - if (rowIndex !== null) { - cell = row.querySelector(`.grid-cell[data-col="${err.field}"][data-row="${rowIndex}"]`); - } - } - - if (cell) { - cell.classList.add("validation-error"); - // Mark the input/select inside the cell - cell.querySelectorAll("input, select").forEach((el) => { - el.classList.add("input-validation-error"); - }); - // Add tooltip with error message - let tooltip = cell.querySelector(".validation-tooltip"); - if (!tooltip) { - tooltip = document.createElement("div"); - tooltip.className = "validation-tooltip"; - cell.appendChild(tooltip); - } - tooltip.textContent = err.message; - } - }); - - // Show aggregated error on the row using existing mechanism - showRowError(row, iddatadb, messages.join("\n")); - } - - /** - * Send a single export request and update the row UI on success. - * Returns the parsed JSON response. - */ - async function sendExport(iddatadb, gridRow, batchUuid = null) { - const formData = new FormData(); - formData.append("iddatadb", iddatadb); - if (batchUuid) { - formData.append("batch_uuid", batchUuid); - } - - const response = await fetch("export_to_lims.php", { - method: "POST", - body: formData, - }); - if (!response.ok) - throw new Error(`HTTP error! status: ${response.status}`); - const data = await response.json(); - - if (data.success && gridRow) { - // Update status badge - const statusBadge = gridRow.querySelector( - '.grid-cell[data-col="status"] .status-badge', - ); - if (statusBadge) { - statusBadge.classList.remove("status-i", "status-P"); - statusBadge.classList.add("status-l"); - statusBadge.textContent = "To LIMS"; - } - - // Insert/update CommessaWeb code span - const statusCell = gridRow.querySelector( - '.grid-cell[data-col="status"]', - ); - if (statusCell && data.commessaweb) { - let cwSpan = statusCell.querySelector(".commessaweb-code"); - if (!cwSpan) { - cwSpan = document.createElement("span"); - cwSpan.className = "commessaweb-code"; - cwSpan.style.cssText = - "display:block; font-size:0.75em; color:#555; margin-top:2px;"; - cwSpan.title = "CommessaWeb"; - const hiddenInput = statusCell.querySelector( - 'input[type="hidden"]', - ); - hiddenInput - ? statusCell.insertBefore(cwSpan, hiddenInput) - : statusCell.appendChild(cwSpan); - } - cwSpan.textContent = data.commessaweb; - } - - // Disable export button for this row - const exportBtn = gridRow.querySelector(".export-lims-btn"); - if (exportBtn) { - exportBtn.disabled = true; - exportBtn.style.background = "#ccc"; - exportBtn.style.cursor = "not-allowed"; - exportBtn.style.opacity = "0.5"; - exportBtn.title = "Già esportato"; - } - } - - return data; - } - - /** - * Show the result of a single export in the response modal. - */ - function showExportResult(data) { - const responseModalElement = - document.getElementById("exportResponseModal"); - if (!responseModalElement) { - alert("Errore: Modale di risposta non trovato"); - return; - } - - const responseModal = new bootstrap.Modal(responseModalElement, { - keyboard: false, - }); - const responseMessage = document.getElementById( - "exportResponseMessage", - ); - - if (data.success) { - responseMessage.innerHTML = - `${data.message.replace(/\n/g, "
    ")}` + - `
    ID CommessaWeb: ${data.idcommessaweb}` + - `
    Codice CommessaWeb: ${data.commessaweb}` + - (data.totalPhotos > 0 - ? `
    Foto trovate: ${data.totalPhotos}` - : ""); - document.getElementById("exportResponseModalLabel").textContent = - "Esportazione Completata"; - } else { - responseMessage.textContent = `Errore durante la generazione dei payload: ${data.message}`; - document.getElementById("exportResponseModalLabel").textContent = - "Errore Esportazione"; - } - - responseModal.show(); - responseModalElement.addEventListener( - "hidden.bs.modal", - cleanupBackdrop, - { once: true }, - ); - } - - // ── Row button helpers (disable/enable during batch) ──────────────────── - - function setRowExporting(row, active) { - const btnCell = row.querySelector(".button-cell"); - if (active) { - row.classList.remove("batch-disabled"); - row.classList.add("batch-exporting"); - if (btnCell) { - btnCell.querySelectorAll(".action-btn").forEach((b) => { - b.dataset.prevDisplay = b.style.display; - b.style.display = "none"; - }); - const spinner = document.createElement("span"); - spinner.className = "batch-row-spinner"; - spinner.innerHTML = - ' Exporting...'; - btnCell.appendChild(spinner); - } - } else { - row.classList.remove("batch-exporting"); - row.classList.add("batch-disabled"); - if (btnCell) { - const spinner = btnCell.querySelector(".batch-row-spinner"); - if (spinner) spinner.remove(); - btnCell.querySelectorAll(".action-btn").forEach((b) => { - b.style.display = b.dataset.prevDisplay || ""; - delete b.dataset.prevDisplay; - }); - } - } - } - - function showRowError(row, iddatadb, message) { - row.classList.add("batch-row-error"); - const btnCell = row.querySelector(".button-cell"); - if (btnCell) { - // Remove existing error msg - const old = btnCell.querySelector(".batch-error-msg"); - if (old) old.remove(); - - const errorEl = document.createElement("div"); - errorEl.className = "batch-error-msg"; - errorEl.textContent = "⚠ Errore — clicca per dettagli"; - errorEl.addEventListener("click", () => { - document.getElementById("exportResponseMessage").innerHTML = message.replace(/\n/g, "
    "); - document.getElementById("exportResponseModalLabel").textContent = "Errore Validazione (id: " + iddatadb + ")"; - new bootstrap.Modal(document.getElementById("exportResponseModal"), { keyboard: false }).show(); - }); - btnCell.appendChild(errorEl); - } - } - - function clearAllRowErrors() { - document.querySelectorAll(".grid-row.batch-row-error").forEach((row) => { - row.classList.remove("batch-row-error"); - const msg = row.querySelector(".batch-error-msg"); - if (msg) msg.remove(); - }); - } - - function disableAllRowButtons() { - document.querySelectorAll(".grid-row[data-id]").forEach((row) => { - row.classList.add("batch-disabled"); - }); - // Disable Actions dropdown - const toggle = document.querySelector( - ".actions-dropdown .dropdown-toggle", - ); - if (toggle) { - toggle.disabled = true; - toggle.style.opacity = "0.5"; - toggle.style.pointerEvents = "none"; - } - } - - function enableAllRowButtons() { - document.querySelectorAll(".grid-row[data-id]").forEach((row) => { - row.classList.remove("batch-disabled"); - }); - const toggle = document.querySelector( - ".actions-dropdown .dropdown-toggle", - ); - if (toggle) { - toggle.disabled = false; - toggle.style.opacity = ""; - toggle.style.pointerEvents = ""; - } - } - - // ── Single row export: validate, confirm modal, then send ─────────────── - - function startExportConfirmFlow(iddatadb, btn) { - const gridRow = btn.closest(".grid-row"); - const rowIndex = btn.dataset.row; - - // Validate first - clearValidationErrors(); - - // Show validating state on the row - setRowExporting(gridRow, true); - const spinner = gridRow.querySelector(".batch-row-spinner"); - if (spinner) spinner.innerHTML = ' Validating...'; - - validateRows([{ iddatadb: parseInt(iddatadb), index: parseInt(rowIndex) }]) - .then((validationData) => { - setRowExporting(gridRow, false); - gridRow.classList.remove("batch-disabled"); - - if (!validationData.success) { - showExportResult({ success: false, message: validationData.message || "Errore di validazione" }); - return; - } - - const result = validationData.results[rowIndex]; - if (result && !result.valid) { - // Show validation errors on the row - showValidationErrors(gridRow, iddatadb, result.errors); - return; - } - - // Validation passed — show confirm modal - showConfirmAndExport(iddatadb, btn); - }) - .catch((error) => { - setRowExporting(gridRow, false); - gridRow.classList.remove("batch-disabled"); - - console.error("Validation error:", error); - showExportResult({ success: false, message: "Errore di validazione: " + error.message }); - }); - } - - function showConfirmAndExport(iddatadb, btn) { - const confirmModalElement = - document.getElementById("exportConfirmModal"); - if (!confirmModalElement) { - alert("Errore: Modale di conferma non trovato"); - return; - } - - const confirmModal = new bootstrap.Modal(confirmModalElement, { - keyboard: false, - }); - document.getElementById("exportIddatadb").textContent = iddatadb; - confirmModal.show(); - - const confirmBtn = document.getElementById("exportConfirmBtn"); - if (!confirmBtn) { - confirmModal.hide(); - alert("Errore: Pulsante di conferma non trovato"); - return; - } - - const confirmHandler = async () => { - pendingConfirmHandler = null; - console.log(`Confirmed export for iddatadb: ${iddatadb}`); - confirmModal.hide(); - - const gridRow = btn.closest(".grid-row"); - setRowExporting(gridRow, true); - - try { - const data = await sendExport(iddatadb, gridRow); - console.log("Export response:", data); - - // Stop spinner, fully restore row - setRowExporting(gridRow, false); - gridRow.classList.remove("batch-disabled"); - - if (!data.success) { - showRowError(gridRow, iddatadb, data.message || "Errore sconosciuto"); - } - showExportResult(data); - } catch (error) { - console.error("Export error:", error); - - // Stop spinner, fully restore row so user can retry - setRowExporting(gridRow, false); - gridRow.classList.remove("batch-disabled"); - - showRowError(gridRow, iddatadb, error.message); - showExportResult({ - success: false, - message: error.message, - }); - } - }; - - if (pendingConfirmHandler) { - confirmBtn.removeEventListener("click", pendingConfirmHandler); - } - pendingConfirmHandler = confirmHandler; - confirmBtn.addEventListener("click", confirmHandler, { once: true }); - } - - // ── Single row click handler ──────────────────────────────────────────── - - exportButtons.forEach((btn) => { - btn.addEventListener("click", (e) => { - e.preventDefault(); - if (batchRunning) return; - - const rowIndex = btn.dataset.row; - const iddatadb = btn.dataset.iddatadb; - console.log( - `Export to LIMS clicked for row ${rowIndex}, iddatadb: ${iddatadb}`, - ); - - const gridRow = btn.closest(".grid-row"); - - if (gridRow && gridRow.querySelector(".cell-changed")) { - const unsavedModal = new bootstrap.Modal( - document.getElementById("exportUnsavedModal"), - { keyboard: false }, - ); - unsavedModal.show(); - - document.getElementById("saveAndExportBtn").addEventListener( - "click", - () => { - unsavedModal.hide(); - const saveBtn = gridRow.querySelector(".save-btn"); - if (!saveBtn) return; - - const observer = new MutationObserver(() => { - if (!gridRow.querySelector(".cell-changed")) { - observer.disconnect(); - startExportConfirmFlow(iddatadb, btn); - } - }); - observer.observe(gridRow, { - subtree: true, - attributes: true, - attributeFilter: ["class"], - }); - - saveBtn.click(); - }, - { once: true }, - ); - - return; - } - - // No unsaved changes — go straight to validate + export confirm - startExportConfirmFlow(iddatadb, btn); - }); - }); - - // ── Batch export (Export All) ─────────────────────────────────────────── - - const exportAllBtn = document.querySelector(".export-all-lims-btn"); - if (!exportAllBtn) return; - - let batchCancelled = false; - let pendingBatchConfirmHandler = null; - - function collectEligibleRows() { - const allRows = document.querySelectorAll(".grid-row[data-id]"); - const eligible = []; - allRows.forEach((row) => { - const statusBadge = row.querySelector( - '.grid-cell[data-col="status"] .status-badge', - ); - if (statusBadge && !statusBadge.classList.contains("status-l")) { - const iddatadb = row.dataset.id; - if (iddatadb) { - eligible.push({ iddatadb, row }); - } - } - }); - return eligible; - } - - /** - * Get the data-row index for a grid row element. - */ - function getRowIndex(row) { - const cell = row.querySelector(".grid-cell[data-row]"); - return cell ? parseInt(cell.getAttribute("data-row")) : null; - } - - function hasUnsavedChanges() { - return !!document.querySelector(".grid-row[data-id] .cell-changed"); - } - - /** - * Validate all eligible rows, show errors, and return only the valid ones. - */ - async function validateAndFilter(eligibleRows) { - const rowsToValidate = eligibleRows.map(({ iddatadb, row }) => ({ - iddatadb: parseInt(iddatadb), - index: getRowIndex(row), - })); - - const validationData = await validateRows(rowsToValidate); - - if (!validationData.success) { - throw new Error(validationData.message || "Errore di validazione"); - } - - const validRows = []; - let invalidCount = 0; - - for (const { iddatadb, row } of eligibleRows) { - const rowIdx = getRowIndex(row); - const result = validationData.results[rowIdx]; - - if (result && !result.valid) { - showValidationErrors(row, iddatadb, result.errors); - invalidCount++; - } else { - validRows.push({ iddatadb, row }); - } - } - - return { validRows, invalidCount }; - } - - function showValidationSpinner(show) { - const bar = document.getElementById("batchExportBar"); - const statusEl = document.getElementById("batchExportStatus"); - const cancelBtn = document.getElementById("exportBatchCancelBtn"); - if (show) { - bar.style.display = ""; - statusEl.textContent = "Validazione in corso..."; - cancelBtn.style.display = "none"; - } else { - bar.style.display = "none"; - cancelBtn.style.display = ""; - } - } - - function showBatchConfirm(eligibleRows) { - clearValidationErrors(); - showValidationSpinner(true); - - // Validate before showing confirm - validateAndFilter(eligibleRows) - .then(({ validRows, invalidCount }) => { - showValidationSpinner(false); - if (validRows.length === 0) { - document.getElementById("exportResponseMessage").innerHTML = - `Nessuna riga valida per l'esportazione.
    ` + - `${invalidCount} righe con errori di validazione.`; - document.getElementById("exportResponseModalLabel").textContent = - "Validazione Fallita"; - new bootstrap.Modal( - document.getElementById("exportResponseModal"), - { keyboard: false }, - ).show(); - return; - } - - const confirmModal = new bootstrap.Modal( - document.getElementById("exportBatchConfirmModal"), - { keyboard: false }, - ); - - let countText = String(validRows.length); - if (invalidCount > 0) { - countText += ` (${invalidCount} escluse per errori di validazione)`; - } - document.getElementById("exportBatchCount").textContent = countText; - confirmModal.show(); - - const confirmBtn = document.getElementById("exportBatchConfirmBtn"); - if (pendingBatchConfirmHandler) { - confirmBtn.removeEventListener("click", pendingBatchConfirmHandler); - } - pendingBatchConfirmHandler = () => { - pendingBatchConfirmHandler = null; - confirmModal.hide(); - startBatchExport(validRows); - }; - confirmBtn.addEventListener("click", pendingBatchConfirmHandler, { once: true }); - }) - .catch((error) => { - showValidationSpinner(false); - console.error("Batch validation error:", error); - document.getElementById("exportResponseMessage").textContent = - "Errore di validazione: " + error.message; - document.getElementById("exportResponseModalLabel").textContent = - "Errore Validazione"; - new bootstrap.Modal( - document.getElementById("exportResponseModal"), - { keyboard: false }, - ).show(); - }); - } - - exportAllBtn.addEventListener("click", (e) => { - e.preventDefault(); - if (batchRunning) return; - - // Check unsaved changes first - if (hasUnsavedChanges()) { - const unsavedModal = new bootstrap.Modal( - document.getElementById("exportBatchUnsavedModal"), - { keyboard: false }, - ); - unsavedModal.show(); - - document - .getElementById("batchSaveAndExportBtn") - .addEventListener( - "click", - () => { - unsavedModal.hide(); - // Trigger Save All, then proceed - const saveAllEl = - document.querySelector(".save-all-btn"); - if (!saveAllEl) return; - - // Watch for all .cell-changed to disappear - const observer = new MutationObserver(() => { - if (!hasUnsavedChanges()) { - observer.disconnect(); - const eligibleRows = collectEligibleRows(); - if (eligibleRows.length === 0) { - document.getElementById( - "exportResponseMessage", - ).textContent = - "Tutte le righe sono già state esportate al LIMS."; - document.getElementById( - "exportResponseModalLabel", - ).textContent = "Export All"; - new bootstrap.Modal( - document.getElementById( - "exportResponseModal", - ), - { keyboard: false }, - ).show(); - return; - } - showBatchConfirm(eligibleRows); - } - }); - observer.observe( - document.querySelector(".grid-container"), - { - subtree: true, - attributes: true, - attributeFilter: ["class"], - }, - ); - - saveAllEl.click(); - }, - { once: true }, - ); - return; - } - - const eligibleRows = collectEligibleRows(); - - if (eligibleRows.length === 0) { - document.getElementById("exportResponseMessage").textContent = - "Tutte le righe sono già state esportate al LIMS."; - document.getElementById("exportResponseModalLabel").textContent = - "Export All"; - const modal = new bootstrap.Modal( - document.getElementById("exportResponseModal"), - { keyboard: false }, - ); - modal.show(); - return; - } - - showBatchConfirm(eligibleRows); - }); - - function startBatchExport(eligibleRows) { - batchCancelled = false; - batchRunning = true; - // Don't clear validation errors — they should stay visible for invalid rows - const batchUuid = crypto.randomUUID(); - const total = eligibleRows.length; - let processed = 0; - let succeeded = 0; - let failed = 0; - - // Disable all row buttons - disableAllRowButtons(); - - // Show inline status bar - const bar = document.getElementById("batchExportBar"); - const statusEl = document.getElementById("batchExportStatus"); - const cancelBtn = document.getElementById("exportBatchCancelBtn"); - bar.style.display = ""; - cancelBtn.disabled = false; - statusEl.textContent = `Esportazione 0 / ${total}...`; - - // Cancel handler - cancelBtn.addEventListener( - "click", - () => { - batchCancelled = true; - statusEl.textContent = - "Annullamento... (attendi riga corrente)"; - cancelBtn.disabled = true; - }, - { once: true }, - ); - - (async () => { - for (let i = 0; i < eligibleRows.length; i++) { - if (batchCancelled) break; - - const { iddatadb, row } = eligibleRows[i]; - statusEl.textContent = `Esportazione ${processed + 1} / ${total} (id: ${iddatadb})...`; - - // Highlight current row - setRowExporting(row, true); - - try { - const data = await sendExport(iddatadb, row, batchUuid); - processed++; - if (data.success) { - succeeded++; - } else { - failed++; - showRowError(row, iddatadb, data.message || "Errore sconosciuto"); - } - } catch (error) { - processed++; - failed++; - showRowError(row, iddatadb, error.message); - } - - // Remove highlight from current row - setRowExporting(row, false); - } - - // Finished - batchRunning = false; - enableAllRowButtons(); - bar.style.display = "none"; - - // Show result modal - const msgEl = document.getElementById("exportResponseMessage"); - const labelEl = document.getElementById("exportResponseModalLabel"); - - if (batchCancelled) { - labelEl.textContent = "Export All — Annullato"; - msgEl.innerHTML = - `Esportate: ${succeeded}
    ` + - `Errori: ${failed}
    ` + - `Non processate: ${total - processed}`; - } else if (failed === 0) { - labelEl.textContent = "Export All — Completato"; - msgEl.innerHTML = `Tutte le ${succeeded} righe esportate con successo.`; - } else { - labelEl.textContent = "Export All — Completato con errori"; - msgEl.innerHTML = - `Esportate: ${succeeded}
    ` + - `Errori: ${failed}`; - } - - const modalEl = document.getElementById("exportResponseModal"); - const modal = new bootstrap.Modal(modalEl, { keyboard: false }); - modal.show(); - modalEl.addEventListener("hidden.bs.modal", cleanupBackdrop, { once: true }); - })(); - } -}); diff --git a/public/userarea/export_to_lims.php b/public/userarea/export_to_lims.php deleted file mode 100644 index 76c344b0..00000000 --- a/public/userarea/export_to_lims.php +++ /dev/null @@ -1,657 +0,0 @@ -getConnection(); - -header("Content-Type: application/json"); - -// 🔹 Configura directory log (creala se non esiste) -$logDir = __DIR__ . '/logs/api/'; -if (!is_dir($logDir)) { - mkdir($logDir, 0755, true); -} - -$uploadDir = realpath(__DIR__ . '/../photostrf') . '/'; - -// 🔹 Base URL API -$apiBaseUrl = 'https://93.43.5.102/limsapi/api/odata/'; - -// 🔹 Batch UUID — if present, all logs go to a single file -$batchUuid = $_POST['batch_uuid'] ?? null; - -$writeLog = (function () use ($batchUuid, $logDir) { - $batchLogFile = $batchUuid ? $logDir . "batch_export_{$batchUuid}.log" : null; - - return function ($individualPath, $content, $stepLabel = null) use ($batchLogFile) { - if ($batchLogFile) { - $header = "\n" . str_repeat("=", 60) . "\n"; - if ($stepLabel) { - $header .= "[{$stepLabel}] " . date('Y-m-d H:i:s') . "\n"; - } - $header .= str_repeat("=", 60) . "\n"; - file_put_contents($batchLogFile, $header . $content . "\n", FILE_APPEND); - } else { - file_put_contents($individualPath, $content); - } - }; -})(); - -// 🔹 Funzione per validare e convertire date -function validateDate($value) -{ - // Prova a validare come data (accetta formati comuni) - $date = DateTime::createFromFormat('Y-m-d', $value) ?: DateTime::createFromFormat('Y-m-d H:i:s', $value); - if ($date) { - return $date->format('Y-m-d\TH:i:sP'); // Formato ISO 8601 - } - return null; // Imposta null se non è una data valida -} - -// 🔹 Funzione per validare e convertire date -function formatDateToExport($value) -{ - $date = DateTime::createFromFormat('Y-m-d', $value) ?: DateTime::createFromFormat('Y-m-d H:i:s', $value); - if ($date) { - return $date->format('d/m/Y'); - } - return null; // Imposta null se non è una data valida -} - -// ImportaCommessa con retry: la chiamata è asincrona lato LIMS e a volte -// risponde 200 senza importare (StatoCommessaWeb resta "Inviata"/"Nuova"). -// Riprova con backoff esponenziale finché non passa a "Elaborata". -function importaCommessaWithRetry($api, $commessaId, array $payload, $maxRetries = 3, $initialBackoff = 1) -{ - $result = null; - $stato = null; - $succeeded = false; - $log = ""; - $backoff = $initialBackoff; - - set_time_limit(120); // i backoff non devono far scadere il timeout della richiesta - - for ($attempt = 1; $attempt <= $maxRetries + 1; $attempt++) { - try { - $result = $api->post("CommessaWeb({$commessaId})/ImportaCommessa", $payload); - $stato = $result['StatoCommessaWeb'] ?? null; - $log .= "Attempt {$attempt}: HTTP 200, StatoCommessaWeb=" . ($stato ?? 'null') . "\n"; - } catch (Exception $e) { - $stato = null; - $log .= "Attempt {$attempt}: EXCEPTION " . $e->getMessage() . "\n"; - } - - if ($stato === 'Elaborata') { - $succeeded = true; - break; - } - - if ($attempt <= $maxRetries) { - $log .= " -> not Elaborata, waiting {$backoff}s before retry\n"; - sleep($backoff); - $backoff *= 2; - } - } - - return [ - 'succeeded' => $succeeded, - 'stato' => $stato, - 'result' => $result, - 'log' => $log, - ]; -} - -try { - $iddatadb = $_POST['iddatadb'] ?? null; - if (!$iddatadb) { - throw new Exception("Missing iddatadb"); - } - - // TEMP: simulate error on every other row for testing - if (env('SIMULATE_EXPORT_LIMS') && $iddatadb % 2 === 0) { - throw new Exception("Simulated error for iddatadb $iddatadb"); - } - - // 🔹 STEP 1+2: Fetch Cliente ID from datadb and Schema ID from excel_templates - // Also fetch fixed fields stored in datadb - $stmt = $pdo->prepare(" - SELECT d.idclient AS clienteId, et.idschema AS schemaId, - d.cliente_responsabile_id, - d.moltiplicatore_prezzo_id, - d.anagrafica_certest_object_id, - d.anagrafica_certest_service_id, - d.cliente_fornitore_id, - d.clienteAnalisi, - d.consegna_richiesta - FROM datadb as d - INNER JOIN excel_templates as et ON d.templateid = et.id - WHERE d.iddatadb = :iddatadb - LIMIT 1 -"); - $stmt->execute(['iddatadb' => $iddatadb]); - $result = $stmt->fetch(PDO::FETCH_ASSOC); - - if (!$result) { - throw new Exception("No Cliente/Schema found for iddatadb {$iddatadb}"); - } - - $clienteId = (int) $result['clienteId']; - $schemaId = (int) $result['schemaId']; - - // Extract fixed fields (nullable INTs) - $clienteResponsabile = !empty($result['cliente_responsabile_id']) ? (int) $result['cliente_responsabile_id'] : null; - $moltiplicatorePrezzo = !empty($result['moltiplicatore_prezzo_id']) ? (int) $result['moltiplicatore_prezzo_id'] : null; - $anagraficaObject = !empty($result['anagrafica_certest_object_id']) ? (int) $result['anagrafica_certest_object_id'] : null; - $anagraficaService = !empty($result['anagrafica_certest_service_id']) ? (int) $result['anagrafica_certest_service_id'] : null; - $clienteFornitore = !empty($result['cliente_fornitore_id']) ? (int) $result['cliente_fornitore_id'] : null; - $clienteAnalisi = !empty($result['clienteAnalisi']) ? (int) $result['clienteAnalisi'] : null; - $consegnaRichiesta = !empty($result['consegna_richiesta']) ? $result['consegna_richiesta'] : null; - - // 🔹 STEP 3: Fetch Parts (including idmatrice and part id for custom fields) - $stmt = $pdo->prepare(" - SELECT id AS part_id, part_number, part_description, material, color, mix, idmatrice, dateexpiry - FROM identification_parts - WHERE iddatadb = :iddatadb - AND part_description IS NOT NULL - AND TRIM(part_description) <> '' - ORDER BY CAST(part_number AS UNSIGNED) ASC, part_number ASC - "); - $stmt->execute(['iddatadb' => $iddatadb]); - $parts = $stmt->fetchAll(PDO::FETCH_ASSOC); - - // 🔹 STEP 3.1: Fetch custom field values per part from identification_parts_customfields - $partIds = array_column($parts, 'part_id'); - $partsCustomFields = []; // part_id => [ { field_id, value_id, value_text }, ... ] - if (!empty($partIds)) { - $placeholders = implode(',', array_fill(0, count($partIds), '?')); - $cfStmt = $pdo->prepare(" - SELECT part_id, field_id, value_id, value_text - FROM identification_parts_customfields - WHERE part_id IN ({$placeholders}) - "); - $cfStmt->execute($partIds); - foreach ($cfStmt->fetchAll(PDO::FETCH_ASSOC) as $cfRow) { - $partsCustomFields[(int)$cfRow['part_id']][] = $cfRow; - } - } - - // 🔹 STEP 4a: Auto-populate export_date / export_time fields - $stmt = $pdo->prepare(" - UPDATE import_data_details idd - JOIN template_mapping m ON idd.mapping_id = m.id - SET idd.field_value = CASE m.auto_value - WHEN 'export_date' THEN :export_date - WHEN 'export_time' THEN :export_time - END - WHERE idd.id = :iddatadb - AND m.auto_value IN ('export_date', 'export_time') - "); - $stmt->execute([ - 'iddatadb' => $iddatadb, - 'export_date' => date('Y-m-d'), - 'export_time' => date('H:i'), - ]); - - // 🔹 STEP 4: Fetch Field Values with Labels - $stmt = $pdo->prepare(" - SELECT - idd.field_value, - m.field_label, - m.schema_id, - m.field_id - FROM - import_data_details as idd - JOIN template_mapping m ON idd.mapping_id = m.id - WHERE idd.id = :iddatadb - "); - $stmt->execute(['iddatadb' => $iddatadb]); - $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); - - $fieldValues = []; - $valueMap = []; - foreach ($rows as $row) { - $fieldValues[] = [ - "IdCommesseCustomFields" => (int) $row['field_id'], - "Valore" => $row['field_value'], - "FieldLabel" => $row['field_label'] - ]; - $valueMap[(int) $row['field_id']] = $row['field_value']; - } - - // Logga i fieldValues in error_log - $logFieldValues = "FieldValues dal DB (iddatadb={$iddatadb}):\n" . json_encode($fieldValues, JSON_PRETTY_PRINT); - error_log($logFieldValues); - - // 🔹 Initialize API client - $api = VisualLimsApiClient::getInstance(); - - // 🔹 STEP 5: Create CommessaWeb - // Fixed fields are sent as direct properties — they are navigation properties on Commessa - // accepted by the XAF API even though not explicitly listed in OData $metadata - $commessaWebPayload = [ - "Cliente" => $clienteId, - "SchemaCustomField" => $schemaId, - "Richiedente" => "From TRFSmart Application", // TODO: replace with real value - "Descrizione" => "From TRFSmart Application", // TODO: replace with real value - "ClienteResponsabile" => $clienteResponsabile, - "MoltiplicatorePrezzo" => $moltiplicatorePrezzo, - "AnagraficaCertestObject" => $anagraficaObject, - "AnagraficaCertestService" => $anagraficaService, - "ClienteFornitore" => $clienteFornitore, // PLACEHOLDER — to be implemented - "ClienteAnalisi" => $clienteAnalisi, // PLACEHOLDER — to be implemented - // DeliveryRequest goes to Campione, not CommessaWeb - ]; - - // Costruisci log curl-like per STEP 5 - $jsonPayload = json_encode($commessaWebPayload, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); - $logContentStep5 = "curl --location --request POST '{$apiBaseUrl}CommessaWeb' \\\n" . - "--header 'Content-Type: application/json' \\\n" . - "--header 'Authorization: Bearer ••••••' \\\n" . - "--data '{$jsonPayload}'"; - - $commessaWeb = $api->post("CommessaWeb", $commessaWebPayload); - - $logContentStep5 .= "\n\nRESPONSE:\n" . json_encode($commessaWeb, JSON_PRETTY_PRINT); - - // Salva log - $logFileStep5 = $logDir . "commessa_create_step5_" . $iddatadb . "_" . time() . ".txt"; - $writeLog($logFileStep5, $logContentStep5, "STEP 5 - Create CommessaWeb (iddatadb={$iddatadb})"); - - $commessaId = $commessaWeb["IdCommessa"]; - $commessaWebCode = substr($commessaWeb["CodiceCommessa"] ?? "TEST CommessaWeb", 0, 30); // Limite a 30 caratteri - - // 🔹 STEP 6: Create Campioni (Samples) for each part - $campioni = []; - $logContentStep6 = ""; - - foreach ($parts as $index => $part) { - $matriceId = (int) ($part["idmatrice"] ?? 0); - - if ($matriceId <= 0) { - throw new Exception("Invalid or missing idmatrice for part: " . ($part["part_number"] ?? "Unknown")); - } - - $campionePayload = [ - "Commessa" => $commessaId, - "Matrice" => $matriceId, - "SottoMatrice" => null, - "SchemaCustomField" => $schemaId, - // "Riferimento" => $part["part_description"] ?? "", - "NoteWeb" => $part["part_description"] ?? "", - "ConsegnaRichiesta" => !empty($part["dateexpiry"]) ? $part["dateexpiry"] : $consegnaRichiesta, - ]; - - // Costruisci curl-like per questo campione - $jsonPayload = json_encode($campionePayload, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); - $logContentStep6 .= "CAMPIONE #{$index}\n" . - "curl --location --request POST '{$apiBaseUrl}Campione' \\\n" . - "--header 'Content-Type: application/json' \\\n" . - "--header 'Authorization: Bearer ••••••' \\\n" . - "--data '{$jsonPayload}'\n\n"; - - $campione = $api->post("Campione", $campionePayload); - - $logContentStep6 .= "RESPONSE:\n" . json_encode($campione, JSON_PRETTY_PRINT) . "\n\n---\n"; - - $campione["PartNumber"] = $part["part_number"] ?? ""; - $campione["Material"] = $part["material"] ?? ""; - $campione["Color"] = $part["color"] ?? ""; - $campione["Mix"] = $part["mix"] ?? ""; - - $campioni[] = $campione; - } - - // Salva log per STEP 6 - $logFileStep6 = $logDir . "commessa_{$commessaId}_campioni_step6_" . time() . ".txt"; - $writeLog($logFileStep6, $logContentStep6, "STEP 6 - Campioni (commessa={$commessaId})"); - - // 🔹 STEP 6.0: PATCH each Campione custom fields: - // - field 189 (Tested Component) = part_description - // - additional fields from identification_parts_customfields (field_id → value_id/value_text) - $logContentStep63 = ""; - foreach ($campioni as $index => $campione) { - $campioneId = (int)($campione['IdCampione'] ?? 0); - $partDescription = $parts[$index]['part_description'] ?? ''; - $partId = (int)($parts[$index]['part_id'] ?? 0); - - if ($campioneId <= 0) { - continue; - } - - // Build a map of overrides: IdCustomField => value - $overrides = []; - - // Override 1: Tested Component (field 189) = part_description - if ($partDescription !== '') { - $overrides[189] = $partDescription; - } - - // Override 2: values from identification_parts_customfields - $partCFs = $partsCustomFields[$partId] ?? []; - foreach ($partCFs as $pcf) { - $cfFieldId = (int)$pcf['field_id']; - $cfValue = $pcf['value_text'] ?? $pcf['value_id'] ?? null; - if ($cfFieldId > 0 && $cfValue !== null && $cfValue !== '') { - $overrides[$cfFieldId] = (string)$cfValue; - } - } - - // Skip if nothing to override - if (empty($overrides)) { - continue; - } - - // GET campione custom fields - $campioneWithFields = $api->get("Campione({$campioneId})?\$expand=CampioniCustomFields(\$expand=CustomField)"); - - $logContentStep63 .= "GET Campione({$campioneId}) CustomFields:\n" . - json_encode($campioneWithFields['CampioniCustomFields'] ?? [], JSON_PRETTY_PRINT) . "\n\n"; - $logContentStep63 .= "Overrides for part {$partId}: " . json_encode($overrides) . "\n\n"; - - // Build PATCH payload — apply overrides where IdCustomField matches - $campioniCustomFields = []; - foreach ($campioneWithFields["CampioniCustomFields"] ?? [] as $cf) { - $definitionId = (int)($cf["CustomField"]["IdCustomField"] ?? 0); - $fieldInstanceId = (int)$cf["IdCampioniCustomFields"]; - $currentValue = $cf["Valore"] ?? ''; - - $newValue = $overrides[$definitionId] ?? $currentValue; - - $campioniCustomFields[] = [ - "IdCampioniCustomFields" => $fieldInstanceId, - "Valore" => $newValue - ]; - } - - if (!empty($campioniCustomFields)) { - $patchPayload = ["CampioniCustomFields" => $campioniCustomFields]; - $patchJson = json_encode($patchPayload, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); - - $logContentStep63 .= "PATCH Campione({$campioneId}):\n" . - "curl --location --request PATCH '{$apiBaseUrl}Campione({$campioneId})' \\\n" . - "--header 'Content-Type: application/json' \\\n" . - "--header 'Authorization: Bearer ••••••' \\\n" . - "--data '{$patchJson}'\n\n"; - - $patchResult = $api->patch("Campione({$campioneId})", $patchPayload); - - $logContentStep63 .= "RESPONSE:\n" . json_encode($patchResult, JSON_PRETTY_PRINT) . "\n\n---\n"; - } - } - - $logFileStep63 = $logDir . "commessa_{$commessaId}_campioni_customfields_step60_" . time() . ".txt"; - $writeLog($logFileStep63, $logContentStep63, "STEP 6.0 - Campioni CustomFields (commessa={$commessaId})"); - - // 🔹 STEP 6.1: Fetch photos linked to this iddatadb - $stmtPhotos = $pdo->prepare(" - SELECT id, file_path, file_name, StampaNelRapporto, PrimaPagina - FROM datadb_photos - WHERE iddatadb = :iddatadb - ORDER BY id ASC - "); - $stmtPhotos->execute(['iddatadb' => $iddatadb]); - $photos = $stmtPhotos->fetchAll(PDO::FETCH_ASSOC); - - - // 🔹 STEP 6.2: Upload photos to Campione .01 (fetched from API) - $photosUploaded = 0; - $logContentPhotos = "Photos for CommessaWeb {$commessaId} (iddatadb={$iddatadb}):\n"; - $logContentPhotos .= "Total photos found: " . count($photos) . ", campioni: " . count($campioni) . "\n\n"; - - if (!empty($campioni) && !empty($photos)) { - // Fetch campioni list from API to find the .01 campione - $commessaCampioni = $api->get("CommessaWeb({$commessaId})?\$expand=Campioni"); - $apiCampioni = $commessaCampioni['Campioni'] ?? []; - - // Sort by CodiceCampione to find .01 - usort($apiCampioni, fn($a, $b) => strcmp($a['CodiceCampione'] ?? '', $b['CodiceCampione'] ?? '')); - - $mainCampione = $apiCampioni[0] ?? null; - $campioneId = (int)($mainCampione['IdCampione'] ?? 0); - - $logContentPhotos .= "API Campioni order:\n"; - foreach ($apiCampioni as $ac) { - $logContentPhotos .= " - {$ac['CodiceCampione']} (IdCampione: {$ac['IdCampione']})\n"; - } - $logContentPhotos .= "Selected .01 campione: IdCampione={$campioneId}\n\n"; - - if ($campioneId > 0) { - $logContentPhotos .= "=== Campione {$campioneId} (main) ===\n"; - - foreach ($photos as $photo) { - $photoPath = $uploadDir . '/' . ltrim($photo['file_path'], './'); - $fullPath = realpath($photoPath); - - if (!$fullPath || !file_exists($fullPath)) { - $logContentPhotos .= "SKIP (file not found): {$photoPath}\n"; - continue; - } - - $photoEndpoint = "Campione({$campioneId})/UploadCampioneFile"; - $stampaNelRapporto = !empty($photo['StampaNelRapporto']); - $primaPagina = !empty($photo['PrimaPagina']); - - $logContentPhotos .= "curl --location --request POST '{$apiBaseUrl}{$photoEndpoint}' \\\n" . - "--header 'Authorization: Bearer ••••••' \\\n" . - "--form 'file=@{$fullPath}'\n\n"; - - // Step 1: Upload file (flags are ignored by API during upload) - $photoResult = $api->postMultipart($photoEndpoint, $fullPath, $photo['file_name']); - $logContentPhotos .= "UPLOAD RESPONSE:\n" . json_encode($photoResult, JSON_PRETTY_PRINT) . "\n\n"; - - // Step 2: PATCH CampioneFile to set flags (StampaNelRapporto, PrimaPagina) - $campioneFileId = (int)($photoResult['IdCampioneFile'] ?? 0); - if ($campioneFileId > 0 && ($stampaNelRapporto || $primaPagina)) { - $patchPayload = []; - - if ($stampaNelRapporto) { - $patchPayload['StampaNelRapporto'] = true; - } - - if ($primaPagina) { - $patchPayload['PrimaPagina'] = true; - } - - $patchEndpoint = "CampioneFile({$campioneFileId})"; - $patchJsonLog = json_encode($patchPayload, JSON_PRETTY_PRINT); - $logContentPhotos .= "curl --location --request PATCH '{$apiBaseUrl}{$patchEndpoint}' \\\n" . - "--header 'Content-Type: application/json' \\\n" . - "--header 'Authorization: Bearer ••••••' \\\n" . - "--data '{$patchJsonLog}'\n\n"; - - $patchResult = $api->patch($patchEndpoint, $patchPayload); - $logContentPhotos .= "PATCH RESPONSE:\n" . json_encode($patchResult, JSON_PRETTY_PRINT) . "\n\n"; - } - - $logContentPhotos .= "---\n"; - $photosUploaded++; - } - } else { - $logContentPhotos .= "SKIP: main campione has invalid IdCampione\n"; - } - } elseif (empty($campioni)) { - $logContentPhotos .= "SKIP: no campioni created, cannot upload photos\n"; - } - - $logFilePhotos = $logDir . "commessa_{$commessaId}_photos_step5_2_" . time() . ".txt"; - $writeLog($logFilePhotos, $logContentPhotos, "STEP 6.2 - Photos (commessa={$commessaId})"); - - // 🔹 STEP 7: Update Custom Fields for CommessaWeb - if (!empty($fieldValues)) { - // GET con espansione per CustomField - $expand = "CommesseCustomFields(\$expand=CustomField)"; - $commessaWithFields = $api->get("CommessaWeb({$commessaId})?\$expand={$expand}"); - - // Logga il GET - $logContentGet = "curl --location --request GET '{$apiBaseUrl}CommessaWeb({$commessaId})?\$expand=CommesseCustomFields(\$expand=CustomField)' \\\n" . - "--header 'Authorization: Bearer ••••••'\n\n" . - "RESPONSE:\n" . json_encode($commessaWithFields, JSON_PRETTY_PRINT); - $logFileGet = $logDir . "commessa_{$commessaId}_get_step7_" . time() . ".txt"; - $writeLog($logFileGet, $logContentGet, "STEP 7 - GET CustomFields (commessa={$commessaId})"); - - // Prepara payload PATCH - $commessaCustomFields = []; - foreach ($commessaWithFields["CommesseCustomFields"] as $customField) { - $definitionId = (int) ($customField["CustomField"]["IdCustomField"] ?? 0); - $fieldId = (int) $customField["IdCommesseCustomFields"]; - $currentValue = $customField["Valore"] ?? ''; - $fieldType = $customField["CustomField"]["Tipo"] ?? ''; - $newValue = isset($valueMap[$definitionId]) ? $valueMap[$definitionId] : $currentValue; - - // Valida se il campo è di tipo Data - if ($fieldType === 'Data' && $newValue !== $currentValue) { - $newValue = formatDateToExport($newValue); - } - - $commessaCustomFields[] = [ - "IdCommesseCustomFields" => $fieldId, - "Valore" => $newValue - ]; - } - - $logFileStep7 = null; - if (!empty($commessaCustomFields)) { - $updatePayload = ["CommesseCustomFields" => $commessaCustomFields]; - - // Logga payload e response - $jsonPayload = json_encode($updatePayload, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); - $logContentStep7 = "curl --location --request PATCH '{$apiBaseUrl}CommessaWeb({$commessaId})' \\\n" . - "--header 'Content-Type: application/json' \\\n" . - "--header 'Authorization: Bearer ••••••' \\\n" . - "--data '{$jsonPayload}'"; - - $patchResponse = $api->patch("CommessaWeb({$commessaId})", $updatePayload); - - $logContentStep7 .= "\n\nRESPONSE:\n" . json_encode($patchResponse, JSON_PRETTY_PRINT); - $logFileStep7 = $logDir . "commessa_{$commessaId}_update_step7_" . time() . ".txt"; - $writeLog($logFileStep7, $logContentStep7, "STEP 7 - PATCH CustomFields (commessa={$commessaId})"); - } - } - - // 🔹 STEP 8: Update datadb with idcommessaweb, commessaweb, and status - $stmt = $pdo->prepare(" - UPDATE datadb - SET idcommessaweb = :idcommessaweb, commessaweb = :commessaweb, status = 'l' - WHERE iddatadb = :iddatadb - "); - $stmt->execute([ - 'idcommessaweb' => $commessaId, - 'commessaweb' => $commessaWebCode, - 'iddatadb' => $iddatadb - ]); - - // 🔹 STEP 9: Send CommessaWeb to laboratory (commentato come richiesto) - - $sendResult = $api->post("CommessaWeb({$commessaId})/InviaCommessa", []); - - // Logga il POST - $logContentStep9 = "curl --location --request POST '{$apiBaseUrl}CommessaWeb({$commessaId})/InviaCommessa' \\\n" . - "--header 'Content-Type: application/json' \\\n" . - "--header 'Authorization: Bearer ••••••' \\\n" . - "--data '{}'\n\n" . - "RESPONSE:\n" . json_encode($sendResult, JSON_PRETTY_PRINT); - $logFileStep9 = $logDir . "commessa_{$commessaId}_send_step9_" . time() . ".txt"; - $writeLog($logFileStep9, $logContentStep9, "STEP 9 - InviaCommessa (commessa={$commessaId})"); - - - // 🔹 STEP 9.5: Importazione da CommessaWeb a Commessa (con retry) - // Supplier call: POST api/odata/CommessaWeb(XXX)/ImportaCommessa - $importUserId = (!empty($lims_global_user_id) && is_numeric($lims_global_user_id)) - ? (int) $lims_global_user_id - : 285; - - $importPayload = [ - "IdUtente" => $importUserId - ]; - $importPayloadLog = json_encode($importPayload, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); - - $importOutcome = importaCommessaWithRetry($api, $commessaId, $importPayload); - $importResult = $importOutcome['result']; - $importStato = $importOutcome['stato']; - $importSucceeded = $importOutcome['succeeded']; - - // Logga il POST (tutti i tentativi) - $logContentStep91 = "curl --location --request POST '{$apiBaseUrl}CommessaWeb({$commessaId})/ImportaCommessa' \\\n" . - "--header 'Content-Type: application/json' \\\n" . - "--header 'Authorization: Bearer ••••••' \\\n" . - "--data '{$importPayloadLog}'\n\n" . - "ATTEMPTS:\n" . $importOutcome['log'] . "\n" . - "SUCCEEDED: " . ($importSucceeded ? 'yes' : 'NO') . "\n\n" . - "LAST RESPONSE:\n" . json_encode($importResult, JSON_PRETTY_PRINT); - $logFileStep91 = $logDir . "commessa_{$commessaId}_importa_step91_" . time() . ".txt"; - $writeLog($logFileStep91, $logContentStep91, "STEP 9.5 - ImportaCommessa (commessa={$commessaId}, succeeded=" . ($importSucceeded ? '1' : '0') . ")"); - - // 🔹 STEP 10: GET di controllo post-PATCH - $expand = "CommesseCustomFields(\$expand=CustomField)"; - $commessaAfterPatch = $api->get("CommessaWeb(" . $commessaId . ")?\$expand=" . $expand); - - // Logga il GET di controllo - $logContentStep10 = "curl --location --request GET '{$apiBaseUrl}CommessaWeb({$commessaId})?\$expand=CommesseCustomFields(\$expand=CustomField)' \\\n" . - "--header 'Authorization: Bearer ••••••'\n\n" . - "RESPONSE:\n" . json_encode($commessaAfterPatch, JSON_PRETTY_PRINT); - $logFileStep10 = $logDir . "commessa_{$commessaId}_get_step10_" . time() . ".txt"; - $writeLog($logFileStep10, $logContentStep10, "STEP 10 - GET verify (commessa={$commessaId})"); - // 🔹 STEP 10.1: Save final CodiceCommessa into datadb.commessaweb - // After ImportaCommessa, the API returns the final LIMS job code in CodiceCommessa. - // Example: CodiceCommessa = 2614795, CodiceCommessaWeb = 26C0103. - $finalCodiceCommessa = trim((string)($commessaAfterPatch['CodiceCommessa'] ?? '')); - - if ($finalCodiceCommessa !== '') { - $stmt = $pdo->prepare(" - UPDATE datadb - SET commessaweb = :commessaweb, - status = 'l' - WHERE iddatadb = :iddatadb - "); - $stmt->execute([ - 'commessaweb' => substr($finalCodiceCommessa, 0, 30), - 'iddatadb' => $iddatadb - ]); - } - // 🔹 STEP 11: Prepare final response - $finalCommessa = [ - "Cliente" => $clienteId, - "SchemaCustomField" => $schemaId, - "Richiedente" => $commessaWeb["Richiedente"] ?? "Web Import", - "Descrizione" => $commessaWeb["Descrizione"] ?? "", - "CommesseCustomFields" => $commessaAfterPatch["CommesseCustomFields"] ?? [], - "Campioni" => $campioni, - "Inviata" => 0 // Non inviato, come richiesto - ]; - - echo json_encode([ - "success" => true, - "idcommessaweb" => $commessaId, - "commessaweb" => $finalCodiceCommessa ?: $commessaWebCode, - "commessaWeb" => $finalCommessa, - "commessaWebApiResponse" => $commessaWeb, // Incluso per debug - "totalCampioni" => count($campioni), - "totalCustomFields" => count($commessaAfterPatch["CommesseCustomFields"] ?? []), - "totalPhotos" => count($photos), - "message" => "Export successful", - "logFiles" => [ - "step5_create" => $logFileStep5, - "step5_2_photos" => $logFilePhotos, - "step6_campioni" => $logFileStep6, - "step7_patch" => $logFileStep7 ?? null, - "step9_1_importa" => $logFileStep91, - "step10_get" => $logFileStep10 - ] - ]); -} catch (Exception $e) { - error_log("LIMS Export Error: " . $e->getMessage() . "\nTrace: " . $e->getTraceAsString()); - - echo json_encode([ - "success" => false, - "message" => "Export failed: " . $e->getMessage(), - "logFiles" => [ - "step5_create" => $logFileStep5 ?? null, - "step5_2_photos" => $logFilePhotos ?? null, - "step6_campioni" => $logFileStep6 ?? null, - "step7_patch" => $logFileStep7 ?? null, - "step9_1_importa" => $logFileStep91 ?? null, - "step10_get" => $logFileStep10 ?? null - ] - ]); -} diff --git a/public/userarea/fetch_tracking_info.php b/public/userarea/fetch_tracking_info.php deleted file mode 100644 index 1ed680c1..00000000 --- a/public/userarea/fetch_tracking_info.php +++ /dev/null @@ -1,150 +0,0 @@ - false, 'message' => 'Numero di tracking o corriere non fornito']); -} - -$trackingNumber = $_POST['tracking_number']; -$courierCode = $_POST['courier_code']; - -// Lista dei corrieri validi per validazione -$validCarriers = ['tnt-it', 'dhl', 'gls', 'sda', 'ups']; -if (!in_array($courierCode, $validCarriers)) { - sendResponse(['success' => false, 'message' => 'Corriere non valido']); -} - -// Imposta il nome del corriere in base al codice -$carrierNames = [ - 'tnt-it' => 'TNT Italy', - 'dhl' => 'DHL', - 'gls' => 'GLS', - 'sda' => 'SDA', - 'ups' => 'UPS' -]; -$courierName = $carrierNames[$courierCode]; - -// Funzione per fare una richiesta cURL a TrackingMore -function makeRequest($url, $data, $apiKey, $method = 'POST') -{ - $ch = curl_init($url); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_HTTPHEADER, [ - 'Tracking-Api-Key: ' . $apiKey, - 'Content-Type: application/json' - ]); - if ($method === 'POST') { - curl_setopt($ch, CURLOPT_POST, true); - $jsonData = json_encode($data, JSON_PRETTY_PRINT); - curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData); - file_put_contents('debug.log', "Encoded JSON Data: $jsonData\n", FILE_APPEND); - } - curl_setopt($ch, CURLOPT_TIMEOUT, 10); - $response = curl_exec($ch); - $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); - $error = curl_error($ch); - curl_close($ch); - - file_put_contents('debug.log', "Request URL: $url\nRequest Data: " . json_encode($data) . "\nResponse: $response\nHTTP Code: $httpCode\nError: $error\n", FILE_APPEND); - - if ($response === false) { - return [ - 'success' => false, - 'code' => $httpCode, - 'message' => 'Errore nella richiesta API: ' . $error - ]; - } - - $decodedResponse = json_decode($response, true); - if ($decodedResponse === null) { - return [ - 'success' => false, - 'code' => $httpCode, - 'message' => 'Risposta API non valida (non è JSON)' - ]; - } - - $decodedResponse['success'] = isset($decodedResponse['meta']['code']) && ($decodedResponse['meta']['code'] === 200 || $decodedResponse['meta']['code'] === 201); - $decodedResponse['http_code'] = $httpCode; - return $decodedResponse; -} - -// Step 1: Prova a creare il tracking -$createUrl = 'https://api.trackingmore.com/v4/trackings/create'; -$createData = [ - 'tracking_number' => $trackingNumber, - 'courier_code' => $courierCode -]; -$createResponse = makeRequest($createUrl, $createData, $apiKey); -file_put_contents('debug.log', "Create Response: " . json_encode($createResponse) . "\n", FILE_APPEND); - -$trackingInfo = null; -if ($createResponse['success']) { - // Creazione riuscita, usa i dati restituiti - $trackingInfo = $createResponse['data']; -} else { - // Controlla se l'errore è "Tracking No. already exists" (4101) - if (isset($createResponse['meta']['code']) && $createResponse['meta']['code'] === 4101) { - // Il tracking esiste già, usa /trackings (GET) con tracking_number e courier_code - $getUrl = 'https://api.trackingmore.com/v4/get?tracking_numbers=' . urlencode($trackingNumber); - $getResponse = makeRequest($getUrl, [], $apiKey, 'GET'); - file_put_contents('debug.log', "Get Response: " . json_encode($getResponse) . "\n", FILE_APPEND); - - if ($getResponse['success'] && !empty($getResponse['data']['items']) && !empty($getResponse['data']['items'][0])) { - $trackingInfo = $getResponse['data']['items'][0]; - } else { - $errorMessage = isset($getResponse['meta']['message']) ? $getResponse['meta']['message'] : 'Errore sconosciuto'; - sendResponse(['success' => false, 'message' => 'Errore nel recupero del tracking esistente: ' . $errorMessage]); - } - } else { - // Altro errore nella creazione - $errorMessage = isset($createResponse['meta']['message']) ? $createResponse['meta']['message'] : 'Errore sconosciuto'; - sendResponse(['success' => false, 'message' => 'Errore nella creazione del tracking: ' . $errorMessage]); - } -} - -if (!$trackingInfo) { - sendResponse(['success' => false, 'message' => 'Nessuna informazione di tracking trovata']); -} - -// Estrai la data di consegna e il firmatario -$deliveryDate = 'Non disponibile'; -$signedBy = 'Non disponibile'; -if (isset($trackingInfo['origin_info']['trackinfo']) && is_array($trackingInfo['origin_info']['trackinfo'])) { - foreach ($trackingInfo['origin_info']['trackinfo'] as $checkpoint) { - if (isset($checkpoint['checkpoint_delivery_status']) && $checkpoint['checkpoint_delivery_status'] === 'delivered') { - $deliveryDate = $checkpoint['checkpoint_date'] ?? 'Non disponibile'; - $signedBy = $trackingInfo['signed_by'] ?? 'Non disponibile'; - break; - } - } -} - -// Restituisci i dati al frontend -sendResponse([ - 'success' => true, - 'deliveryDate' => $deliveryDate, - 'signedBy' => $signedBy, - 'carrierName' => $courierName -]); diff --git a/public/userarea/fetch_tracking_info17track.php b/public/userarea/fetch_tracking_info17track.php deleted file mode 100644 index 381ce145..00000000 --- a/public/userarea/fetch_tracking_info17track.php +++ /dev/null @@ -1,166 +0,0 @@ - false, 'message' => 'Numero di tracking non fornito']); -} - -$trackingNumber = $_POST['tracking_number']; - -// Funzione per fare una richiesta cURL a 17Track -function makeRequest($url, $data, $apiKey, $method = 'POST') -{ - $ch = curl_init($url); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_HTTPHEADER, [ - '17token: ' . $apiKey, - 'Content-Type: application/json' - ]); - if ($method === 'POST') { - curl_setopt($ch, CURLOPT_POST, true); - curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); - } - curl_setopt($ch, CURLOPT_TIMEOUT, 10); - $response = curl_exec($ch); - $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); - $error = curl_error($ch); - curl_close($ch); - - file_put_contents('debug.log', "Request URL: $url\nRequest Data: " . json_encode($data) . "\nResponse: $response\nHTTP Code: $httpCode\nError: $error\n", FILE_APPEND); - - if ($response === false || $httpCode !== 200) { - return [ - 'success' => false, - 'code' => $httpCode, - 'message' => 'Errore nella richiesta API: HTTP ' . $httpCode . ' - ' . $error - ]; - } - - $decodedResponse = json_decode($response, true); - if ($decodedResponse === null) { - return [ - 'success' => false, - 'code' => $httpCode, - 'message' => 'Risposta API non valida (non è JSON)' - ]; - } - - return $decodedResponse; -} - -// Step 1: Prova con auto-detection -$trackUrl = 'https://api.17track.net/track/v2/register'; -$trackData = [ - [ - 'number' => $trackingNumber, - 'carrier' => null, - 'auto_detection' => true - ] -]; -$registerResponse = makeRequest($trackUrl, $trackData, $apiKey); - -file_put_contents('debug.log', "Register Response (Auto-detect): " . json_encode($registerResponse) . "\n", FILE_APPEND); - -if (!isset($registerResponse['data']['accepted']) || empty($registerResponse['data']['accepted'])) { - $errorMessage = $registerResponse['data']['rejected'][0]['error']['message'] ?? 'Errore sconosciuto'; - sendResponse(['success' => false, 'message' => 'Errore nella registrazione del tracking: ' . $errorMessage]); -} - -// Step 2: Recupera i dettagli con riprova -$getUrl = 'https://api.17track.net/track/v2/gettrackinfo'; -$getData = [['number' => $trackingNumber]]; -$maxAttempts = 3; -$delaySeconds = 5; - -for ($attempt = 1; $attempt <= $maxAttempts; $attempt++) { - $trackResponse = makeRequest($getUrl, $getData, $apiKey); - file_put_contents('debug.log', "Track Response (Attempt $attempt): " . json_encode($trackResponse) . "\n", FILE_APPEND); - - if (isset($trackResponse['data']['accepted']) && !empty($trackResponse['data']['accepted'])) { - break; - } - - if ($attempt < $maxAttempts) { - sleep($delaySeconds); - } -} - -// Se auto-detection ha successo, procedi -if (isset($trackResponse['data']['accepted']) && !empty($trackResponse['data']['accepted'])) { - $trackingInfo = $trackResponse['data']['accepted'][0]['track'] ?? null; - if (!$trackingInfo) { - sendResponse(['success' => false, 'message' => 'Nessuna informazione di tracking trovata']); - } - - $deliveryDate = 'Non disponibile'; - $signedBy = 'Non disponibile'; - $carrierName = $trackingInfo['carrier']['name'] ?? 'Sconosciuto'; - - if (isset($trackingInfo['z0']['e']) && $trackingInfo['z0']['e'] == 40) { - $deliveryDate = $trackingInfo['z0']['z'] ?? 'Non disponibile'; - $signedBy = $trackingInfo['z0']['d'] ?? 'Non disponibile'; - } - - sendResponse([ - 'success' => true, - 'deliveryDate' => $deliveryDate, - 'signedBy' => $signedBy, - 'carrierName' => $carrierName - ]); -} - -// Step 3: Se auto-detection fallisce, prova una lista di corrieri comuni -$commonCarriers = [ - ['code' => 100003, 'name' => 'TNT'], // TNT - ['code' => 100001, 'name' => 'DHL'], // DHL Express - ['code' => 100065, 'name' => 'DHL eCommerce'], // DHL eCommerce - ['code' => 100002, 'name' => 'UPS'] // UPS -]; - -$possibleCarriers = []; -foreach ($commonCarriers as $carrier) { - $trackData = [ - [ - 'number' => $trackingNumber, - 'carrier' => $carrier['code'], - 'auto_detection' => false - ] - ]; - $registerResponse = makeRequest($trackUrl, $trackData, $apiKey); - - if (isset($registerResponse['data']['accepted']) && !empty($registerResponse['data']['accepted'])) { - $possibleCarriers[] = $carrier['name']; - } - sleep(1); // Piccolo ritardo per evitare limiti di rate -} - -if (!empty($possibleCarriers)) { - sendResponse([ - 'success' => false, - 'message' => 'Auto-detection fallita. Seleziona un corriere tra quelli possibili.', - 'possibleCarriers' => $possibleCarriers - ]); -} else { - sendResponse(['success' => false, 'message' => 'Nessun corriere identificato per questo numero di tracking']); -} diff --git a/public/userarea/fetch_tracking_infotracking.php b/public/userarea/fetch_tracking_infotracking.php deleted file mode 100644 index 08ee2587..00000000 --- a/public/userarea/fetch_tracking_infotracking.php +++ /dev/null @@ -1,166 +0,0 @@ - false, 'message' => 'Numero di tracking non fornito']); -} - -$trackingNumber = $_POST['tracking_number']; - -// Funzione per fare una richiesta cURL a TrackingMore -function makeRequest($url, $data, $apiKey, $method = 'POST') -{ - $ch = curl_init($url); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_HTTPHEADER, [ - 'Tracking-Api-Key: ' . $apiKey, - 'Content-Type: application/json' - ]); - if ($method === 'POST') { - curl_setopt($ch, CURLOPT_POST, true); - curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); - } - curl_setopt($ch, CURLOPT_TIMEOUT, 10); - $response = curl_exec($ch); - $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); - $error = curl_error($ch); - curl_close($ch); - - file_put_contents('debug.log', "Request URL: $url\nRequest Data: " . json_encode($data) . "\nResponse: $response\nHTTP Code: $httpCode\nError: $error\n", FILE_APPEND); - - if ($response === false || ($httpCode !== 200 && $httpCode !== 201)) { - return [ - 'success' => false, - 'code' => $httpCode, - 'message' => 'Errore nella richiesta API: HTTP ' . $httpCode . ' - ' . $error - ]; - } - - $decodedResponse = json_decode($response, true); - if ($decodedResponse === null) { - return [ - 'success' => false, - 'code' => $httpCode, - 'message' => 'Risposta API non valida (non è JSON)' - ]; - } - - $decodedResponse['success'] = isset($decodedResponse['meta']['code']) && ($decodedResponse['meta']['code'] === 200 || $decodedResponse['meta']['code'] === 201); - return $decodedResponse; -} - -// Step 1: Identifica il corriere -$detectUrl = 'https://api.trackingmore.com/v4/couriers/detect'; -$detectData = ['tracking_number' => $trackingNumber]; -$detectResponse = makeRequest($detectUrl, $detectData, $apiKey); -file_put_contents('debug.log', "Detect Response: " . json_encode($detectResponse) . "\n", FILE_APPEND); - -if (!$detectResponse['success']) { - $errorMessage = isset($detectResponse['meta']['message']) ? $detectResponse['meta']['message'] : 'Errore sconosciuto'; - sendResponse(['success' => false, 'message' => 'Errore nella rilevazione del corriere: ' . $errorMessage]); -} - -$couriers = $detectResponse['data'] ?? []; -if (empty($couriers)) { - sendResponse(['success' => false, 'message' => 'Corriere non identificato per il numero di tracking']); -} - -// Prendi il primo corriere per ora -$courierCode = $couriers[0]['courier_code'] ?? null; -$courierName = $couriers[0]['courier_name'] ?? 'Sconosciuto'; -if (!$courierCode) { - sendResponse(['success' => false, 'message' => 'Corriere non identificato']); -} - -// Step 2: Crea un tracking -$createUrl = 'https://api.trackingmore.com/v4/trackings/create'; -$createData = [ - 'tracking_number' => $trackingNumber, - 'courier_code' => $courierCode -]; -$createResponse = makeRequest($createUrl, $createData, $apiKey); -file_put_contents('debug.log', "Create Response: " . json_encode($createResponse) . "\n", FILE_APPEND); - -if (!$createResponse['success']) { - $errorMessage = isset($createResponse['meta']['message']) ? $createResponse['meta']['message'] : 'Errore sconosciuto'; - sendResponse(['success' => false, 'message' => 'Errore nella creazione del tracking: ' . $errorMessage]); -} - -// Step 3: Recupera i dettagli del tracking con riprova -$getUrl = 'https://api.trackingmore.com/v4/trackings/get?tracking_number=' . urlencode($trackingNumber); -$maxAttempts = 3; -$delaySeconds = 5; - -for ($attempt = 1; $attempt <= $maxAttempts; $attempt++) { - $trackResponse = makeRequest($getUrl, [], $apiKey, 'GET'); - file_put_contents('debug.log', "Track Response (Attempt $attempt): " . json_encode($trackResponse) . "\n", FILE_APPEND); - - if ($trackResponse['success'] && !empty($trackResponse['data'])) { - break; - } - - if ($attempt < $maxAttempts) { - sleep($delaySeconds); - } -} - -if (!$trackResponse['success']) { - $errorMessage = isset($trackResponse['meta']['message']) ? $trackResponse['meta']['message'] : 'Errore sconosciuto'; - sendResponse(['success' => false, 'message' => 'Errore nel recupero delle informazioni: ' . $errorMessage]); -} - -$trackingInfo = $trackResponse['data'] ?? null; -if (!$trackingInfo) { - // Se ci sono più corrieri rilevati, restituisci una lista per la tendina - if (count($couriers) > 1) { - $possibleCarriers = array_map(function ($courier) { - return ['code' => $courier['courier_code'], 'name' => $courier['courier_name']]; - }, $couriers); - sendResponse([ - 'success' => false, - 'message' => 'Dati non trovati. Seleziona un corriere tra quelli rilevati.', - 'possibleCarriers' => $possibleCarriers - ]); - } - sendResponse(['success' => false, 'message' => 'Nessuna informazione di tracking trovata']); -} - -// Estrai la data di consegna e il firmatario -$deliveryDate = 'Non disponibile'; -$signedBy = 'Non disponibile'; -foreach ($trackingInfo['trackinfo'] as $checkpoint) { - if ($checkpoint['status'] === 'delivered') { - $deliveryDate = $checkpoint['Date']; - $signedBy = $checkpoint['signed_by'] ?? 'Non disponibile'; - break; - } -} - -// Restituisci i dati al frontend -sendResponse([ - 'success' => true, - 'deliveryDate' => $deliveryDate, - 'signedBy' => $signedBy, - 'carrierName' => $courierName -]); diff --git a/public/userarea/get_anagrafica_certest_object.php b/public/userarea/get_anagrafica_certest_object.php deleted file mode 100644 index c9a68edf..00000000 --- a/public/userarea/get_anagrafica_certest_object.php +++ /dev/null @@ -1,40 +0,0 @@ - 100] - - // Debug: salva URL usata - $base_url = 'https://93.43.5.102/limsapi/api/odata/'; - $query = http_build_query($options); - $full_url = $base_url . $endpoint . ($query ? '?' . $query : ''); - file_put_contents(__DIR__ . '/last_url.txt', $full_url . PHP_EOL, FILE_APPEND); - - // Chiamata API - $data = $api->get($endpoint, $options); - - // Salva il JSON in locale - file_put_contents(__DIR__ . '/anagrafica_certest_object_response.json', json_encode($data, JSON_PRETTY_PRINT)); - - echo json_encode($data); -} catch (Exception $e) { - file_put_contents( - __DIR__ . '/error_log.txt', - date('Y-m-d H:i:s') . ' - ' . $e->getMessage() . PHP_EOL, - FILE_APPEND - ); - http_response_code(500); - echo json_encode(['error' => $e->getMessage()]); -} diff --git a/public/userarea/get_anagrafica_certest_service.php b/public/userarea/get_anagrafica_certest_service.php deleted file mode 100644 index 12b53ea6..00000000 --- a/public/userarea/get_anagrafica_certest_service.php +++ /dev/null @@ -1,40 +0,0 @@ - 100] - - // Debug: salva URL usata - $base_url = 'https://93.43.5.102/limsapi/api/odata/'; - $query = http_build_query($options); - $full_url = $base_url . $endpoint . ($query ? '?' . $query : ''); - file_put_contents(__DIR__ . '/last_url.txt', $full_url . PHP_EOL, FILE_APPEND); - - // Chiamata API - $data = $api->get($endpoint, $options); - - // Salva il JSON in locale - file_put_contents(__DIR__ . '/anagrafica_certest_service_response.json', json_encode($data, JSON_PRETTY_PRINT)); - - echo json_encode($data); -} catch (Exception $e) { - file_put_contents( - __DIR__ . '/error_log.txt', - date('Y-m-d H:i:s') . ' - ' . $e->getMessage() . PHP_EOL, - FILE_APPEND - ); - http_response_code(500); - echo json_encode(['error' => $e->getMessage()]); -} diff --git a/public/userarea/get_analisi.php b/public/userarea/get_analisi.php deleted file mode 100644 index d931c8c2..00000000 --- a/public/userarea/get_analisi.php +++ /dev/null @@ -1,50 +0,0 @@ - 'IdAnalisi,Codice,NomeAnalisi,ClientiAbilitati,MatriciAbilitate,IsGenerico,Tipo,ParentKey,SelezionabileSuWeb', - - // Solo analisi effettivamente selezionabili sul web - '$filter' => 'SelezionabileSuWeb eq true', - - // Ordinamento alfabetico per nome analisi - '$orderby' => 'NomeAnalisi asc' - ]; - - // Debug: salva URL usato - $base_url = 'https://93.43.5.102/limsapi/api/odata/'; - $query = http_build_query($options); - $full_url = $base_url . $endpoint . ($query ? '?' . $query : ''); - file_put_contents(__DIR__ . '/last_analisi_url.txt', $full_url . PHP_EOL, FILE_APPEND); - - // Chiamata API - $data = $api->get($endpoint, $options); - - // Salva il JSON in locale - file_put_contents(__DIR__ . '/analisi_response.json', json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)); - - echo json_encode($data, JSON_UNESCAPED_UNICODE); -} catch (Exception $e) { - file_put_contents( - __DIR__ . '/analisi_error_log.txt', - date('Y-m-d H:i:s') . ' - ' . $e->getMessage() . PHP_EOL, - FILE_APPEND - ); - - http_response_code(500); - echo json_encode(['error' => $e->getMessage()], JSON_UNESCAPED_UNICODE); -} diff --git a/public/userarea/get_analisi_by_cliente_matrice.php b/public/userarea/get_analisi_by_cliente_matrice.php deleted file mode 100644 index 177729a1..00000000 --- a/public/userarea/get_analisi_by_cliente_matrice.php +++ /dev/null @@ -1,68 +0,0 @@ - 'Missing or invalid id_cliente']); - exit; - } - - $api = VisualLimsApiClient::getInstance(); - - if ($idMatrice > 0) { - $expandExpr = "AnalisiAbilitate(\$filter=Matrice/IdMatrice eq $idMatrice)"; - } else { - $expandExpr = "AnalisiAbilitate"; - } - - // Encode only the $expand expression because it contains spaces, slash and parentheses - $expandEncoded = rawurlencode($expandExpr); - $endpoint = "Cliente($idCliente)?\$expand={$expandEncoded}"; - - $base_url = 'https://93.43.5.102/limsapi/api/odata/'; - $full_url = $base_url . $endpoint; - - file_put_contents(__DIR__ . '/last_url_analisi.txt', $full_url . PHP_EOL, FILE_APPEND); - - $data = $api->get($endpoint, []); - - file_put_contents( - __DIR__ . '/analisi_by_cliente_matrice_response.json', - json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) - ); - - if ($debug === 1) { - echo json_encode([ - 'endpoint' => $endpoint, - 'full_url' => $full_url, - 'raw_response' => $data - ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); - exit; - } - - $analisi = $data['AnalisiAbilitate'] ?? []; - - echo json_encode([ - 'value' => $analisi, - 'count' => is_array($analisi) ? count($analisi) : 0 - ], JSON_UNESCAPED_UNICODE); -} catch (Exception $e) { - file_put_contents( - __DIR__ . '/error_log_analisi.txt', - date('Y-m-d H:i:s') . ' - ' . $e->getMessage() . PHP_EOL, - FILE_APPEND - ); - - http_response_code(500); - echo json_encode(['error' => $e->getMessage()]); -} diff --git a/public/userarea/get_analisi_by_matrice.php b/public/userarea/get_analisi_by_matrice.php deleted file mode 100644 index fe33eb0b..00000000 --- a/public/userarea/get_analisi_by_matrice.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Missing or invalid id_matrice']); - exit; - } - - $api = VisualLimsApiClient::getInstance(); - - /** - * OData hypothesis: - * - Expand enabled matrices - * - Return only selectable analyses - * - Include generic analyses OR analyses enabled for the given matrix - * - * This endpoint must be verified against the real VisualLims API metadata. - */ - $filter = rawurlencode("SelezionabileSuWeb eq true and (IsGenerico eq true or MatriciAbilitate/any(m:m/IdMatrice eq $idMatrice))"); - $expand = rawurlencode("MatriciAbilitate"); - $endpoint = "Analisi?\$top=10"; - - // Debug URL - $base_url = 'https://93.43.5.102/limsapi/api/odata/'; - $full_url = $base_url . $endpoint; - file_put_contents(__DIR__ . '/last_url_analisi.txt', $full_url . PHP_EOL, FILE_APPEND); - - $data = $api->get($endpoint, []); - - file_put_contents( - __DIR__ . '/analisi_by_matrice_response.json', - json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) - ); - - $analisi = $data['value'] ?? []; - - echo json_encode(['value' => $analisi], JSON_UNESCAPED_UNICODE); -} catch (Exception $e) { - file_put_contents( - __DIR__ . '/error_log_analisi.txt', - date('Y-m-d H:i:s') . ' - ' . $e->getMessage() . PHP_EOL, - FILE_APPEND - ); - - http_response_code(500); - echo json_encode(['error' => $e->getMessage()]); -} diff --git a/public/userarea/get_analisi_matrice_filter.php b/public/userarea/get_analisi_matrice_filter.php deleted file mode 100644 index ce5d0385..00000000 --- a/public/userarea/get_analisi_matrice_filter.php +++ /dev/null @@ -1,68 +0,0 @@ - 'Missing or invalid id_matrice']); - exit; - } - - $api = VisualLimsApiClient::getInstance(); - - $webOnly = isset($_GET['web_only']) ? (int)$_GET['web_only'] : 1; - - $filterString = "Matrice/IdMatrice eq $idMatrice"; - - if ($webOnly === 1) { - $filterString .= " and SelezionabileSuWeb eq true"; - } - - $filter = rawurlencode($filterString); - $endpoint = "Analisi?\$filter={$filter}"; - - $base_url = 'https://93.43.5.102/limsapi/api/odata/'; - $full_url = $base_url . $endpoint; - - file_put_contents(__DIR__ . '/last_url_analisi.txt', $full_url . PHP_EOL, FILE_APPEND); - - $data = $api->get($endpoint, []); - - file_put_contents( - __DIR__ . '/analisi_by_matrice_response.json', - json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) - ); - - if ($debug === 1) { - echo json_encode([ - 'endpoint' => $endpoint, - 'full_url' => $full_url, - 'raw_response' => $data - ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); - exit; - } - - $analisi = $data['value'] ?? []; - - echo json_encode([ - 'value' => $analisi, - 'count' => is_array($analisi) ? count($analisi) : 0 - ], JSON_UNESCAPED_UNICODE); -} catch (Exception $e) { - file_put_contents( - __DIR__ . '/error_log_analisi.txt', - date('Y-m-d H:i:s') . ' - ' . $e->getMessage() . PHP_EOL, - FILE_APPEND - ); - - http_response_code(500); - echo json_encode(['error' => $e->getMessage()]); -} diff --git a/public/userarea/get_analisiabilitate.php b/public/userarea/get_analisiabilitate.php deleted file mode 100644 index d7db8cef..00000000 --- a/public/userarea/get_analisiabilitate.php +++ /dev/null @@ -1,95 +0,0 @@ - 'AnalisiAbilitate' - ]; - - // Debug: salva URL usato - $base_url = 'https://93.43.5.102/limsapi/api/odata/'; - $query = http_build_query($options); - $query = urldecode($query); // rende leggibile $expand invece di %24expand - - $full_url = $base_url . $endpoint . ($query ? '?' . $query : ''); - file_put_contents(__DIR__ . '/last_url_analisi_abilitate.txt', $full_url . PHP_EOL, FILE_APPEND); - - // Chiamata API - $data = $api->get($endpoint, $options); - - // Recupera AnalisiAbilitate dalla risposta - $analisiAbilitate = $data['AnalisiAbilitate'] ?? []; - - // Alcune API OData possono restituire collection dentro "value" - if (isset($analisiAbilitate['value']) && is_array($analisiAbilitate['value'])) { - $analisiAbilitate = $analisiAbilitate['value']; - } - - // Cerca se il RecordKey / IdAnalisi che stai usando è effettivamente assegnabile - $matches = []; - - foreach ($analisiAbilitate as $analisi) { - $recordKey = isset($analisi['RecordKey']) ? (string)$analisi['RecordKey'] : ''; - $idAnalisi = isset($analisi['IdAnalisi']) ? (string)$analisi['IdAnalisi'] : ''; - - if ($recordKey === $targetRecordKey || $idAnalisi === $targetIdAnalisi) { - $matches[] = $analisi; - } - } - - // Output diagnostico - $output = [ - 'success' => true, - 'idCampione' => $idCampione, - 'request_url' => $full_url, - 'targetRecordKey' => $targetRecordKey, - 'targetIdAnalisi' => $targetIdAnalisi, - 'enabled_analyses_count' => is_array($analisiAbilitate) ? count($analisiAbilitate) : 0, - 'target_found' => count($matches) > 0, - 'target_matches' => $matches, - 'analisi_abilitate' => $analisiAbilitate, - 'raw_response' => $data - ]; - - // Salva il JSON in locale - file_put_contents( - __DIR__ . '/analisi_abilitate_campione_749027_response.json', - json_encode($output, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) - ); - - echo json_encode($output, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); -} catch (Exception $e) { - file_put_contents( - __DIR__ . '/error_log_analisi_abilitate.txt', - date('Y-m-d H:i:s') . ' - ' . $e->getMessage() . PHP_EOL, - FILE_APPEND - ); - - http_response_code(500); - - echo json_encode([ - 'success' => false, - 'error' => $e->getMessage() - ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); -} diff --git a/public/userarea/get_campionematrice.php b/public/userarea/get_campionematrice.php deleted file mode 100644 index 74aef0eb..00000000 --- a/public/userarea/get_campionematrice.php +++ /dev/null @@ -1,88 +0,0 @@ - 'Matrice' - ]; - - // Debug URL - $base_url = 'https://93.43.5.102/limsapi/api/odata/'; - $query = http_build_query($options); - $queryReadable = urldecode($query); - - $full_url = $base_url . $endpoint . ($queryReadable ? '?' . $queryReadable : ''); - - file_put_contents( - __DIR__ . '/last_url_check_matrice.txt', - $full_url . PHP_EOL, - FILE_APPEND - ); - - // Chiamata API - $data = $api->get($endpoint, $options); - - // Recupero Matrice dalla response - $matrice = $data['Matrice'] ?? null; - - $actualMatriceId = null; - - if (is_array($matrice)) { - // Provo i nomi più probabili - $actualMatriceId = $matrice['IdMatrice'] - ?? $matrice['idMatrice'] - ?? $matrice['Id'] - ?? $matrice['ID'] - ?? null; - } - - $matrice_ok = ((int)$actualMatriceId === (int)$expectedMatriceId); - - $output = [ - 'success' => true, - 'idCampione' => $idCampione, - 'expectedMatriceId' => $expectedMatriceId, - 'actualMatriceId' => $actualMatriceId, - 'matrice_ok' => $matrice_ok, - 'request_url' => $full_url, - 'matrice' => $matrice, - 'raw_response' => $data - ]; - - // Salva JSON completo - file_put_contents( - __DIR__ . '/check_matrice_campione_749027_response.json', - json_encode($output, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) - ); - - echo json_encode($output, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); -} catch (Exception $e) { - file_put_contents( - __DIR__ . '/error_log_check_matrice.txt', - date('Y-m-d H:i:s') . ' - ' . $e->getMessage() . PHP_EOL, - FILE_APPEND - ); - - http_response_code(500); - - echo json_encode([ - 'success' => false, - 'error' => $e->getMessage() - ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); -} diff --git a/public/userarea/get_cliente_responsabile.php b/public/userarea/get_cliente_responsabile.php deleted file mode 100644 index 7277ae50..00000000 --- a/public/userarea/get_cliente_responsabile.php +++ /dev/null @@ -1,40 +0,0 @@ - 'Missing or invalid id_cliente']); - exit; - } - - $api = VisualLimsApiClient::getInstance(); - - // Build endpoint with OData $expand WITHOUT encoding '$' as %24 - $endpoint = "Cliente($idCliente)?\$expand=Responsabili"; - - // Debug URL (real final URL) - $base_url = 'https://93.43.5.102/limsapi/api/odata/'; - $full_url = $base_url . $endpoint; - file_put_contents(__DIR__ . '/last_url.txt', $full_url . PHP_EOL, FILE_APPEND); - - // Call API: options must be empty because expand is already in endpoint - $data = $api->get($endpoint, []); - - - file_put_contents(__DIR__ . '/cliente_responsabili_response.json', json_encode($data, JSON_PRETTY_PRINT)); - - // Return only the list (standard shape used by the frontend) - $responsabili = $data['Responsabili'] ?? []; - echo json_encode(['value' => $responsabili]); -} catch (Exception $e) { - file_put_contents(__DIR__ . '/error_log.txt', date('Y-m-d H:i:s') . ' - ' . $e->getMessage() . PHP_EOL, FILE_APPEND); - http_response_code(500); - echo json_encode(['error' => $e->getMessage()]); -} diff --git a/public/userarea/get_clienti.php b/public/userarea/get_clienti.php deleted file mode 100644 index 79961677..00000000 --- a/public/userarea/get_clienti.php +++ /dev/null @@ -1,102 +0,0 @@ -getConnection(); - $stmt = $pdo->query("SELECT DISTINCT idclient FROM datadb WHERE idclient IS NOT NULL AND idclient > 0 ORDER BY idclient ASC"); - $ids = $stmt->fetchAll(PDO::FETCH_COLUMN); - $fakeClients = array_map(fn($id) => [ - 'IdCliente' => (int) $id, - 'Nominativo' => "Cliente Simulato {$id}", - 'CodiceCliente' => "SIM_{$id}", - ], $ids); - echo json_encode(['value' => $fakeClients]); - exit; - } - - // Parametri OData - $params = [ - '$select' => 'IdCliente,Nominativo,CodiceCliente', - '$orderby' => 'Nominativo asc' - ]; - - // Costruisce query string con encoding corretto - $queryString = http_build_query($params); - - // Componi endpoint finale - $endpoint = "Cliente?$queryString"; - - // Funzione per eseguire la chiamata con retry - function makeApiRequest($api, $endpoint, $maxRetries = 3) - { - for ($retry = 0; $retry < $maxRetries; $retry++) { - try { - // Tenta la chiamata API - $data = $api->get($endpoint); - // Salva risposta per debug - file_put_contents(__DIR__ . '/clienti_response.json', json_encode($data, JSON_PRETTY_PRINT)); - return $data; - } catch (Exception $e) { - $errorMessage = $e->getMessage(); - // Controlla se l'errore è legato all'autenticazione (HTTP 400 con messaggio specifico) - if (strpos($errorMessage, 'HTTP 400') !== false && strpos($errorMessage, 'Cannot persist the object') !== false) { - // Forza il refresh del token - try { - // Assumi che VisualLimsApiClient abbia un metodo per il refresh del token - $api->refreshToken(); // Da implementare in VisualLimsApiClient se non esiste - error_log("Tentativo $retry: Refresh token eseguito per endpoint $endpoint"); - } catch (Exception $refreshEx) { - error_log("Errore durante il refresh del token: " . $refreshEx->getMessage()); - throw new Exception("Impossibile eseguire il refresh del token: " . $refreshEx->getMessage()); - } - // Ritarda leggermente prima del retry - usleep(500000); // 500ms - continue; - } - // Altri errori non gestiti dal retry - throw $e; - } - } - throw new Exception("Massimo numero di tentativi raggiunto per $endpoint"); - } - - // Cache file (1 hour TTL) - $cacheFile = __DIR__ . '/cache/clienti.json'; - if (file_exists($cacheFile) && (time() - filemtime($cacheFile) < 3600)) { - readfile($cacheFile); - exit; - } - - // Esegui la chiamata con retry - $data = makeApiRequest($api, $endpoint); - - $json = json_encode($data); - if (!is_dir(__DIR__ . '/cache')) mkdir(__DIR__ . '/cache', 0777, true); - file_put_contents($cacheFile, $json); - - echo $json; -} catch (Exception $e) { - http_response_code(500); - $errorResponse = [ - 'error' => $e->getMessage(), - 'file' => $e->getFile(), - 'line' => $e->getLine(), - 'trace' => $e->getTraceAsString() - ]; - error_log("Errore in get_clienti.php: " . json_encode($errorResponse)); - echo json_encode($errorResponse); -} diff --git a/public/userarea/get_clienti_raw.php b/public/userarea/get_clienti_raw.php deleted file mode 100644 index 30b0d36f..00000000 --- a/public/userarea/get_clienti_raw.php +++ /dev/null @@ -1,103 +0,0 @@ -getConnection(); - - $stmt = $pdo->query(" - SELECT DISTINCT idclient - FROM datadb - WHERE idclient IS NOT NULL - AND idclient > 0 - ORDER BY idclient ASC - "); - - $ids = $stmt->fetchAll(PDO::FETCH_COLUMN); - - $fakeClients = array_map(fn($id) => [ - 'IdCliente' => (int) $id, - 'Nominativo' => "Cliente Simulato {$id}", - 'CodiceCliente' => "SIM_{$id}", - ], $ids); - - echo json_encode(['value' => $fakeClients], JSON_UNESCAPED_UNICODE); - exit; - } - - // Endpoint senza filtri: recupera tutto - $endpoint = 'Cliente?$top=50'; - - // Funzione per eseguire la chiamata con retry - function makeApiRequest($api, $endpoint, $maxRetries = 3) - { - for ($retry = 0; $retry < $maxRetries; $retry++) { - try { - $data = $api->get($endpoint); - - // Save response for debug - file_put_contents( - __DIR__ . '/clienti_response.json', - json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) - ); - - return $data; - } catch (Exception $e) { - $errorMessage = $e->getMessage(); - - // Retry only for specific auth/token related issue - if ( - strpos($errorMessage, 'HTTP 400') !== false && - strpos($errorMessage, 'Cannot persist the object') !== false - ) { - try { - if (method_exists($api, 'refreshToken')) { - $api->refreshToken(); - error_log("Tentativo {$retry}: refresh token eseguito per endpoint {$endpoint}"); - } else { - throw new Exception('Il metodo refreshToken() non esiste in VisualLimsApiClient'); - } - } catch (Exception $refreshEx) { - error_log("Errore durante il refresh del token: " . $refreshEx->getMessage()); - throw new Exception("Impossibile eseguire il refresh del token: " . $refreshEx->getMessage()); - } - - usleep(500000); // 500ms - continue; - } - - throw $e; - } - } - - throw new Exception("Massimo numero di tentativi raggiunto per {$endpoint}"); - } - - // Esegui la chiamata - $data = makeApiRequest($api, $endpoint); - - echo json_encode($data, JSON_UNESCAPED_UNICODE); -} catch (Exception $e) { - http_response_code(500); - - $errorResponse = [ - 'error' => $e->getMessage(), - 'file' => $e->getFile(), - 'line' => $e->getLine(), - 'trace' => $e->getTraceAsString() - ]; - - error_log("Errore in get_clienti.php: " . json_encode($errorResponse, JSON_UNESCAPED_UNICODE)); - echo json_encode($errorResponse, JSON_UNESCAPED_UNICODE); -} diff --git a/public/userarea/get_commessaweb.php b/public/userarea/get_commessaweb.php deleted file mode 100644 index 94225284..00000000 --- a/public/userarea/get_commessaweb.php +++ /dev/null @@ -1,39 +0,0 @@ - 'OrderCustomFields']; - - // Debug: salva URL usato - $base_url = 'https://93.43.5.102/limsapi/api/odata/'; - $query = http_build_query($options); - $full_url = $base_url . $endpoint . ($query ? '?' . $query : ''); - file_put_contents(__DIR__ . '/last_url.txt', $full_url . PHP_EOL, FILE_APPEND); - - // Chiamata API - $data = $api->get($endpoint, $options); - - // Salva il JSON in locale - file_put_contents(__DIR__ . '/commessaweb_schema_response.json', json_encode($data, JSON_PRETTY_PRINT)); - - echo json_encode($data); -} catch (Exception $e) { - file_put_contents(__DIR__ . '/error_log.txt', date('Y-m-d H:i:s') . ' - ' . $e->getMessage() . PHP_EOL, FILE_APPEND); - http_response_code(500); - echo json_encode(['error' => $e->getMessage()]); -} diff --git a/public/userarea/get_customfield_values.php b/public/userarea/get_customfield_values.php deleted file mode 100644 index 71ea7a48..00000000 --- a/public/userarea/get_customfield_values.php +++ /dev/null @@ -1,50 +0,0 @@ - ერთი default - if (empty($fieldIds)) { - $fieldIds = [156]; - } - - $results = []; - $cacheDir = __DIR__ . '/cache'; - if (!is_dir($cacheDir)) mkdir($cacheDir, 0777, true); - - foreach ($fieldIds as $customFieldId) { - $cacheFile = $cacheDir . '/customfield_' . $customFieldId . '.json'; - - // Use cache if fresh (1 hour) - if (file_exists($cacheFile) && (time() - filemtime($cacheFile) < 3600)) { - $results[$customFieldId] = json_decode(file_get_contents($cacheFile), true); - continue; - } - - $endpoint = "CustomField($customFieldId)?\$expand=CustomFieldsValues"; - $data = $api->get($endpoint); - $values = $data['CustomFieldsValues'] ?? []; - $results[$customFieldId] = $values; - - file_put_contents($cacheFile, json_encode($values)); - } - - echo json_encode($results); -} catch (Exception $e) { - http_response_code(500); - echo json_encode([ - 'error' => $e->getMessage() - ]); -} diff --git a/public/userarea/get_fixed_field_data.php b/public/userarea/get_fixed_field_data.php deleted file mode 100644 index e5035b56..00000000 --- a/public/userarea/get_fixed_field_data.php +++ /dev/null @@ -1,93 +0,0 @@ - 'Parametro "field" mancante']); - exit; -} - -$api = VisualLimsApiClient::getInstance(); // also loads dotenv as a side-effect -$simulate = ($_ENV['SIMULATE_EXPORT_LIMS'] ?? '') === 'true'; -$base_url = 'https://93.43.5.102/limsapi/api/odata/'; - -$data = null; -$endpoint = null; -$cache_file = null; -$options = []; // qui puoi aggiungere filtri/ordering per campo se serve - -try { - switch ($field) { - case 'MoltiplicatorePrezzo': - $endpoint = 'MoltiplicatorePrezzi'; - $cache_file = __DIR__ . '/cache/moltiplicatori_prezzo.json'; - break; - - case 'AnagraficaCertestObject': - $endpoint = 'AnagraficaCertestObject'; - $cache_file = __DIR__ . '/cache/anagrafica_certest_object.json'; - break; - - case 'AnagraficaCertestService': - $endpoint = 'AnagraficaCertestService'; - $cache_file = __DIR__ . '/cache/anagrafica_certest_service.json'; - break; - - case 'ClienteResponsabile': - $id_cliente = (int)($_GET['id_cliente'] ?? 0); - if ($id_cliente <= 0) { - if (!$simulate) { - http_response_code(400); - echo json_encode(['error' => 'Manca o invalido id_cliente']); - exit; - } - $id_cliente = 1; // dummy — mock ignores the actual ID - } - $endpoint = "Cliente($id_cliente)?\$expand=Responsabili"; - $cache_file = __DIR__ . '/cache/cliente_responsabili_' . $id_cliente . '.json'; - break; - - // case 'FuturoCampo5': - // $endpoint = 'QualcosaElse'; - // break; - - default: - http_response_code(400); - echo json_encode(['error' => "Campo non supportato: $field"]); - exit; - } - - // Caching skipped in simulate mode to avoid polluting real-data cache files - if (!$simulate && $cache_file && file_exists($cache_file) && (time() - filemtime($cache_file) < 3600)) { // 1 ora - $data = json_decode(file_get_contents($cache_file), true); - } else { - $data = $api->get($endpoint, $options); - - if (!$simulate && $cache_file) { - file_put_contents($cache_file, json_encode($data, JSON_PRETTY_PRINT)); - } - } - - // Log ultimo URL (opzionale, per debug) - $full_url = $base_url . $endpoint . ($options ? '?' . http_build_query($options) : ''); - file_put_contents(__DIR__ . '/last_urls.log', date('c') . " - $field - $full_url\n", FILE_APPEND); - - echo json_encode($data); -} catch (Exception $e) { - file_put_contents( - __DIR__ . '/error_log.txt', - date('Y-m-d H:i:s') . " [$field] " . $e->getMessage() . PHP_EOL, - FILE_APPEND - ); - http_response_code(500); - echo json_encode(['error' => $e->getMessage()]); -} diff --git a/public/userarea/get_macro_matrici.php b/public/userarea/get_macro_matrici.php deleted file mode 100644 index a9f24676..00000000 --- a/public/userarea/get_macro_matrici.php +++ /dev/null @@ -1,46 +0,0 @@ - 'Unauthorized']); exit; } - -header('Content-Type: application/json'); - -try { - // Read from matrici cache (populated by get_matrici.php / warm_cache.php) - $cacheFile = __DIR__ . '/cache/matrici.json'; - if (file_exists($cacheFile)) { - $data = json_decode(file_get_contents($cacheFile), true); - $matrici = $data['value'] ?? []; - } else { - // Fallback: trigger cache creation - require_once __DIR__ . '/class/VisualLimsApiClient.class.php'; - $api = VisualLimsApiClient::getInstance(); - $apiData = $api->get('Matrice'); - $matrici = []; - foreach (($apiData['value'] ?? []) as $item) { - $nome = $item['NomeMatrice'] ?? ''; - if ($nome !== '' && substr($nome, 0, 1) !== '*') { - $matrici[] = ['IdMatrice' => $item['IdMatrice'], 'NomeMatrice' => $nome, 'MacroMatrice' => $item['MacroMatrice'] ?? null]; - } - } - if (!is_dir(__DIR__ . '/cache')) mkdir(__DIR__ . '/cache', 0777, true); - file_put_contents($cacheFile, json_encode(['success' => true, 'value' => $matrici])); - } - - // Extract unique MacroMatrice values - $macroValues = []; - foreach ($matrici as $m) { - $macro = $m['MacroMatrice'] ?? null; - if ($macro !== null && $macro !== '' && substr($macro, 0, 1) !== '*') { - $macroValues[$macro] = true; - } - } - $macroMatrici = array_keys($macroValues); - sort($macroMatrici); - - echo json_encode(['success' => true, 'value' => $macroMatrici]); -} catch (Exception $e) { - http_response_code(500); - echo json_encode(['success' => false, 'message' => $e->getMessage()]); -} diff --git a/public/userarea/get_matrice.php b/public/userarea/get_matrice.php deleted file mode 100644 index ed1be73b..00000000 --- a/public/userarea/get_matrice.php +++ /dev/null @@ -1,36 +0,0 @@ - 100] - - // Debug: salva URL usato - $base_url = 'https://93.43.5.102/limsapi/api/odata/'; - $query = http_build_query($options); - $full_url = $base_url . $endpoint . ($query ? '?' . $query : ''); - file_put_contents(__DIR__ . '/last_url.txt', $full_url . PHP_EOL, FILE_APPEND); - - // Chiamata API - $data = $api->get($endpoint, $options); - - // Salva il JSON in locale - file_put_contents(__DIR__ . '/matrici_response.json', json_encode($data, JSON_PRETTY_PRINT)); - - echo json_encode($data); -} catch (Exception $e) { - file_put_contents(__DIR__ . '/error_log.txt', date('Y-m-d H:i:s') . ' - ' . $e->getMessage() . PHP_EOL, FILE_APPEND); - http_response_code(500); - echo json_encode(['error' => $e->getMessage()]); -} diff --git a/public/userarea/get_matrici.php b/public/userarea/get_matrici.php deleted file mode 100644 index 539408fd..00000000 --- a/public/userarea/get_matrici.php +++ /dev/null @@ -1,47 +0,0 @@ - 'Unauthorized']); exit; } - -require_once __DIR__ . '/class/VisualLimsApiClient.class.php'; - -header('Content-Type: application/json'); -ini_set('display_errors', '0'); -error_reporting(E_ALL); - -try { - // Cache file (1 hour TTL) - $cacheFile = __DIR__ . '/cache/matrici.json'; - if (file_exists($cacheFile) && (time() - filemtime($cacheFile) < 3600)) { - readfile($cacheFile); - exit; - } - - $api = VisualLimsApiClient::getInstance(); - $data = $api->get('Matrice'); - - $matrici = []; - if (isset($data['value']) && is_array($data['value'])) { - foreach ($data['value'] as $item) { - $nome = $item['NomeMatrice'] ?? ''; - if ($nome !== '' && substr($nome, 0, 1) !== '*') { - $matrici[] = [ - 'IdMatrice' => $item['IdMatrice'], - 'NomeMatrice' => $nome, - 'MacroMatrice' => $item['MacroMatrice'] ?? null, - ]; - } - } - usort($matrici, fn($a, $b) => strcasecmp($a['NomeMatrice'], $b['NomeMatrice'])); - } - - $json = json_encode(['success' => true, 'value' => $matrici]); - if (!is_dir(__DIR__ . '/cache')) mkdir(__DIR__ . '/cache', 0777, true); - file_put_contents($cacheFile, $json); - - echo $json; -} catch (Exception $e) { - http_response_code(500); - echo json_encode(['success' => false, 'message' => $e->getMessage()]); -} diff --git a/public/userarea/get_matrici_db.php b/public/userarea/get_matrici_db.php deleted file mode 100644 index 1052aac9..00000000 --- a/public/userarea/get_matrici_db.php +++ /dev/null @@ -1,59 +0,0 @@ -load(); -} catch (Exception $e) { - file_put_contents(__DIR__ . '/error_log.txt', date('Y-m-d H:i:s') . ' - Errore caricamento .env: ' . $e->getMessage() . PHP_EOL, FILE_APPEND); - echo json_encode(['success' => false, 'message' => 'Errore caricamento configurazione: ' . $e->getMessage()]); - exit(1); -} - -// Recupera le variabili d'ambiente -$dbHost = $_ENV['DB_HOST']; -$dbName = $_ENV['DB_DATABASE']; -$dbUser = $_ENV['DB_USERNAME']; -$dbPass = $_ENV['DB_PASSWORD']; -$dbPrefix = $_ENV['DB_PREFIX']; - -// Debug: Log database connection details (excluding password) -file_put_contents(__DIR__ . '/debug_log.txt', date('Y-m-d H:i:s') . " - DB Connection: host=$dbHost, dbname=$dbName, user=$dbUser, prefix=$dbPrefix" . PHP_EOL, FILE_APPEND); - -// Connessione al database MySQL -try { - $pdo = new PDO("mysql:host=$dbHost;dbname=$dbName;charset=utf8mb4", $dbUser, $dbPass); - $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); -} catch (PDOException $e) { - file_put_contents(__DIR__ . '/error_log.txt', date('Y-m-d H:i:s') . ' - Errore connessione DB: ' . $e->getMessage() . PHP_EOL, FILE_APPEND); - echo json_encode(['success' => false, 'message' => 'Errore connessione al database: ' . $e->getMessage()]); - exit(1); -} - -try { - // Query per recuperare le matrici, includendo MacroMatrice, escludendo quelle che iniziano con '*' e ordinandole - $query = "SELECT IdMatrice, NomeMatrice, MacroMatrice FROM {$dbPrefix}matrici WHERE NomeMatrice NOT LIKE '*%' ORDER BY NomeMatrice ASC"; - $stmt = $pdo->prepare($query); - $stmt->execute(); - $matrici = $stmt->fetchAll(PDO::FETCH_ASSOC); - - // Debug: Log del numero di matrici recuperate - file_put_contents(__DIR__ . '/debug_log.txt', date('Y-m-d H:i:s') . ' - Retrieved ' . count($matrici) . ' matrices from database' . PHP_EOL, FILE_APPEND); - - // Restituisci risposta JSON - echo json_encode(['success' => true, 'value' => $matrici]); -} catch (PDOException $e) { - // Log errore e restituisci risposta di errore - file_put_contents(__DIR__ . '/error_log.txt', date('Y-m-d H:i:s') . ' - Errore nel recupero delle matrici: ' . $e->getMessage() . PHP_EOL, FILE_APPEND); - echo json_encode(['success' => false, 'message' => 'Errore nel recupero delle matrici: ' . $e->getMessage()]); - exit(1); -} diff --git a/public/userarea/get_metadata.php b/public/userarea/get_metadata.php deleted file mode 100644 index 96ef2f73..00000000 --- a/public/userarea/get_metadata.php +++ /dev/null @@ -1,37 +0,0 @@ -get($endpoint, $options); - - // Salva il file XML in locale - file_put_contents(__DIR__ . '/metadata_response.xml', $data); - - // Restituisci il contenuto XML - echo $data; -} catch (Exception $e) { - file_put_contents(__DIR__ . '/error_log.txt', date('Y-m-d H:i:s') . ' - ' . $e->getMessage() . PHP_EOL, FILE_APPEND); - http_response_code(500); - echo '' . htmlspecialchars($e->getMessage()) . ''; -} diff --git a/public/userarea/get_moltiplicatoreprezzo.php b/public/userarea/get_moltiplicatoreprezzo.php deleted file mode 100644 index 46f6ac31..00000000 --- a/public/userarea/get_moltiplicatoreprezzo.php +++ /dev/null @@ -1,55 +0,0 @@ - 'Descrizione asc' - ]; - - // Debug: salva URL usata - $base_url = 'https://93.43.5.102/limsapi/api/odata/'; - $queryParts = []; - foreach ($options as $k => $v) { - // mantieni il $ nella chiave, encoda solo il valore - $queryParts[] = $k . '=' . rawurlencode($v); - } - $query = implode('&', $queryParts); - $full_url = $base_url . $endpoint . ($query ? '?' . $query : ''); - file_put_contents(__DIR__ . '/last_url.txt', $full_url . PHP_EOL, FILE_APPEND); - - // Chiamata API - $data = $api->get($endpoint, $options); - // ✅ Force sort locally by "Descrizione" (A→Z) - if (isset($data['value']) && is_array($data['value'])) { - usort($data['value'], function ($a, $b) { - $da = isset($a['Descrizione']) ? trim((string)$a['Descrizione']) : ''; - $db = isset($b['Descrizione']) ? trim((string)$b['Descrizione']) : ''; - return strcasecmp($da, $db); // case-insensitive alphabetical - }); - } - // Salva il JSON in locale - file_put_contents(__DIR__ . '/moltiplicatori_prezzo_response.json', json_encode($data, JSON_PRETTY_PRINT)); - - echo json_encode($data); -} catch (Exception $e) { - file_put_contents( - __DIR__ . '/error_log.txt', - date('Y-m-d H:i:s') . ' - ' . $e->getMessage() . PHP_EOL, - FILE_APPEND - ); - http_response_code(500); - echo json_encode(['error' => $e->getMessage()]); -} diff --git a/public/userarea/get_parts_extra_field.php b/public/userarea/get_parts_extra_field.php deleted file mode 100644 index feabdac8..00000000 --- a/public/userarea/get_parts_extra_field.php +++ /dev/null @@ -1,38 +0,0 @@ - true, 'field' => null]); - exit; - } - - $iddatadb = (int)$_GET['iddatadb']; - - $db = DBHandlerSelect::getInstance(); - $pdo = $db->getConnection(); - - // 1) prendo templateid da datadb - // 2) cerco max 1 record in template_mapping con is_visible_parts=1 - $sql = " - SELECT tm.field_id, tm.field_label, tm.data_type, tm.has_list - FROM datadb d - JOIN template_mapping tm ON tm.template_id = d.templateid - WHERE d.iddatadb = ? - AND tm.is_visible_parts = 1 - ORDER BY tm.id ASC - LIMIT 1 - "; - $stmt = $pdo->prepare($sql); - $stmt->execute([$iddatadb]); - $row = $stmt->fetch(PDO::FETCH_ASSOC); - - echo json_encode([ - 'success' => true, - 'field' => $row ? $row : null - ]); -} catch (Throwable $e) { - echo json_encode(['success' => false, 'message' => $e->getMessage()]); -} diff --git a/public/userarea/get_rapporto_full_by_codice.php b/public/userarea/get_rapporto_full_by_codice.php deleted file mode 100644 index 9d311e00..00000000 --- a/public/userarea/get_rapporto_full_by_codice.php +++ /dev/null @@ -1,256 +0,0 @@ - "CodiceRapporto eq '{$codiceRapportoSafe}'", - '$select' => 'IdRapporto,CodiceRapporto,Data,Versione,Firmato,DataStampa', - '$top' => 1 - ]; - - $searchEndpoint = "Rapporto?" . http_build_query($searchParams); - $searchData = $api->get($searchEndpoint); - - $rapporti = $searchData['value'] ?? []; - - if (empty($rapporti)) { - echo json_encode([ - 'success' => false, - 'message' => 'Nessun rapporto trovato per questo CodiceRapporto.', - 'codice_rapporto' => $codiceRapporto - ], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); - exit; - } - - $rapportoBase = $rapporti[0]; - $idRapporto = intval($rapportoBase['IdRapporto'] ?? 0); - - if (!$idRapporto) { - throw new Exception("IdRapporto non trovato nella risposta."); - } - - /** - * STEP 2 - Dettaglio Rapporto - */ - $clienteExpandError = null; - $detailEndpoint = "Rapporto({$idRapporto})?\$expand=Cliente,RapportiFiles,CampioniDatiRapporto"; - - try { - $detailData = $api->get($detailEndpoint); - } catch (Exception $e) { - $clienteExpandError = $e->getMessage(); - $detailEndpoint = "Rapporto({$idRapporto})?\$expand=RapportiFiles,CampioniDatiRapporto"; - $detailData = $api->get($detailEndpoint); - } - - file_put_contents( - $debugDir . "rapporto_{$codiceRapportoSafe}_light.json", - json_encode($detailData, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) - ); - - $cliente = $detailData['Cliente'] ?? null; - $rapportiFiles = $detailData['RapportiFiles'] ?? []; - $campioniDatiRapporto = $detailData['CampioniDatiRapporto'] ?? []; - - // ====================== CLIENTE ====================== - $clienteInfo = [ - 'found' => is_array($cliente), - 'id_cliente' => $cliente['IdCliente'] ?? $cliente['Id'] ?? null, - 'codice_cliente' => $cliente['CodiceCliente'] ?? $cliente['Codice'] ?? null, - 'nome_cliente' => $cliente['Nominativo'] ?? $cliente['RagioneSociale'] ?? $cliente['Nome'] ?? $cliente['Descrizione'] ?? null, - 'partita_iva' => $cliente['PartitaIva'] ?? null, - 'codice_fiscale' => $cliente['CodiceFiscale'] ?? null - ]; - - // ====================== FILE PDF ====================== - $selectedRapportoFile = null; - $idRapportoFile = null; - $pdfFileName = $codiceRapporto . '.pdf'; - $pdfFullPath = $pdfDir . $pdfFileName; - - if (is_array($rapportiFiles) && count($rapportiFiles) > 0) { - foreach ($rapportiFiles as $file) { - $fileName = $file['FileName'] ?? ''; - $tipoRapporto = $file['TipoRapporto'] ?? ''; - $categoria = $file['Categoria'] ?? ''; - - if ( - stripos($fileName, '.pdf') !== false || - stripos($tipoRapporto, 'Rapporto') !== false || - stripos($categoria, 'Rapporti') !== false - ) { - $selectedRapportoFile = $file; - $idRapportoFile = $file['IdRapportoFile'] ?? null; - break; - } - } - - if (!$selectedRapportoFile && count($rapportiFiles) > 0) { - $selectedRapportoFile = $rapportiFiles[0]; - $idRapportoFile = $rapportiFiles[0]['IdRapportoFile'] ?? null; - } - } - - // ====================== DOWNLOAD PDF - DEBUG AVANZATO ====================== - $pdfDownloaded = false; - $pdfError = null; - $endpointUsato = null; - - if ($downloadPdf && $idRapportoFile) { - - $tentativi = [ - "RapportoFile({$idRapportoFile})/\$value", - "RapportoFile({$idRapportoFile})/Contenuto/\$value", - "RapportoFile({$idRapportoFile})/File/\$value", - "Rapporto({$idRapporto})/RapportiFiles({$idRapportoFile})/\$value", - "Rapporto({$idRapporto})/RapportoFile/\$value", - "GetRapportoFile?IdRapportoFile={$idRapportoFile}", - "RapportoFile/Download?Id={$idRapportoFile}", - "Rapporto/DownloadFile?IdRapporto={$idRapporto}" - ]; - - foreach ($tentativi as $ep) { - try { - $pdfContent = $api->getRaw($ep); - - if (strlen($pdfContent) > 2000) { // PDF decente deve essere più grande - file_put_contents($pdfFullPath, $pdfContent); - $pdfDownloaded = true; - $endpointUsato = $ep; - $pdfError = "SUCCESSO con: " . $ep; - break; - } else { - $pdfError = "Contenuto troppo piccolo con: " . $ep; - } - } catch (Exception $e) { - $pdfError = "Fallito con " . $ep . " → " . $e->getMessage(); - } - } - } - - // ====================== CAMPIONI + RATING (ripristinato dal tuo originale) ====================== - $campioniSintesi = []; - $ratingFinale = null; - $ratingSource = null; - $hasIrregolare = false; - $hasPositiveResults = false; - - if (is_array($campioniDatiRapporto)) { - foreach ($campioniDatiRapporto as $campione) { - $giudizioRapporto = $campione['GiudizioRapporto'] ?? null; - $giudizioCertificato = $campione['GiudizioCertificato'] ?? null; - $esitoGiudizioLMR = $campione['EsitoGiudizioLMR'] ?? null; - $esitoGiudizioImpiego = $campione['EsitoGiudizioImpiego'] ?? null; - $risultatiIrregolari = ($campione['RisultatiIrregolari'] ?? false) === true; - $risultatiPositivi = ($campione['RisultatiPositivi'] ?? false) === true; - - $campioniSintesi[] = [ - 'id_campione_dati_rapporto' => $campione['IdCampioneDatiRapporto'] ?? null, - 'codice_campione' => $campione['CodiceCampione'] ?? null, - 'stato_campione' => $campione['StatoCampione'] ?? null, - 'stato_campione_web' => $campione['StatoCampioneWeb'] ?? null, - 'matrice' => $campione['Matrice'] ?? null, - 'macro_matrice' => $campione['MacroMatrice'] ?? null, - 'giudizio_rapporto' => $giudizioRapporto, - 'giudizio_certificato' => $giudizioCertificato, - 'esito_giudizio_lmr' => $esitoGiudizioLMR, - 'esito_giudizio_impiego' => $esitoGiudizioImpiego, - 'risultati_positivi' => $risultatiPositivi, - 'risultati_irregolari' => $risultatiIrregolari - ]; - - if (!$ratingFinale && !empty($giudizioRapporto)) { - $ratingFinale = $giudizioRapporto; - $ratingSource = 'CampioniDatiRapporto.GiudizioRapporto'; - } - - if (!$ratingFinale && !empty($giudizioCertificato)) { - $ratingFinale = $giudizioCertificato; - $ratingSource = 'CampioniDatiRapporto.GiudizioCertificato'; - } - - if ($risultatiIrregolari) $hasIrregolare = true; - if ($risultatiPositivi) $hasPositiveResults = true; - } - } - - // Fallback rating - if (!$ratingFinale) { - if ($hasIrregolare) { - $ratingFinale = 'Irregolare'; - $ratingSource = 'RisultatiIrregolari'; - } elseif ($hasPositiveResults || count($campioniSintesi) > 0) { - $ratingFinale = 'Regolare'; - $ratingSource = 'fallback'; - } - } - - // ====================== RISPOSTA FINALE ====================== - echo json_encode([ - 'success' => true, - - 'codice_rapporto' => $codiceRapporto, - 'id_rapporto' => $idRapporto, - - 'search_endpoint' => $searchEndpoint, - 'detail_endpoint' => $detailEndpoint, - 'cliente_expand_error' => $clienteExpandError, - - 'rapporto_base' => $rapportoBase, - 'cliente' => $clienteInfo, - - 'rating_finale' => $ratingFinale, - 'rating_source' => $ratingSource, - - 'rapporti_files_count' => count($rapportiFiles), - 'selected_rapporto_file' => $selectedRapportoFile, - - 'pdf_file_name' => $pdfFileName, - 'pdf_path' => $pdfDownloaded ? $pdfFullPath : null, - 'pdf_downloaded' => $pdfDownloaded, - 'pdf_error' => $pdfError, - - 'campioni_count' => count($campioniSintesi), - 'campioni_sintesi' => $campioniSintesi, - - 'download_requested' => $downloadPdf - ], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); -} catch (Exception $e) { - http_response_code(500); - echo json_encode([ - 'success' => false, - 'error' => $e->getMessage() - ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); -} diff --git a/public/userarea/get_rapporto_lims.php b/public/userarea/get_rapporto_lims.php deleted file mode 100644 index a3eff2e5..00000000 --- a/public/userarea/get_rapporto_lims.php +++ /dev/null @@ -1,118 +0,0 @@ - "CodiceCommessa eq '{$commessa}'", - 'Commessa_CodiceCommessa' => "Commessa/CodiceCommessa eq '{$commessa}'", - 'Commessa_IdCommessa' => is_numeric($commessa) ? "Commessa/IdCommessa eq {$commessa}" : null, - 'Codice' => "Codice eq '{$commessa}'" - ]; - - foreach ($filters as $label => $filter) { - if (!$filter) { - continue; - } - - try { - $options = [ - '$filter' => $filter, - '$top' => 10 - ]; - - $data = $api->get('Rapporto', $options); - - $attempts[$label] = [ - 'success' => true, - 'filter' => $filter, - 'records' => isset($data['value']) && is_array($data['value']) ? count($data['value']) : null, - 'data' => $data - ]; - - file_put_contents( - $debugDir . "rapporto_{$commessa}_{$label}.json", - json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) - ); - } catch (Exception $e) { - $attempts[$label] = [ - 'success' => false, - 'filter' => $filter, - 'error' => $e->getMessage() - ]; - } - } - - /** - * STEP 2 - * Prendo solo eventuali rapporti trovati. - */ - $rapportiFound = []; - - foreach ($attempts as $label => $attempt) { - if (!$attempt['success']) { - continue; - } - - $items = $attempt['data']['value'] ?? []; - - if (!is_array($items)) { - continue; - } - - foreach ($items as $item) { - $rapportiFound[] = [ - 'matched_by' => $label, - 'rapporto' => $item - ]; - } - } - - echo json_encode([ - 'success' => true, - 'input_commessa' => $commessa, - 'message' => 'Ricerca leggera su Rapporto completata. Se trovi un rapporto, poi recuperiamo RapportiFiles solo per quello.', - 'rapporti_found_count' => count($rapportiFound), - 'rapporti_found' => $rapportiFound, - 'attempts_summary' => array_map(function ($a) { - return [ - 'success' => $a['success'], - 'filter' => $a['filter'], - 'records' => $a['records'] ?? null, - 'error' => $a['error'] ?? null - ]; - }, $attempts) - ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); -} catch (Exception $e) { - http_response_code(500); - - echo json_encode([ - 'success' => false, - 'error' => $e->getMessage() - ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); -} diff --git a/public/userarea/get_rapporto_prova.php b/public/userarea/get_rapporto_prova.php deleted file mode 100644 index 0ae0cd9d..00000000 --- a/public/userarea/get_rapporto_prova.php +++ /dev/null @@ -1,141 +0,0 @@ - '', - 'files' => 'RapportiFiles', - 'allegati' => 'RapportiAllegati', - 'campioni' => 'CampioniDatiRapporto', - 'files_campioni' => 'RapportiFiles,CampioniDatiRapporto' - ]; - - if (!array_key_exists($step, $allowedSteps)) { - throw new Exception("Step non valido. Usa: " . implode(', ', array_keys($allowedSteps))); - } - - // Escape OData per eventuali apostrofi - $codiceRapportoSafe = str_replace("'", "''", $codiceRapporto); - - /* - * STEP 1 - Trova IdRapporto partendo da CodiceRapporto. - * Query leggera, con $select e $top=1. - */ - $searchParams = [ - '$filter' => "CodiceRapporto eq '{$codiceRapportoSafe}'", - '$select' => 'IdRapporto,CodiceRapporto,Data,Versione,Firmato,DataStampa', - '$top' => 1 - ]; - - $searchEndpoint = "Rapporto?" . http_build_query($searchParams); - - $searchData = $api->get($searchEndpoint); - - $items = $searchData['value'] ?? []; - - if (!is_array($items) || count($items) === 0) { - echo json_encode([ - 'success' => false, - 'message' => 'Nessun rapporto trovato per questo CodiceRapporto.', - 'codice_rapporto' => $codiceRapporto, - 'search_endpoint' => $searchEndpoint, - 'search_data' => $searchData - ], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); - exit; - } - - $rapportoBase = $items[0]; - $rapportoId = intval($rapportoBase['IdRapporto'] ?? 0); - - if (!$rapportoId) { - throw new Exception("IdRapporto non trovato nella risposta."); - } - - /* - * STEP 2 - Se step=base, restituisco solo la ricerca base. - */ - if ($step === 'base') { - echo json_encode([ - 'success' => true, - 'codice_rapporto' => $codiceRapporto, - 'id_rapporto' => $rapportoId, - 'step' => $step, - 'search_endpoint' => $searchEndpoint, - 'rapporto_base' => $rapportoBase - ], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); - exit; - } - - /* - * STEP 3 - Espande SOLO il rapporto trovato. - */ - $expandValue = $allowedSteps[$step]; - - $detailParams = [ - '$expand' => $expandValue - ]; - - $detailEndpoint = "Rapporto({$rapportoId})?" . http_build_query($detailParams); - - file_put_contents( - __DIR__ . '/last_rapporto_by_codice_expand_endpoint.txt', - '[' . date('Y-m-d H:i:s') . '] SEARCH: ' . $searchEndpoint . PHP_EOL . - '[' . date('Y-m-d H:i:s') . '] DETAIL: ' . $detailEndpoint . PHP_EOL, - FILE_APPEND - ); - - $detailData = $api->get($detailEndpoint); - - file_put_contents( - __DIR__ . "/rapporto_codice_{$codiceRapportoSafe}_{$step}.json", - json_encode([ - 'search' => $searchData, - 'detail' => $detailData - ], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) - ); - - echo json_encode([ - 'success' => true, - 'codice_rapporto' => $codiceRapporto, - 'id_rapporto' => $rapportoId, - 'step' => $step, - 'search_endpoint' => $searchEndpoint, - 'detail_endpoint' => $detailEndpoint, - 'rapporto_base' => $rapportoBase, - 'data' => $detailData - ], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); -} catch (Exception $e) { - file_put_contents( - __DIR__ . '/error_log.txt', - date('Y-m-d H:i:s') . ' - ' . $e->getMessage() . PHP_EOL, - FILE_APPEND - ); - - http_response_code(500); - - echo json_encode([ - 'success' => false, - 'error' => $e->getMessage() - ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); -} diff --git a/public/userarea/get_schema_details.php b/public/userarea/get_schema_details.php deleted file mode 100644 index ff645b19..00000000 --- a/public/userarea/get_schema_details.php +++ /dev/null @@ -1,30 +0,0 @@ -get($endpoint); - - // Salva la risposta per debug - file_put_contents(__DIR__ . '/schema_dettagli_response.json', json_encode($data)); - - echo json_encode($data); -} catch (Exception $e) { - http_response_code(500); - echo json_encode([ - 'error' => $e->getMessage() - ]); -} diff --git a/public/userarea/get_schemi.php b/public/userarea/get_schemi.php deleted file mode 100644 index b788aa77..00000000 --- a/public/userarea/get_schemi.php +++ /dev/null @@ -1,36 +0,0 @@ - 100] - - // Debug: salva URL usato - $base_url = 'https://93.43.5.102/limsapi/api/odata/'; - $query = http_build_query($options); - $full_url = $base_url . $endpoint . ($query ? '?' . $query : ''); - file_put_contents(__DIR__ . '/last_url.txt', $full_url . PHP_EOL, FILE_APPEND); - - // Chiamata API - $data = $api->get($endpoint, $options); - - // Salva il JSON in locale - file_put_contents(__DIR__ . '/schemi_base_response.json', json_encode($data, JSON_PRETTY_PRINT)); - - echo json_encode($data); -} catch (Exception $e) { - file_put_contents(__DIR__ . '/error_log.txt', date('Y-m-d H:i:s') . ' - ' . $e->getMessage() . PHP_EOL, FILE_APPEND); - http_response_code(500); - echo json_encode(['error' => $e->getMessage()]); -} diff --git a/public/userarea/get_schemi_custom_fields.php b/public/userarea/get_schemi_custom_fields.php deleted file mode 100644 index 3f2533ea..00000000 --- a/public/userarea/get_schemi_custom_fields.php +++ /dev/null @@ -1,26 +0,0 @@ -```php -get("SchemaCustomField"); // Recupera la lista degli schemi custom fields - - // Salva la risposta in un file per debug - file_put_contents(__DIR__ . '/schemi_custom_fields_response.json', json_encode($data)); - - echo json_encode($data); -} catch (Exception $e) { - http_response_code(500); - echo json_encode([ - 'error' => $e->getMessage() - ]); -} -?> \ No newline at end of file diff --git a/public/userarea/get_utenti.php b/public/userarea/get_utenti.php deleted file mode 100644 index 761f5f78..00000000 --- a/public/userarea/get_utenti.php +++ /dev/null @@ -1,94 +0,0 @@ - 1001, - 'Nominativo' => 'Utente Simulato 1001' - ], - [ - 'IdUtente' => 1002, - 'Nominativo' => 'Utente Simulato 1002' - ] - ]; - - echo json_encode(['value' => $fakeUsers]); - exit; - } - - // OData parameters - $params = []; - - // Build query string - $queryString = http_build_query($params); - - // Final endpoint - $endpoint = "Utente?$queryString"; - - // Function to execute request with retry - function makeApiRequest($api, $endpoint, $maxRetries = 3) - { - for ($retry = 0; $retry < $maxRetries; $retry++) { - try { - $data = $api->get($endpoint); - - // Save response for debug - file_put_contents(__DIR__ . '/utenti_response.json', json_encode($data, JSON_PRETTY_PRINT)); - - return $data; - } catch (Exception $e) { - $errorMessage = $e->getMessage(); - - // Retry only on token/auth-related issue - if ( - strpos($errorMessage, 'HTTP 400') !== false && - strpos($errorMessage, 'Cannot persist the object') !== false - ) { - try { - $api->refreshToken(); // must exist in VisualLimsApiClient - error_log("Tentativo $retry: Refresh token eseguito per endpoint $endpoint"); - } catch (Exception $refreshEx) { - error_log("Errore durante il refresh del token: " . $refreshEx->getMessage()); - throw new Exception("Impossibile eseguire il refresh del token: " . $refreshEx->getMessage()); - } - - usleep(500000); // 500 ms - continue; - } - - throw $e; - } - } - - throw new Exception("Massimo numero di tentativi raggiunto per $endpoint"); - } - - // Execute request - $data = makeApiRequest($api, $endpoint); - - echo json_encode($data); -} catch (Exception $e) { - http_response_code(500); - - $errorResponse = [ - 'error' => $e->getMessage(), - 'file' => $e->getFile(), - 'line' => $e->getLine(), - 'trace' => $e->getTraceAsString() - ]; - - error_log("Errore in get_utenti.php: " . json_encode($errorResponse)); - echo json_encode($errorResponse); -} diff --git a/public/userarea/gridRenderer.js b/public/userarea/gridRenderer.js deleted file mode 100644 index 44d6ee5a..00000000 --- a/public/userarea/gridRenderer.js +++ /dev/null @@ -1,1728 +0,0 @@ -/** - * gridRenderer.js — Data-driven grid renderer for imported.php - * - * Reads window.gridData (array of row objects) and window.gridMeta (column defs, config). - * Renders only visible rows into DOM. Propagate/edit operates on gridData array, - * then re-renders visible rows. Save reads from gridData, not DOM. - */ -(function () { - "use strict"; - - const PAGE_SIZE = 20; - let revealedCount = PAGE_SIZE; - let dropdownOptionsCache = {}; // fieldId -> [{id, text}] — used only for small lists - const dropdownNameCache = {}; // "fieldId_valueId" -> label - let clientData = []; // loaded from get_clienti.php - let fixedFieldCache = window.fixedFieldDataCache || {}; - window.fixedFieldDataCache = fixedFieldCache; - - const data = window.gridData || []; - const meta = window.gridMeta || {}; - const columns = meta.columns || []; - let totalRows = data.length; - - // ── DOM refs ──────────────────────────────────────────────────────────── - let rowContainer = null; - let headerContainer = null; - let topContainer = null; - let statusEl = null; - - // ── Helpers ───────────────────────────────────────────────────────────── - - function esc(str) { - if (str === null || str === undefined) return ""; - const d = document.createElement("div"); - d.textContent = String(str); - return d.innerHTML; - } - - function escAttr(str) { - if (str === null || str === undefined) return ""; - return String(str) - .replace(/&/g, "&") - .replace(/"/g, """) - .replace(/'/g, "'") - .replace(//g, ">"); - } - function getDetailValue(rowIndex, mappingId) { - return data[rowIndex].details[String(mappingId)] ?? ""; - } - - function setDetailValue(rowIndex, mappingId, value) { - data[rowIndex].details[String(mappingId)] = value; - data[rowIndex]._dirty = true; - } - - function getFixedValue(rowIndex, key) { - return data[rowIndex].fixedFields[key] ?? ""; - } - - function setFixedValue(rowIndex, key, value) { - data[rowIndex].fixedFields[key] = value; - data[rowIndex]._dirty = true; - } - - // ── Client data (AJAX Select2, no bulk loading) ────────────────────── - - function formatClientLabel(client) { - const nome = client.Nominativo || client.text || "Nome non disponibile"; - const id = client.IdCliente || client.id || ""; - const codiceCliente = ( - client.CodiceCliente ?? - client.codiceCliente ?? - "" - ) - .toString() - .trim(); - const suffix = (codiceCliente.split("_")[1] || "").trim(); - const shortCode = - suffix || (codiceCliente ? codiceCliente.charAt(0) : "--"); - - return `${nome.trim()} - ${shortCode} (ID: ${id})`; - } - - // Cache of resolved client names: id → name - const clientNameCache = {}; - - // Build select with only the selected option - function buildClientOptionsHTML(selectedId) { - let html = ''; - if (selectedId) { - const label = clientNameCache[selectedId] || selectedId; - html += ``; - } - return html; - } - - // Pre-resolve all unique client IDs used in data rows, then re-render - async function resolveClientNames() { - const ids = new Set(); - data.forEach((row) => { - if (row.idclient) ids.add(String(row.idclient)); - if (row.cliente_fornitore_id) - ids.add(String(row.cliente_fornitore_id)); - // Fixed fields that are client-sourced - if (row.fixedFields) { - for (const [key, val] of Object.entries(row.fixedFields)) { - const cfg = fixedFieldApiConfig[key]; - if (cfg && cfg.source === "clients" && val) - ids.add(String(val)); - } - } - }); - - // Batch resolve via single request per ID - const unresolvedIds = [...ids].filter((id) => !clientNameCache[id]); - if (unresolvedIds.length === 0) return; - - await Promise.all( - unresolvedIds.map(async (id) => { - try { - const resp = await fetch( - "search_clienti.php?id=" + encodeURIComponent(id), - ); - const json = await resp.json(); - const item = (json.results || [])[0]; - if (item) { - clientNameCache[id] = formatClientLabel(item); - } - } catch (e) { - /* ignore */ - } - }), - ); - } - - function sortSelect2ResultsByStart(data) { - const term = $(".select2-container--open .select2-search__field").val(); - - if (!term) { - return data; - } - - const search = term.toLowerCase().trim(); - - return data.sort(function (a, b) { - const textA = (a.text || "").toLowerCase().trim(); - const textB = (b.text || "").toLowerCase().trim(); - - const aStarts = textA.startsWith(search); - const bStarts = textB.startsWith(search); - - if (aStarts && !bStarts) return -1; - if (!aStarts && bStarts) return 1; - - return textA.localeCompare(textB, "it", { sensitivity: "base" }); - }); - } - // Select2 AJAX config for client selects - const clientSelect2Config = { - placeholder: "Search client...", - allowClear: true, - width: "100%", - minimumInputLength: 0, - sorter: sortSelect2ResultsByStart, - dropdownCssClass: "select2-dropdown-smaller", - ajax: { - url: "search_clienti.php", - dataType: "json", - delay: 150, - data: function (params) { - return { q: params.term || "", limit: 20 }; - }, - processResults: function (data) { - const results = (data.results || []).map((item) => ({ - ...item, - text: formatClientLabel(item), - })); - - return { results: results }; - }, - cache: true, - }, - }; - - async function loadClientData() { - // No longer loads all clients — AJAX Select2 handles search - // Just resolve names for pre-selected values - await resolveClientNames(); - } - - // ── Fixed field data loading ─────────────────────────────────────────── - - const fixedFieldApiConfig = { - MoltiplicatorePrezzo: { - endpoint: "MoltiplicatorePrezzo", - idKey: "IdMoltiplicatorePrezzo", - textKey: "Descrizione", - }, - AnagraficaCertestObject: { - endpoint: "AnagraficaCertestObject", - idKey: "IdAnagrafica", - textKey: "NomeAnagrafica", - }, - AnagraficaCertestService: { - endpoint: "AnagraficaCertestService", - idKey: "IdAnagrafica", - textKey: "NomeAnagrafica", - }, - ClienteResponsabile: { - endpoint: "ClienteResponsabile", - idKey: "IdClienteResponsabile", - textKey: "Nominativo", - dependsOn: "idclient", - getParams: (cid) => ({ id_cliente: cid }), - }, - ClienteFornitore: { source: "clients" }, - ClienteAnalisi: { source: "clients" }, - }; - - let _pendingFixed = {}; - - async function loadFixedFieldOptions(fieldKey, clientId) { - const config = fixedFieldApiConfig[fieldKey]; - if (!config) return []; - - // Client-sourced fields — handled by AJAX Select2, skip preloading - if (config.source === "clients") { - fixedFieldCache[fieldKey] = []; - return []; - } - - const cacheKey = fieldKey + (clientId ? "_" + clientId : ""); - if (fixedFieldCache[cacheKey]) return fixedFieldCache[cacheKey]; - if (_pendingFixed[cacheKey]) return _pendingFixed[cacheKey]; - - const params = { field: config.endpoint }; - if (config.dependsOn && clientId) { - Object.assign(params, config.getParams(clientId)); - } - - _pendingFixed[cacheKey] = (async () => { - try { - const resp = await fetch( - "get_fixed_field_data.php?" + new URLSearchParams(params), - ); - const json = await resp.json(); - let items = - fieldKey === "ClienteResponsabile" - ? json.Responsabili || [] - : json.value || json.d?.results || json || []; - const results = items - .map((item) => ({ - id: item[config.idKey], - text: - (item.Codice ? item.Codice + " - " : "") + - (item[config.textKey] || ""), - })) - .sort((a, b) => - String(a.text).localeCompare(String(b.text), "it", { - sensitivity: "base", - }), - ); - fixedFieldCache[cacheKey] = results; - delete _pendingFixed[cacheKey]; - return results; - } catch (e) { - delete _pendingFixed[cacheKey]; - console.error("Failed to load fixed field " + fieldKey, e); - return []; - } - })(); - - return _pendingFixed[cacheKey]; - } - - async function refreshDependentFixedFieldsForRow(rowIndex) { - const row = data[rowIndex]; - if (!row) return; - - const clientId = row.idclient || ""; - - // Find fixed fields that depend on idclient - const dependentFields = Object.keys(fixedFieldApiConfig).filter( - (key) => { - return fixedFieldApiConfig[key].dependsOn === "idclient"; - }, - ); - - if (dependentFields.length === 0) return; - - for (const fieldKey of dependentFields) { - // When client changes, the old responsible is no longer reliable - if ( - row.fixedFields && - Object.prototype.hasOwnProperty.call(row.fixedFields, fieldKey) - ) { - row.fixedFields[fieldKey] = ""; - row._dirty = true; - } - - // Reload options for the new client - if (clientId) { - await loadFixedFieldOptions(fieldKey, clientId); - } - } - - // Re-render only this row so ClienteResponsabile select is rebuilt with the new options - renderSingleRow(rowIndex); - - // If the first row client changes, update the top propagation select too - if (rowIndex === 0) { - await refreshTopDependentFixedSelect( - "ClienteResponsabile", - clientId, - ); - } - - updateDirtyIndicator(); - } - // ── Custom field dropdown data loading ───────────────────────────────── - async function refreshTopDependentFixedSelect(fieldKey, clientId) { - if (!topContainer || !fieldKey) return; - - const sel = topContainer.querySelector( - `.api-fixed-select[data-fixed-key="${fieldKey}"]`, - ); - - if (!sel) return; - - // Destroy Select2 if already initialized - if ($(sel).hasClass("select2-hidden-accessible")) { - $(sel).select2("destroy"); - } - - sel.innerHTML = ''; - - if (!clientId) { - $(sel).select2({ - placeholder: "Seleziona...", - allowClear: true, - width: "100%", - }); - return; - } - - const items = await loadFixedFieldOptions(fieldKey, clientId); - - items.forEach((item) => { - sel.add(new Option(item.text, item.id)); - }); - - $(sel).select2({ - placeholder: "Seleziona...", - allowClear: true, - width: "100%", - }); - } - - // Select2 AJAX config factory for SceltaMultipla - function sceltaSelect2Config(fieldId) { - return { - placeholder: "Search...", - allowClear: true, - width: "100%", - minimumInputLength: 0, - sorter: sortSelect2ResultsByStart, - ajax: { - url: "search_customfield_values.php", - dataType: "json", - delay: 150, - data: function (params) { - return { - field_id: fieldId, - q: params.term || "", - limit: 0, // 0 = no limit for custom field values - }; - }, - processResults: function (data) { - return { results: data.results || [] }; - }, - cache: true, - }, - }; - } - - // ── Preload all data ─────────────────────────────────────────────────── - - async function preloadAllData() { - // 1. Clients - await loadClientData(); - - // 2. Non-dependent fixed fields - const nonDependent = Object.keys(fixedFieldApiConfig).filter( - (k) => - !fixedFieldApiConfig[k].dependsOn && - !fixedFieldApiConfig[k].source, - ); - await Promise.all(nonDependent.map((k) => loadFixedFieldOptions(k))); - - // Client-sourced fixed fields - const clientSourced = Object.keys(fixedFieldApiConfig).filter( - (k) => fixedFieldApiConfig[k].source === "clients", - ); - await Promise.all(clientSourced.map((k) => loadFixedFieldOptions(k))); - - // 3. Dependent fixed fields — collect unique clientIds - const clientIds = new Set(); - data.forEach((row) => { - if (row.idclient) clientIds.add(String(row.idclient)); - }); - const dependent = Object.keys(fixedFieldApiConfig).filter( - (k) => fixedFieldApiConfig[k].dependsOn, - ); - for (const fieldKey of dependent) { - for (const cid of clientIds) { - await loadFixedFieldOptions(fieldKey, cid); - } - } - - // 4. Warm server cache + resolve SceltaMultipla names in one request - const allFieldIds = [ - ...new Set( - columns - .filter( - (c) => - (c.type === "detail" || c.type === "main_field") && - c.dataType === "SceltaMultipla" && - c.fieldId, - ) - .map((c) => String(c.fieldId)), - ), - ]; - if (allFieldIds.length > 0) { - try { - const resp = await fetch( - "get_customfield_values.php?field_ids=" + - allFieldIds.join(","), - ); - const json = await resp.json(); - const entries = json.data ? json.data : json; - for (const [fid, values] of Object.entries(entries)) { - if (Array.isArray(values)) { - values.forEach((v) => { - dropdownNameCache[ - fid + "_" + v.IdCustomFieldsValue - ] = v.Valore || ""; - }); - } - } - } catch (e) { - console.error("Failed to preload dropdown data:", e); - } - } - - console.log("[gridRenderer] preload done:", { - clients: clientData.length, - fixedFieldCache: Object.keys(fixedFieldCache), - dropdownOptionsCache: Object.keys(dropdownOptionsCache), - }); - } - - // ── Cell rendering ───────────────────────────────────────────────────── - - function createCell(col, rowIndex, cellIndex) { - const div = document.createElement("div"); - div.className = "grid-cell editable-cell"; - - // Field color classification - // Schema/customfield fields are green. - // Fixed and standard fields stay white. - if (col.type === "detail" || col.type === "main_field") { - div.classList.add("schema-field"); - } else if (col.type === "fixed") { - div.classList.add("fixed-field"); - } else { - div.classList.add("standard-field"); - } - - // Required field classification. - // This comes from template_mapping.is_required or template_fixed_mapping.is_required. - if ( - col.isRequired === true || - col.isRequired === 1 || - col.isRequired === "1" - ) { - div.classList.add("required-field"); - } - - div.dataset.col = col.key; - div.dataset.colType = col.type; - div.dataset.row = rowIndex; - div.dataset.index = cellIndex; - div.style.flex = `0 0 ${col.width}px`; - - const row = data[rowIndex]; - - switch (col.type) { - case "main_field": { - const val = getDetailValue(rowIndex, col.key); - - div.innerHTML = createInputHTML(col, val || "", rowIndex); - - break; - } - - case "status": { - const st = row.status || "i"; - const label = - st === "i" - ? "Imported" - : st === "P" - ? "In Progress" - : "To LIMS"; - let html = `${label}`; - if (row.commessaweb) { - html += `${esc(row.commessaweb)}`; - } - div.innerHTML = html; - div.classList.remove("editable-cell"); - break; - } - - case "idclient": { - const sel = document.createElement("select"); - sel.className = - "cell-input dropdown-select client-select searchable-client"; - sel.dataset.currentValue = row.idclient || ""; - sel.innerHTML = buildClientOptionsHTML(row.idclient); - div.appendChild(sel); - break; - } - - case "cliente_fornitore_id": { - const sel = document.createElement("select"); - sel.className = - "cell-input dropdown-select client-select searchable-client fornitore-select"; - sel.dataset.currentValue = row.cliente_fornitore_id || ""; - sel.innerHTML = buildClientOptionsHTML( - row.cliente_fornitore_id, - ); - div.appendChild(sel); - break; - } - - case "detail": { - const val = getDetailValue(rowIndex, col.key); - div.innerHTML = createInputHTML(col, val, rowIndex); - break; - } - - case "tested_component": - div.style.overflow = "visible"; - div.innerHTML = `
    - - -
    `; - break; - - case "awb": - div.innerHTML = - `` + - `` + - ``; - break; - - case "tracking": - div.className = "grid-cell tracking-info"; - div.dataset.row = rowIndex; - div.innerHTML = - 'Shipment Info'; - break; - - case "fixed": { - const val = getFixedValue(rowIndex, col.key); - div.innerHTML = createFixedFieldHTML(col, val, rowIndex); - break; - } - - case "static": { - const val = row[col.key] || ""; - div.classList.remove("editable-cell"); - if (col.key === "filename_import" && val) { - div.innerHTML = `File`; - } else { - div.innerHTML = `${esc(val)}`; - } - break; - } - } - - return div; - } - - function createInputHTML(col, value, rowIndex) { - const cls = col.isManual ? "manual-input" : "auto-input"; - const reqCls = col.isRequired ? " required-input" : ""; - const req = col.isRequired ? " required" : ""; - const v = escAttr(value); - - if (col.dataType === "SceltaMultipla") { - const options = buildDropdownOptionsHTML(col.fieldId, value); - return ``; - } - if (col.dataType === "Data") { - return ``; - } - if (col.dataType === "INT") { - return ``; - } - if ( - col.autoValue === "import_time" || - (meta.timeLabels || []).includes(col.label) - ) { - return ``; - } - return ``; - } - - function createFixedFieldHTML(col, value, rowIndex) { - if (col.dataType === "DATE") { - const reqCls = col.isRequired ? " required-input" : ""; - const req = col.isRequired ? " required" : ""; - return ``; - } - - // Client-sourced fields → AJAX Select2 (like idclient) - const config = fixedFieldApiConfig[col.key]; - if (config && config.source === "clients") { - const reqCls = col.isRequired ? " required-input" : ""; - const req = col.isRequired ? " required" : ""; - let opts = ''; - if (value) { - const label = clientNameCache[value] || value; - opts += ``; - } - return ``; - } - - // Select — build from cache - const isApiField = !!config; - const selectClass = isApiField ? "api-fixed-select" : ""; - let options = ''; - const cacheKey = config?.dependsOn - ? col.key + "_" + (data[rowIndex].idclient || "") - : col.key; - const items = fixedFieldCache[cacheKey] || []; - items.forEach((item) => { - const sel = String(item.id) === String(value) ? " selected" : ""; - options += ``; - }); - - const reqCls = col.isRequired ? " required-input" : ""; - const req = col.isRequired ? " required" : ""; - return ``; - } - - function buildDropdownOptionsHTML(fieldId, selectedValue) { - let html = ''; - if (selectedValue) { - const label = - dropdownNameCache[fieldId + "_" + selectedValue] || - selectedValue; - html += ``; - } - return html; - } - - // ── Row rendering ────────────────────────────────────────────────────── - - function renderActionButtons(rowIndex) { - const row = data[rowIndex]; - const isExported = row.status === "l"; - const div = document.createElement("div"); - div.className = "grid-cell button-cell"; - div.style.flex = "0 0 auto"; - div.style.position = "relative"; - - let html = ""; - if (meta.isAdmin) { - html += ``; - } - html += ``; - html += ``; - html += ``; - html += ``; - - div.innerHTML = html; - return div; - } - - function renderRow(rowIndex) { - const row = data[rowIndex]; - const rowDiv = document.createElement("div"); - rowDiv.className = "grid-row"; - rowDiv.dataset.id = row.iddatadb; - - if (row._dirty) rowDiv.classList.add("row-dirty"); - - // Action buttons - rowDiv.appendChild(renderActionButtons(rowIndex)); - - // All columns - let cellIndex = 1; - columns.forEach((col) => { - rowDiv.appendChild(createCell(col, rowIndex, cellIndex)); - cellIndex++; - }); - - // Restore validation errors if present - if (row._validationErrors && row._validationErrors.length > 0) { - rowDiv.classList.add("validation-row-error"); - const messages = []; - row._validationErrors.forEach((err) => { - messages.push(err.message); - if (!err.field) return; - let cell = null; - if (err.field.startsWith("field_label:")) { - const label = err.field.substring("field_label:".length); - const headers = document.querySelectorAll(".grid-header"); - let targetIndex = null; - headers.forEach((h) => { - if (h.textContent.trim() === label) - targetIndex = h.getAttribute("data-index"); - }); - if (targetIndex) - cell = rowDiv.querySelector( - `.grid-cell[data-index="${targetIndex}"]`, - ); - } else { - cell = rowDiv.querySelector( - `.grid-cell[data-col="${err.field}"]`, - ); - } - if (cell) { - cell.classList.add("validation-error"); - cell.querySelectorAll("input, select").forEach((el) => - el.classList.add("input-validation-error"), - ); - let tooltip = cell.querySelector(".validation-tooltip"); - if (!tooltip) { - tooltip = document.createElement("div"); - tooltip.className = "validation-tooltip"; - cell.appendChild(tooltip); - } - tooltip.textContent = err.message; - } - }); - // Show error msg on button cell - const btnCell2 = rowDiv.querySelector(".button-cell"); - if (btnCell2) { - const errorEl = document.createElement("div"); - errorEl.className = "batch-error-msg"; - errorEl.textContent = "Warning — click for details"; - errorEl.addEventListener("click", () => { - document.getElementById("exportResponseMessage").innerHTML = - messages.join("
    "); - document.getElementById( - "exportResponseModalLabel", - ).textContent = - "Validation Error (id: " + row.iddatadb + ")"; - new bootstrap.Modal( - document.getElementById("exportResponseModal"), - { keyboard: false }, - ).show(); - }); - btnCell2.appendChild(errorEl); - } - } - - // Restore export error indicator if present - if (row._exportError) { - rowDiv.classList.add("batch-row-error"); - const btnCell = rowDiv.querySelector(".button-cell"); - if (btnCell) { - const errorEl = document.createElement("div"); - errorEl.className = "batch-error-msg"; - errorEl.textContent = "Warning — click for details"; - errorEl.addEventListener("click", () => { - document.getElementById("exportResponseMessage").innerHTML = - row._exportError.replace(/\n/g, "
    "); - document.getElementById( - "exportResponseModalLabel", - ).textContent = "Error (id: " + row.iddatadb + ")"; - new bootstrap.Modal( - document.getElementById("exportResponseModal"), - { keyboard: false }, - ).show(); - }); - btnCell.appendChild(errorEl); - } - } - - return rowDiv; - } - - // ── Render visible rows ──────────────────────────────────────────────── - - function renderVisibleRows() { - if (!rowContainer) return; - - // Refresh totalRows in case data was modified externally - totalRows = data.length; - if (revealedCount < totalRows) revealedCount = totalRows; - - // Destroy Select2 on existing rows - $(rowContainer).find(".select2-hidden-accessible").select2("destroy"); - - rowContainer.innerHTML = ""; - const end = Math.min(revealedCount, totalRows); - for (let i = 0; i < end; i++) { - rowContainer.appendChild(renderRow(i)); - } - - // Init flatpickr on visible date pickers - initFlatpickr(); - - updateStatus(); - updateDirtyIndicator(); - } - - function renderSingleRow(rowIndex) { - const existing = rowContainer.querySelector( - `.grid-row[data-id="${data[rowIndex].iddatadb}"]`, - ); - if (!existing) return; - - // Destroy Select2 before removing - $(existing).find(".select2-hidden-accessible").select2("destroy"); - - const newRow = renderRow(rowIndex); - existing.replaceWith(newRow); - - // Init flatpickr - $(newRow) - .find(".date-picker") - .each(function () { - flatpickr(this, { dateFormat: "Y-m-d", allowInput: true }); - }); - } - - function revealNextBatch() { - if (revealedCount >= totalRows) return; - const start = revealedCount; - revealedCount = Math.min(revealedCount + PAGE_SIZE, totalRows); - for (let i = start; i < revealedCount; i++) { - rowContainer.appendChild(renderRow(i)); - } - initFlatpickr(); - updateStatus(); - } - - function initFlatpickr() { - $(rowContainer) - .find(".date-picker:not(.flatpickr-input)") - .each(function () { - flatpickr(this, { dateFormat: "Y-m-d", allowInput: true }); - }); - } - function getInputTextWidth(input) { - const span = document.createElement("span"); - const style = window.getComputedStyle(input); - - span.style.position = "absolute"; - span.style.visibility = "hidden"; - span.style.whiteSpace = "pre"; - span.style.font = style.font; - span.style.fontSize = style.fontSize; - span.style.fontFamily = style.fontFamily; - span.style.fontWeight = style.fontWeight; - span.textContent = input.value || input.placeholder || ""; - - document.body.appendChild(span); - - const width = span.offsetWidth + 60; - - document.body.removeChild(span); - - return width; - } - - function autoExpandColumnFromInput(input) { - if (!input) return; - - const cell = input.closest(".grid-cell"); - if (!cell || !cell.dataset.index) return; - - const columnIndex = parseInt(cell.dataset.index, 10); - if (!columnIndex) return; - - const wantedWidth = Math.max(120, getInputTextWidth(input)); - const currentWidth = cell.offsetWidth || 0; - - // Only expand, do not shrink automatically - if (wantedWidth <= currentWidth) return; - - const newWidth = Math.min(wantedWidth, 900); - - const header = document.querySelector( - `.grid-header[data-index="${columnIndex}"]`, - ); - - if (header) { - header.style.flex = `0 0 ${newWidth}px`; - } - - const topCell = document.querySelector( - `.grid-top .grid-cell:nth-child(${columnIndex + 1})`, - ); - - if (topCell) { - topCell.style.flex = `0 0 ${newWidth}px`; - } - - const cells = document.querySelectorAll( - `.grid-row .grid-cell[data-index="${columnIndex}"]`, - ); - - cells.forEach((c) => { - c.style.flex = `0 0 ${newWidth}px`; - }); - - const colPos = columnIndex - 1; - - if (columns[colPos]) { - columns[colPos].width = newWidth; - } - } - - function syncVisibleRowsToGridData() { - if (!rowContainer) return; - - rowContainer - .querySelectorAll(".grid-cell[data-row]") - .forEach((cell) => { - const rowIndex = parseInt(cell.dataset.row, 10); - const row = data[rowIndex]; - - if (!row) return; - - const colType = cell.dataset.colType; - const colKey = cell.dataset.col; - const input = cell.querySelector(".cell-input"); - - if (!input) return; - - const value = $(input).hasClass("select2-hidden-accessible") - ? $(input).val() || "" - : input.value || ""; - - if (colType === "detail" || colType === "main_field") { - if (!row.details) row.details = {}; - - if ( - String(row.details[String(colKey)] ?? "") !== - String(value) - ) { - row.details[String(colKey)] = value; - - if (colType === "main_field") { - row.mainFieldValue = value; - } - - row._dirty = true; - } - } else if (colType === "fixed") { - if (!row.fixedFields) row.fixedFields = {}; - - if ( - String(row.fixedFields[colKey] ?? "") !== String(value) - ) { - row.fixedFields[colKey] = value; - row._dirty = true; - } - } else if (colType === "idclient") { - if (String(row.idclient ?? "") !== String(value)) { - row.idclient = value; - row._dirty = true; - } - } else if (colType === "cliente_fornitore_id") { - if ( - String(row.cliente_fornitore_id ?? "") !== String(value) - ) { - row.cliente_fornitore_id = value; - row._dirty = true; - } - } else if (colType === "tested_component") { - if (String(row.tested_component ?? "") !== String(value)) { - row.tested_component = value; - row._dirty = true; - } - } - }); - - updateDirtyIndicator(); - } - - // ── Headers & Propagate row ──────────────────────────────────────────── - - function renderHeaders() { - if (!headerContainer) return; - headerContainer.innerHTML = ""; - - // Actions header - const actH = document.createElement("div"); - actH.className = "grid-header button-header"; - actH.style.flex = "0 0 380px"; - actH.textContent = "Actions"; - headerContainer.appendChild(actH); - - let idx = 1; - columns.forEach((col) => { - const h = document.createElement("div"); - h.className = "grid-header"; - h.dataset.index = idx; - h.style.flex = `0 0 ${col.width}px`; - h.style.position = "relative"; - h.innerHTML = esc(col.label) + '
    '; - headerContainer.appendChild(h); - idx++; - }); - - initColumnResizers(); - } - - function renderTopRow() { - if (!topContainer) return; - topContainer.innerHTML = ""; - - // Empty cell for actions column - const empty = document.createElement("div"); - empty.className = "grid-cell save-all-cell"; - topContainer.appendChild(empty); - - columns.forEach((col, colIdx) => { - const cell = document.createElement("div"); - cell.className = "grid-cell grid-top-cell"; - - // Field color classification for top propagation row - // Schema/customfield fields are green. - // Fixed and standard fields stay white. - if (col.type === "detail" || col.type === "main_field") { - cell.classList.add("schema-field"); - } else if (col.type === "fixed") { - cell.classList.add("fixed-field"); - } else { - cell.classList.add("standard-field"); - } - - // Required field classification also for the top propagation row. - if ( - col.isRequired === true || - col.isRequired === 1 || - col.isRequired === "1" - ) { - cell.classList.add("required-field"); - } - - cell.style.flex = `0 0 ${col.width}px`; - - if ( - col.editable === false || - col.type === "static" || - col.type === "tracking" - ) { - // Empty top cell - } else if (col.type === "idclient") { - cell.innerHTML = - `` + - ``; - } else if (col.type === "cliente_fornitore_id") { - cell.innerHTML = - `` + - ``; - } else if (col.type === "fixed" && col.dataType === "DATE") { - cell.innerHTML = - `` + - ``; - } else if (col.type === "fixed") { - const isApiField = !!fixedFieldApiConfig[col.key]; - if (isApiField) { - cell.innerHTML = - `` + - ``; - } else { - cell.innerHTML = - `` + - ``; - } - } else if (col.type === "detail" || col.type === "main_field") { - if (col.dataType === "SceltaMultipla") { - cell.innerHTML = - `` + - ``; - } else if (col.dataType === "Data") { - cell.innerHTML = - `` + - ``; - } else { - cell.innerHTML = - `` + - ``; - } - } - - topContainer.appendChild(cell); - }); - - // Populate top row selects - populateTopRowSelects(); - } - - async function populateTopRowSelects() { - // Client selects in top row — AJAX mode - const clientSel = document.getElementById("clientSelect"); - if (clientSel) { - clientSel.innerHTML = buildClientOptionsHTML(meta.defaultIdclient); - $(clientSel).select2(clientSelect2Config); - } - const fornitSel = document.getElementById("clienteFornitoreSelect"); - if (fornitSel) { - fornitSel.innerHTML = buildClientOptionsHTML(""); - $(fornitSel).select2(clientSelect2Config); - } - - // Fixed field selects in top row - topContainer.querySelectorAll(".api-fixed-select").forEach((sel) => { - const fieldKey = sel.dataset.fixedKey; - const config = fixedFieldApiConfig[fieldKey]; - - // Client-sourced → init as AJAX Select2 - if (config && config.source === "clients") { - $(sel).select2(clientSelect2Config); - return; - } - - if (config && config.dependsOn) { - // Dependent fixed fields, for example ClienteResponsabile: - // use the first row client, not all cached clients. - const firstClientId = - data[0]?.idclient || meta.defaultIdclient || ""; - - sel.innerHTML = ''; - - if (firstClientId) { - const items = - fixedFieldCache[fieldKey + "_" + firstClientId] || []; - - items.forEach((item) => { - sel.add(new Option(item.text, item.id)); - }); - } - - $(sel).select2({ - placeholder: "Seleziona...", - allowClear: true, - width: "100%", - sorter: sortSelect2ResultsByStart, - }); - } else { - const items = fixedFieldCache[fieldKey] || []; - sel.innerHTML = ''; - items.forEach((item) => - sel.add(new Option(item.text, item.id)), - ); - } - }); - - // Custom field dropdowns in top row — AJAX Select2 - topContainer - .querySelectorAll(".dropdown-select[data-field-id]") - .forEach((sel) => { - const fieldId = sel.dataset.fieldId; - if (fieldId) $(sel).select2(sceltaSelect2Config(fieldId)); - }); - - // Flatpickr in top row - topContainer.querySelectorAll(".date-picker").forEach((el) => { - flatpickr(el, { dateFormat: "Y-m-d", allowInput: true }); - }); - } - - // ── Event delegation ─────────────────────────────────────────────────── - - function attachEvents() { - if (!rowContainer) return; - - // Cell value changes → write to gridData - rowContainer.addEventListener("change", function (e) { - const cell = e.target.closest(".grid-cell"); - if (!cell || !cell.dataset.row) return; - const rowIndex = parseInt(cell.dataset.row); - const colType = cell.dataset.colType; - const colKey = cell.dataset.col; - const value = e.target.value; - - if (colType === "detail" || colType === "main_field") { - if (colType === "main_field") { - data[rowIndex].mainFieldValue = value; - } - setDetailValue(rowIndex, colKey, value); - } else if (colType === "fixed") { - setFixedValue(rowIndex, colKey, value); - } else if (colType === "idclient") { - data[rowIndex].idclient = value; - data[rowIndex]._dirty = true; - - refreshDependentFixedFieldsForRow(rowIndex); - } else if (colType === "cliente_fornitore_id") { - data[rowIndex].cliente_fornitore_id = value; - data[rowIndex]._dirty = true; - console.log( - "[gridRenderer] cliente_fornitore_id changed:", - rowIndex, - value, - ); - } else if (colType === "tested_component") { - data[rowIndex].tested_component = value; - data[rowIndex]._dirty = true; - } - - // Visual feedback - cell.classList.add("cell-changed"); - updateDirtyIndicator(); - }); - - rowContainer.addEventListener("input", function (e) { - const cell = e.target.closest(".grid-cell"); - if (!cell || !cell.dataset.row) return; - - if (e.target.classList.contains("cell-input")) { - autoExpandColumnFromInput(e.target); - } - - const rowIndex = parseInt(cell.dataset.row, 10); - const colType = cell.dataset.colType; - - if (colType === "tested_component") { - data[rowIndex].tested_component = e.target.value; - data[rowIndex]._dirty = true; - cell.classList.add("cell-changed"); - updateDirtyIndicator(); - } - }); - - rowContainer.addEventListener("focusin", function (e) { - if (!e.target.classList.contains("cell-input")) return; - - autoExpandColumnFromInput(e.target); - - setTimeout(() => { - autoExpandColumnFromInput(e.target); - }, 50); - }); - - // Persist tested_component before clicking + - document.addEventListener("mousedown", function (e) { - const btn = e.target.closest(".add-part-btn"); - if (!btn) return; - - const rowIndex = parseInt(btn.dataset.row, 10); - if (isNaN(rowIndex) || !data[rowIndex]) return; - - const rowEl = btn.closest(".grid-row"); - if (!rowEl) return; - - const testedInput = rowEl.querySelector(".tested-component-input"); - if (!testedInput) return; - - data[rowIndex].tested_component = testedInput.value || ""; - data[rowIndex]._dirty = true; - - const cell = testedInput.closest(".grid-cell"); - if (cell) cell.classList.add("cell-changed"); - - updateDirtyIndicator(); - }); - - // Propagate buttons - document.addEventListener("click", function (e) { - const btn = e.target.closest(".propagate-btn"); - if (!btn) return; - - // Before propagating and re-rendering, persist current visible row values into gridData. - syncVisibleRowsToGridData(); - - e.preventDefault(); - e.stopPropagation(); - e.stopImmediatePropagation(); - - const column = btn.dataset.column || ""; - const colIndex = Number.isNaN(parseInt(btn.dataset.colIndex, 10)) - ? null - : parseInt(btn.dataset.colIndex, 10); - - if (!column && colIndex === null) return; - - // IMPORTANT: - // Read ONLY the input/select inside the same top propagation cell. - // Do not scan other top fields. - const cell = btn.closest(".grid-top-cell"); - if (!cell) return; - - const input = cell.querySelector(".custom-field"); - if (!input) return; - - const value = $(input).hasClass("select2-hidden-accessible") - ? $(input).val() || "" - : input.value || ""; - - // Do not propagate empty dropdown values. - // This prevents wiping rows when a top Select2 is empty/not fully initialized. - if (input.tagName === "SELECT" && value === "") { - console.warn( - "[gridRenderer] Empty select propagation blocked:", - column, - ); - return; - } - - // Cache selected label so re-render can show text instead of only ID. - if (value && $(input).hasClass("select2-hidden-accessible")) { - const label = $(input).find("option:selected").text(); - - if (label && label !== value) { - if ( - column === "idclient" || - column === "cliente_fornitore_id" || - input.classList.contains("searchable-client") - ) { - clientNameCache[value] = label; - } - - const fieldId = input.dataset?.fieldId; - if (fieldId) { - dropdownNameCache[fieldId + "_" + value] = label; - } - } - } - - const col = colIndex !== null ? columns[colIndex] : null; - - console.log("[gridRenderer] Propagating ONLY:", { - column: column, - colIndex: colIndex, - value: value, - label: - input.tagName === "SELECT" - ? $(input).find("option:selected").text() - : value, - }); - - if (column === "idclient") { - data.forEach((row) => { - const oldClientId = row.idclient || ""; - - row.idclient = value; - - // Clear ClienteResponsabile only if client really changed. - if ( - String(oldClientId) !== String(value) && - row.fixedFields && - Object.prototype.hasOwnProperty.call( - row.fixedFields, - "ClienteResponsabile", - ) - ) { - row.fixedFields["ClienteResponsabile"] = ""; - } - - row._dirty = true; - }); - - loadFixedFieldOptions("ClienteResponsabile", value).then(() => { - refreshTopDependentFixedSelect( - "ClienteResponsabile", - value, - ); - renderVisibleRows(); - updateDirtyIndicator(); - }); - - return; - } - - if (column === "cliente_fornitore_id") { - data.forEach((row) => { - row.cliente_fornitore_id = value; - row._dirty = true; - }); - - renderVisibleRows(); - updateDirtyIndicator(); - return; - } - - if (column && column.startsWith("fixed_")) { - const fixedKey = column.replace("fixed_", ""); - - data.forEach((row) => { - if (!row.fixedFields) row.fixedFields = {}; - row.fixedFields[fixedKey] = value; - row._dirty = true; - }); - - renderVisibleRows(); - updateDirtyIndicator(); - return; - } - - if (col && (col.type === "detail" || col.type === "main_field")) { - data.forEach((row) => { - if (!row.details) row.details = {}; - row.details[col.key] = value; - - if (col.type === "main_field") { - row.mainFieldValue = value; - } - - row._dirty = true; - }); - - renderVisibleRows(); - updateDirtyIndicator(); - return; - } - }); - - // Select2 change events (don't bubble via native addEventListener) - $(rowContainer).on("change", ".searchable-client", function () { - const cell = this.closest(".grid-cell"); - if (!cell || !cell.dataset.row) return; - const rowIndex = parseInt(cell.dataset.row); - const colType = cell.dataset.colType; - const value = $(this).val() || ""; - - // Cache selected label - if (value) { - const label = $(this).find("option:selected").text(); - if (label && label !== value) clientNameCache[value] = label; - } - - if (colType === "idclient") { - data[rowIndex].idclient = value; - data[rowIndex]._dirty = true; - - refreshDependentFixedFieldsForRow(rowIndex); - } else if (colType === "cliente_fornitore_id") { - data[rowIndex].cliente_fornitore_id = value; - data[rowIndex]._dirty = true; - } - cell.classList.add("cell-changed"); - updateDirtyIndicator(); - }); - - // Handle SceltaMultipla changes and persist them into gridData. - // Without this, a later renderVisibleRows() can rebuild the row with the old empty value. - $(rowContainer).on("change", ".searchable-dropdown", function () { - const cell = this.closest(".grid-cell"); - if (!cell || !cell.dataset.row) return; - - const rowIndex = parseInt(cell.dataset.row, 10); - const colType = cell.dataset.colType; - const colKey = cell.dataset.col; - const val = $(this).val() || ""; - const fieldId = this.dataset.fieldId; - - // Cache label so re-render shows the text instead of only the ID. - if (val && fieldId) { - const label = $(this).find("option:selected").text(); - if (label && label !== val) { - dropdownNameCache[fieldId + "_" + val] = label; - } - } - - // Persist value into gridData. - if (colType === "detail" || colType === "main_field") { - if (!data[rowIndex].details) data[rowIndex].details = {}; - - data[rowIndex].details[String(colKey)] = val; - - if (colType === "main_field") { - data[rowIndex].mainFieldValue = val; - } - - data[rowIndex]._dirty = true; - cell.classList.add("cell-changed"); - updateDirtyIndicator(); - } - }); - - // Select2 change on fixed field selects - $(rowContainer).on("change", ".api-fixed-select", function () { - const cell = this.closest(".grid-cell"); - if (!cell || !cell.dataset.row) return; - const rowIndex = parseInt(cell.dataset.row); - const key = this.dataset.fixedKey || cell.dataset.col; - const value = $(this).val() || ""; - - if (key) { - data[rowIndex].fixedFields[key] = value; - data[rowIndex]._dirty = true; - cell.classList.add("cell-changed"); - updateDirtyIndicator(); - } - }); - - // Scroll - function onScroll() { - if (revealedCount >= totalRows) return; - const docEl = document.documentElement; - const scrollBottom = Math.max( - docEl.scrollTop + docEl.clientHeight, - document.body.scrollTop + window.innerHeight, - ); - if (scrollBottom >= docEl.scrollHeight - 300) { - revealNextBatch(); - } - } - window.addEventListener("scroll", onScroll, { passive: true }); - document - .querySelector(".page-wrapper") - ?.addEventListener("scroll", onScroll, { passive: true }); - } - - // ── Save ─────────────────────────────────────────────────────────────── - - window.buildSavePayload = function (rowIndex) { - const row = data[rowIndex]; - const formData = new FormData(); - formData.append("iddatadb", row.iddatadb); - - // Details - for (const [mappingId, value] of Object.entries(row.details)) { - formData.append(`details${mappingId}field_value`, value); - } - - // Client - if (row.idclient) formData.append("idclient", row.idclient); - formData.append("cliente_fornitore_id", row.cliente_fornitore_id || ""); - formData.append("tested_component", row.tested_component || ""); - - // Fixed fields → real column names - const aliasMap = meta.fixedAliasMap || {}; - for (const [logicalKey, value] of Object.entries(row.fixedFields)) { - const realKey = aliasMap[logicalKey] || logicalKey; - formData.append(realKey, value); - } - - return formData; - }; - - // ── Dirty indicator ──────────────────────────────────────────────────── - - function updateDirtyIndicator() { - const dirtyCount = data.filter((r) => r._dirty).length; - const indicator = document.getElementById("unsavedChanges"); - const changedEl = document.getElementById("changedRows"); - if (indicator) { - indicator.style.display = dirtyCount > 0 ? "" : "none"; - } - if (changedEl) { - changedEl.textContent = - dirtyCount > 0 ? `(${dirtyCount} rows)` : ""; - } - } - - function updateStatus() { - if (!statusEl) return; - const shown = Math.min(revealedCount, totalRows); - if (shown >= totalRows) { - statusEl.textContent = `All ${totalRows} rows loaded`; - setTimeout(() => (statusEl.style.display = "none"), 2000); - } else { - statusEl.textContent = `Showing ${shown} of ${totalRows} rows — scroll down for more`; - } - } - - // ── Lazy Select2 for row selects ─────────────────────────────────────── - - function initLazySelect2() { - $(document).on("mouseenter", ".grid-row .grid-cell", function () { - $(this) - .find(".searchable-client:not(.select2-hidden-accessible)") - .each(function () { - $(this).select2(clientSelect2Config); - }); - $(this) - .find(".searchable-dropdown:not(.select2-hidden-accessible)") - .each(function () { - const fieldId = this.dataset.fieldId; - if (fieldId) $(this).select2(sceltaSelect2Config(fieldId)); - }); - }); - } - - // ── Column resize ────────────────────────────────────────────────────── - - function initColumnResizers() { - const resizers = document.querySelectorAll(".resizer"); - - let currentResizer = null; - let startX = 0; - let startWidth = 0; - let columnIndex = null; - - function resize(e) { - if (!currentResizer || !columnIndex) return; - - const deltaX = e.pageX - startX; - const newWidth = Math.max(80, startWidth + deltaX); - - const header = document.querySelector( - `.grid-header[data-index="${columnIndex}"]`, - ); - if (header) { - header.style.flex = `0 0 ${newWidth}px`; - } - - const topCell = document.querySelector( - `.grid-top .grid-cell:nth-child(${parseInt(columnIndex, 10) + 1})`, - ); - if (topCell) { - topCell.style.flex = `0 0 ${newWidth}px`; - } - - const cells = document.querySelectorAll( - `.grid-row .grid-cell[data-index="${columnIndex}"]`, - ); - cells.forEach((cell) => { - cell.style.flex = `0 0 ${newWidth}px`; - }); - - // aggiorna anche la width nel meta così i rerender la mantengono - const colPos = parseInt(columnIndex, 10) - 1; - if (columns[colPos]) { - columns[colPos].width = newWidth; - } - } - - function stopResize() { - if (currentResizer) { - document.removeEventListener("mousemove", resize); - document.removeEventListener("mouseup", stopResize); - currentResizer = null; - columnIndex = null; - } - } - - resizers.forEach((resizer) => { - resizer.addEventListener("mousedown", function (e) { - e.preventDefault(); - e.stopPropagation(); - - currentResizer = this; - const header = this.closest(".grid-header"); - if (!header) return; - - columnIndex = header.getAttribute("data-index"); - startX = e.pageX; - startWidth = header.offsetWidth; - - document.addEventListener("mousemove", resize); - document.addEventListener("mouseup", stopResize); - }); - }); - } - - // ── Init ─────────────────────────────────────────────────────────────── - - async function init() { - rowContainer = document.getElementById("gridRowContainer"); - headerContainer = document.getElementById("gridHeaderContainer"); - topContainer = document.getElementById("gridTopContainer"); - - if (!rowContainer) { - console.error("gridRenderer: #gridRowContainer not found"); - return; - } - - // Status bar - statusEl = document.createElement("div"); - statusEl.style.cssText = - "text-align:center; padding:8px; color:#666; font-size:12px;"; - if (totalRows > PAGE_SIZE) { - statusEl.textContent = `Loading data...`; - rowContainer.parentElement.appendChild(statusEl); - } - - // Preload all dropdown/field data - await preloadAllData(); - - // Render - renderHeaders(); - renderTopRow(); - renderVisibleRows(); - initColumnResizers(); - - // Events - attachEvents(); - initLazySelect2(); - } - - // Start when DOM ready - if (document.readyState === "loading") { - document.addEventListener("DOMContentLoaded", init); - } else { - init(); - } - - // ── Public API ───────────────────────────────────────────────────────── - window.gridRenderer = { - renderVisibleRows, - renderSingleRow, - revealNextBatch, - buildSavePayload: window.buildSavePayload, - getData: () => data, - getMeta: () => meta, - getClientData: () => clientData, - getDirtyRows: () => data.filter((r) => r._dirty).map((r, i) => i), - clearDirty: (rowIndex) => { - data[rowIndex]._dirty = false; - updateDirtyIndicator(); - }, - }; -})(); diff --git a/public/userarea/historical_trf.php b/public/userarea/historical_trf.php deleted file mode 100644 index 148fef17..00000000 --- a/public/userarea/historical_trf.php +++ /dev/null @@ -1,1325 +0,0 @@ -getConnection(); - -// Retrieve all mappings -$stmt = $pdo->prepare("SELECT id, excel_column, data_type, is_required, manual_default, is_manual, field_label, field_id, main_field FROM template_mapping WHERE template_id = ?"); -$stmt->execute([$template_id]); -$allMappings = $stmt->fetchAll(PDO::FETCH_ASSOC); - -if (empty($allMappings)) { - header("Location: xlstemplates_grid.php?status=error&message=" . urlencode("Nessun mapping trovato per il template")); - exit; -} - -// Trova il main_field -$mainFieldMapping = null; -foreach ($allMappings as $mapping) { - if ($mapping['main_field'] == 1) { - $mainFieldMapping = $mapping; - break; - } -} -if (!$mainFieldMapping) { - $filtered = array_filter($allMappings, fn($m) => !$m['is_manual']); - $mainFieldMapping = reset($filtered); -} - -// Retrieve data from datadb -if ($mode === 'edit' && !empty($selected_ids)) { - $placeholders = implode(',', array_fill(0, count($selected_ids), '?')); - $stmt = $pdo->prepare(" - SELECT d.*, CONCAT(u.first_name, ' ', u.last_name) AS user_name - FROM datadb d - LEFT JOIN auth_users u ON d.user_id = u.id - WHERE d.templateid = ? AND d.status = ? AND d.iddatadb IN ($placeholders) - "); - $params = array_merge([$template_id, $status], $selected_ids); - $stmt->execute($params); - $importedData = $stmt->fetchAll(PDO::FETCH_ASSOC); - $total_records = count($importedData); - $total_pages = 1; -} else { - $stmt = $pdo->prepare("SELECT COUNT(*) FROM datadb WHERE templateid = ? AND status = ?"); - $stmt->execute([$template_id, $status]); - $total_records = $stmt->fetchColumn(); - $total_pages = ceil($total_records / $limit); - - $stmt = $pdo->prepare(" - SELECT d.*, CONCAT(u.first_name, ' ', u.last_name) AS user_name - FROM datadb d - LEFT JOIN auth_users u ON d.user_id = u.id - WHERE d.templateid = ? AND d.status = ? - LIMIT ? OFFSET ? - "); - $stmt->execute([$template_id, $status, $limit, $offset]); - $importedData = $stmt->fetchAll(PDO::FETCH_ASSOC); -} - -error_log("Record caricati: " . count($importedData)); - -$insertedIds = array_column($importedData, 'iddatadb'); - -// Retrieve manual details -$manualDetails = []; -if (!empty($insertedIds)) { - $placeholders = implode(',', array_fill(0, count($insertedIds), '?')); - $stmt = $pdo->prepare(" - SELECT d.id AS detail_id, d.id AS datadb_id, d.mapping_id, d.field_value, m.field_label, m.data_type, m.is_required, m.manual_default - FROM import_data_details d - JOIN template_mapping m ON d.mapping_id = m.id - WHERE d.id IN ($placeholders) - "); - $stmt->execute($insertedIds); - $manualDetails = $stmt->fetchAll(PDO::FETCH_ASSOC); -} - -// Retrieve global mapping for slugs -$stmt = $pdo->query("SELECT mysql_column_name, user_friendly_slug FROM column_mapping"); -$slugMapping = []; -foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) { - $slugMapping[$row['mysql_column_name']] = $row['user_friendly_slug']; -} -?> - - - - - - - - - - - - Dati Storici - <?= htmlspecialchars($titlewebsite, ENT_QUOTES, 'UTF-8'); ?> - - - -
    - - -
    -
    -
    -
    -
    -
    -
    Dati Storici
    -
    -
    - - -
    -
    -
    -
    - -
    - Nessun dato trovato per il template e lo status selezionato. -
    - - -
    -
    -
    - Visualizzazione di - di record -
    -
    - - -
    -
    - - - - - - - - - - - - - prepare("SELECT field_value FROM import_data_details WHERE id = ? AND mapping_id = ?"); - $stmt->execute([$row['iddatadb'], $mainFieldMapping['id']]); - $mainValue = $stmt->fetchColumn() ?? ''; - } - ?> - - - - - - - - - -
    FileAzioni
    File - -
    - -
    - -
    -
    - -
    -
    - Visualizzazione di - di record -
    -
    - - - -
    -
    - -
    - -
    -
    -
    -
    - "; - if ($mainFieldMapping['data_type'] === 'SceltaMultipla') { - $fieldValue = $mainFieldMapping['manual_default'] ?? ''; - echo ""; - echo ""; - } else { - $fieldValue = $mainFieldMapping['manual_default'] ?? ''; - if ($mainFieldMapping['data_type'] === 'DATE' && $mainFieldMapping['manual_default'] === 'today') { - $fieldValue = date('Y-m-d'); - } - if ($mainFieldMapping['data_type'] === 'DATE') { - echo ""; - } elseif ($mainFieldMapping['data_type'] === 'INT') { - echo ""; - } else { - echo ""; - } - echo ""; - } - echo "
    "; - } else { - echo "
    "; - } - // Status (subito dopo main_field) - $fixedColumnsReduced = ['status']; - foreach ($fixedColumnsReduced as $col) { - echo "
    "; - } - // Campi automatici (escluso main_field) - $autoIndex = ($mainFieldMapping && !$mainFieldMapping['is_manual']) ? 1 : 0; - foreach ($allMappings as $mapping) { - if (!$mapping['is_manual'] && $mapping['main_field'] != 1) { - $inputClass = 'auto-input'; - if ($mapping['is_required']) $inputClass .= ' required-input'; - echo "
    "; - if ($mapping['data_type'] === 'SceltaMultipla') { - $fieldValue = $mapping['manual_default'] ?? ''; - echo ""; - echo ""; - } else { - echo "
    "; - } - echo "
    "; - $autoIndex++; - } - } - // Campi manuali (escluso main_field) - $manualIndex = ($mainFieldMapping && $mainFieldMapping['is_manual']) ? 1 : 0; - foreach ($allMappings as $mapping) { - if ($mapping['is_manual'] && $mapping['main_field'] != 1) { - $fieldValue = $mapping['manual_default'] ?? ''; - if ($mapping['data_type'] === 'DATE' && $mapping['manual_default'] === 'today') { - $fieldValue = date('Y-m-d'); - } - $inputClass = 'manual-input'; - if ($mapping['is_required']) $inputClass .= ' required-input'; - echo "
    "; - if ($mapping['data_type'] === 'SceltaMultipla') { - echo ""; - echo ""; - } elseif ($mapping['data_type'] === 'DATE') { - echo ""; - echo ""; - } elseif ($mapping['data_type'] === 'INT') { - echo ""; - echo ""; - } else { - echo ""; - echo ""; - } - echo "
    "; - $manualIndex++; - } - } - // Colonne Import Reference Code, filename_import - echo "
    "; // Import Reference Code - echo "
    "; // filename_import - // AWB Number e Tracking Info - echo "
    "; - echo "
    "; - ?> -
    -
    -
    Azioni
    -
    - " . htmlspecialchars($mainFieldMapping['field_label']) . "
    "; - $headerIndex++; - } - // Header per status (subito dopo main_field) - foreach ($fixedColumnsReduced as $col) { - $displayName = $slugMapping[$col] ?? $col; - echo "
    $displayName
    "; - $headerIndex++; - } - // Header per campi automatici (escluso main_field) - foreach ($allMappings as $mapping) { - if (!$mapping['is_manual'] && $mapping['main_field'] != 1) { - echo "
    " . htmlspecialchars($mapping['field_label']) . "
    "; - $headerIndex++; - } - } - // Header per campi manuali (escluso main_field) - foreach ($allMappings as $mapping) { - if ($mapping['is_manual'] && $mapping['main_field'] != 1) { - echo "
    " . htmlspecialchars($mapping['field_label']) . "
    "; - $headerIndex++; - } - } - // Header per Import Reference Code, filename_import - echo "
    Import Reference Code
    "; - $headerIndex++; - echo "
    File
    "; - $headerIndex++; - // Header per AWB Number e Tracking Info - echo "
    AWB Number
    "; - $headerIndex++; - echo "
    Tracking Info
    "; - ?> -
    - $row): ?> -
    -
    -
    - - - - - - - -
    -
    - $d['datadb_id'] == $row['iddatadb']); - // Campo con main_field = 1 - if ($mainFieldMapping) { - $detail = array_filter($rowDetails, fn($d) => $d['mapping_id'] == $mainFieldMapping['id']); - $detail = reset($detail) ?: ['field_value' => $mainFieldMapping['manual_default']]; - $fieldValue = $detail['field_value'] ?? $mainFieldMapping['manual_default'] ?? ''; - $requiredClass = ($mainFieldMapping['is_required'] && (is_null($fieldValue) || $fieldValue === '')) ? 'missing-required' : ''; - $inputClass = $mainFieldMapping['is_manual'] ? 'manual-input' : 'auto-input'; - if ($mainFieldMapping['is_required']) $inputClass .= ' required-input'; - $indexField = $mainFieldMapping['is_manual'] ? "manual_0" : "auto_0"; - echo "
    "; - if ($mainFieldMapping['data_type'] === 'SceltaMultipla') { - echo ""; - } elseif ($mainFieldMapping['data_type'] === 'DATE') { - echo ""; - } elseif ($mainFieldMapping['data_type'] === 'INT') { - echo ""; - } else { - echo ""; - } - echo "
    "; - $cellIndex++; - } - // Status (subito dopo main_field) - $fixedColumnsReduced = ['status']; - foreach ($fixedColumnsReduced as $col) { - $value = $row[$col] ?? ''; - echo "
    "; - if ($col === 'status') { - $badgeClass = $value === 'i' ? 'status-i' : ($value === 'P' ? 'status-P' : 'status-l'); - $badgeText = $value === 'i' ? 'Imported' : ($value === 'P' ? 'Progress' : 'LIMS'); - // Aggiungi il numero di commessaweb se lo status è 'l' - if ($value === 'l') { - $commessaWeb = isset($row['commessaweb']) ? htmlspecialchars($row['commessaweb']) : ''; - $badgeText .= " ($commessaWeb)"; - } - echo "" . htmlspecialchars($badgeText) . ""; - echo ""; - } - echo "
    "; - $cellIndex++; - } - // Campi automatici (escluso main_field) - $autoIndex = ($mainFieldMapping && !$mainFieldMapping['is_manual']) ? 1 : 0; - foreach ($allMappings as $mapping) { - if (!$mapping['is_manual'] && $mapping['main_field'] != 1) { - $detail = array_filter($rowDetails, fn($d) => $d['mapping_id'] == $mapping['id']); - $detail = reset($detail) ?: ['field_value' => $mapping['manual_default']]; - $fieldValue = $detail['field_value'] ?? $mapping['manual_default'] ?? ''; - $requiredClass = ($mapping['is_required'] && (is_null($fieldValue) || $fieldValue === '')) ? 'missing-required' : ''; - $inputClass = 'auto-input'; - if ($mapping['is_required']) $inputClass .= ' required-input'; - echo "
    "; - if ($mapping['data_type'] === 'SceltaMultipla') { - echo ""; - } elseif ($mapping['data_type'] === 'DATE') { - echo ""; - } elseif ($mapping['data_type'] === 'INT') { - echo ""; - } else { - echo ""; - } - echo "
    "; - $cellIndex++; - $autoIndex++; - } - } - // Campi manuali (escluso main_field) - $manualIndex = ($mainFieldMapping && $mainFieldMapping['is_manual']) ? 1 : 0; - foreach ($allMappings as $mapping) { - if ($mapping['is_manual'] && $mapping['main_field'] != 1) { - $detail = array_filter($rowDetails, fn($d) => $d['mapping_id'] == $mapping['id']); - $detail = reset($detail) ?: ['field_value' => $mapping['manual_default']]; - $fieldValue = $detail['field_value'] ?? $mapping['manual_default'] ?? ''; - if ($mapping['data_type'] === 'DATE' && $mapping['manual_default'] === 'today' && empty($fieldValue)) { - $fieldValue = date('Y-m-d'); - } - $requiredClass = ($mapping['is_required'] && (is_null($fieldValue) || $fieldValue === '')) ? 'missing-required' : ''; - $inputClass = 'manual-input'; - if ($mapping['is_required']) $inputClass .= ' required-input'; - echo "
    "; - if ($mapping['data_type'] === 'SceltaMultipla') { - echo ""; - } elseif ($mapping['data_type'] === 'DATE') { - echo ""; - } elseif ($mapping['data_type'] === 'INT') { - echo ""; - } else { - echo ""; - } - echo "
    "; - $cellIndex++; - $manualIndex++; - } - } - // Colonne Import Reference Code e filename_import - echo "
    "; - echo "" . htmlspecialchars($row['importreferencecode']) . ""; - echo ""; - echo "
    "; - $cellIndex++; - echo "
    "; - echo "File"; - echo ""; - echo "
    "; - $cellIndex++; - // Colonne AWB Number e Tracking Info - ?> -
    - - > - -
    -
    - Shipment Info - -
    -
    - -
    - - - - - - -
    -
    -
    -
    - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/userarea/import_edit.php b/public/userarea/import_edit.php deleted file mode 100644 index 5c4560ab..00000000 --- a/public/userarea/import_edit.php +++ /dev/null @@ -1,1039 +0,0 @@ -getConnection(); - -// Genera un UUID univoco per importreferencecode -$importReferenceCode = date('YmdHis') . '-' . uniqid(); - -// Recupera il mapping per il template -$stmt = $pdo->prepare("SELECT excel_column, mysql_column, data_type, is_required, default_value FROM excel_column_mappings WHERE template_id = ?"); -$stmt->execute([$template_id]); -$mappings = $stmt->fetchAll(PDO::FETCH_ASSOC); - -if (empty($mappings)) { - header("Location: import_xls.php?id=$template_id&status=error&message=" . urlencode("Nessun mapping trovato per il template")); - exit; -} - -// Recupera il client_specific_fields dal template -$stmt = $pdo->prepare("SELECT client_specific_fields FROM excel_templates WHERE id = ?"); -$stmt->execute([$template_id]); -$template = $stmt->fetch(PDO::FETCH_ASSOC); -$clientSpecificFields = $template && !empty($template['client_specific_fields']) ? json_decode($template['client_specific_fields'], true) : []; - -// Crea un array per il mapping -$columnMapping = []; -foreach ($mappings as $mapping) { - $excelColumnIndex = array_search($mapping['excel_column'], $columns); - if ($excelColumnIndex !== false) { - $columnMapping[$excelColumnIndex] = [ - 'mysql_column' => $mapping['mysql_column'], - 'data_type' => $mapping['data_type'], - 'is_required' => $mapping['is_required'], - 'default_value' => $mapping['default_value'] - ]; - } -} - -// Inserisci le righe selezionate in datadb -$insertedIds = []; -foreach ($selected_rows as $rowIndex) { - $row = $rows[$rowIndex]; - $values = []; - $placeholders = []; - $columnsToInsert = []; - - foreach ($columnMapping as $excelIndex => $mapping) { - $mysqlColumn = $mapping['mysql_column']; - $value = $row[$excelIndex] ?? $mapping['default_value']; - - if ($mapping['is_required'] && (is_null($value) || $value === '')) { - $value = $mapping['default_value']; - if (is_null($value)) { - header("Location: import_xls.php?id=$template_id&status=error&message=" . urlencode("Valore richiesto mancante per la colonna $mysqlColumn")); - exit; - } - } - - switch ($mapping['data_type']) { - case 'INT': - $value = is_numeric($value) ? (int)$value : ($mapping['default_value'] ?? null); - break; - case 'DATE': - $value = !empty($value) ? date('Y-m-d', strtotime($value)) : ($mapping['default_value'] ?? null); - break; - case 'CHAR': - $value = !empty($value) ? substr($value, 0, 1) : ($mapping['default_value'] ?? null); - break; - case 'VARCHAR': - default: - $value = !empty($value) ? htmlspecialchars($value) : ($mapping['default_value'] ?? null); - break; - } - - if (!is_null($value)) { - $columnsToInsert[] = $mysqlColumn; - $placeholders[] = '?'; - $values[] = $value; - } - } - - $columnsToInsert[] = 'importreferencecode'; - $placeholders[] = '?'; - $values[] = $importReferenceCode; - - $columnsToInsert[] = 'filename_import'; - $placeholders[] = '?'; - $values[] = $newFilename; - - $columnsToInsert[] = 'status'; - $placeholders[] = '?'; - $values[] = 'i'; - - $columnsToInsert[] = 'user_id'; - $placeholders[] = '?'; - $values[] = $user_id; - - $columnsToInsert[] = 'limscode'; - $placeholders[] = '?'; - $values[] = null; - - $columnsToInsert[] = 'importdate'; - $placeholders[] = '?'; - $values[] = date('Y-m-d'); - - $sql = "INSERT INTO datadb (" . implode(', ', $columnsToInsert) . ") VALUES (" . implode(', ', $placeholders) . ")"; - $stmt = $pdo->prepare($sql); - $stmt->execute($values); - - $insertedIds[] = $pdo->lastInsertId(); -} - -// Recupera i dati appena inseriti con i nomi degli utenti -$stmt = $pdo->prepare(" - SELECT d.*, CONCAT(u.first_name, ' ', u.last_name) AS user_name - FROM datadb d - LEFT JOIN auth_users u ON d.user_id = u.id - WHERE d.iddatadb IN (" . implode(',', array_fill(0, count($insertedIds), '?')) . ") -"); -$stmt->execute($insertedIds); -$importedData = $stmt->fetchAll(PDO::FETCH_ASSOC); - -// Recupera il mapping globale per mostrare gli slug leggibili -$stmt = $pdo->query("SELECT mysql_column_name, user_friendly_slug FROM column_mapping"); -$slugMapping = []; -foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) { - $slugMapping[$row['mysql_column_name']] = $row['user_friendly_slug']; -} -?> - - - - - - - - - - - - - - Edit Imported Data - <?= htmlspecialchars($titlewebsite, ENT_QUOTES, 'UTF-8'); ?> - - - -
    - - -
    -
    - - -
    -
    -
    -
    -
    Modifica Dati Importati
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    "; - $headerIndex++; - } - } - // Aggiungi gli input per i campi aggiuntivi sopra l'header - foreach ($clientSpecificFields as $fieldName => $fieldDetails) { - $fieldValue = $fieldDetails['default_value']; - if ($fieldDetails['type'] === 'date' && $fieldDetails['default_value'] === 'today') { - $fieldValue = date('Y-m-d'); - } - $requiredAttr = $fieldDetails['is_required'] ? 'required' : ''; - echo "
    "; - if ($fieldDetails['type'] === 'date') { - echo ""; - } elseif ($fieldDetails['type'] === 'boolean') { - echo ""; - } else { - echo ""; - } - echo ""; - echo "
    "; - $headerIndex++; - } - // Spazi vuoti per AWB Number e Tracking Info - echo "
    "; - echo "
    "; - ?> -
    - - -
    -
    Save
    -
    Photos
    -
    Parts
    - $displayName
    "; - $headerIndex++; - } - } - // Aggiungi gli header per i campi aggiuntivi - foreach ($clientSpecificFields as $fieldName => $fieldDetails) { - echo "
    $fieldName
    "; - $headerIndex++; - } - ?> -
    AWB Number
    -
    -
    Tracking Info
    -
    -
    - - - $row): ?> -
    -
    - -
    -
    - -
    -
    - -
    - $value) { - $visible = !in_array($col, ['iddatadb', 'importreferencecode', 'limscode', 'user_name']); - if ($visible) { - ?> -
    - - - - - File - - - - - - - - - - - - -
    - - - $fieldDetails) { - ?> -
    - "; - } elseif ($fieldDetails['type'] === 'boolean') { - echo ""; - } else { - echo ""; - } - ?> -
    - - -
    - - - -
    -
    - Shipment Info - -
    -
    - -
    - - - - -
    -
    -
    - - - -
    - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/userarea/import_edit2 - bck080725.php b/public/userarea/import_edit2 - bck080725.php deleted file mode 100644 index 91310a87..00000000 --- a/public/userarea/import_edit2 - bck080725.php +++ /dev/null @@ -1,1072 +0,0 @@ -getConnection(); - -// Genera un UUID univoco per importreferencecode -$importReferenceCode = date('YmdHis') . '-' . uniqid(); - -// Recupera tutti i mapping dal template (automatici e manuali) -$stmt = $pdo->prepare("SELECT id, field_id, field_id AS excel_column, field_id AS mysql_column, data_type, is_required, manual_default, is_manual, field_label FROM template_mapping WHERE template_id = ?"); -$stmt->execute([$template_id]); -$allMappings = $stmt->fetchAll(PDO::FETCH_ASSOC); - -if (empty($allMappings)) { - header("Location: import_xls.php?id=$template_id&status=error&message=" . urlencode("Nessun mapping trovato per il template")); - exit; -} - -// Separa i mapping automatici (is_manual = 0) da quelli manuali (is_manual = 1) -$autoMappings = array_filter($allMappings, fn($m) => !$m['is_manual']); -$manualMappings = array_filter($allMappings, fn($m) => $m['is_manual']); - -// Inserisci le righe selezionate in datadb -$insertedIds = []; -foreach ($selected_rows as $rowIndex) { - $row = $rows[$rowIndex]; - $values = []; - $placeholders = []; - $columnsToInsert = []; - - // Aggiungi i campi mappati dall'XLS (automatici) - foreach ($autoMappings as $mapping) { - $excelColumnIndex = array_search(trim($mapping['excel_column']), array_map('trim', $columns)); - if ($excelColumnIndex !== false) { - $mysqlColumn = $mapping['mysql_column']; - $value = $row[$excelColumnIndex] ?? $mapping['manual_default']; - - if ($mapping['is_required'] && (is_null($value) || $value === '')) { - $value = $mapping['manual_default']; - if (is_null($value)) { - header("Location: import_xls.php?id=$template_id&status=error&message=" . urlencode("Valore richiesto mancante per la colonna $mysqlColumn")); - exit; - } - } - - switch ($mapping['data_type']) { - case 'INT': - $value = is_numeric($value) ? (int)$value : ($mapping['manual_default'] ?? 0); - break; - case 'DATE': - $value = !empty($value) ? date('Y-m-d', strtotime($value)) : ($mapping['manual_default'] ?? null); - if ($mapping['manual_default'] === 'today' && is_null($value)) { - $value = date('Y-m-d'); - } - break; - case 'CHAR': - $value = !empty($value) ? substr($value, 0, 1) : ($mapping['manual_default'] ?? ''); - break; - case 'Testo': - case 'VARCHAR': - default: - $value = !empty($value) ? htmlspecialchars($value) : ($mapping['manual_default'] ?? ''); - break; - } - - if (!is_null($value)) { - $columnsToInsert[] = $mysqlColumn; - $placeholders[] = '?'; - $values[] = $value; - } - } - } - - // Aggiungi i campi generici - $columnsToInsert[] = 'importreferencecode'; - $placeholders[] = '?'; - $values[] = $importReferenceCode; - - $columnsToInsert[] = 'filename_import'; - $placeholders[] = '?'; - $values[] = $newFilename; - - $columnsToInsert[] = 'status'; - $placeholders[] = '?'; - $values[] = 'i'; - - $columnsToInsert[] = 'user_id'; - $placeholders[] = '?'; - $values[] = $user_id; - - $columnsToInsert[] = 'limscode'; - $placeholders[] = '?'; - $values[] = null; - - $columnsToInsert[] = 'importdate'; - $placeholders[] = '?'; - $values[] = date('Y-m-d'); - - $sql = "INSERT INTO datadb (" . implode(', ', $columnsToInsert) . ") VALUES (" . implode(', ', $placeholders) . ")"; - $stmt = $pdo->prepare($sql); - $stmt->execute($values); - - $iddatadb = $pdo->lastInsertId(); - $insertedIds[] = $iddatadb; - - // Inserisci tutti i campi (automatici e manuali) in import_data_details - foreach ($allMappings as $mapping) { - $fieldValue = ''; - if (!$mapping['is_manual']) { // Campi automatici dall'XLS - $excelColumnIndex = array_search(trim($mapping['excel_column']), array_map('trim', $columns)); - if ($excelColumnIndex !== false) { - $fieldValue = $row[$excelColumnIndex] ?? $mapping['manual_default']; - } else { - $fieldValue = $mapping['manual_default'] ?? ''; - } - switch ($mapping['data_type']) { - case 'INT': - $fieldValue = is_numeric($fieldValue) ? (int)$fieldValue : ($mapping['manual_default'] ?? 0); - break; - case 'DATE': - $fieldValue = !empty($fieldValue) ? date('Y-m-d', strtotime($fieldValue)) : ($mapping['manual_default'] ?? ''); - if ($mapping['manual_default'] === 'today' && empty($fieldValue)) { - $fieldValue = date('Y-m-d'); - } - break; - case 'CHAR': - $fieldValue = !empty($fieldValue) ? substr($fieldValue, 0, 1) : ($mapping['manual_default'] ?? ''); - break; - case 'Testo': - case 'VARCHAR': - default: - $fieldValue = !empty($fieldValue) ? htmlspecialchars($fieldValue) : ($mapping['manual_default'] ?? ''); - break; - } - } else { // Campi manuali - $fieldValue = $mapping['manual_default'] ?? ''; - if ($mapping['data_type'] === 'DATE' && $mapping['manual_default'] === 'today') { - $fieldValue = date('Y-m-d'); - } elseif (!empty($mapping['manual_default'])) { - $fieldValue = $mapping['manual_default']; - } - } - // Log dettagliato prima dell'inserimento - error_log("Inserting - Mapping ID: " . $mapping['id'] . ", Field Value: " . var_export($fieldValue, true) . ", Is Manual: " . $mapping['is_manual'] . ", Excel Column: " . ($mapping['excel_column'] ?? 'N/A') . ", Manual Default: " . ($mapping['manual_default'] ?? 'N/A')); - - $stmt = $pdo->prepare("INSERT INTO import_data_details (id, mapping_id, field_value) VALUES (?, ?, ?)"); - $stmt->execute([$iddatadb, $mapping['id'], $fieldValue]); - // Log della query eseguita - error_log("Executed Query for ID $iddatadb, Mapping ID: " . $mapping['id'] . ", Field Value: " . $fieldValue); - } -} - -// Recupera i dati appena inseriti con i nomi degli utenti -$stmt = $pdo->prepare(" - SELECT d.*, CONCAT(u.first_name, ' ', u.last_name) AS user_name - FROM datadb d - LEFT JOIN auth_users u ON d.user_id = u.id - WHERE d.iddatadb IN (" . implode(',', array_fill(0, count($insertedIds), '?')) . ") -"); -$stmt->execute($insertedIds); -$importedData = $stmt->fetchAll(PDO::FETCH_ASSOC); - -// Recupera i dettagli manuali da import_data_details -$stmt = $pdo->prepare(" - SELECT d.id AS detail_id, d.id AS datadb_id, d.mapping_id, d.field_value, m.field_id, m.data_type, m.is_required, m.manual_default - FROM import_data_details d - JOIN template_mapping m ON d.mapping_id = m.id - WHERE d.id IN (" . implode(',', array_fill(0, count($insertedIds), '?')) . ") -"); -$stmt->execute($insertedIds); -$manualDetails = $stmt->fetchAll(PDO::FETCH_ASSOC); - -// Recupera il mapping globale per mostrare gli slug leggibili -$stmt = $pdo->query("SELECT mysql_column_name, user_friendly_slug FROM column_mapping"); -$slugMapping = []; -foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) { - $slugMapping[$row['mysql_column_name']] = $row['user_friendly_slug']; -} -?> - - - - - - - - - - - - Edit Imported Data - <?= htmlspecialchars($titlewebsite, ENT_QUOTES, 'UTF-8'); ?> - - - -
    - - -
    -
    - -
    -
    -
    -
    -
    Modifica Dati Importati
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    "; - $headerIndex++; - } - } - // Aggiungi spazi vuoti per i campi automatici (senza propagate-btn) - foreach ($autoMappings as $autoMapping) { - echo "
    "; - $headerIndex++; - } - // Aggiungi gli input per i campi manuali con propagate-btn - foreach ($manualMappings as $manualMapping) { - $fieldValue = $manualMapping['manual_default']; - if ($manualMapping['data_type'] === 'DATE' && $manualMapping['manual_default'] === 'today') { - $fieldValue = date('Y-m-d'); - } - $requiredAttr = $manualMapping['is_required'] ? 'required' : ''; - echo "
    "; - if ($manualMapping['data_type'] === 'DATE') { - echo ""; - } elseif ($manualMapping['data_type'] === 'INT') { - echo ""; - } else { - echo ""; - } - echo ""; - echo "
    "; - $headerIndex++; - } - // Spazi per AWB e Tracking Info - echo "
    "; - echo "
    "; - ?> -
    - - -
    -
    Save
    -
    Photos
    -
    Parts
    - $displayName
    "; - $headerIndex++; - } - } - // Prima i campi automatici (excel_column non vuoto) - foreach ($autoMappings as $mapping) { - echo "
    " . htmlspecialchars($mapping['field_label']) . "
    "; - $headerIndex++; - } - // Poi i campi manuali - foreach ($manualMappings as $mapping) { - echo "
    " . htmlspecialchars($mapping['field_label']) . "
    "; - $headerIndex++; - } - ?> -
    AWB Number
    -
    -
    Tracking Info
    -
    -
    - - - $row): ?> -
    -
    - -
    -
    - -
    -
    - -
    - "; - if ($col === 'importdate') { - echo "" . htmlspecialchars($value) . ""; - echo ""; - } elseif ($col === 'filename_import') { - echo "File"; - echo ""; - } elseif ($col === 'status') { - echo "" . htmlspecialchars($value === 'i' ? 'Imported' : ($value === 'P' ? 'Progress' : 'LIMS')) . ""; - echo ""; - } elseif ($col === 'user_id') { - echo "" . htmlspecialchars($row['user_name'] ?? 'Utente Sconosciuto') . ""; - echo ""; - } else { - echo ""; - } - echo "
    "; - $cellIndex++; - } - } - // Aggiungi i campi automatici da import_data_details - $rowDetails = array_filter($manualDetails, fn($d) => $d['datadb_id'] == $row['iddatadb']); - foreach ($autoMappings as $mapping) { - $detail = array_filter($rowDetails, fn($d) => $d['mapping_id'] == $mapping['id']); - $detail = reset($detail) ?: ['field_value' => $mapping['manual_default']]; - $fieldValue = $detail['field_value'] ?? $mapping['manual_default']; - $requiredAttr = $mapping['is_required'] ? 'required' : ''; - echo "
    "; - if ($mapping['data_type'] === 'DATE') { - echo ""; - } elseif ($mapping['data_type'] === 'INT') { - echo ""; - } else { - echo ""; - } - echo "
    "; - $cellIndex++; - } - // Aggiungi i campi manuali da import_data_details - foreach ($manualMappings as $mapping) { - $detail = array_filter($rowDetails, fn($d) => $d['mapping_id'] == $mapping['id']); - $detail = reset($detail) ?: ['field_value' => $mapping['manual_default']]; - $fieldValue = $detail['field_value'] ?? $mapping['manual_default']; - if ($mapping['data_type'] === 'DATE' && $mapping['manual_default'] === 'today' && empty($fieldValue)) { - $fieldValue = date('Y-m-d'); - } - $requiredAttr = $mapping['is_required'] ? 'required' : ''; - echo "
    "; - if ($mapping['data_type'] === 'DATE') { - echo ""; - } elseif ($mapping['data_type'] === 'INT') { - echo ""; - } else { - echo ""; - } - echo "
    "; - $cellIndex++; - } - ?> - -
    - - - -
    -
    - Shipment Info - -
    -
    - -
    - - - -
    -
    - - -
    - - - - - - - - - - \ No newline at end of file diff --git a/public/userarea/import_edit2.php b/public/userarea/import_edit2.php deleted file mode 100644 index acd2f351..00000000 --- a/public/userarea/import_edit2.php +++ /dev/null @@ -1,3087 +0,0 @@ -getConnection(); - -// Genera un UUID univoco per importreferencecode -$importReferenceCode = date('YmdHis') . '-' . uniqid(); - -// Recupera tutti i mapping dal template, includendo is_visible_import -$stmt = $pdo->prepare("SELECT id, excel_column, data_type, is_required, manual_default, is_manual, field_label, field_id, main_field, is_visible_import, auto_value -FROM template_mapping -WHERE template_id = ?"); -$stmt->execute([$template_id]); -$allMappings = $stmt->fetchAll(PDO::FETCH_ASSOC); - -$timeLabels = [ - 'Sample Arrival Time:', - 'Sample Unlock Time:', - 'Login Time:', - 'Presa in carico, Orario:', -]; - -// Returns the auto value for current session (import) based on mapping.auto_value -function getImportAutoValue(array $mapping): string -{ - $auto = $mapping['auto_value'] ?? 'none'; - - if ($auto === 'import_date') { - return date('Y-m-d'); - } - - if ($auto === 'import_time') { - // HTML expects HH:MM (seconds optional) - return date('H:i'); - } - - return ''; -} - -if (empty($allMappings)) { - header("Location: import_xls.php?id=$template_id&status=error&message=" . urlencode("Nessun mapping trovato per il template")); - exit; -} - -// Trova il campo main_field -$mainFieldMapping = null; -foreach ($allMappings as $mapping) { - if ($mapping['main_field'] == 1 && $mapping['is_visible_import'] == 1) { - $mainFieldMapping = $mapping; - break; - } -} - -// Recupera l'idclient di default dal template (se presente) -$template_stmt = $pdo->prepare("SELECT idclient FROM excel_templates WHERE id = ?"); -$template_stmt->execute([$template_id]); -$template = $template_stmt->fetch(PDO::FETCH_ASSOC); -$default_idclient = $template['idclient'] ?? null; - -$insertedIds = $_POST['inserted_ids'] ?? $_SESSION['inserted_ids']; -// ------------------------------------------------------------ -// AUTO SET: schema field_id = 244 with auth_users.lims_user_id (if present) -// ------------------------------------------------------------ -try { - // 1) Read logged user lims_user_id - $stmtUser = $pdo->prepare("SELECT lims_user_id FROM auth_users WHERE id = ? LIMIT 1"); - $stmtUser->execute([(int)$user_id]); - $limsUserId = $stmtUser->fetchColumn(); - - // normalize - $limsUserId = ($limsUserId !== false && $limsUserId !== null && $limsUserId !== '') ? (string)$limsUserId : ''; - - if ($limsUserId !== '' && !empty($insertedIds)) { - - // 2) Find mapping_id for field_id = 244 in this template - $stmtMap = $pdo->prepare("SELECT id FROM template_mapping WHERE template_id = ? AND field_id = 244 LIMIT 1"); - $stmtMap->execute([(int)$template_id]); - $mappingId244 = (int)$stmtMap->fetchColumn(); - - if ($mappingId244 > 0) { - - // 3) Upsert value into import_data_details for every inserted datadb row - $pdo->beginTransaction(); - - $updStmt = $pdo->prepare("UPDATE import_data_details SET field_value = ? WHERE id = ? AND mapping_id = ?"); - $insStmt = $pdo->prepare("INSERT INTO import_data_details (id, mapping_id, field_value) VALUES (?, ?, ?)"); - - foreach ($insertedIds as $iddatadb) { - $iddatadb = (int)$iddatadb; - if ($iddatadb <= 0) continue; - - $updStmt->execute([$limsUserId, $iddatadb, $mappingId244]); - - if ($updStmt->rowCount() === 0) { - $insStmt->execute([$iddatadb, $mappingId244, $limsUserId]); - } - } - - $pdo->commit(); - } - } -} catch (Exception $e) { - // Do not block import page if this fails; just log - error_log("[AUTO FIELD 244] " . $e->getMessage()); - if ($pdo->inTransaction()) $pdo->rollBack(); -} -// Recupera i dati appena inseriti con i nomi degli utenti -$stmt = $pdo->prepare(" - SELECT d.*, CONCAT(u.first_name, ' ', u.last_name) AS user_name - FROM datadb d - LEFT JOIN auth_users u ON d.user_id = u.id - WHERE d.iddatadb IN (" . implode(',', array_fill(0, count($insertedIds), '?')) . ") -"); -$stmt->execute($insertedIds); -$importedData = $stmt->fetchAll(PDO::FETCH_ASSOC); - -// Recupera i dettagli manuali da import_data_details -$stmt = $pdo->prepare(" - SELECT d.id AS detail_id, d.id AS datadb_id, d.mapping_id, d.field_value, - m.field_id, m.field_label, m.data_type, m.is_required, m.manual_default - FROM import_data_details d - JOIN template_mapping m ON d.mapping_id = m.id - WHERE d.id IN (" . implode(',', array_fill(0, count($insertedIds), '?')) . ") -"); -$stmt->execute($insertedIds); -$manualDetails = $stmt->fetchAll(PDO::FETCH_ASSOC); - -// Recupera il mapping globale per mostrare gli slug leggibili -$stmt = $pdo->query("SELECT mysql_column_name, user_friendly_slug FROM column_mapping"); -$slugMapping = []; -foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) { - $slugMapping[$row['mysql_column_name']] = $row['user_friendly_slug']; -} -// --- FIX LABELS ONLY (do not change keys) --- -$slugMapping['AnagraficaCertestObject'] = 'Object'; -$slugMapping['AnagraficaCertestService'] = 'Service'; - -// ---------------- FIXED FIELDS (from template_fixed_mapping) ---------------- -$fixedStmt = $pdo->prepare(" - SELECT id, fixed_field_key, is_manual, data_type, is_required, default_value, is_visible_import - FROM template_fixed_mapping - WHERE template_id = ? AND is_visible_import = 1 - ORDER BY id -"); -$fixedStmt->execute([$template_id]); -$fixedFieldsRaw = $fixedStmt->fetchAll(PDO::FETCH_ASSOC); - -// Ordine desiderato: Cliente Responsabile prima, poi gli altri, ConsegnaRichiesta prima delle 3 speciali -$desiredOrder = [ - 'ClienteResponsabile', - 'ClienteFornitore', - 'ClienteAnalisi', - 'AnagraficaCertestObject', - 'AnagraficaCertestService', - 'MoltiplicatorePrezzo', - 'ConsegnaRichiesta', - // se ci sono altri campi fixed li mettiamo dopo -]; - -// No exclusions: fixed fields will be rendered together at the end -$excludeFromFixed = []; - -$fixedFields = []; -$tempMap = []; -foreach ($fixedFieldsRaw as $f) { - if (in_array($f['fixed_field_key'], $excludeFromFixed, true)) continue; - $tempMap[$f['fixed_field_key']] = $f; -} - -foreach ($desiredOrder as $key) { - if (isset($tempMap[$key])) { - $fixedFields[] = $tempMap[$key]; - unset($tempMap[$key]); - } -} - -// Aggiunge eventuali campi fixed non elencati sopra (alla fine) -foreach ($tempMap as $f) { - $fixedFields[] = $f; -} - -// Maps logical fixed_field_key → real datadb column name (mirrors JS fixedAliasMap) -$fixedAliasMap = [ - 'ClienteResponsabile' => 'cliente_responsabile_id', - 'ClienteFornitore' => 'cliente_fornitore_id', - 'ClienteAnalisi' => 'clienteAnalisi', - 'MoltiplicatorePrezzo' => 'moltiplicatore_prezzo_id', - 'AnagraficaCertestObject' => 'anagrafica_certest_object_id', - 'AnagraficaCertestService' => 'anagrafica_certest_service_id', - 'ConsegnaRichiesta' => 'consegna_richiesta', -]; - -// helper default (DATE can use 'today' if you already use it elsewhere) -function fixedDefaultValue(array $f): string -{ - $v = $f['default_value'] ?? ''; - if ($f['data_type'] === 'DATE' && $v === 'today') return date('Y-m-d'); - return (string)$v; -} - -?> - - - - - - - - - - - - - - Edit Imported Data - <?= htmlspecialchars($titlewebsite, ENT_QUOTES, 'UTF-8'); ?> - - - -
    - - -
    -
    - -
    -
    -
    - - - -
    -
    -
    -
    -
    -
    -
    - -
    - "; - echo ""; - echo ""; - echo ""; - } elseif ($mainFieldMapping['data_type'] === 'Data') { - echo ""; - echo ""; - } elseif ($mainFieldMapping['data_type'] === 'INT') { - echo ""; - echo ""; - } else { - echo ""; - echo ""; - } - ?> -
    - - -
    - -
    - - - -
    - "; - echo ""; - echo ""; - echo "
    "; - } else { - // Show auto import date/time in header too (read-only) - $autoVal = getImportAutoValue($mapping); - - echo "
    "; - - if (($mapping['auto_value'] ?? 'none') === 'import_date') { - echo ""; - echo ""; - } elseif (($mapping['auto_value'] ?? 'none') === 'import_time') { - echo ""; - echo ""; - } else { - // keep empty cell for other auto fields - echo ""; - } - - echo "
    "; - } - - $autoIndex++; - $topColIndex++; - } - } - - $manualIndex = 0; - - foreach ($allMappings as $mapping) { - if ($mapping['is_manual'] && $mapping['main_field'] != 1 && $mapping['is_visible_import'] == 1) { - $fieldValue = $mapping['manual_default'] ?? ''; - if ($mapping['data_type'] === 'Data' && $mapping['manual_default'] === 'today') { - $fieldValue = date('Y-m-d'); - } - $inputClass = 'manual-input'; - if ($mapping['is_required']) $inputClass .= ' required-input'; - echo "
    "; - if ($mapping['data_type'] === 'SceltaMultipla') { - echo ""; - } elseif ($mapping['data_type'] === 'Data') { - echo ""; - } elseif ($mapping['data_type'] === 'INT') { - echo ""; - } elseif (in_array($mapping['field_label'], $timeLabels)) { - echo ""; - } else { - echo ""; - } - echo ""; - echo "
    "; - - $manualIndex++; - $topColIndex++; - } - } - - echo "
    "; - $topColIndex++; - echo "
    "; - $topColIndex++; - echo "
    "; - $topColIndex++; - // ---------------- FIXED FIELDS TOP (propagate) - same order as header: fixed cols, 3 empties after ConsegnaRichiesta ---------------- - if (!empty($fixedFields)) { - $insertedAfterConsegnaTop = false; - foreach ($fixedFields as $fx => $f) { - - $key = $f['fixed_field_key']; // datadb column - - $val = fixedDefaultValue($f); - - $isRequired = ((int)$f['is_required'] === 1); - $inputClass = 'manual-input' . ($isRequired ? ' required-input' : ''); - $topRequiredClass = ($isRequired && ($val === '' || $val === null)) ? 'missing-required' : ''; - - echo "
    "; - $topColIndex++; - - // Forza DATE anche se per errore nel DB è diversa - $isDate = ($f['data_type'] === 'DATE' || $key === 'ConsegnaRichiesta'); - - if ($isDate) { - - echo ""; - } else { - - $isApiField = in_array($key, [ - 'MoltiplicatorePrezzo', - 'ClienteResponsabile', - 'ClienteFornitore', - 'ClienteAnalisi', - 'AnagraficaCertestObject', - 'AnagraficaCertestService' - ], true); - - if ($isApiField) { - $placeholder = ($key === 'ClienteResponsabile') ? 'Seleziona cliente prima...' : 'Seleziona...'; - - echo ""; - } else { - - echo ""; - } - } - - // UNA SOLA freccia - echo ""; - echo "
    "; - - if ($key === 'ConsegnaRichiesta' && !$insertedAfterConsegnaTop) { - echo "
    "; - $topColIndex++; - echo "
    "; - $topColIndex++; - echo "
    "; - $topColIndex++; - $insertedAfterConsegnaTop = true; - } - } - } - - - ?> -
    - -
    -
    Actions
    - -
    - -
    -
    - -
    Status
    -
    -
    Client
    -
    - " . htmlspecialchars($mapping['field_label']) . "
    "; - $headerIndex++; - } - } - foreach ($allMappings as $mapping) { - if ($mapping['is_manual'] && $mapping['main_field'] != 1 && $mapping['is_visible_import'] == 1) { - echo "
    " . htmlspecialchars($mapping['field_label']) . "
    "; - $headerIndex++; - } - } - // Aggiunta header per Tested Component - echo "
    Tested Component
    "; - $headerIndex++; - echo "
    AWB Number
    "; - $headerIndex++; - echo "
    Tracking Info
    "; - $headerIndex++; - - // ---------------- FIXED FIELDS HEADERS ---------------- - if (!empty($fixedFields)) { - $insertedAfterConsegna = false; - foreach ($fixedFields as $f) { - $key = $f['fixed_field_key']; - $label = $slugMapping[$key] ?? $key; - - if ($key === 'ClienteFornitore') { - $label = 'Fornitore'; - } - - if ($key === 'ClienteAnalisi') { - $label = 'Buyer'; - } - - - - echo "
    " - . htmlspecialchars($label) . - "
    "; - $headerIndex++; - - // Inseriamo le 3 colonne SOLO dopo ConsegnaRichiesta - if ($key === 'ConsegnaRichiesta' && !$insertedAfterConsegna) { - echo "
    Import Reference Code
    "; - $headerIndex++; - echo "
    " . ($slugMapping['filename_import'] ?? 'filename_import') . "
    "; - $headerIndex++; - echo "
    " . ($slugMapping['importdate'] ?? 'importdate') . "
    "; - $headerIndex++; - $insertedAfterConsegna = true; - } - } - } - ?> - -
    - - $row): ?> -
    -
    - - hasRole('Admin'))) : ?> - - - - - - - -
    - - $d['mapping_id'] == $mainFieldMapping['id'] && $d['datadb_id'] == $row['iddatadb']); - $detail = reset($detail) ?: ['field_value' => $mainFieldMapping['manual_default']]; - $fieldValue = $detail['field_value'] ?? $mainFieldMapping['manual_default'] ?? ''; - if ($mainFieldMapping['data_type'] === 'Data' && $mainFieldMapping['manual_default'] === 'today' && empty($fieldValue)) { - $fieldValue = date('Y-m-d'); - } - $requiredClass = ($mainFieldMapping['is_required'] && (is_null($fieldValue) || $fieldValue === '')) ? 'missing-required' : ''; - $inputClass = $mainFieldMapping['is_manual'] ? 'manual-input' : 'auto-input'; - if ($mainFieldMapping['is_required']) $inputClass .= ' required-input'; - ?> -
    - - - - > - - > - - > - -
    - -
    - - - - - - - -
    -
    - -
    - - $d['datadb_id'] == $row['iddatadb']); - $autoIndex = 0; - foreach ($allMappings as $mapping) { - if (!$mapping['is_manual'] && $mapping['main_field'] != 1 && $mapping['is_visible_import'] == 1) { - $detail = array_filter($rowDetails, fn($d) => $d['mapping_id'] == $mapping['id']); - $detail = reset($detail) ?: ['field_value' => $mapping['manual_default']]; - $fieldValue = $detail['field_value'] ?? $mapping['manual_default'] ?? ''; - - // Auto-fill import date/time only if empty - if ($fieldValue === '' || $fieldValue === null) { - $autoVal = getImportAutoValue($mapping); - if ($autoVal !== '') { - $fieldValue = $autoVal; - } - } - $requiredClass = ($mapping['is_required'] && (is_null($fieldValue) || $fieldValue === '')) ? 'missing-required' : ''; - $inputClass = 'auto-input'; - if ($mapping['is_required']) $inputClass .= ' required-input'; - echo "
    "; - if ($mapping['data_type'] === 'SceltaMultipla') { - echo ""; - } elseif ($mapping['data_type'] === 'Data') { - echo ""; - } elseif ($mapping['data_type'] === 'INT') { - echo ""; - } elseif (($mapping['auto_value'] ?? 'none') === 'import_time') { - echo ""; - } elseif (in_array($mapping['field_label'], $timeLabels)) { - echo ""; - } else { - echo ""; - } - echo "
    "; - $cellIndex++; - $autoIndex++; - } - } - $manualIndex = 0; - foreach ($allMappings as $mapping) { - if ($mapping['is_manual'] && $mapping['main_field'] != 1 && $mapping['is_visible_import'] == 1) { - $detail = array_filter($rowDetails, fn($d) => $d['mapping_id'] == $mapping['id']); - $detail = reset($detail) ?: ['field_value' => $mapping['manual_default']]; - $fieldValue = $detail['field_value'] ?? $mapping['manual_default'] ?? ''; - if ($mapping['data_type'] === 'Data' && $mapping['manual_default'] === 'today' && empty($fieldValue)) { - $fieldValue = date('Y-m-d'); - } - $requiredClass = ($mapping['is_required'] && (is_null($fieldValue) || $fieldValue === '')) ? 'missing-required' : ''; - $inputClass = 'manual-input'; - if ($mapping['is_required']) $inputClass .= ' required-input'; - echo "
    "; - if ($mapping['data_type'] === 'SceltaMultipla') { - echo ""; - } elseif ($mapping['data_type'] === 'Data') { - echo ""; - } elseif ($mapping['data_type'] === 'INT') { - echo ""; - } elseif (in_array($mapping['field_label'], $timeLabels)) { - echo ""; - } else { - echo ""; - } - echo "
    "; - $cellIndex++; - $manualIndex++; - } - } - // Aggiunta cella per Tested Component - echo "
    "; - echo ""; - echo ""; - echo "
    "; - $cellIndex++; - ?> -
    - - - -
    - -
    - Shipment Info - -
    - - - "; - - if ($f['data_type'] === 'DATE') { - echo ""; - } else { - $isApiField = in_array($key, ['MoltiplicatorePrezzo', 'ClienteResponsabile', 'ClienteFornitore', 'ClienteAnalisi', 'AnagraficaCertestObject', 'AnagraficaCertestService'], true); - $selectClass = $isApiField ? 'api-fixed-select' : ''; - echo ""; - } - echo "
    "; - - $cellIndex++; - - // === INSERIMENTO dopo ConsegnaRichiesta === - if ($key === 'ConsegnaRichiesta') { - // Import Reference Code - echo "
    "; - echo "" . htmlspecialchars($row['importreferencecode']) . ""; - echo ""; - echo "
    "; - $cellIndex++; - - // filename_import - echo "
    "; - echo "File"; - echo ""; - echo "
    "; - $cellIndex++; - - // importdate - echo "
    "; - echo "" . htmlspecialchars($row['importdate']) . ""; - echo ""; - echo "
    "; - $cellIndex++; - } - } - } - ?> - -
    - -
    - -
    -
    -
    - -
    -
    - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - \ No newline at end of file diff --git a/public/userarea/import_insert.php b/public/userarea/import_insert.php deleted file mode 100644 index 268565ab..00000000 --- a/public/userarea/import_insert.php +++ /dev/null @@ -1,161 +0,0 @@ -getConnection(); - -// Genera un UUID univoco per importreferencecode -$importReferenceCode = date('YmdHis') . '-' . uniqid(); - -// Recupera tutti i mapping dal template -$stmt = $pdo->prepare("SELECT id, excel_column, data_type, is_required, manual_default, is_manual, field_label, field_id, main_field, auto_value FROM template_mapping WHERE template_id = ?"); -$stmt->execute([$template_id]); -$allMappings = $stmt->fetchAll(PDO::FETCH_ASSOC); - -if (empty($allMappings)) { - header("Location: import_xls.php?id=$template_id&status=error&message=" . urlencode("Nessun mapping trovato per il template")); - exit; -} - -// Trova il campo main_field -$mainFieldMapping = null; -foreach ($allMappings as $mapping) { - if ($mapping['main_field'] == 1) { - $mainFieldMapping = $mapping; - break; - } -} - -// Inserisci le righe selezionate in datadb -$insertedIds = []; -foreach ($selected_rows as $rowIndex) { - $row = $rows[$rowIndex] ?? null; - $excelrow = $excelrows[$rowIndex] ?? null; - - if ($row === null || $excelrow === null) { - error_log("Errore: riga o excelrow mancante per rowIndex $rowIndex"); - continue; - } - - // Recupera l'idclient di default dal template - $template_stmt = $pdo->prepare("SELECT idclient FROM excel_templates WHERE id = ?"); - $template_stmt->execute([$template_id]); - $template = $template_stmt->fetch(PDO::FETCH_ASSOC); - $default_idclient = $template['idclient'] ?? null; - - $values = [ - $template_id, - $importReferenceCode, - $newFilename, - 'i', - $user_id, - null, - date('Y-m-d'), - $excelrow, - $default_idclient // Aggiungi idclient - ]; - $sql = "INSERT INTO datadb (templateid, importreferencecode, filename_import, status, user_id, limscode, importdate, excelrow, idclient) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; - $stmt = $pdo->prepare($sql); - $stmt->execute($values); - - $iddatadb = $pdo->lastInsertId(); - $insertedIds[] = $iddatadb; - - // Inserisci tutti i campi in import_data_details - foreach ($allMappings as $mapping) { - $fieldValue = null; - if (!$mapping['is_manual']) { - $excelColumn = trim($mapping['excel_column']); - $excelColumnIndex = array_search($excelColumn, array_map('trim', $columns)); - if ($excelColumnIndex !== false && isset($row[$excelColumnIndex]) && $row[$excelColumnIndex] !== '') { - $fieldValue = $row[$excelColumnIndex]; - error_log("Found Excel column '$excelColumn' at index $excelColumnIndex, value: " . var_export($fieldValue, true)); - } else { - $fieldValue = $mapping['manual_default'] ?? ''; - error_log("Excel column '$excelColumn' not found or empty, using default: " . var_export($fieldValue, true)); - } - switch ($mapping['data_type']) { - case 'INT': - $fieldValue = is_numeric($fieldValue) ? (int)$fieldValue : ($mapping['manual_default'] ?? 0); - break; - case 'DATE': - $fieldValue = !empty($fieldValue) ? date('Y-m-d', strtotime($fieldValue)) : ($mapping['manual_default'] === 'today' ? date('Y-m-d') : ($mapping['manual_default'] ?? '')); - break; - case 'CHAR': - $fieldValue = !empty($fieldValue) ? substr((string)$fieldValue, 0, 1) : ($mapping['manual_default'] ?? ''); - break; - case 'Testo': - case 'VARCHAR': - default: - $fieldValue = !empty($fieldValue) ? (string)$fieldValue : ($mapping['manual_default'] ?? ''); - break; - } - } else { - $fieldValue = $mapping['manual_default'] ?? ''; - if ($mapping['data_type'] === 'DATE' && $mapping['manual_default'] === 'today') { - $fieldValue = date('Y-m-d'); - } - } - // Apply auto_value if field is still empty - if (($fieldValue === null || $fieldValue === '') && !empty($mapping['auto_value']) && $mapping['auto_value'] !== 'none') { - if ($mapping['auto_value'] === 'import_date') { - $fieldValue = date('Y-m-d'); - } elseif ($mapping['auto_value'] === 'import_time') { - $fieldValue = date('H:i'); - } - } - - if ($mapping['is_required'] && (is_null($fieldValue) || $fieldValue === '')) { - error_log("Required field missing for mapping ID: " . $mapping['id'] . ", field: " . $mapping['field_label']); - } - error_log("Inserting into import_data_details - Mapping ID: " . $mapping['id'] . ", Field Value: " . var_export($fieldValue, true) . ", Is Manual: " . $mapping['is_manual'] . ", Excel Column: " . ($mapping['excel_column'] ?? 'N/A') . ", Manual Default: " . ($mapping['manual_default'] ?? 'N/A')); - $stmt = $pdo->prepare("INSERT INTO import_data_details (id, mapping_id, field_value) VALUES (?, ?, ?)"); - $stmt->execute([$iddatadb, $mapping['id'], $fieldValue]); - error_log("Inserted into import_data_details for ID $iddatadb, Mapping ID: " . $mapping['id'] . ", Field Value: " . var_export($fieldValue, true)); - } -} - -$_SESSION['inserted_ids'] = $insertedIds; - -header("Location: imported.php?id=" . urlencode($template_id) . "&importref=" . urlencode($importReferenceCode)); -exit; -?> diff --git a/public/userarea/import_xls.php b/public/userarea/import_xls.php deleted file mode 100644 index 6011827d..00000000 --- a/public/userarea/import_xls.php +++ /dev/null @@ -1,305 +0,0 @@ -getConnection(); -$stmt = $pdo->prepare("SELECT * FROM excel_templates WHERE id = ?"); -$stmt->execute([$id]); -$template = $stmt->fetch(PDO::FETCH_ASSOC); - -if (!$template) { - header("Location: template_dashboard.php?status=error&message=" . urlencode("Template not found")); - exit; -} - -// Debug del template -error_log("Loaded template: " . print_r($template, true)); -?> - - - - - - - - - - - <?= htmlspecialchars($template['name']) ?> - <?= htmlspecialchars($titlewebsite, ENT_QUOTES, 'UTF-8'); ?> - - - -
    - - -
    -
    - - -
    -
    -
    -
    -
    - Template ID: , Start Row: , Start Column: -
    -
    -
    -
    - -
    -
    - - -
    - -
    -
    - - - - - -
    -
    -
    -
    -
    - -
    - - -
    - - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/userarea/import_xls2.php b/public/userarea/import_xls2.php deleted file mode 100644 index 5d98e167..00000000 --- a/public/userarea/import_xls2.php +++ /dev/null @@ -1,599 +0,0 @@ -getConnection(); -$stmt = $pdo->prepare("SELECT * FROM excel_templates WHERE id = ?"); -$stmt->execute([$id]); -$template = $stmt->fetch(PDO::FETCH_ASSOC); - -if (!$template) { - header("Location: template_dashboard.php?status=error&message=" . urlencode("Template not found")); - exit; -} - -// Verifica i mapping -$stmt = $pdo->prepare("SELECT id FROM template_mapping WHERE template_id = ?"); -$stmt->execute([$id]); -$hasMappings = $stmt->fetch(PDO::FETCH_ASSOC); - -// Debug del template -error_log("Loaded template: " . print_r($template, true)); -?> - - - - - - - - - - - - <?= htmlspecialchars($template['name']) ?> - <?= htmlspecialchars($titlewebsite, ENT_QUOTES, 'UTF-8'); ?> - - - -
    - - -
    -
    - - -
    -
    -
    -
    -
    - - Template ID: , - Sheet Number: , - Start Row: , - Start Column: - -
    -
    -
    -
    - - - -
    -
    - - -
    - -
    -
    - - - -
    - - -
    -
    -
    -
    -
    - - -
    - - - - - - - - \ No newline at end of file diff --git a/public/userarea/imported.php b/public/userarea/imported.php deleted file mode 100644 index 3ba13d9c..00000000 --- a/public/userarea/imported.php +++ /dev/null @@ -1,1669 +0,0 @@ -getConnection(); - -// Recupera tutti i mapping dal template, includendo is_visible_import -$stmt = $pdo->prepare("SELECT id, excel_column, data_type, is_required, manual_default, is_manual, field_label, field_id, field_order, main_field, is_visible_import, auto_value -FROM template_mapping -WHERE template_id = ? -ORDER BY field_order ASC, id ASC"); -$stmt->execute([$template_id]); -$allMappings = $stmt->fetchAll(PDO::FETCH_ASSOC); - -$timeLabels = [ - 'Sample Arrival Time:', - 'Sample Unlock Time:', - 'Login Time:', - 'Presa in carico, Orario:', -]; - -// Returns the auto value for current session (import) based on mapping.auto_value -function getImportAutoValue(array $mapping): string -{ - $auto = $mapping['auto_value'] ?? 'none'; - - if ($auto === 'import_date') { - return date('Y-m-d'); - } - - if ($auto === 'import_time') { - // HTML expects HH:MM (seconds optional) - return date('H:i'); - } - - return ''; -} - -if (empty($allMappings)) { - header("Location: import_xls.php?id=$template_id&status=error&message=" . urlencode("Nessun mapping trovato per il template")); - exit; -} - -// Find up to 2 main fields -$mainFieldMappings = []; - -foreach ($allMappings as $mapping) { - if ((string)$mapping['main_field'] === '1' && (int)$mapping['is_visible_import'] === 1) { - $mainFieldMappings[] = $mapping; - } - - if (count($mainFieldMappings) >= 2) { - break; - } -} - -// Backward compatibility: first main field -$mainFieldMapping = $mainFieldMappings[0] ?? null; - -// Recupera l'idclient di default dal template (se presente) -$template_stmt = $pdo->prepare("SELECT idclient FROM excel_templates WHERE id = ?"); -$template_stmt->execute([$template_id]); -$template = $template_stmt->fetch(PDO::FETCH_ASSOC); -$default_idclient = $template['idclient'] ?? null; - -// Fetch records with status='i' for this template -$userFilter = $show_all_users ? '' : 'AND d.user_id = ?'; -$importrefFilter = $importref !== '' ? 'AND d.importreferencecode = ?' : ''; -$baseWhere = "WHERE d.templateid = ? AND d.status = 'i' {$userFilter} {$importrefFilter}"; -$baseParams = [$template_id]; -if (!$show_all_users) $baseParams[] = $user_id; -if ($importref !== '') $baseParams[] = $importref; - -// Count total records -$countStmt = $pdo->prepare("SELECT COUNT(*) FROM datadb d {$baseWhere}"); -$countStmt->execute($baseParams); -$totalRows = (int)$countStmt->fetchColumn(); -$totalPages = $usePagination ? max(1, (int)ceil($totalRows / $perPage)) : 1; -if ($page > $totalPages) $page = $totalPages; - -$limitClause = $usePagination ? 'LIMIT ' . $perPage . ' OFFSET ' . (($page - 1) * $perPage) : ''; -$stmt = $pdo->prepare(" - SELECT d.*, CONCAT(u.first_name, ' ', u.last_name) AS user_name - FROM datadb d - LEFT JOIN auth_users u ON d.user_id = u.id - {$baseWhere} - ORDER BY d.excelrow ASC, d.iddatadb ASC - {$limitClause} -"); -$stmt->execute($baseParams); -$importedData = $stmt->fetchAll(PDO::FETCH_ASSOC); - -$insertedIds = array_column($importedData, 'iddatadb'); - -// Fetch custom field details -$manualDetails = []; -if (!empty($insertedIds)) { - $placeholders = implode(',', array_fill(0, count($insertedIds), '?')); - $stmt = $pdo->prepare(" - SELECT d.id AS detail_id, d.id AS datadb_id, d.mapping_id, d.field_value, - m.field_id, m.field_label, m.data_type, m.is_required, m.manual_default - FROM import_data_details d - JOIN template_mapping m ON d.mapping_id = m.id - WHERE d.id IN ({$placeholders}) - "); - $stmt->execute($insertedIds); - $manualDetails = $stmt->fetchAll(PDO::FETCH_ASSOC); -} - -// Recupera il mapping globale per mostrare gli slug leggibili -$stmt = $pdo->query("SELECT mysql_column_name, user_friendly_slug FROM column_mapping"); -$slugMapping = []; -foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) { - $slugMapping[$row['mysql_column_name']] = $row['user_friendly_slug']; -} -// --- FIX LABELS ONLY (do not change keys) --- -$slugMapping['AnagraficaCertestObject'] = 'Object'; -$slugMapping['AnagraficaCertestService'] = 'Service'; - -// ---------------- FIXED FIELDS (from template_fixed_mapping) ---------------- -$fixedStmt = $pdo->prepare(" - SELECT id, fixed_field_key, is_manual, data_type, is_required, default_value, is_visible_import - FROM template_fixed_mapping - WHERE template_id = ? AND is_visible_import = 1 - ORDER BY id -"); -$fixedStmt->execute([$template_id]); -$fixedFieldsRaw = $fixedStmt->fetchAll(PDO::FETCH_ASSOC); - -// Ordine desiderato: Cliente Responsabile prima, poi gli altri, ConsegnaRichiesta prima delle 3 speciali -$desiredOrder = [ - 'ClienteResponsabile', - 'ClienteFornitore', - 'ClienteAnalisi', - 'AnagraficaCertestObject', - 'AnagraficaCertestService', - 'MoltiplicatorePrezzo', - 'ConsegnaRichiesta', - // se ci sono altri campi fixed li mettiamo dopo -]; - -// ClienteFornitore rendered as standalone column, exclude from fixed fields -$excludeFromFixed = ['ClienteFornitore']; - -$fixedFields = []; -$tempMap = []; -foreach ($fixedFieldsRaw as $f) { - if (in_array($f['fixed_field_key'], $excludeFromFixed, true)) continue; - $tempMap[$f['fixed_field_key']] = $f; -} - -foreach ($desiredOrder as $key) { - if (isset($tempMap[$key])) { - $fixedFields[] = $tempMap[$key]; - unset($tempMap[$key]); - } -} - -// Aggiunge eventuali campi fixed non elencati sopra (alla fine) -foreach ($tempMap as $f) { - $fixedFields[] = $f; -} - -// Maps logical fixed_field_key → real datadb column name (mirrors JS fixedAliasMap) -$fixedAliasMap = [ - 'ClienteResponsabile' => 'cliente_responsabile_id', - 'ClienteFornitore' => 'cliente_fornitore_id', - 'ClienteAnalisi' => 'clienteAnalisi', - 'MoltiplicatorePrezzo' => 'moltiplicatore_prezzo_id', - 'AnagraficaCertestObject' => 'anagrafica_certest_object_id', - 'AnagraficaCertestService' => 'anagrafica_certest_service_id', - 'ConsegnaRichiesta' => 'consegna_richiesta', -]; - -// helper default (DATE can use 'today' if you already use it elsewhere) -function fixedDefaultValue(array $f): string -{ - $v = $f['default_value'] ?? ''; - if ($f['data_type'] === 'DATE' && $v === 'today') return date('Y-m-d'); - return (string)$v; -} - -// ──────────────────────────────────────────────────────────── -// Build gridData (JSON) — all row data for client-side rendering -// ──────────────────────────────────────────────────────────── - -$gridDataArray = []; -foreach ($importedData as $index => $row) { - $rowObj = [ - 'iddatadb' => (int)$row['iddatadb'], - 'status' => $row['status'] ?? 'i', - 'idclient' => $row['idclient'] ?? $default_idclient, - 'cliente_fornitore_id' => $row['cliente_fornitore_id'] ?? null, - 'tested_component' => $row['tested_component'] ?? '', - 'commessaweb' => $row['commessaweb'] ?? null, - 'user_name' => $row['user_name'] ?? '', - 'importreferencecode' => $row['importreferencecode'] ?? '', - 'filename_import' => $row['filename_import'] ?? '', - 'importdate' => $row['importdate'] ?? '', - ]; - // Fixed fields - $rowObj['fixedFields'] = []; - foreach ($fixedFields as $f) { - $key = $f['fixed_field_key']; - $dbCol = $fixedAliasMap[$key] ?? $key; - $val = $row[$dbCol] ?? ''; - if ($val === '' || $val === null) { - $val = fixedDefaultValue($f); - } - $rowObj['fixedFields'][$key] = (string)$val; - } - - // Detail fields (from import_data_details) - $rowObj['details'] = []; - $rowDetails = array_filter($manualDetails, fn($d) => $d['datadb_id'] == $row['iddatadb']); - foreach ($rowDetails as $d) { - $rowObj['details'][(string)$d['mapping_id']] = $d['field_value'] ?? ''; - } - - // Main field values - foreach ($mainFieldMappings as $mainMapping) { - $mainDetail = array_filter($rowDetails, fn($d) => $d['mapping_id'] == $mainMapping['id']); - $mainDetail = reset($mainDetail) ?: ['field_value' => $mainMapping['manual_default'] ?? '']; - - $rowObj['details'][(string)$mainMapping['id']] = - $mainDetail['field_value'] ?? $mainMapping['manual_default'] ?? ''; - } - - // Backward compatibility: first main value - if ($mainFieldMapping) { - $rowObj['mainFieldValue'] = $rowObj['details'][(string)$mainFieldMapping['id']] ?? ''; - } - - $rowObj['_dirty'] = false; - $gridDataArray[] = $rowObj; -} - -// Build columns in display order -$gridColumns = []; - -// 1. Main fields first, immediately after buttons -foreach ($allMappings as $mapping) { - if ( - (int)$mapping['is_visible_import'] === 1 - && (string)$mapping['main_field'] === '1' - && trim((string)$mapping['field_label']) !== 'Tested Component:' - ) { - $gridColumns[] = [ - 'type' => 'main_field', - 'key' => (string)$mapping['id'], - 'label' => $mapping['field_label'], - 'dataType' => $mapping['data_type'], - 'isManual' => (bool)$mapping['is_manual'], - 'isRequired' => (bool)$mapping['is_required'], - 'fieldId' => $mapping['field_id'] ?? null, - 'fieldOrder' => (int)($mapping['field_order'] ?? 9999), - 'manualDefault' => $mapping['manual_default'] ?? '', - 'autoValue' => $mapping['auto_value'] ?? 'none', - 'width' => 150, - ]; - } -} - -// 2. Status -$gridColumns[] = ['type' => 'status', 'key' => 'status', 'label' => 'Status', 'width' => 150, 'editable' => false]; - -// 3. Client -$gridColumns[] = ['type' => 'idclient', 'key' => 'idclient', 'label' => 'Client', 'width' => 300]; - -// 4. Cliente Fornitore -$gridColumns[] = ['type' => 'cliente_fornitore_id', 'key' => 'cliente_fornitore_id', 'label' => $slugMapping['ClienteFornitore'] ?? 'ClienteFornitore', 'width' => 300]; - -// 5. Other custom fields in schema order -foreach ($allMappings as $mapping) { - if ( - (int)$mapping['is_visible_import'] === 1 - && (string)$mapping['main_field'] !== '1' - && trim((string)$mapping['field_label']) !== 'Tested Component:' - ) { - $isMainField = ((string)$mapping['main_field'] === '1'); - - $gridColumns[] = [ - 'type' => $isMainField ? 'main_field' : 'detail', - 'key' => (string)$mapping['id'], - 'label' => $mapping['field_label'], - 'dataType' => $mapping['data_type'], - 'isManual' => (bool)$mapping['is_manual'], - 'isRequired' => (bool)$mapping['is_required'], - 'fieldId' => $mapping['field_id'] ?? null, - 'fieldOrder' => (int)($mapping['field_order'] ?? 9999), - 'manualDefault' => $mapping['manual_default'] ?? '', - 'autoValue' => $mapping['auto_value'] ?? 'none', - 'width' => 150, - ]; - } -} -// 7. Tested Component -$gridColumns[] = ['type' => 'tested_component', 'key' => 'tested_component', 'label' => 'Tested Component', 'width' => 150]; - -// 8. AWB -$gridColumns[] = ['type' => 'awb', 'key' => 'awb', 'label' => 'AWB Number', 'width' => 200]; - -// 9. Tracking -$gridColumns[] = ['type' => 'tracking', 'key' => 'tracking', 'label' => 'Tracking Info', 'width' => 250]; - -// 10. Fixed fields (with importreferencecode/filename/importdate after ConsegnaRichiesta) -foreach ($fixedFields as $f) { - $key = $f['fixed_field_key']; - $label = $slugMapping[$key] ?? $key; - $gridColumns[] = [ - 'type' => 'fixed', - 'key' => $key, - 'label' => $label, - 'dataType' => $f['data_type'], - 'isRequired' => (bool)$f['is_required'], - 'width' => 180, - ]; - if ($key === 'ConsegnaRichiesta') { - $gridColumns[] = ['type' => 'static', 'key' => 'importreferencecode', 'label' => $slugMapping['importreferencecode'] ?? 'Import Reference Code', 'width' => 150, 'editable' => false]; - $gridColumns[] = ['type' => 'static', 'key' => 'filename_import', 'label' => $slugMapping['filename_import'] ?? 'File', 'width' => 150, 'editable' => false]; - $gridColumns[] = ['type' => 'static', 'key' => 'importdate', 'label' => $slugMapping['importdate'] ?? 'Import Date', 'width' => 150, 'editable' => false]; - } -} - -$gridMeta = [ - 'templateId' => $template_id, - 'defaultIdclient' => $default_idclient, - 'isAdmin' => Auth::user()->hasRole('Admin'), - 'userId' => $user_id, - 'fixedAliasMap' => $fixedAliasMap, - 'slugMapping' => $slugMapping, - 'timeLabels' => $timeLabels, - 'columns' => $gridColumns, - 'mainFieldMapping' => $mainFieldMapping, - 'mainFieldMappings' => $mainFieldMappings, - 'totalRows' => count($gridDataArray), -]; - -?> - - - - - - - - - - - - - - - - Edit Imported Data - <?= htmlspecialchars($titlewebsite, ENT_QUOTES, 'UTF-8'); ?> - - - -
    - - -
    -
    -
    - Imported (i) - To LIMS (l) - - - - - - ( records) - - -
    - - -
    -
    - Rows per page -
    - $lim])); - ?> - - -
    -
    - 1): ?> -
    - of - - - 1): ?> - 1 - 2): ?>... - - - - ... - - - - -
    - -
    - -
    -
    -
    - - - - -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - - - - \ No newline at end of file diff --git a/public/userarea/imported_trf/1-20250308144333-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250308144333-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250308144333-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250308144500-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250308144500-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250308144500-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250310151936-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250310151936-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250310151936-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250310152759-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250310152759-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250310152759-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250310153202-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250310153202-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250310153202-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250310153759-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250310153759-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250310153759-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250310154159-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250310154159-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250310154159-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250310155024-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250310155024-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250310155024-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250310155252-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250310155252-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250310155252-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250312084239-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250312084239-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250312084239-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250312102018-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250312102018-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250312102018-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250312103756-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250312103756-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250312103756-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250312104614-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250312104614-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250312104614-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250312114708-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250312114708-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250312114708-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250312135908-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250312135908-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250312135908-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250312152433-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250312152433-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250312152433-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250325111922-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250325111922-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250325111922-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250325141003-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250325141003-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250325141003-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250326091743-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250326091743-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250326091743-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250327152621-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250327152621-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250327152621-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250403142725-Trial Client 1 TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI - Copia.xlsx b/public/userarea/imported_trf/1-20250403142725-Trial Client 1 TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI - Copia.xlsx deleted file mode 100644 index 13738eed..00000000 Binary files a/public/userarea/imported_trf/1-20250403142725-Trial Client 1 TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI - Copia.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250403143010-Trial Client 1 TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI - Copia.xlsx b/public/userarea/imported_trf/1-20250403143010-Trial Client 1 TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI - Copia.xlsx deleted file mode 100644 index 6cc4b875..00000000 Binary files a/public/userarea/imported_trf/1-20250403143010-Trial Client 1 TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI - Copia.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250403145017-Trial Client 1 TRF.xlsx b/public/userarea/imported_trf/1-20250403145017-Trial Client 1 TRF.xlsx deleted file mode 100644 index 93a42443..00000000 Binary files a/public/userarea/imported_trf/1-20250403145017-Trial Client 1 TRF.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250508122102-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250508122102-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250508122102-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250508140041-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250508140041-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250508140041-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250508142256-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250508142256-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250508142256-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250509084710-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250509084710-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250509084710-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250509104938-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250509104938-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250509104938-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250509132735-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250509132735-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250509132735-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250528112950-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250528112950-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250528112950-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250529101051-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250529101051-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250529101051-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707114138-2524689.xlsx b/public/userarea/imported_trf/1-20250707114138-2524689.xlsx deleted file mode 100644 index da02f1e7..00000000 Binary files a/public/userarea/imported_trf/1-20250707114138-2524689.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707114518-2524689.xlsx b/public/userarea/imported_trf/1-20250707114518-2524689.xlsx deleted file mode 100644 index da02f1e7..00000000 Binary files a/public/userarea/imported_trf/1-20250707114518-2524689.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707114735-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707114735-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707114735-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707121416-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707121416-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707121416-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707121539-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707121539-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707121539-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707121609-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707121609-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707121609-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707121639-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707121639-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707121639-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707121841-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707121841-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707121841-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707122112-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707122112-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707122112-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707122156-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707122156-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707122156-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707140102-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707140102-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707140102-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707140215-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707140215-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707140215-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707140259-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707140259-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707140259-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707142049-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707142049-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707142049-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707142311-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707142311-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707142311-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707144214-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707144214-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707144214-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707144245-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707144245-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707144245-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707144304-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707144304-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707144304-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707144525-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707144525-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707144525-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707144848-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707144848-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707144848-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707144856-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707144856-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707144856-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707144945-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707144945-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707144945-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707145025-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707145025-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707145025-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707145047-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707145047-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707145047-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707145256-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707145256-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707145256-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707145538-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707145538-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707145538-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707145917-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707145917-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707145917-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707150006-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707150006-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707150006-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707150319-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707150319-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707150319-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707150420-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707150420-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707150420-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707163449-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707163449-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707163449-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707164312-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707164312-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707164312-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707165230-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707165230-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707165230-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250707165455-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250707165455-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250707165455-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250708090114-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250708090114-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250708090114-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250708090227-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250708090227-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250708090227-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250708102945-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250708102945-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250708102945-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250708103114-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250708103114-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250708103114-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250708110026-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250708110026-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250708110026-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250708111642-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250708111642-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250708111642-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250708140026-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250708140026-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250708140026-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250709083632-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250709083632-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250709083632-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250709083709-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250709083709-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250709083709-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250709084114-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250709084114-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250709084114-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250709084337-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250709084337-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250709084337-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250709084752-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250709084752-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250709084752-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250709085004-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250709085004-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/1-20250709085004-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250709085112-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250709085112-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index f76b4227..00000000 Binary files a/public/userarea/imported_trf/1-20250709085112-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250709090711-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250709090711-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index f76b4227..00000000 Binary files a/public/userarea/imported_trf/1-20250709090711-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250709104109-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250709104109-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index f76b4227..00000000 Binary files a/public/userarea/imported_trf/1-20250709104109-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250709124209-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250709124209-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index f76b4227..00000000 Binary files a/public/userarea/imported_trf/1-20250709124209-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250709124236-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250709124236-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index f76b4227..00000000 Binary files a/public/userarea/imported_trf/1-20250709124236-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250709141659-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250709141659-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index f76b4227..00000000 Binary files a/public/userarea/imported_trf/1-20250709141659-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250709145421-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250709145421-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index f76b4227..00000000 Binary files a/public/userarea/imported_trf/1-20250709145421-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250728151302-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250728151302-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index f76b4227..00000000 Binary files a/public/userarea/imported_trf/1-20250728151302-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250728155157-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250728155157-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index f76b4227..00000000 Binary files a/public/userarea/imported_trf/1-20250728155157-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250728172910-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250728172910-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index f76b4227..00000000 Binary files a/public/userarea/imported_trf/1-20250728172910-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250728183901-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250728183901-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index f76b4227..00000000 Binary files a/public/userarea/imported_trf/1-20250728183901-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250729085602-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/1-20250729085602-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index f76b4227..00000000 Binary files a/public/userarea/imported_trf/1-20250729085602-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/1-20250926110510-24_09_25 CERTEST AMM FORM CROMO PH (PL TX) SUODORE COMPOSIZIONE.xls b/public/userarea/imported_trf/1-20250926110510-24_09_25 CERTEST AMM FORM CROMO PH (PL TX) SUODORE COMPOSIZIONE.xls deleted file mode 100644 index 12c26ad4..00000000 Binary files a/public/userarea/imported_trf/1-20250926110510-24_09_25 CERTEST AMM FORM CROMO PH (PL TX) SUODORE COMPOSIZIONE.xls and /dev/null differ diff --git a/public/userarea/imported_trf/2-20250308134022-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/2-20250308134022-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/2-20250308134022-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/2-20250308134035-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/2-20250308134035-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/2-20250308134035-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/imported_trf/2-20250308134137-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx b/public/userarea/imported_trf/2-20250308134137-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/imported_trf/2-20250308134137-MONCLER TRF - 21.11.2024_CHIARA_SS25_2C PER PELLI.xlsx and /dev/null differ diff --git a/public/userarea/insert_template_xls.php b/public/userarea/insert_template_xls.php deleted file mode 100644 index 9217b257..00000000 --- a/public/userarea/insert_template_xls.php +++ /dev/null @@ -1,605 +0,0 @@ -getConnection(); - -$stmt = $pdo->prepare("SELECT * FROM routine"); -$stmt->execute(); -$routines = $stmt->fetchAll(PDO::FETCH_ASSOC); - -// Retrieve active API/JSON configurations -$stmt = $pdo->prepare(" - SELECT id, name, provider_code, api_type, php_class_name - FROM api_configurations - WHERE is_active = 1 - ORDER BY name ASC -"); -$stmt->execute(); -$apiConfigurations = $stmt->fetchAll(PDO::FETCH_ASSOC); -?> - - - - - - - - - - - - Insert Template <?= htmlspecialchars($titlewebsite, ENT_QUOTES, 'UTF-8'); ?> - - - -
    - - - -
    -
    - -
    -
    -
    Insert New Template
    -
    -
    -

    Fill the following form in order to create a new import template

    -

    Mandatory Fields

    -
      -
    • Template Name
    • -
    • Source Type
    • -
    • Schema and Client
    • -
    • Row Header, Column Header and Sheet Number only for XLS templates
    • -
    • API / JSON Configuration only for API / JSON templates
    • -
    -
    -
    - -
    -
    -
    -
    -
    Fill the form and click "Create Template"
    -
    -
    -
    - -
    -
    -
    - -
    - - -
    - -
    - - - Choose the source used by this template -
    - -
    - - -
    - -
    - - -
    - -
    - - - - Use 0 for the first sheet, 1 for the second sheet, 2 for the third sheet, and so on. - -
    - - - -
    - - -
    - - - -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - - - -
    - -
    - - - -
    - -
    - - - - -
    - -
    - - Cancel -
    -
    -
    -
    - -
    -
    - -
    - - -
    - - - - - \ No newline at end of file diff --git a/public/userarea/insert_template_xlsbck.php b/public/userarea/insert_template_xlsbck.php deleted file mode 100644 index d03cdb06..00000000 --- a/public/userarea/insert_template_xlsbck.php +++ /dev/null @@ -1,411 +0,0 @@ - - - - - - - - - - - - Insert XLS Template <?= htmlspecialchars($titlewebsite, ENT_QUOTES, 'UTF-8'); ?> - - - - -
    - - - - - - - -
    -
    -
    -
    -
    -
    -
    -
    -

    Total Orders

    -

    4805

    -

    +2.5% from last week

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -

    Total Revenue

    -

    $84,245

    -

    +5.4% from last week

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -

    Bounce Rate

    -

    34.6%

    -

    -4.5% from last week

    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -

    Total Customers

    -

    8.4K

    -

    +8.4% from last week

    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    Insert New XLS Template
    -
    -
    -
    -
    -
    -
    -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - - -
    - - -
    - -
    - -
    -
    -
    - -
    -
    - -
    - -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    - -
    - - Cancel -
    -
    -
    -
    - -
    -
    - - -
    - - - - - -
    - - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/userarea/json_example_bv.txt b/public/userarea/json_example_bv.txt deleted file mode 100644 index f62fe443..00000000 --- a/public/userarea/json_example_bv.txt +++ /dev/null @@ -1,13340 +0,0 @@ -{ - "@odata.context": "https:\/\/93.43.5.102\/limsapi\/api\/odata\/$metadata#Rapporto(CampioniDatiRapporto(AnalisiDatiRapporto(),CustomFieldsDatiRapporto()))\/$entity", - "IdRapporto": 515081, - "DataUltimaModifica": "2025-05-14T18:11:21.02+02:00", - "DaLeggere": false, - "CodiceRapporto": "2523026", - "Data": "2025-05-14T14:05:30+02:00", - "Versione": 0, - "DataStampa": "2025-05-14T14:11:00+02:00", - "Firmato": true, - "CampioniDatiRapporto": [ - { - "IdCampioneDatiRapporto": 651935, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed \/\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes\/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": null, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-13T00:00:00+02:00", - "CodiceCampione": "2523026.04", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28370998, - "CodiceParametro": null, - "CodiceCas": "84-74-2", - "ParametroRapporto": "Dibutyl Phthalate (DBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:22+02:00", - "FineAnalisi": "2025-05-12T10:33:16+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28370999, - "CodiceParametro": null, - "CodiceCas": "85-68-7", - "ParametroRapporto": "Butyl Benzil Phthalate (BBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:22+02:00", - "FineAnalisi": "2025-05-12T10:33:16+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28370994, - "CodiceParametro": null, - "CodiceCas": "117-81-7", - "ParametroRapporto": "Bis-2-Etylhexyl Phthalate (DEHP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:22+02:00", - "FineAnalisi": "2025-05-12T10:33:16+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28370996, - "CodiceParametro": null, - "CodiceCas": "117-84-0", - "ParametroRapporto": "Di-n-octyll Phthalate (DnOP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:22+02:00", - "FineAnalisi": "2025-05-12T10:33:16+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28371001, - "CodiceParametro": null, - "CodiceCas": "68515-49-1", - "ParametroRapporto": "Di-iso-decil Phthalate (DIDP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:22+02:00", - "FineAnalisi": "2025-05-12T10:33:16+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28371000, - "CodiceParametro": null, - "CodiceCas": "68515-48-0", - "ParametroRapporto": "Di-iso-nonyl Phthalate (DINP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:22+02:00", - "FineAnalisi": "2025-05-12T10:33:16+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28370995, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Sum of all Phthalates", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": null, - "LimiteQuantificazione": null, - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:22+02:00", - "FineAnalisi": "2025-05-12T10:33:16+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28371025, - "CodiceParametro": null, - "CodiceCas": "92-67-1", - "ParametroRapporto": "4-Aminobiphenyl", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "(1)", - "CommentoFisso": "If the use of this analytical method has detected 4-aminodiphenyl and\/or 2-naphtylamine, according to the current state of knowledge it cannot be unequivocally confirmed without additional information that azo colorants which release amines were used.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371007, - "CodiceParametro": null, - "CodiceCas": "92-87-5", - "ParametroRapporto": "Benzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371010, - "CodiceParametro": null, - "CodiceCas": "95-69-2", - "ParametroRapporto": "4-Chloro-o-toluidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371015, - "CodiceParametro": null, - "CodiceCas": "91-59-8", - "ParametroRapporto": "2-Naphthylamine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "(1)", - "CommentoFisso": "If the use of this analytical method has detected 4-aminodiphenyl and\/or 2-naphtylamine, according to the current state of knowledge it cannot be unequivocally confirmed without additional information that azo colorants which release amines were used.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371019, - "CodiceParametro": null, - "CodiceCas": "97-56-3", - "ParametroRapporto": "o-Aminoazotoluene ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371018, - "CodiceParametro": null, - "CodiceCas": "99-55-8", - "ParametroRapporto": "5-nitro-o-toluidine ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371023, - "CodiceParametro": null, - "CodiceCas": "106-47-8", - "ParametroRapporto": "4-Chloroaniline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371020, - "CodiceParametro": null, - "CodiceCas": "615-05-04", - "ParametroRapporto": "4-methoxy-m-phenylenediamine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371004, - "CodiceParametro": null, - "CodiceCas": "101-77-9", - "ParametroRapporto": "4,4'-methylenedianiline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "MDA", - "CommentoFisso": "\nIn case of polyurethane materials are used, e.g. PU foams and coatings and in prints, it cannot be ruled out that certain amines, e.g. 4,4'-methylene-dianiline (MDA, CAS number 101-77-9) are released from the PU component and not from a banned azo colorant.\r\nIn case of pigment prints care has to be taken that 4,4'-methylene-dianiline is not released from a source of banned azo colorants but from e.g. a chemical fixing agent.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371013, - "CodiceParametro": null, - "CodiceCas": "91-94-1", - "ParametroRapporto": "3,3'-Dichlorobenzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371016, - "CodiceParametro": null, - "CodiceCas": "119-90-4", - "ParametroRapporto": "3,3'-Dimethoxybenzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371027, - "CodiceParametro": null, - "CodiceCas": "119-93-7", - "ParametroRapporto": "3,3'-Dimethylbenzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371017, - "CodiceParametro": null, - "CodiceCas": "838-88-0", - "ParametroRapporto": "4,4'-methylenedi-o-toluidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371024, - "CodiceParametro": null, - "CodiceCas": "120-71-8", - "ParametroRapporto": "p-cresidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371005, - "CodiceParametro": null, - "CodiceCas": "101-14-4", - "ParametroRapporto": "4-4'-Methylene-bis-(2-chloroaniline)", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371008, - "CodiceParametro": null, - "CodiceCas": "101-80-4", - "ParametroRapporto": "4-4'-Oxydianiline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371009, - "CodiceParametro": null, - "CodiceCas": "139-65-1", - "ParametroRapporto": "4-4'-Thiodianiline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371022, - "CodiceParametro": null, - "CodiceCas": "95-53-4", - "ParametroRapporto": "o-Toluidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371021, - "CodiceParametro": null, - "CodiceCas": "95-80-7", - "ParametroRapporto": "4-methyl-m-phenylenediamine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "TDA", - "CommentoFisso": "In case of polyurethane materials are used, e.g. PU foams and coatings and in prints, it cannot be ruled out that certain amines, e.g. 2,4-toluen-diamine (TDA, CAS 95-80-7) are released from the PU component and not from a banned azo colorant.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371026, - "CodiceParametro": null, - "CodiceCas": "137-17-7", - "ParametroRapporto": "2,4,5-Trimethylaniline ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371014, - "CodiceParametro": null, - "CodiceCas": "90-04-0", - "ParametroRapporto": "o-anisidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371012, - "CodiceParametro": null, - "CodiceCas": "60-09-3", - "ParametroRapporto": "4-Aminoazobenzene", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371011, - "CodiceParametro": null, - "CodiceCas": "95-68-1", - "ParametroRapporto": "2,4- Xylidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371006, - "CodiceParametro": null, - "CodiceCas": "87-62-7", - "ParametroRapporto": "2,6-Xylidine ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28370992, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Dioctyl tin (DOT)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of Organotin Compounds in footwear materials\r\n- Test Method:\r\nISO\/TS 16179: 2012", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,2", - "LimiteQuantificazione": "0,2", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:21+02:00", - "FineAnalisi": "2025-05-13T10:19:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16179_Organotin compounds (DOT)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28371002, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Dimethylfumarate (DMFu)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Test method to quantitatively determine Dimethylfumarate (DMFu) in footwear materials\r\n- Test Method:\r\nISO 16186: 2021", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,05", - "LimiteQuantificazione": "0,05", - "LimitiDiLegge": "<=0,1", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-12T10:07:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16186_DMFu_Da caricare su 2 MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=0,1" - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27925192, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27925193, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27925194, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27925195, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27925196, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27925197, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27925198, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27925199, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27925200, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27925201, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27925205, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27925206, - "Titolo": "Tested Component:", - "Valore": "MIX LACES + TEXTILE TONGUE", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27925207, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27925208, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27925209, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27925210, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27925211, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27925224, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27925225, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27925235, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27925236, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27925237, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27925238, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27925239, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27925240, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27925244, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27925245, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - }, - { - "IdCampioneDatiRapporto": 651912, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed \/\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes\/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": 810, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-12T00:00:00+02:00", - "CodiceCampione": "2523026.01", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28332143, - "CodiceParametro": null, - "CodiceCas": "84-74-2", - "ParametroRapporto": "Dibutyl Phthalate (DBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:16+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332144, - "CodiceParametro": null, - "CodiceCas": "85-68-7", - "ParametroRapporto": "Butyl Benzil Phthalate (BBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:16+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332139, - "CodiceParametro": null, - "CodiceCas": "117-81-7", - "ParametroRapporto": "Bis-2-Etylhexyl Phthalate (DEHP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:16+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332141, - "CodiceParametro": null, - "CodiceCas": "117-84-0", - "ParametroRapporto": "Di-n-octyll Phthalate (DnOP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:16+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332146, - "CodiceParametro": null, - "CodiceCas": "68515-49-1", - "ParametroRapporto": "Di-iso-decil Phthalate (DIDP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:16+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332145, - "CodiceParametro": null, - "CodiceCas": "68515-48-0", - "ParametroRapporto": "Di-iso-nonyl Phthalate (DINP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:16+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332140, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Sum of all Phthalates", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": null, - "LimiteQuantificazione": null, - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:16+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332147, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Dioctyl tin (DOT)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of Organotin Compounds in footwear materials\r\n- Test Method:\r\nISO\/TS 16179: 2012", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,2", - "LimiteQuantificazione": "0,2", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:15+02:00", - "FineAnalisi": "2025-05-12T10:42:41+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16179_Organotin compounds (DOT)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27924018, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27924019, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27924020, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27924021, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27924022, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27924023, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27924024, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27924025, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27924026, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27924027, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27924031, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27924032, - "Titolo": "Tested Component:", - "Valore": "MIX OF GREEN PART OF SOLE, WHITE PART OF SOLE AND WHITE OUTERSOLE", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27924033, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27924034, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27924035, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27924036, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27924037, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27924050, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27924051, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27924061, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27924062, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27924063, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27924064, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27924065, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27924066, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27924070, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27924071, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - }, - { - "IdCampioneDatiRapporto": 651931, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed \/\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes\/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": null, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-12T00:00:00+02:00", - "CodiceCampione": "2523026.02", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28332665, - "CodiceParametro": null, - "CodiceCas": "84-74-2", - "ParametroRapporto": "Dibutyl Phthalate (DBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:18+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332666, - "CodiceParametro": null, - "CodiceCas": "85-68-7", - "ParametroRapporto": "Butyl Benzil Phthalate (BBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:18+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332661, - "CodiceParametro": null, - "CodiceCas": "117-81-7", - "ParametroRapporto": "Bis-2-Etylhexyl Phthalate (DEHP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:18+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332663, - "CodiceParametro": null, - "CodiceCas": "117-84-0", - "ParametroRapporto": "Di-n-octyll Phthalate (DnOP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:18+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332668, - "CodiceParametro": null, - "CodiceCas": "68515-49-1", - "ParametroRapporto": "Di-iso-decil Phthalate (DIDP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:18+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332667, - "CodiceParametro": null, - "CodiceCas": "68515-48-0", - "ParametroRapporto": "Di-iso-nonyl Phthalate (DINP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:18+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332662, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Sum of all Phthalates", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": null, - "LimiteQuantificazione": null, - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:18+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332669, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Dioctyl tin (DOT)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of Organotin Compounds in footwear materials\r\n- Test Method:\r\nISO\/TS 16179: 2012", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,2", - "LimiteQuantificazione": "0,2", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:17+02:00", - "FineAnalisi": "2025-05-12T10:44:02+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16179_Organotin compounds (DOT)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27924985, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27924986, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27924987, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27924988, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27924989, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27924990, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27924991, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27924992, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27924993, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27924994, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27924998, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27924999, - "Titolo": "Tested Component:", - "Valore": "MIX OF BLACK PART OF SOLE, CARBON FIBER AND WHITE BACK PART OF SOLE", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27925000, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27925001, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27925002, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27925003, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27925004, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27925017, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27925018, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27925028, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27925029, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27925030, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27925031, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27925032, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27925033, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27925037, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27925038, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - }, - { - "IdCampioneDatiRapporto": 651933, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed \/\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes\/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": null, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-13T00:00:00+02:00", - "CodiceCampione": "2523026.03", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28332698, - "CodiceParametro": null, - "CodiceCas": "84-74-2", - "ParametroRapporto": "Dibutyl Phthalate (DBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:19+02:00", - "FineAnalisi": "2025-05-12T08:17:39+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332699, - "CodiceParametro": null, - "CodiceCas": "85-68-7", - "ParametroRapporto": "Butyl Benzil Phthalate (BBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:19+02:00", - "FineAnalisi": "2025-05-12T08:17:39+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332697, - "CodiceParametro": null, - "CodiceCas": "117-81-7", - "ParametroRapporto": "Bis-2-Etylhexyl Phthalate (DEHP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:19+02:00", - "FineAnalisi": "2025-05-12T08:17:39+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332703, - "CodiceParametro": null, - "CodiceCas": "117-84-0", - "ParametroRapporto": "Di-n-octyll Phthalate (DnOP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:19+02:00", - "FineAnalisi": "2025-05-12T08:17:39+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332701, - "CodiceParametro": null, - "CodiceCas": "68515-49-1", - "ParametroRapporto": "Di-iso-decil Phthalate (DIDP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:19+02:00", - "FineAnalisi": "2025-05-12T08:17:39+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332700, - "CodiceParametro": null, - "CodiceCas": "68515-48-0", - "ParametroRapporto": "Di-iso-nonyl Phthalate (DINP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:19+02:00", - "FineAnalisi": "2025-05-12T08:17:39+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332702, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Sum of all Phthalates", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": null, - "LimiteQuantificazione": null, - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:19+02:00", - "FineAnalisi": "2025-05-12T08:17:39+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332738, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Dioctyl tin (DOT)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of Organotin Compounds in footwear materials\r\n- Test Method:\r\nISO\/TS 16179: 2012", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,2", - "LimiteQuantificazione": "0,2", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:19+02:00", - "FineAnalisi": "2025-05-13T10:36:34+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16179_Organotin compounds (DOT)_Da caricare su singolo componente_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27925096, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27925097, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27925098, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27925099, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27925100, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27925101, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27925102, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27925103, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27925104, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27925105, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27925109, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27925110, - "Titolo": "Tested Component:", - "Valore": "YELLOW VIBRAM LOGO ON SOLE", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27925111, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27925112, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27925113, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27925114, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27925115, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27925128, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27925129, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27925139, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27925140, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27925141, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27925142, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27925143, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27925144, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27925148, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27925149, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - }, - { - "IdCampioneDatiRapporto": 651939, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed \/\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes\/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": null, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-13T00:00:00+02:00", - "CodiceCampione": "2523026.06", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28333037, - "CodiceParametro": null, - "CodiceCas": "92-67-1", - "ParametroRapporto": "4-Aminobiphenyl", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "(1)", - "CommentoFisso": "If the use of this analytical method has detected 4-aminodiphenyl and\/or 2-naphtylamine, according to the current state of knowledge it cannot be unequivocally confirmed without additional information that azo colorants which release amines were used.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333032, - "CodiceParametro": null, - "CodiceCas": "92-87-5", - "ParametroRapporto": "Benzidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333031, - "CodiceParametro": null, - "CodiceCas": "95-69-2", - "ParametroRapporto": "4-Chloro-o-toluidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333053, - "CodiceParametro": null, - "CodiceCas": "91-59-8", - "ParametroRapporto": "2-Naphthylamine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "(1)", - "CommentoFisso": "If the use of this analytical method has detected 4-aminodiphenyl and\/or 2-naphtylamine, according to the current state of knowledge it cannot be unequivocally confirmed without additional information that azo colorants which release amines were used.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333033, - "CodiceParametro": null, - "CodiceCas": "97-56-3", - "ParametroRapporto": "o-Aminoazotoluene ", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333051, - "CodiceParametro": null, - "CodiceCas": "99-55-8", - "ParametroRapporto": "5-nitro-o-toluidine ", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333035, - "CodiceParametro": null, - "CodiceCas": "106-47-8", - "ParametroRapporto": "4-Chloroaniline", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333030, - "CodiceParametro": null, - "CodiceCas": "615-05-04", - "ParametroRapporto": "4-methoxy-m-phenylenediamine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333040, - "CodiceParametro": null, - "CodiceCas": "101-77-9", - "ParametroRapporto": "4,4'-methylenedianiline", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "MDA", - "CommentoFisso": "\nIn case of polyurethane materials are used, e.g. PU foams and coatings and in prints, it cannot be ruled out that certain amines, e.g. 4,4'-methylene-dianiline (MDA, CAS number 101-77-9) are released from the PU component and not from a banned azo colorant.\r\nIn case of pigment prints care has to be taken that 4,4'-methylene-dianiline is not released from a source of banned azo colorants but from e.g. a chemical fixing agent.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333048, - "CodiceParametro": null, - "CodiceCas": "91-94-1", - "ParametroRapporto": "3,3'-Dichlorobenzidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333046, - "CodiceParametro": null, - "CodiceCas": "119-90-4", - "ParametroRapporto": "3,3'-Dimethoxybenzidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333039, - "CodiceParametro": null, - "CodiceCas": "119-93-7", - "ParametroRapporto": "3,3'-Dimethylbenzidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333047, - "CodiceParametro": null, - "CodiceCas": "838-88-0", - "ParametroRapporto": "4,4'-methylenedi-o-toluidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333036, - "CodiceParametro": null, - "CodiceCas": "120-71-8", - "ParametroRapporto": "p-cresidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333042, - "CodiceParametro": null, - "CodiceCas": "101-14-4", - "ParametroRapporto": "4-4'-Methylene-bis-(2-chloroaniline)", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333043, - "CodiceParametro": null, - "CodiceCas": "101-80-4", - "ParametroRapporto": "4-4'-Oxydianiline", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333044, - "CodiceParametro": null, - "CodiceCas": "139-65-1", - "ParametroRapporto": "4-4'-Thiodianiline", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333034, - "CodiceParametro": null, - "CodiceCas": "95-53-4", - "ParametroRapporto": "o-Toluidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333049, - "CodiceParametro": null, - "CodiceCas": "95-80-7", - "ParametroRapporto": "4-methyl-m-phenylenediamine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "TDA", - "CommentoFisso": "In case of polyurethane materials are used, e.g. PU foams and coatings and in prints, it cannot be ruled out that certain amines, e.g. 2,4-toluen-diamine (TDA, CAS 95-80-7) are released from the PU component and not from a banned azo colorant.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333029, - "CodiceParametro": null, - "CodiceCas": "137-17-7", - "ParametroRapporto": "2,4,5-Trimethylaniline ", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333052, - "CodiceParametro": null, - "CodiceCas": "90-04-0", - "ParametroRapporto": "o-anisidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333045, - "CodiceParametro": null, - "CodiceCas": "60-09-3", - "ParametroRapporto": "4-Aminoazobenzene", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333038, - "CodiceParametro": null, - "CodiceCas": "95-68-1", - "ParametroRapporto": "2,4- Xylidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333050, - "CodiceParametro": null, - "CodiceCas": "87-62-7", - "ParametroRapporto": "2,6-Xylidine ", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333058, - "CodiceParametro": null, - "CodiceCas": "84-74-2", - "ParametroRapporto": "Dibutyl Phthalate (DBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:29+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333059, - "CodiceParametro": null, - "CodiceCas": "85-68-7", - "ParametroRapporto": "Butyl Benzil Phthalate (BBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:29+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333054, - "CodiceParametro": null, - "CodiceCas": "117-81-7", - "ParametroRapporto": "Bis-2-Etylhexyl Phthalate (DEHP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:29+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333056, - "CodiceParametro": null, - "CodiceCas": "117-84-0", - "ParametroRapporto": "Di-n-octyll Phthalate (DnOP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:29+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333061, - "CodiceParametro": null, - "CodiceCas": "68515-49-1", - "ParametroRapporto": "Di-iso-decil Phthalate (DIDP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:29+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333060, - "CodiceParametro": null, - "CodiceCas": "68515-48-0", - "ParametroRapporto": "Di-iso-nonyl Phthalate (DINP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:29+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333055, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Sum of all Phthalates", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": null, - "LimiteQuantificazione": null, - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:29+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333062, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Dioctyl tin (DOT)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of Organotin Compounds in footwear materials\r\n- Test Method:\r\nISO\/TS 16179: 2012", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,2", - "LimiteQuantificazione": "0,2", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:26+02:00", - "FineAnalisi": "2025-05-12T14:07:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16179_Organotin compounds (DOT)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333064, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Dimethylfumarate (DMFu)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Test method to quantitatively determine Dimethylfumarate (DMFu) in footwear materials\r\n- Test Method:\r\nISO 16186: 2021", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,05", - "LimiteQuantificazione": "0,05", - "LimitiDiLegge": "<=0,1", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:28+02:00", - "FineAnalisi": "2025-05-12T10:07:20+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16186_DMFu_Da caricare su 2 MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=0,1" - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27925414, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27925415, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27925416, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27925417, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27925418, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27925419, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27925420, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27925421, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27925422, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27925423, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27925427, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27925428, - "Titolo": "Tested Component:", - "Valore": "MIX OF GREEN SUEDE UPPER AND GREEN TOE CAP", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27925429, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27925430, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27925431, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27925432, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27925433, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27925446, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27925447, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27925457, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27925458, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27925459, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27925460, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27925461, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27925462, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27925466, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27925467, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - }, - { - "IdCampioneDatiRapporto": 651942, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed \/\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes\/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": null, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-14T00:00:00+02:00", - "CodiceCampione": "2523026.07", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28333247, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Chromium [Cr VI]", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Chemical determination of chromium (VI) content in leather - Part 2: Chromatographic method\r\n-Test Method:\r\nISO 17075-2: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Inorg", - "Reparto": "Analytical_Inorganic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "3,0", - "LimiteQuantificazione": "3,0", - "LimitiDiLegge": "<=3", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "CrVI", - "CommentoFisso": "The official method establishes the quantification limit for Chromium VI at 3 mg \/ kg. At this concentration, the uncertainty of the method was estimated to be 50%.\r\nFor this reason, any number below 3 mg\/kg could be affected by an uncertainty equal to or greater than that estimated at the quantification limit declared by the method.\r\nThe laboratory has performed the calculation of the recovery, as required by the method, and makes available the result if required.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:29+02:00", - "FineAnalisi": "2025-05-14T12:29:33+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17075-2_Cr VI_Da caricare su singolo componente_Prezzo compreso", - "LimitiDiLeggeStampa": "<=3" - }, - { - "IdAnalisiDatoRapporto": 28333248, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Volatile Matter", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "%", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of volatile matter\r\n- Test Method:\r\nISO 4684: 2005", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Inorg", - "Reparto": "Analytical_Inorganic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "9,5", - "RisultatoPositivo": true, - "MinimoRilevabile": "0,5", - "LimiteQuantificazione": "0,5", - "LimitiDiLegge": null, - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "\u00b10,3", - "IncertezzaStampaNumerica": 0.3, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "4684", - "CommentoFisso": "The execution of the test is needed to express some chemical tests. This parameter is not limited by legislations and Pass or Fail is indicated only when a requirement is showed in Customer's documents (ref to Requirements section Denomination).", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:30+02:00", - "FineAnalisi": "2025-05-13T09:58:58+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "9,5", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17075-2_Cr VI_Da caricare su singolo componente_Prezzo compreso", - "LimitiDiLeggeStampa": null - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27925569, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27925570, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27925571, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27925572, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27925573, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27925574, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27925575, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27925576, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27925577, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27925578, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27925582, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27925583, - "Titolo": "Tested Component:", - "Valore": "GREEN SUEDE UPPER", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27925584, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27925585, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27925586, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27925587, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27925588, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27925601, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27925602, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27925612, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27925613, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27925614, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27925615, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27925616, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27925617, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27925621, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27925622, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - }, - { - "IdCampioneDatiRapporto": 651938, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed \/\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes\/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": null, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-13T00:00:00+02:00", - "CodiceCampione": "2523026.05", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28332958, - "CodiceParametro": null, - "CodiceCas": "92-67-1", - "ParametroRapporto": "4-Aminobiphenyl", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "(1)", - "CommentoFisso": "If the use of this analytical method has detected 4-aminodiphenyl and\/or 2-naphtylamine, according to the current state of knowledge it cannot be unequivocally confirmed without additional information that azo colorants which release amines were used.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332940, - "CodiceParametro": null, - "CodiceCas": "92-87-5", - "ParametroRapporto": "Benzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332943, - "CodiceParametro": null, - "CodiceCas": "95-69-2", - "ParametroRapporto": "4-Chloro-o-toluidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332948, - "CodiceParametro": null, - "CodiceCas": "91-59-8", - "ParametroRapporto": "2-Naphthylamine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "(1)", - "CommentoFisso": "If the use of this analytical method has detected 4-aminodiphenyl and\/or 2-naphtylamine, according to the current state of knowledge it cannot be unequivocally confirmed without additional information that azo colorants which release amines were used.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332952, - "CodiceParametro": null, - "CodiceCas": "97-56-3", - "ParametroRapporto": "o-Aminoazotoluene ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332951, - "CodiceParametro": null, - "CodiceCas": "99-55-8", - "ParametroRapporto": "5-nitro-o-toluidine ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332956, - "CodiceParametro": null, - "CodiceCas": "106-47-8", - "ParametroRapporto": "4-Chloroaniline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332953, - "CodiceParametro": null, - "CodiceCas": "615-05-04", - "ParametroRapporto": "4-methoxy-m-phenylenediamine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332937, - "CodiceParametro": null, - "CodiceCas": "101-77-9", - "ParametroRapporto": "4,4'-methylenedianiline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "MDA", - "CommentoFisso": "\nIn case of polyurethane materials are used, e.g. PU foams and coatings and in prints, it cannot be ruled out that certain amines, e.g. 4,4'-methylene-dianiline (MDA, CAS number 101-77-9) are released from the PU component and not from a banned azo colorant.\r\nIn case of pigment prints care has to be taken that 4,4'-methylene-dianiline is not released from a source of banned azo colorants but from e.g. a chemical fixing agent.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332946, - "CodiceParametro": null, - "CodiceCas": "91-94-1", - "ParametroRapporto": "3,3'-Dichlorobenzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332949, - "CodiceParametro": null, - "CodiceCas": "119-90-4", - "ParametroRapporto": "3,3'-Dimethoxybenzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332960, - "CodiceParametro": null, - "CodiceCas": "119-93-7", - "ParametroRapporto": "3,3'-Dimethylbenzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332950, - "CodiceParametro": null, - "CodiceCas": "838-88-0", - "ParametroRapporto": "4,4'-methylenedi-o-toluidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332957, - "CodiceParametro": null, - "CodiceCas": "120-71-8", - "ParametroRapporto": "p-cresidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332938, - "CodiceParametro": null, - "CodiceCas": "101-14-4", - "ParametroRapporto": "4-4'-Methylene-bis-(2-chloroaniline)", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332941, - "CodiceParametro": null, - "CodiceCas": "101-80-4", - "ParametroRapporto": "4-4'-Oxydianiline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332942, - "CodiceParametro": null, - "CodiceCas": "139-65-1", - "ParametroRapporto": "4-4'-Thiodianiline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332955, - "CodiceParametro": null, - "CodiceCas": "95-53-4", - "ParametroRapporto": "o-Toluidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332954, - "CodiceParametro": null, - "CodiceCas": "95-80-7", - "ParametroRapporto": "4-methyl-m-phenylenediamine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "TDA", - "CommentoFisso": "In case of polyurethane materials are used, e.g. PU foams and coatings and in prints, it cannot be ruled out that certain amines, e.g. 2,4-toluen-diamine (TDA, CAS 95-80-7) are released from the PU component and not from a banned azo colorant.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332959, - "CodiceParametro": null, - "CodiceCas": "137-17-7", - "ParametroRapporto": "2,4,5-Trimethylaniline ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332947, - "CodiceParametro": null, - "CodiceCas": "90-04-0", - "ParametroRapporto": "o-anisidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332945, - "CodiceParametro": null, - "CodiceCas": "60-09-3", - "ParametroRapporto": "4-Aminoazobenzene", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332944, - "CodiceParametro": null, - "CodiceCas": "95-68-1", - "ParametroRapporto": "2,4- Xylidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332939, - "CodiceParametro": null, - "CodiceCas": "87-62-7", - "ParametroRapporto": "2,6-Xylidine ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332966, - "CodiceParametro": null, - "CodiceCas": "84-74-2", - "ParametroRapporto": "Dibutyl Phthalate (DBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:25+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332967, - "CodiceParametro": null, - "CodiceCas": "85-68-7", - "ParametroRapporto": "Butyl Benzil Phthalate (BBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:25+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332962, - "CodiceParametro": null, - "CodiceCas": "117-81-7", - "ParametroRapporto": "Bis-2-Etylhexyl Phthalate (DEHP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:25+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332964, - "CodiceParametro": null, - "CodiceCas": "117-84-0", - "ParametroRapporto": "Di-n-octyll Phthalate (DnOP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:25+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332969, - "CodiceParametro": null, - "CodiceCas": "68515-49-1", - "ParametroRapporto": "Di-iso-decil Phthalate (DIDP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:25+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332968, - "CodiceParametro": null, - "CodiceCas": "68515-48-0", - "ParametroRapporto": "Di-iso-nonyl Phthalate (DINP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:25+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332963, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Sum of all Phthalates", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": null, - "LimiteQuantificazione": null, - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:25+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332970, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Dioctyl tin (DOT)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of Organotin Compounds in footwear materials\r\n- Test Method:\r\nISO\/TS 16179: 2012", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,2", - "LimiteQuantificazione": "0,2", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:24+02:00", - "FineAnalisi": "2025-05-13T12:43:52+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16179_Organotin compounds (DOT)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332972, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Dimethylfumarate (DMFu)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Test method to quantitatively determine Dimethylfumarate (DMFu) in footwear materials\r\n- Test Method:\r\nISO 16186: 2021", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,05", - "LimiteQuantificazione": "0,05", - "LimitiDiLegge": "<=0,1", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:25+02:00", - "FineAnalisi": "2025-05-12T10:07:19+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16186_DMFu_Da caricare su 2 MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=0,1" - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27925360, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27925361, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27925362, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27925363, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27925364, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27925365, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27925366, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27925367, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27925368, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27925369, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27925373, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27925374, - "Titolo": "Tested Component:", - "Valore": "MIX OF GREEN LATERAL BAND AND GREEN UPPER BAND", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27925375, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27925376, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27925377, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27925378, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27925379, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27925392, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27925393, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27925403, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27925404, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27925405, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27925406, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27925407, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27925408, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27925412, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27925413, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - }, - { - "IdCampioneDatiRapporto": 651943, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed \/\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes\/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": null, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-14T00:00:00+02:00", - "CodiceCampione": "2523026.08", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28333249, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Chromium [Cr VI]", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Chemical determination of chromium (VI) content in leather - Part 2: Chromatographic method\r\n-Test Method:\r\nISO 17075-2: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Inorg", - "Reparto": "Analytical_Inorganic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "3,0", - "LimiteQuantificazione": "3,0", - "LimitiDiLegge": "<=3", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "CrVI", - "CommentoFisso": "The official method establishes the quantification limit for Chromium VI at 3 mg \/ kg. At this concentration, the uncertainty of the method was estimated to be 50%.\r\nFor this reason, any number below 3 mg\/kg could be affected by an uncertainty equal to or greater than that estimated at the quantification limit declared by the method.\r\nThe laboratory has performed the calculation of the recovery, as required by the method, and makes available the result if required.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:31+02:00", - "FineAnalisi": "2025-05-14T12:29:29+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17075-2_Cr VI_Da caricare su singolo componente_Prezzo compreso", - "LimitiDiLeggeStampa": "<=3" - }, - { - "IdAnalisiDatoRapporto": 28333250, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Volatile Matter", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "%", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of volatile matter\r\n- Test Method:\r\nISO 4684: 2005", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Inorg", - "Reparto": "Analytical_Inorganic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "9,7", - "RisultatoPositivo": true, - "MinimoRilevabile": "0,5", - "LimiteQuantificazione": "0,5", - "LimitiDiLegge": null, - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "\u00b10,3", - "IncertezzaStampaNumerica": 0.3, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "4684", - "CommentoFisso": "The execution of the test is needed to express some chemical tests. This parameter is not limited by legislations and Pass or Fail is indicated only when a requirement is showed in Customer's documents (ref to Requirements section Denomination).", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:32+02:00", - "FineAnalisi": "2025-05-13T09:58:58+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "9,7", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17075-2_Cr VI_Da caricare su singolo componente_Prezzo compreso", - "LimitiDiLeggeStampa": null - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27925623, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27925624, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27925625, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27925626, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27925627, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27925628, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27925629, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27925630, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27925631, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27925632, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27925636, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27925637, - "Titolo": "Tested Component:", - "Valore": "GREEN TOE CAP", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27925638, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27925639, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27925640, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27925641, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27925642, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27925655, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27925656, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27925666, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27925667, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27925668, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27925669, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27925670, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27925671, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27925675, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27925676, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - }, - { - "IdCampioneDatiRapporto": 651945, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed \/\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes\/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": null, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-13T00:00:00+02:00", - "CodiceCampione": "2523026.09", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28333072, - "CodiceParametro": null, - "CodiceCas": "84-74-2", - "ParametroRapporto": "Dibutyl Phthalate (DBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:33+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333073, - "CodiceParametro": null, - "CodiceCas": "85-68-7", - "ParametroRapporto": "Butyl Benzil Phthalate (BBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:33+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333068, - "CodiceParametro": null, - "CodiceCas": "117-81-7", - "ParametroRapporto": "Bis-2-Etylhexyl Phthalate (DEHP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:33+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333070, - "CodiceParametro": null, - "CodiceCas": "117-84-0", - "ParametroRapporto": "Di-n-octyll Phthalate (DnOP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:33+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333075, - "CodiceParametro": null, - "CodiceCas": "68515-49-1", - "ParametroRapporto": "Di-iso-decil Phthalate (DIDP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:33+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333074, - "CodiceParametro": null, - "CodiceCas": "68515-48-0", - "ParametroRapporto": "Di-iso-nonyl Phthalate (DINP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:33+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333069, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Sum of all Phthalates", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": null, - "LimiteQuantificazione": null, - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:33+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333076, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Dioctyl tin (DOT)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of Organotin Compounds in footwear materials\r\n- Test Method:\r\nISO\/TS 16179: 2012", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,2", - "LimiteQuantificazione": "0,2", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:32+02:00", - "FineAnalisi": "2025-05-13T10:36:34+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16179_Organotin compounds (DOT)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27925736, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27925737, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27925738, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27925739, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27925740, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27925741, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27925742, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27925743, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27925744, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27925745, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27925749, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27925750, - "Titolo": "Tested Component:", - "Valore": "MIX OF GREEN EYELET AND PLASTIC END OF LACES", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27925751, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27925752, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27925753, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27925754, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27925755, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27925768, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27925769, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27925779, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27925780, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27925781, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27925782, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27925783, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27925784, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27925788, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27925789, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - }, - { - "IdCampioneDatiRapporto": 651946, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed \/\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes\/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": null, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-13T00:00:00+02:00", - "CodiceCampione": "2523026.10", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28333099, - "CodiceParametro": null, - "CodiceCas": "92-67-1", - "ParametroRapporto": "4-Aminobiphenyl", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "(1)", - "CommentoFisso": "If the use of this analytical method has detected 4-aminodiphenyl and\/or 2-naphtylamine, according to the current state of knowledge it cannot be unequivocally confirmed without additional information that azo colorants which release amines were used.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333081, - "CodiceParametro": null, - "CodiceCas": "92-87-5", - "ParametroRapporto": "Benzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333084, - "CodiceParametro": null, - "CodiceCas": "95-69-2", - "ParametroRapporto": "4-Chloro-o-toluidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333089, - "CodiceParametro": null, - "CodiceCas": "91-59-8", - "ParametroRapporto": "2-Naphthylamine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "(1)", - "CommentoFisso": "If the use of this analytical method has detected 4-aminodiphenyl and\/or 2-naphtylamine, according to the current state of knowledge it cannot be unequivocally confirmed without additional information that azo colorants which release amines were used.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333093, - "CodiceParametro": null, - "CodiceCas": "97-56-3", - "ParametroRapporto": "o-Aminoazotoluene ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333092, - "CodiceParametro": null, - "CodiceCas": "99-55-8", - "ParametroRapporto": "5-nitro-o-toluidine ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333097, - "CodiceParametro": null, - "CodiceCas": "106-47-8", - "ParametroRapporto": "4-Chloroaniline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333094, - "CodiceParametro": null, - "CodiceCas": "615-05-04", - "ParametroRapporto": "4-methoxy-m-phenylenediamine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333078, - "CodiceParametro": null, - "CodiceCas": "101-77-9", - "ParametroRapporto": "4,4'-methylenedianiline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "MDA", - "CommentoFisso": "\nIn case of polyurethane materials are used, e.g. PU foams and coatings and in prints, it cannot be ruled out that certain amines, e.g. 4,4'-methylene-dianiline (MDA, CAS number 101-77-9) are released from the PU component and not from a banned azo colorant.\r\nIn case of pigment prints care has to be taken that 4,4'-methylene-dianiline is not released from a source of banned azo colorants but from e.g. a chemical fixing agent.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333087, - "CodiceParametro": null, - "CodiceCas": "91-94-1", - "ParametroRapporto": "3,3'-Dichlorobenzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333090, - "CodiceParametro": null, - "CodiceCas": "119-90-4", - "ParametroRapporto": "3,3'-Dimethoxybenzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333101, - "CodiceParametro": null, - "CodiceCas": "119-93-7", - "ParametroRapporto": "3,3'-Dimethylbenzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333091, - "CodiceParametro": null, - "CodiceCas": "838-88-0", - "ParametroRapporto": "4,4'-methylenedi-o-toluidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333098, - "CodiceParametro": null, - "CodiceCas": "120-71-8", - "ParametroRapporto": "p-cresidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333079, - "CodiceParametro": null, - "CodiceCas": "101-14-4", - "ParametroRapporto": "4-4'-Methylene-bis-(2-chloroaniline)", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333082, - "CodiceParametro": null, - "CodiceCas": "101-80-4", - "ParametroRapporto": "4-4'-Oxydianiline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333083, - "CodiceParametro": null, - "CodiceCas": "139-65-1", - "ParametroRapporto": "4-4'-Thiodianiline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333096, - "CodiceParametro": null, - "CodiceCas": "95-53-4", - "ParametroRapporto": "o-Toluidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333095, - "CodiceParametro": null, - "CodiceCas": "95-80-7", - "ParametroRapporto": "4-methyl-m-phenylenediamine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "TDA", - "CommentoFisso": "In case of polyurethane materials are used, e.g. PU foams and coatings and in prints, it cannot be ruled out that certain amines, e.g. 2,4-toluen-diamine (TDA, CAS 95-80-7) are released from the PU component and not from a banned azo colorant.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333100, - "CodiceParametro": null, - "CodiceCas": "137-17-7", - "ParametroRapporto": "2,4,5-Trimethylaniline ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333088, - "CodiceParametro": null, - "CodiceCas": "90-04-0", - "ParametroRapporto": "o-anisidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333086, - "CodiceParametro": null, - "CodiceCas": "60-09-3", - "ParametroRapporto": "4-Aminoazobenzene", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333085, - "CodiceParametro": null, - "CodiceCas": "95-68-1", - "ParametroRapporto": "2,4- Xylidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333080, - "CodiceParametro": null, - "CodiceCas": "87-62-7", - "ParametroRapporto": "2,6-Xylidine ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27925790, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27925791, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27925792, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27925793, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27925794, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27925795, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27925796, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27925797, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27925798, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27925799, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27925803, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27925804, - "Titolo": "Tested Component:", - "Valore": "MIX OF GREEN LOOP OF LACES AND BACK LITLLE FLAG LABEL", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27925805, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27925806, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27925807, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27925808, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27925809, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27925822, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27925823, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27925833, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27925834, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27925835, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27925836, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27925837, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27925838, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27925842, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27925843, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - }, - { - "IdCampioneDatiRapporto": 651947, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed \/\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes\/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": null, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-13T00:00:00+02:00", - "CodiceCampione": "2523026.11", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28333118, - "CodiceParametro": null, - "CodiceCas": "92-67-1", - "ParametroRapporto": "4-Aminobiphenyl", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "(1)", - "CommentoFisso": "If the use of this analytical method has detected 4-aminodiphenyl and\/or 2-naphtylamine, according to the current state of knowledge it cannot be unequivocally confirmed without additional information that azo colorants which release amines were used.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333113, - "CodiceParametro": null, - "CodiceCas": "92-87-5", - "ParametroRapporto": "Benzidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333112, - "CodiceParametro": null, - "CodiceCas": "95-69-2", - "ParametroRapporto": "4-Chloro-o-toluidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333134, - "CodiceParametro": null, - "CodiceCas": "91-59-8", - "ParametroRapporto": "2-Naphthylamine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "(1)", - "CommentoFisso": "If the use of this analytical method has detected 4-aminodiphenyl and\/or 2-naphtylamine, according to the current state of knowledge it cannot be unequivocally confirmed without additional information that azo colorants which release amines were used.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333114, - "CodiceParametro": null, - "CodiceCas": "97-56-3", - "ParametroRapporto": "o-Aminoazotoluene ", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333132, - "CodiceParametro": null, - "CodiceCas": "99-55-8", - "ParametroRapporto": "5-nitro-o-toluidine ", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333116, - "CodiceParametro": null, - "CodiceCas": "106-47-8", - "ParametroRapporto": "4-Chloroaniline", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333111, - "CodiceParametro": null, - "CodiceCas": "615-05-04", - "ParametroRapporto": "4-methoxy-m-phenylenediamine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333121, - "CodiceParametro": null, - "CodiceCas": "101-77-9", - "ParametroRapporto": "4,4'-methylenedianiline", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "MDA", - "CommentoFisso": "\nIn case of polyurethane materials are used, e.g. PU foams and coatings and in prints, it cannot be ruled out that certain amines, e.g. 4,4'-methylene-dianiline (MDA, CAS number 101-77-9) are released from the PU component and not from a banned azo colorant.\r\nIn case of pigment prints care has to be taken that 4,4'-methylene-dianiline is not released from a source of banned azo colorants but from e.g. a chemical fixing agent.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333129, - "CodiceParametro": null, - "CodiceCas": "91-94-1", - "ParametroRapporto": "3,3'-Dichlorobenzidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333127, - "CodiceParametro": null, - "CodiceCas": "119-90-4", - "ParametroRapporto": "3,3'-Dimethoxybenzidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333120, - "CodiceParametro": null, - "CodiceCas": "119-93-7", - "ParametroRapporto": "3,3'-Dimethylbenzidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333128, - "CodiceParametro": null, - "CodiceCas": "838-88-0", - "ParametroRapporto": "4,4'-methylenedi-o-toluidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333117, - "CodiceParametro": null, - "CodiceCas": "120-71-8", - "ParametroRapporto": "p-cresidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333123, - "CodiceParametro": null, - "CodiceCas": "101-14-4", - "ParametroRapporto": "4-4'-Methylene-bis-(2-chloroaniline)", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333124, - "CodiceParametro": null, - "CodiceCas": "101-80-4", - "ParametroRapporto": "4-4'-Oxydianiline", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333125, - "CodiceParametro": null, - "CodiceCas": "139-65-1", - "ParametroRapporto": "4-4'-Thiodianiline", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333115, - "CodiceParametro": null, - "CodiceCas": "95-53-4", - "ParametroRapporto": "o-Toluidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333130, - "CodiceParametro": null, - "CodiceCas": "95-80-7", - "ParametroRapporto": "4-methyl-m-phenylenediamine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "TDA", - "CommentoFisso": "In case of polyurethane materials are used, e.g. PU foams and coatings and in prints, it cannot be ruled out that certain amines, e.g. 2,4-toluen-diamine (TDA, CAS 95-80-7) are released from the PU component and not from a banned azo colorant.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333110, - "CodiceParametro": null, - "CodiceCas": "137-17-7", - "ParametroRapporto": "2,4,5-Trimethylaniline ", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333133, - "CodiceParametro": null, - "CodiceCas": "90-04-0", - "ParametroRapporto": "o-anisidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333126, - "CodiceParametro": null, - "CodiceCas": "60-09-3", - "ParametroRapporto": "4-Aminoazobenzene", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333119, - "CodiceParametro": null, - "CodiceCas": "95-68-1", - "ParametroRapporto": "2,4- Xylidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333131, - "CodiceParametro": null, - "CodiceCas": "87-62-7", - "ParametroRapporto": "2,6-Xylidine ", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333171, - "CodiceParametro": null, - "CodiceCas": "84-74-2", - "ParametroRapporto": "Dibutyl Phthalate (DBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:36+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333172, - "CodiceParametro": null, - "CodiceCas": "85-68-7", - "ParametroRapporto": "Butyl Benzil Phthalate (BBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:36+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333167, - "CodiceParametro": null, - "CodiceCas": "117-81-7", - "ParametroRapporto": "Bis-2-Etylhexyl Phthalate (DEHP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:36+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333169, - "CodiceParametro": null, - "CodiceCas": "117-84-0", - "ParametroRapporto": "Di-n-octyll Phthalate (DnOP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:36+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333174, - "CodiceParametro": null, - "CodiceCas": "68515-49-1", - "ParametroRapporto": "Di-iso-decil Phthalate (DIDP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:36+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333173, - "CodiceParametro": null, - "CodiceCas": "68515-48-0", - "ParametroRapporto": "Di-iso-nonyl Phthalate (DINP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:36+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333168, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Sum of all Phthalates", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": null, - "LimiteQuantificazione": null, - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:36+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333175, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Dioctyl tin (DOT)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of Organotin Compounds in footwear materials\r\n- Test Method:\r\nISO\/TS 16179: 2012", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,2", - "LimiteQuantificazione": "0,2", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:35+02:00", - "FineAnalisi": "2025-05-13T10:36:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16179_Organotin compounds (DOT)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333177, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Dimethylfumarate (DMFu)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Test method to quantitatively determine Dimethylfumarate (DMFu) in footwear materials\r\n- Test Method:\r\nISO 16186: 2021", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,05", - "LimiteQuantificazione": "0,05", - "LimitiDiLegge": "<=0,1", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:35+02:00", - "FineAnalisi": "2025-05-12T10:07:20+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16186_DMFu_Da caricare su 2 MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=0,1" - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27925844, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27925845, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27925846, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27925847, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27925848, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27925849, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27925850, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27925851, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27925852, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27925853, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27925857, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27925858, - "Titolo": "Tested Component:", - "Valore": "MIX OF INSOLE AND LINING", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27925859, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27925860, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27925861, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27925862, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27925863, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27925876, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27925877, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27925887, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27925888, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27925889, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27925890, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27925891, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27925892, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27925896, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27925897, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - }, - { - "IdCampioneDatiRapporto": 652180, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed \/\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes\/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": null, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-12T00:00:00+02:00", - "CodiceCampione": "2523026.12", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28343776, - "CodiceParametro": null, - "CodiceCas": "84-74-2", - "ParametroRapporto": "Dibutyl Phthalate (DBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-12T10:33:19+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28343777, - "CodiceParametro": null, - "CodiceCas": "85-68-7", - "ParametroRapporto": "Butyl Benzil Phthalate (BBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-12T10:33:19+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28343775, - "CodiceParametro": null, - "CodiceCas": "117-81-7", - "ParametroRapporto": "Bis-2-Etylhexyl Phthalate (DEHP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-12T10:33:19+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28343781, - "CodiceParametro": null, - "CodiceCas": "117-84-0", - "ParametroRapporto": "Di-n-octyll Phthalate (DnOP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-12T10:33:19+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28343779, - "CodiceParametro": null, - "CodiceCas": "68515-49-1", - "ParametroRapporto": "Di-iso-decil Phthalate (DIDP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-12T10:33:19+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28343778, - "CodiceParametro": null, - "CodiceCas": "68515-48-0", - "ParametroRapporto": "Di-iso-nonyl Phthalate (DINP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-12T10:33:19+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28343780, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Sum of all Phthalates", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg\/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": null, - "LimiteQuantificazione": null, - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-12T10:33:19+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27938052, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27938053, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27938054, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27938055, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27938056, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27938057, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27938058, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27938059, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27938060, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27938061, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27938065, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27938066, - "Titolo": "Tested Component:", - "Valore": "N\u00b0 38 INNER LABEL", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27938067, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27938068, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27938069, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27938070, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27938071, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27938084, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27938085, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27938095, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27938096, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27938097, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27938098, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27938099, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27938100, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27938104, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27938105, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - } - ] -} \ No newline at end of file diff --git a/public/userarea/load_active_templates.php b/public/userarea/load_active_templates.php deleted file mode 100644 index 29680c9b..00000000 --- a/public/userarea/load_active_templates.php +++ /dev/null @@ -1,30 +0,0 @@ - false, "data" => [], "message" => ""]; - -try { - $db = DBHandlerSelect::getInstance(); - $pdo = $db->getConnection(); - - if (!$pdo) { - throw new Exception('Database connection failed.'); - } - - // Recupera solo i template attivi - $stmt = $pdo->query("SELECT id, button_label, button_size, button_bg_color, button_text_color, source_type -FROM excel_templates -WHERE status = 'active' -ORDER BY button_label ASC"); - $templates = $stmt->fetchAll(PDO::FETCH_ASSOC); - - $response["success"] = true; - $response["data"] = $templates; -} catch (PDOException $e) { - $response["message"] = "Database error: " . $e->getMessage(); -} catch (Exception $e) { - $response["message"] = "Error: " . $e->getMessage(); -} - -echo json_encode($response); diff --git a/public/userarea/load_existing_mappings.php b/public/userarea/load_existing_mappings.php deleted file mode 100644 index 14d0bac3..00000000 --- a/public/userarea/load_existing_mappings.php +++ /dev/null @@ -1,60 +0,0 @@ - false, "message" => "Invalid template ID"]); - exit; -} - -$template_id = intval($_GET['template_id']); - -try { - $db = DBHandlerSelect::getInstance(); - $pdo = $db->getConnection(); - - // 1️⃣ Recuperiamo il nome della tabella target da `excel_templates` - $stmt = $pdo->prepare("SELECT target_table FROM excel_templates WHERE id = ?"); - $stmt->execute([$template_id]); - $template = $stmt->fetch(PDO::FETCH_ASSOC); - - if (!$template || empty($template['target_table'])) { - echo json_encode(["success" => false, "message" => "Template not found or missing target table"]); - exit; - } - - $target_table = $template['target_table']; - - // 2️⃣ Recuperiamo le associazioni già esistenti per il template_id - $stmt = $pdo->prepare("SELECT excel_column, mysql_column, headerexcel FROM excel_column_mappings WHERE template_id = ?"); - $stmt->execute([$template_id]); - $existing_mappings = $stmt->fetchAll(PDO::FETCH_ASSOC); - - // Creiamo gli array delle colonne già mappate - $mapped_xls_columns = array_column($existing_mappings, 'excel_column'); - $mapped_mysql_columns = array_column($existing_mappings, 'mysql_column'); // CORRETTO PER FILTRARE! - - // 3️⃣ Recuperiamo tutte le colonne disponibili nella tabella MySQL target - $stmt = $pdo->prepare("SHOW COLUMNS FROM `$target_table`"); - $stmt->execute(); - $table_columns = $stmt->fetchAll(PDO::FETCH_COLUMN); - - // 🔥 FIX: Rimuoviamo le colonne MySQL che sono già state mappate! - $remaining_mysql_columns = array_values(array_diff($table_columns, $mapped_mysql_columns)); - - // 4️⃣ Se abbiamo salvato gli header XLSX in `headerexcel`, li usiamo per calcolare le colonne XLSX non mappate - $headerexcel = !empty($existing_mappings) ? $existing_mappings[0]['headerexcel'] : ''; - $all_xls_columns = !empty($headerexcel) ? explode(',', $headerexcel) : []; - $remaining_xls_columns = array_values(array_diff($all_xls_columns, $mapped_xls_columns)); - - // 5️⃣ Invio dei dati al frontend - echo json_encode([ - "success" => true, - "mappings" => $existing_mappings, - "remaining_xls_columns" => $remaining_xls_columns, - "remaining_mysql_columns" => $remaining_mysql_columns // 🔥 ORA LE COLONNE MYSQL SONO FILTRATE! - ]); -} catch (PDOException $e) { - echo json_encode(["success" => false, "message" => "Database error: " . $e->getMessage()]); -} diff --git a/public/userarea/load_mappings.php b/public/userarea/load_mappings.php deleted file mode 100644 index 89fb8925..00000000 --- a/public/userarea/load_mappings.php +++ /dev/null @@ -1,23 +0,0 @@ -getConnection(); - -$template_id = $_GET['template_id'] ?? 0; - -try { - $stmt = $pdo->prepare("SELECT id, field_id, excel_column, is_manual, manual_default, field_label FROM template_mapping WHERE template_id = ?"); - $stmt->execute([$template_id]); - $mappings = $stmt->fetchAll(PDO::FETCH_ASSOC); - - echo json_encode(["success" => true, "mappings" => $mappings]); -} catch (Exception $e) { - echo json_encode(["success" => false, "message" => "Error: " . $e->getMessage()]); -} -exit; diff --git a/public/userarea/load_more_rows.php b/public/userarea/load_more_rows.php deleted file mode 100644 index f4125d6c..00000000 --- a/public/userarea/load_more_rows.php +++ /dev/null @@ -1,69 +0,0 @@ - false, 'message' => 'Parametri non validi']); - exit; -} - -// Connessione al database -$db = DBHandlerSelect::getInstance(); -$pdo = $db->getConnection(); - -// Recupera i dati -try { - $stmt = $pdo->prepare(" - SELECT d.*, CONCAT(u.first_name, ' ', u.last_name) AS user_name - FROM datadb d - LEFT JOIN auth_users u ON d.user_id = u.id - WHERE d.templateid = ? AND d.status = ? - LIMIT ? OFFSET ? - "); - $stmt->execute([$template_id, $status, $limit, $offset]); - $importedData = $stmt->fetchAll(PDO::FETCH_ASSOC); - - // Recupera i dettagli manuali - $insertedIds = array_column($importedData, 'iddatadb'); - $manualDetails = []; - if (!empty($insertedIds)) { - $placeholders = implode(',', array_fill(0, count($insertedIds), '?')); - $stmt = $pdo->prepare(" - SELECT d.id AS detail_id, d.id AS datadb_id, d.mapping_id, d.field_value, m.field_label, m.data_type, m.is_required, m.manual_default - FROM import_data_details d - JOIN template_mapping m ON d.mapping_id = m.id - WHERE d.id IN ($placeholders) - "); - $stmt->execute($insertedIds); - $manualDetails = $stmt->fetchAll(PDO::FETCH_ASSOC); - } - - // Prepara i dati per il JSON - $rows = []; - foreach ($importedData as $row) { - $rowData = [ - 'iddatadb' => $row['iddatadb'] ?? '', - 'importreferencecode' => $row['importreferencecode'] ?? '', - 'filename_import' => $row['filename_import'] ?? '', - 'status' => $row['status'] ?? '', - 'importdate' => $row['importdate'] ?? '', - 'details' => array_filter($manualDetails, fn($d) => $d['datadb_id'] == $row['iddatadb']) - ]; - $rows[] = $rowData; - } - - error_log("load_more_rows.php: Caricate " . count($rows) . " righe per template_id=$template_id, status=$status, offset=$offset"); - echo json_encode(['success' => true, 'rows' => $rows]); -} catch (Exception $e) { - error_log("Errore in load_more_rows.php: " . $e->getMessage()); - echo json_encode(['success' => false, 'message' => 'Errore nel caricamento: ' . $e->getMessage()]); -} -exit; diff --git a/public/userarea/load_parts.php b/public/userarea/load_parts.php deleted file mode 100644 index 59bef0b7..00000000 --- a/public/userarea/load_parts.php +++ /dev/null @@ -1,70 +0,0 @@ -getConnection(); - -$iddatadb = $_GET['iddatadb'] ?? null; - -if (!$iddatadb) { - echo json_encode(['success' => false, 'message' => 'ID TRF mancante']); - exit; -} - -try { - // 1) prendo templateid da datadb - $stmtTpl = $pdo->prepare("SELECT templateid FROM datadb WHERE iddatadb = :iddatadb LIMIT 1"); - $stmtTpl->execute([':iddatadb' => $iddatadb]); - $templateid = $stmtTpl->fetchColumn(); - - // 2) prendo (max 1) field_id visibile in parts - $extraFieldId = null; - if ($templateid) { - $stmtEF = $pdo->prepare("SELECT field_id FROM template_mapping WHERE template_id = :templateid AND is_visible_parts = 1 ORDER BY id ASC LIMIT 1"); - $stmtEF->execute([':templateid' => $templateid]); - $extraFieldId = $stmtEF->fetchColumn(); - if ($extraFieldId !== false) $extraFieldId = (int)$extraFieldId; - else $extraFieldId = null; - } - - // 3) carico parts + join su tabella figlia - if ($extraFieldId) { - $stmt = $pdo->prepare(" - SELECT - p.id, p.iddatadb, p.part_number, p.part_description, p.mix, p.idmatrice, p.note, p.dateexpiry, - cf.value_id AS extra_value_id, - cf.value_text AS extra_value_text - FROM identification_parts p - LEFT JOIN identification_parts_customfields cf - ON cf.part_id = p.id AND cf.field_id = :extraFieldId - WHERE p.iddatadb = :iddatadb - ORDER BY p.part_number ASC - "); - $stmt->execute([ - ':iddatadb' => $iddatadb, - ':extraFieldId' => $extraFieldId - ]); - } else { - $stmt = $pdo->prepare(" - SELECT id, iddatadb, part_number, part_description, mix, idmatrice, note, dateexpiry, - NULL AS extra_value_id, NULL AS extra_value_text - FROM identification_parts - WHERE iddatadb = :iddatadb - ORDER BY part_number ASC - "); - $stmt->execute([':iddatadb' => $iddatadb]); - } - - $parts = $stmt->fetchAll(PDO::FETCH_ASSOC); - - echo json_encode([ - 'success' => true, - 'parts' => $parts, - 'extra_field_id' => $extraFieldId, - 'debug_sql' => ($extraFieldId ? 'WITH_CF_JOIN' : 'NO_CF') - ]); -} catch (PDOException $e) { - echo json_encode(['success' => false, 'message' => 'Errore nel caricamento: ' . $e->getMessage()]); -} diff --git a/public/userarea/load_parts_quotation.php b/public/userarea/load_parts_quotation.php deleted file mode 100644 index a88782d0..00000000 --- a/public/userarea/load_parts_quotation.php +++ /dev/null @@ -1,23 +0,0 @@ -getConnection(); - -$idquotations = $_GET['idquotations'] ?? null; - -if (!$idquotations) { - echo json_encode(['success' => false, 'message' => 'ID quotations mancante']); - exit; -} - -try { - $stmt = $pdo->prepare("SELECT id, idquotations, part_number, part_description FROM identification_parts WHERE idquotations = :idquotations ORDER BY part_number ASC"); - $stmt->execute([':idquotations' => $idquotations]); - $parts = $stmt->fetchAll(); - - echo json_encode(['success' => true, 'parts' => $parts]); -} catch (PDOException $e) { - echo json_encode(['success' => false, 'message' => 'Errore nel caricamento: ' . $e->getMessage()]); -} diff --git a/public/userarea/load_photo.php b/public/userarea/load_photo.php deleted file mode 100644 index f3ac03bf..00000000 --- a/public/userarea/load_photo.php +++ /dev/null @@ -1,34 +0,0 @@ -getConnection(); - -$iddatadb = $_GET['iddatadb'] ?? null; - -if (!$iddatadb) { - echo json_encode(['success' => false, 'message' => 'ID TRF mancante']); - exit; -} - -try { - // Adjust the query to select all photo paths for the given iddatadb - $stmt = $pdo->prepare("SELECT file_path FROM datadb_photos WHERE iddatadb = :iddatadb"); - $stmt->execute([':iddatadb' => $iddatadb]); - $photos = $stmt->fetchAll(PDO::FETCH_ASSOC); - - if ($photos && count($photos) > 0) { - // Prepare an array of full file paths - $photoPaths = array_map(function($photo) { - return '../photostrf/' . $photo['file_path']; // Assuming the photos are stored in the "photostrf" folder - }, $photos); - - echo json_encode(['success' => true, 'photos' => $photoPaths]); // Return an array of photo paths - } else { - echo json_encode(['success' => false, 'message' => 'Nessuna foto trovata']); - } -} catch (PDOException $e) { - echo json_encode(['success' => false, 'message' => 'Errore nel caricamento: ' . $e->getMessage()]); -} diff --git a/public/userarea/load_photo_quotation.php b/public/userarea/load_photo_quotation.php deleted file mode 100644 index 2eab4cc4..00000000 --- a/public/userarea/load_photo_quotation.php +++ /dev/null @@ -1,33 +0,0 @@ -getConnection(); - -$idquotations = isset($_GET['idquotations']) ? intval($_GET['idquotations']) : null; - -if (!$idquotations) { - echo json_encode(['success' => false, 'message' => 'ID quotation mancante']); - exit; -} - -try { - // Seleziona le foto per il dato idquotations dalla tabella datadb_photos - $stmt = $pdo->prepare("SELECT id, file_path FROM datadb_photos WHERE idquotations = ?"); - $stmt->execute([$idquotations]); - $photos = $stmt->fetchAll(PDO::FETCH_ASSOC); - - if ($photos && count($photos) > 0) { - $photoPaths = array_map(function ($photo) { - return '../photostrf/' . $photo['file_path']; - }, $photos); - echo json_encode(['success' => true, 'photos' => $photoPaths]); - } else { - echo json_encode(['success' => false, 'message' => 'Nessuna foto trovata']); - } -} catch (PDOException $e) { - echo json_encode(['success' => false, 'message' => 'Errore nel caricamento: ' . $e->getMessage()]); -} diff --git a/public/userarea/load_quotations.php b/public/userarea/load_quotations.php deleted file mode 100644 index f850a758..00000000 --- a/public/userarea/load_quotations.php +++ /dev/null @@ -1,32 +0,0 @@ -getConnection(); - -// Recupera l'ID dell'utente loggato -$user_id = $iduserlogin ?? 1; - -if (!$user_id) { - echo json_encode(['success' => false, 'message' => "ID dell'utente autenticato mancante"]); - exit; -} - -try { - $stmt = $pdo->prepare( - "SELECT DISTINCT q.* - FROM quotations q - INNER JOIN identification_parts ip - ON ip.idquotations = q.id - AND ip.iddatadb IS NULL - WHERE q.iduser = :iduser" - ); - $stmt->execute([':iduser' => $user_id]); - $quotations = $stmt->fetchAll(PDO::FETCH_ASSOC); - - echo json_encode(['success' => true, 'quotations' => $quotations]); -} catch (PDOException $e) { - echo json_encode(['success' => false, 'message' => 'Errore nel caricamento delle quotations: ' . $e->getMessage()]); -} \ No newline at end of file diff --git a/public/userarea/load_table_columns.php b/public/userarea/load_table_columns.php deleted file mode 100644 index 73ad4835..00000000 --- a/public/userarea/load_table_columns.php +++ /dev/null @@ -1,35 +0,0 @@ - false, "columns" => []]; - -try { - if (!isset($_GET['table']) || empty($_GET['table'])) { - throw new Exception("Invalid table name."); - } - - $table = preg_replace('/[^a-zA-Z0-9_]/', '', $_GET['table']); // Sanitize table name - - $db = DBHandlerSelect::getInstance(); - $pdo = $db->getConnection(); - - // Retrieve table columns - $stmt = $pdo->query("SHOW COLUMNS FROM `$table`"); - $columns = $stmt->fetchAll(PDO::FETCH_COLUMN); - - if (!$columns) { - throw new Exception("No columns found in table."); - } - - $response["success"] = true; - $response["columns"] = $columns; -} catch (Exception $e) { - $response["message"] = $e->getMessage(); -} - -// Log per debugging -error_log(json_encode($response)); - -// Restituisce la risposta JSON -echo json_encode($response); diff --git a/public/userarea/load_templates.php b/public/userarea/load_templates.php deleted file mode 100644 index 0f281dba..00000000 --- a/public/userarea/load_templates.php +++ /dev/null @@ -1,39 +0,0 @@ -getConnection(); - - if (!$pdo) { - throw new Exception('Connessione al database non valida'); - } - - // Query per selezionare i template dalla tabella excel_templates - $stmt = $pdo->query("SELECT * FROM excel_templates ORDER BY created_at DESC"); - $templates = $stmt->fetchAll(PDO::FETCH_ASSOC); - - echo json_encode(['success' => true, 'data' => $templates]); -} catch (PDOException $e) { - http_response_code(500); - echo json_encode(['success' => false, 'message' => 'Errore PDO: ' . $e->getMessage()]); -} catch (Exception $e) { - http_response_code(500); - echo json_encode(['success' => false, 'message' => 'Errore interno: ' . $e->getMessage()]); -} finally { - ob_end_flush(); -} - -error_log('Errore in load_templates.php: ' . (isset($e) ? $e->getMessage() : 'Nessun errore catturato')); diff --git a/public/userarea/logs/api/commessa_563528_campioni_step6_1773234606.txt b/public/userarea/logs/api/commessa_563528_campioni_step6_1773234606.txt deleted file mode 100644 index e730aa2b..00000000 --- a/public/userarea/logs/api/commessa_563528_campioni_step6_1773234606.txt +++ /dev/null @@ -1,60 +0,0 @@ -CAMPIONE #0 -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/Campione' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "Commessa": 563528, - "Matrice": 3879, - "SottoMatrice": null, - "SchemaCustomField": 82, - "NoteWeb": "Parte AAA", - "ConsegnaRichiesta": "2026-01-30" -}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#Campione\/$entity", - "IdCampione": 734582, - "CodiceCampione": "10978", - "CodiceCampioneWeb": "10978", - "StatoCampione": "Nuovo", - "DataCreazioneWeb": "2026-03-11T14:10:02.1595894+01:00", - "RiferimentoWeb": "", - "ConsegnaRichiesta": "2026-01-30T00:00:00+01:00", - "DataAccettazioneLims": null, - "Riferimento": null, - "NoteWeb": "Parte AAA", - "GruppiRicercati": null -} - ---- -CAMPIONE #1 -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/Campione' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "Commessa": 563528, - "Matrice": 3879, - "SottoMatrice": null, - "SchemaCustomField": 82, - "NoteWeb": "PARE BBB", - "ConsegnaRichiesta": "2026-01-30" -}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#Campione\/$entity", - "IdCampione": 734583, - "CodiceCampione": "10979", - "CodiceCampioneWeb": "10979", - "StatoCampione": "Nuovo", - "DataCreazioneWeb": "2026-03-11T14:10:03.9972635+01:00", - "RiferimentoWeb": "", - "ConsegnaRichiesta": "2026-01-30T00:00:00+01:00", - "DataAccettazioneLims": null, - "Riferimento": null, - "NoteWeb": "PARE BBB", - "GruppiRicercati": null -} - ---- diff --git a/public/userarea/logs/api/commessa_563528_get_step10_1773234618.txt b/public/userarea/logs/api/commessa_563528_get_step10_1773234618.txt deleted file mode 100644 index d2319107..00000000 --- a/public/userarea/logs/api/commessa_563528_get_step10_1773234618.txt +++ /dev/null @@ -1,1314 +0,0 @@ -curl --location --request GET 'https://93.43.5.102/limsapi/api/odata/CommessaWeb(563528)?$expand=CommesseCustomFields($expand=CustomField)' \ ---header 'Authorization: Bearer ••••••' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CommessaWeb(CommesseCustomFields(CustomField()))\/$entity", - "IdCommessa": 563528, - "CodiceCommessa": "2612733", - "RiferimentoCertificato": "Analyses purchased by Moncler Compliance_CS\r\nSeason 20262\r\nSample Code: PE007J\r\nSample Description ART. PEACH\r\nColour Code: BLACK\r\nStyle Code: L209A4M00130M7280\r\nCollection: Oggi\r\nApplication: Calzatura (Tomaio)\r\nType of superficial treatment: Anilina\r\nSupplier: MONCLER\r\nFinal Customer: MONCLER\r\nTested Component: solocla\r\nNotes: BBB", - "StatoCommessaWeb": "Elaborata", - "DataCreazioneWeb": "2026-03-11T00:00:00+01:00", - "CodiceCommessaWeb": "26C0029", - "DataInviatoWeb": "2026-03-11T14:10:11.76+01:00", - "Richiedente": "Test Web Import", - "Descrizione": "TEST CommessaWeb", - "CommesseCustomFields": [ - { - "IdCommesseCustomFields": 23254249, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 33, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 259, - "TitoloTraduzione": "Sample Arrival Date:", - "Titolo": "Sample Arrival Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254250, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 34, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 348, - "TitoloTraduzione": "Sample Arrival Time:", - "Titolo": "Sample Arrival Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254251, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 28, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 362, - "TitoloTraduzione": "Tracciante materiale", - "Titolo": "Tracciante materiale", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254252, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 30, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 370, - "TitoloTraduzione": "DDT del", - "Titolo": "DDT del", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254253, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 31, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 371, - "TitoloTraduzione": "Mittente (se diverso da Committente)", - "Titolo": "Mittente (se diverso da Committente)", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254254, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 32, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 372, - "TitoloTraduzione": "Quantit\u00e0", - "Titolo": "Quantit\u00e0", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254260, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 42, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 169, - "TitoloTraduzione": "(*Restituzione Materiale Residuo:", - "Titolo": "(*Restituzione Materiale Residuo:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254261, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 43, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 170, - "TitoloTraduzione": "(*Originali:", - "Titolo": "(*Originali:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254262, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 44, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 171, - "TitoloTraduzione": "(*Corriere:", - "Titolo": "(*Corriere:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254264, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 49, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 236, - "TitoloTraduzione": "Consegna campione:", - "Titolo": "Consegna campione:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254265, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 45, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 241, - "TitoloTraduzione": "N. di Prove:", - "Titolo": "N. di Prove:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254266, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 46, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 244, - "TitoloTraduzione": "Accettatore:", - "Titolo": "Accettatore:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254267, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 50, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 246, - "TitoloTraduzione": "Lab outsourcing:", - "Titolo": "Lab outsourcing:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254268, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 54, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 252, - "TitoloTraduzione": "Service required:", - "Titolo": "Service required:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254228, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 1, - "Valore": "Moncler Compliance_CS", - "Duplica": false, - "CustomField": { - "IdCustomField": 1083, - "TitoloTraduzione": "MONCLER_Analisi Commissionate da: ", - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254229, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 2, - "Valore": "20262", - "Duplica": true, - "CustomField": { - "IdCustomField": 214, - "TitoloTraduzione": "Season", - "Titolo": "Season", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254230, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 4, - "Valore": "ART. PEACH", - "Duplica": false, - "CustomField": { - "IdCustomField": 210, - "TitoloTraduzione": "Sample Description ", - "Titolo": "Sample Description ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254269, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 53, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 253, - "TitoloTraduzione": "Sample return:", - "Titolo": "Sample return:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254270, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 51, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 254, - "TitoloTraduzione": "AWB: ", - "Titolo": "AWB: ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254271, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 52, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 255, - "TitoloTraduzione": "Data ricezione risultati test:", - "Titolo": "Data ricezione risultati test:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254272, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 47, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 258, - "TitoloTraduzione": "Login Date:", - "Titolo": "Login Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254273, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 35, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 260, - "TitoloTraduzione": "Sample Unlock Date:", - "Titolo": "Sample Unlock Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254274, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 55, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 261, - "TitoloTraduzione": "Tipologia report (solo per Cina)", - "Titolo": "Tipologia report (solo per Cina)", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254275, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 36, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 349, - "TitoloTraduzione": "Sample Unlock Time:", - "Titolo": "Sample Unlock Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254276, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 48, - "Valore": "", - "Duplica": false, - "CustomField": { - "IdCustomField": 350, - "TitoloTraduzione": "Login Time:", - "Titolo": "Login Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254277, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 38, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 360, - "TitoloTraduzione": "Presa in carico, Orario:", - "Titolo": "Presa in carico, Orario:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254278, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 37, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 361, - "TitoloTraduzione": "Presa in carico, Data:", - "Titolo": "Presa in carico, Data:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254279, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 58, - "Valore": "", - "Duplica": false, - "CustomField": { - "IdCustomField": 771, - "TitoloTraduzione": "RATING RSL MONCLER", - "Titolo": "RATING RSL MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254280, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 56, - "Valore": "", - "Duplica": false, - "CustomField": { - "IdCustomField": 772, - "TitoloTraduzione": "RATING CHINA MONCLER", - "Titolo": "RATING CHINA MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254281, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 57, - "Valore": "", - "Duplica": false, - "CustomField": { - "IdCustomField": 773, - "TitoloTraduzione": "RATING MANUAL MONCLER", - "Titolo": "RATING MANUAL MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254231, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 6, - "Valore": "L209A4M00130M7280", - "Duplica": true, - "CustomField": { - "IdCustomField": 263, - "TitoloTraduzione": "Style Code:", - "Titolo": "Style Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254232, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 5, - "Valore": "BLACK", - "Duplica": true, - "CustomField": { - "IdCustomField": 264, - "TitoloTraduzione": "Color Code:", - "Titolo": "Color Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254233, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 3, - "Valore": "PE007J", - "Duplica": true, - "CustomField": { - "IdCustomField": 467, - "TitoloTraduzione": "Sample Code:", - "Titolo": "Sample Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254234, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 17, - "Valore": "Calzatura (Tomaio)", - "Duplica": true, - "CustomField": { - "IdCustomField": 150, - "TitoloTraduzione": "Destinazione d'uso: ", - "Titolo": "Destinazione d'uso: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254235, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 18, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 156, - "TitoloTraduzione": "Tipologia di Materiale:", - "Titolo": "Tipologia di Materiale:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254236, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 16, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 161, - "TitoloTraduzione": "Categoria:", - "Titolo": "Categoria:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254237, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 15, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 167, - "TitoloTraduzione": "Capitolato di riferimento", - "Titolo": "Capitolato di riferimento", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254238, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 13, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 207, - "TitoloTraduzione": "Composition Claimed", - "Titolo": "Composition Claimed", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254239, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 9, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 468, - "TitoloTraduzione": "Style Description:", - "Titolo": "Style Description:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254240, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 14, - "Valore": "Oggi", - "Duplica": true, - "CustomField": { - "IdCustomField": 543, - "TitoloTraduzione": "Collezione:", - "Titolo": "Collezione:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254241, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 12, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 1014, - "TitoloTraduzione": "CDC", - "Titolo": "CDC", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254242, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 21, - "Valore": "MONCLER", - "Duplica": false, - "CustomField": { - "IdCustomField": 142, - "TitoloTraduzione": "Fornitore:", - "Titolo": "Fornitore:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254243, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 19, - "Valore": "Anilina", - "Duplica": true, - "CustomField": { - "IdCustomField": 146, - "TitoloTraduzione": "Tipologia di Trattamento Superficiale:", - "Titolo": "Tipologia di Trattamento Superficiale:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254244, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 20, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 147, - "TitoloTraduzione": "Tipologia di concia: ", - "Titolo": "Tipologia di concia: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254245, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 26, - "Valore": "BBB", - "Duplica": true, - "CustomField": { - "IdCustomField": 166, - "TitoloTraduzione": "Note:", - "Titolo": "Note:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254246, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 25, - "Valore": "solocla", - "Duplica": false, - "CustomField": { - "IdCustomField": 189, - "TitoloTraduzione": "Tested Component:", - "Titolo": "Tested Component:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254247, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 29, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 193, - "TitoloTraduzione": "DDT N. ", - "Titolo": "DDT N. ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254248, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 22, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 194, - "TitoloTraduzione": "Fabbricante:", - "Titolo": "Fabbricante:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254255, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 27, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 555, - "TitoloTraduzione": "Additional Info:", - "Titolo": "Additional Info:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254256, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 23, - "Valore": "MONCLER", - "Duplica": false, - "CustomField": { - "IdCustomField": 595, - "TitoloTraduzione": "Final Customer: ", - "Titolo": "Final Customer: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "MONCLER", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254257, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 24, - "Valore": "", - "Duplica": false, - "CustomField": { - "IdCustomField": 748, - "TitoloTraduzione": "Analisi Richieste:", - "Titolo": "Analisi Richieste:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254258, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 39, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 163, - "TitoloTraduzione": "Campionamento:", - "Titolo": "Campionamento:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254259, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 40, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 165, - "TitoloTraduzione": "Condizionamento prima e durante il Test: ", - "Titolo": "Condizionamento prima e durante il Test: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254263, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 41, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 181, - "TitoloTraduzione": "Preparazione del campione ai test chimici: ", - "Titolo": "Preparazione del campione ai test chimici: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - } - ] -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_563528_get_step7_1773234610.txt b/public/userarea/logs/api/commessa_563528_get_step7_1773234610.txt deleted file mode 100644 index 6084759b..00000000 --- a/public/userarea/logs/api/commessa_563528_get_step7_1773234610.txt +++ /dev/null @@ -1,1314 +0,0 @@ -curl --location --request GET 'https://93.43.5.102/limsapi/api/odata/CommessaWeb(563528)?$expand=CommesseCustomFields($expand=CustomField)' \ ---header 'Authorization: Bearer ••••••' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CommessaWeb(CommesseCustomFields(CustomField()))\/$entity", - "IdCommessa": 563528, - "CodiceCommessa": "26C0029", - "RiferimentoCertificato": null, - "StatoCommessaWeb": "Nuova", - "DataCreazioneWeb": "2026-03-11T14:10:00.897+01:00", - "CodiceCommessaWeb": "26C0029", - "DataInviatoWeb": null, - "Richiedente": "Test Web Import", - "Descrizione": "TEST CommessaWeb", - "CommesseCustomFields": [ - { - "IdCommesseCustomFields": 23254249, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 33, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 259, - "TitoloTraduzione": "Sample Arrival Date:", - "Titolo": "Sample Arrival Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254250, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 34, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 348, - "TitoloTraduzione": "Sample Arrival Time:", - "Titolo": "Sample Arrival Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254251, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 28, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 362, - "TitoloTraduzione": "Tracciante materiale", - "Titolo": "Tracciante materiale", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254252, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 30, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 370, - "TitoloTraduzione": "DDT del", - "Titolo": "DDT del", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254253, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 31, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 371, - "TitoloTraduzione": "Mittente (se diverso da Committente)", - "Titolo": "Mittente (se diverso da Committente)", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254254, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 32, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 372, - "TitoloTraduzione": "Quantit\u00e0", - "Titolo": "Quantit\u00e0", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254260, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 42, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 169, - "TitoloTraduzione": "(*Restituzione Materiale Residuo:", - "Titolo": "(*Restituzione Materiale Residuo:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254261, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 43, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 170, - "TitoloTraduzione": "(*Originali:", - "Titolo": "(*Originali:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254262, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 44, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 171, - "TitoloTraduzione": "(*Corriere:", - "Titolo": "(*Corriere:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254264, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 49, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 236, - "TitoloTraduzione": "Consegna campione:", - "Titolo": "Consegna campione:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254265, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 45, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 241, - "TitoloTraduzione": "N. di Prove:", - "Titolo": "N. di Prove:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254266, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 46, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 244, - "TitoloTraduzione": "Accettatore:", - "Titolo": "Accettatore:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254267, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 50, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 246, - "TitoloTraduzione": "Lab outsourcing:", - "Titolo": "Lab outsourcing:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254268, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 54, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 252, - "TitoloTraduzione": "Service required:", - "Titolo": "Service required:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254228, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 1, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 1083, - "TitoloTraduzione": "MONCLER_Analisi Commissionate da: ", - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254229, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 2, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 214, - "TitoloTraduzione": "Season", - "Titolo": "Season", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254230, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 4, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 210, - "TitoloTraduzione": "Sample Description ", - "Titolo": "Sample Description ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254269, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 53, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 253, - "TitoloTraduzione": "Sample return:", - "Titolo": "Sample return:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254270, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 51, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 254, - "TitoloTraduzione": "AWB: ", - "Titolo": "AWB: ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254271, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 52, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 255, - "TitoloTraduzione": "Data ricezione risultati test:", - "Titolo": "Data ricezione risultati test:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254272, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 47, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 258, - "TitoloTraduzione": "Login Date:", - "Titolo": "Login Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254273, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 35, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 260, - "TitoloTraduzione": "Sample Unlock Date:", - "Titolo": "Sample Unlock Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254274, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 55, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 261, - "TitoloTraduzione": "Tipologia report (solo per Cina)", - "Titolo": "Tipologia report (solo per Cina)", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254275, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 36, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 349, - "TitoloTraduzione": "Sample Unlock Time:", - "Titolo": "Sample Unlock Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254276, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 48, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 350, - "TitoloTraduzione": "Login Time:", - "Titolo": "Login Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254277, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 38, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 360, - "TitoloTraduzione": "Presa in carico, Orario:", - "Titolo": "Presa in carico, Orario:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254278, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 37, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 361, - "TitoloTraduzione": "Presa in carico, Data:", - "Titolo": "Presa in carico, Data:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254279, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 58, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 771, - "TitoloTraduzione": "RATING RSL MONCLER", - "Titolo": "RATING RSL MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254280, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 56, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 772, - "TitoloTraduzione": "RATING CHINA MONCLER", - "Titolo": "RATING CHINA MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254281, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 57, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 773, - "TitoloTraduzione": "RATING MANUAL MONCLER", - "Titolo": "RATING MANUAL MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254231, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 6, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 263, - "TitoloTraduzione": "Style Code:", - "Titolo": "Style Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254232, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 5, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 264, - "TitoloTraduzione": "Color Code:", - "Titolo": "Color Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254233, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 3, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 467, - "TitoloTraduzione": "Sample Code:", - "Titolo": "Sample Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254234, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 17, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 150, - "TitoloTraduzione": "Destinazione d'uso: ", - "Titolo": "Destinazione d'uso: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254235, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 18, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 156, - "TitoloTraduzione": "Tipologia di Materiale:", - "Titolo": "Tipologia di Materiale:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254236, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 16, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 161, - "TitoloTraduzione": "Categoria:", - "Titolo": "Categoria:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254237, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 15, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 167, - "TitoloTraduzione": "Capitolato di riferimento", - "Titolo": "Capitolato di riferimento", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254238, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 13, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 207, - "TitoloTraduzione": "Composition Claimed", - "Titolo": "Composition Claimed", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254239, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 9, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 468, - "TitoloTraduzione": "Style Description:", - "Titolo": "Style Description:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254240, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 14, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 543, - "TitoloTraduzione": "Collezione:", - "Titolo": "Collezione:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254241, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 12, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 1014, - "TitoloTraduzione": "CDC", - "Titolo": "CDC", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254242, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 21, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 142, - "TitoloTraduzione": "Fornitore:", - "Titolo": "Fornitore:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254243, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 19, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 146, - "TitoloTraduzione": "Tipologia di Trattamento Superficiale:", - "Titolo": "Tipologia di Trattamento Superficiale:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254244, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 20, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 147, - "TitoloTraduzione": "Tipologia di concia: ", - "Titolo": "Tipologia di concia: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254245, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 26, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 166, - "TitoloTraduzione": "Note:", - "Titolo": "Note:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254246, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 25, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 189, - "TitoloTraduzione": "Tested Component:", - "Titolo": "Tested Component:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254247, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 29, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 193, - "TitoloTraduzione": "DDT N. ", - "Titolo": "DDT N. ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254248, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 22, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 194, - "TitoloTraduzione": "Fabbricante:", - "Titolo": "Fabbricante:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254255, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 27, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 555, - "TitoloTraduzione": "Additional Info:", - "Titolo": "Additional Info:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254256, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 23, - "Valore": "MONCLER", - "Duplica": false, - "CustomField": { - "IdCustomField": 595, - "TitoloTraduzione": "Final Customer: ", - "Titolo": "Final Customer: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "MONCLER", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254257, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 24, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 748, - "TitoloTraduzione": "Analisi Richieste:", - "Titolo": "Analisi Richieste:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254258, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 39, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 163, - "TitoloTraduzione": "Campionamento:", - "Titolo": "Campionamento:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254259, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 40, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 165, - "TitoloTraduzione": "Condizionamento prima e durante il Test: ", - "Titolo": "Condizionamento prima e durante il Test: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23254263, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 41, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 181, - "TitoloTraduzione": "Preparazione del campione ai test chimici: ", - "Titolo": "Preparazione del campione ai test chimici: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - } - ] -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_563528_importa_step91_1773234617.txt b/public/userarea/logs/api/commessa_563528_importa_step91_1773234617.txt deleted file mode 100644 index a13e6d40..00000000 --- a/public/userarea/logs/api/commessa_563528_importa_step91_1773234617.txt +++ /dev/null @@ -1,20 +0,0 @@ -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/CommessaWeb(563528)/ImportaCommessa' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "IdUtente": 285 -}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CommessaWeb\/$entity", - "IdCommessa": 563528, - "CodiceCommessa": "26C0029", - "RiferimentoCertificato": null, - "StatoCommessaWeb": "Elaborata", - "DataCreazioneWeb": "2026-03-11T14:10:00.897+01:00", - "CodiceCommessaWeb": "26C0029", - "DataInviatoWeb": "2026-03-11T14:10:11.76+01:00", - "Richiedente": "Test Web Import", - "Descrizione": "TEST CommessaWeb" -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_563528_photos_step5_2_1773234609.txt b/public/userarea/logs/api/commessa_563528_photos_step5_2_1773234609.txt deleted file mode 100644 index 24650255..00000000 --- a/public/userarea/logs/api/commessa_563528_photos_step5_2_1773234609.txt +++ /dev/null @@ -1,44 +0,0 @@ -Photos for CommessaWeb 563528 (iddatadb=1259): -Total photos found: 2, campioni: 2 - -=== Campione 734582 (main) === -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/Campione(734582)/UploadCampioneFile' \ ---header 'Authorization: Bearer ••••••' \ ---form 'file=@C:\xampp\htdocs\trf_certest\public\photostrf\1259-20260311130930-104a2ca5-8a4c-4df8-b2ca-a28f518b7b25.jpg' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CampioneFiles\/$entity", - "IdCampioneFile": 1779561, - "FileName": "1259-20260311130930-104a2ca5-8a4c-4df8-b2ca-a28f518b7b25.jpg", - "Web": false, - "AllegaAlRapporto": false, - "StampaNelRapporto": false, - "ReportGermania": false, - "PrimaPagina": false, - "Duplica": false, - "LastUpdate": "2026-03-11T14:10:06.7051549+01:00", - "Titolo": null -} - ---- -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/Campione(734582)/UploadCampioneFile' \ ---header 'Authorization: Bearer ••••••' \ ---form 'file=@C:\xampp\htdocs\trf_certest\public\photostrf\1259-20260311130930-1e672dd9-5420-4432-b422-02d8d271c178.jpg' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CampioneFiles\/$entity", - "IdCampioneFile": 1779562, - "FileName": "1259-20260311130930-1e672dd9-5420-4432-b422-02d8d271c178.jpg", - "Web": false, - "AllegaAlRapporto": false, - "StampaNelRapporto": false, - "ReportGermania": false, - "PrimaPagina": false, - "Duplica": false, - "LastUpdate": "2026-03-11T14:10:08.5442313+01:00", - "Titolo": null -} - ---- diff --git a/public/userarea/logs/api/commessa_563528_send_step9_1773234612.txt b/public/userarea/logs/api/commessa_563528_send_step9_1773234612.txt deleted file mode 100644 index 70d091a7..00000000 --- a/public/userarea/logs/api/commessa_563528_send_step9_1773234612.txt +++ /dev/null @@ -1,18 +0,0 @@ -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/CommessaWeb(563528)/InviaCommessa' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CommessaWeb\/$entity", - "IdCommessa": 563528, - "CodiceCommessa": "26C0029", - "RiferimentoCertificato": null, - "StatoCommessaWeb": "Nuova", - "DataCreazioneWeb": "2026-03-11T14:10:00.897+01:00", - "CodiceCommessaWeb": "26C0029", - "DataInviatoWeb": "2026-03-11T14:10:11.7602299+01:00", - "Richiedente": "Test Web Import", - "Descrizione": "TEST CommessaWeb" -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_563528_update_step7_1773234612.txt b/public/userarea/logs/api/commessa_563528_update_step7_1773234612.txt deleted file mode 100644 index 5b598ea8..00000000 --- a/public/userarea/logs/api/commessa_563528_update_step7_1773234612.txt +++ /dev/null @@ -1,226 +0,0 @@ -curl --location --request PATCH 'https://93.43.5.102/limsapi/api/odata/CommessaWeb(563528)' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "CommesseCustomFields": [ - { - "IdCommesseCustomFields": 23254249, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254250, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254251, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254252, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254253, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254254, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254260, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254261, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254262, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254264, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254265, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254266, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254267, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254268, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254228, - "Valore": "13526" - }, - { - "IdCommesseCustomFields": 23254229, - "Valore": "20262" - }, - { - "IdCommesseCustomFields": 23254230, - "Valore": "ART. PEACH" - }, - { - "IdCommesseCustomFields": 23254269, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254270, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254271, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254272, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254273, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254274, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254275, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254276, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254277, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254278, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254279, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254280, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254281, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254231, - "Valore": "L209A4M00130M7280" - }, - { - "IdCommesseCustomFields": 23254232, - "Valore": "BLACK" - }, - { - "IdCommesseCustomFields": 23254233, - "Valore": "PE007J" - }, - { - "IdCommesseCustomFields": 23254234, - "Valore": "262" - }, - { - "IdCommesseCustomFields": 23254235, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254236, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254237, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254238, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254239, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254240, - "Valore": "Oggi" - }, - { - "IdCommesseCustomFields": 23254241, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254242, - "Valore": "MONCLER" - }, - { - "IdCommesseCustomFields": 23254243, - "Valore": "236" - }, - { - "IdCommesseCustomFields": 23254244, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254245, - "Valore": "BBB" - }, - { - "IdCommesseCustomFields": 23254246, - "Valore": "solocla" - }, - { - "IdCommesseCustomFields": 23254247, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254248, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254255, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254256, - "Valore": "MONCLER" - }, - { - "IdCommesseCustomFields": 23254257, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254258, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254259, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23254263, - "Valore": "" - } - ] -}' - -RESPONSE: -null \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_564663_campioni_step6_1773755553.txt b/public/userarea/logs/api/commessa_564663_campioni_step6_1773755553.txt deleted file mode 100644 index e787066b..00000000 --- a/public/userarea/logs/api/commessa_564663_campioni_step6_1773755553.txt +++ /dev/null @@ -1,60 +0,0 @@ -CAMPIONE #0 -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/Campione' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "Commessa": 564663, - "Matrice": 3028, - "SottoMatrice": null, - "SchemaCustomField": 82, - "NoteWeb": "Parte 1", - "ConsegnaRichiesta": "2026-03-31" -}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#Campione\/$entity", - "IdCampione": 736244, - "CodiceCampione": "11004", - "CodiceCampioneWeb": "11004", - "StatoCampione": "Nuovo", - "DataCreazioneWeb": "2026-03-17T14:52:30.3143366+01:00", - "RiferimentoWeb": "", - "ConsegnaRichiesta": "2026-03-31T00:00:00+02:00", - "DataAccettazioneLims": null, - "Riferimento": null, - "NoteWeb": "Parte 1", - "GruppiRicercati": null -} - ---- -CAMPIONE #1 -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/Campione' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "Commessa": 564663, - "Matrice": 3028, - "SottoMatrice": null, - "SchemaCustomField": 82, - "NoteWeb": "Parte 2", - "ConsegnaRichiesta": "2026-03-31" -}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#Campione\/$entity", - "IdCampione": 736245, - "CodiceCampione": "11005", - "CodiceCampioneWeb": "11005", - "StatoCampione": "Nuovo", - "DataCreazioneWeb": "2026-03-17T14:52:31.9631757+01:00", - "RiferimentoWeb": "", - "ConsegnaRichiesta": "2026-03-31T00:00:00+02:00", - "DataAccettazioneLims": null, - "Riferimento": null, - "NoteWeb": "Parte 2", - "GruppiRicercati": null -} - ---- diff --git a/public/userarea/logs/api/commessa_564663_get_step10_1773755561.txt b/public/userarea/logs/api/commessa_564663_get_step10_1773755561.txt deleted file mode 100644 index 1f61941a..00000000 --- a/public/userarea/logs/api/commessa_564663_get_step10_1773755561.txt +++ /dev/null @@ -1,1314 +0,0 @@ -curl --location --request GET 'https://93.43.5.102/limsapi/api/odata/CommessaWeb(564663)?$expand=CommesseCustomFields($expand=CustomField)' \ ---header 'Authorization: Bearer ••••••' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CommessaWeb(CommesseCustomFields(CustomField()))\/$entity", - "IdCommessa": 564663, - "CodiceCommessa": "2613848", - "RiferimentoCertificato": "Analyses purchased by Moncler Compliance_CB\r\nSeason AAA\r\nSample Code: 1\r\nSample Description Example Description\r\nColour Code: 1\r\nStyle Code: L209A4M00130M7280\r\nStyle Description: qqq\r\nCDC 1\r\nComposition Claimed aaa\r\nCollection: 1\r\nRequirements: According to 16 CFR 1500.51-53\r\nCategory: AAA\r\nApplication: Abbigliamento\r\nType of Material: Accessoire\r\nType of superficial treatment: Anilina\r\nType of tanning: Allume\r\nSupplier: qqq\r\nVendor: MONCLER\r\nFinal Customer: MONCLER\r\nRequested Tests: 1\r\nTested Component: bbb\r\nNotes: ciao\r\nAdditional Information: L209A4M00130M7280 - PACEY2\r\nTracciante materiale Apparel Hardware\r\nDelivery Note: 12234\r\nDelivery Note Date 2026-03-17T13:52:36+00:00\r\nMittente (se diverso da Committente) aaa - Quantit\u00e0 1\r\nSample Arrival Date: 2026-03-17T13:52:36+00:00\r\nSample Arrival Time: 13:52\r\nSample Unlock Date: 2026-03-17T13:52:36+00:00\r\nSample Unlock Time: 13:52\r\nPresa in carico, Data: 2026-03-17T13:52:36+00:00\r\nPresa in carico, Orario: 14:00\r\nConditioning before and during the Trial: (According to UNI EN ISO 2419:2012) 23\u00b0+\/-2\u00b0C; 50+\/-5% R.H. (If required by the test method, trial carried out in standard atmosphere)\r\nSample preparation for chemical tests: Il campione \u00e8 preparato secondo la ISO 4044 (quando richiesto dal metodo di prova). - Would you like to receive the residual material? No - Would you like to receive the tested samples? No - Would you like to receive the samples by courrier? Procedura Standard - N. di Prove: >3\r\nAccettatore: Baroni M\r\nLogin Date: 2026-03-17T13:52:36+00:00\r\nLogin Time: 14:44\r\nConsegna campione: Consegnato a mano\r\nLab outsourcing: Appliance Engineering Technology France SAS\r\nAWB: 1111\r\nData ricezione risultati test: 2026-03-02T13:52:36+00:00\r\nSample return: No \r\nTipologia report (solo per Cina) 2C Cina - RATING CHINA MONCLER FAIL - RATING MANUAL MONCLER DATA - RATING RSL MONCLER FAIL", - "StatoCommessaWeb": "Elaborata", - "DataCreazioneWeb": "2026-03-17T00:00:00+01:00", - "CodiceCommessaWeb": "26C0059", - "DataInviatoWeb": "2026-03-17T14:52:38.99+01:00", - "Richiedente": "From TRFSmart Application", - "Descrizione": "From TRFSmart Application", - "CommesseCustomFields": [ - { - "IdCommesseCustomFields": 23308665, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 33, - "Valore": "2026-03-17T13:52:36+00:00", - "Duplica": true, - "CustomField": { - "IdCustomField": 259, - "TitoloTraduzione": "Sample Arrival Date:", - "Titolo": "Sample Arrival Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308666, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 34, - "Valore": "13:52", - "Duplica": true, - "CustomField": { - "IdCustomField": 348, - "TitoloTraduzione": "Sample Arrival Time:", - "Titolo": "Sample Arrival Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308667, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 28, - "Valore": "Apparel Hardware", - "Duplica": true, - "CustomField": { - "IdCustomField": 362, - "TitoloTraduzione": "Tracciante materiale", - "Titolo": "Tracciante materiale", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308668, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 30, - "Valore": "2026-03-17T13:52:36+00:00", - "Duplica": true, - "CustomField": { - "IdCustomField": 370, - "TitoloTraduzione": "DDT del", - "Titolo": "DDT del", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308669, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 31, - "Valore": "aaa", - "Duplica": true, - "CustomField": { - "IdCustomField": 371, - "TitoloTraduzione": "Mittente (se diverso da Committente)", - "Titolo": "Mittente (se diverso da Committente)", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308670, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 32, - "Valore": "1", - "Duplica": true, - "CustomField": { - "IdCustomField": 372, - "TitoloTraduzione": "Quantit\u00e0", - "Titolo": "Quantit\u00e0", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308676, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 42, - "Valore": "No", - "Duplica": true, - "CustomField": { - "IdCustomField": 169, - "TitoloTraduzione": "(*Restituzione Materiale Residuo:", - "Titolo": "(*Restituzione Materiale Residuo:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308677, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 43, - "Valore": "No", - "Duplica": true, - "CustomField": { - "IdCustomField": 170, - "TitoloTraduzione": "(*Originali:", - "Titolo": "(*Originali:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308678, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 44, - "Valore": "Procedura Standard", - "Duplica": true, - "CustomField": { - "IdCustomField": 171, - "TitoloTraduzione": "(*Corriere:", - "Titolo": "(*Corriere:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308680, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 49, - "Valore": "Consegnato a mano", - "Duplica": true, - "CustomField": { - "IdCustomField": 236, - "TitoloTraduzione": "Consegna campione:", - "Titolo": "Consegna campione:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308681, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 45, - "Valore": ">3", - "Duplica": true, - "CustomField": { - "IdCustomField": 241, - "TitoloTraduzione": "N. di Prove:", - "Titolo": "N. di Prove:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308682, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 46, - "Valore": "Baroni M", - "Duplica": true, - "CustomField": { - "IdCustomField": 244, - "TitoloTraduzione": "Accettatore:", - "Titolo": "Accettatore:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308683, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 50, - "Valore": "Appliance Engineering Technology France SAS", - "Duplica": true, - "CustomField": { - "IdCustomField": 246, - "TitoloTraduzione": "Lab outsourcing:", - "Titolo": "Lab outsourcing:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308684, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 54, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 252, - "TitoloTraduzione": "Service required:", - "Titolo": "Service required:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308644, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 1, - "Valore": "Moncler Compliance_CB", - "Duplica": false, - "CustomField": { - "IdCustomField": 1083, - "TitoloTraduzione": "MONCLER_Analisi Commissionate da: ", - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308645, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 2, - "Valore": "AAA", - "Duplica": true, - "CustomField": { - "IdCustomField": 214, - "TitoloTraduzione": "Season", - "Titolo": "Season", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308646, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 4, - "Valore": "Example Description", - "Duplica": false, - "CustomField": { - "IdCustomField": 210, - "TitoloTraduzione": "Sample Description ", - "Titolo": "Sample Description ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308685, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 53, - "Valore": "No", - "Duplica": true, - "CustomField": { - "IdCustomField": 253, - "TitoloTraduzione": "Sample return:", - "Titolo": "Sample return:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308686, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 51, - "Valore": "1111", - "Duplica": true, - "CustomField": { - "IdCustomField": 254, - "TitoloTraduzione": "AWB: ", - "Titolo": "AWB: ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308687, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 52, - "Valore": "2026-03-02T13:52:36+00:00", - "Duplica": true, - "CustomField": { - "IdCustomField": 255, - "TitoloTraduzione": "Data ricezione risultati test:", - "Titolo": "Data ricezione risultati test:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308688, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 47, - "Valore": "2026-03-17T13:52:36+00:00", - "Duplica": true, - "CustomField": { - "IdCustomField": 258, - "TitoloTraduzione": "Login Date:", - "Titolo": "Login Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308689, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 35, - "Valore": "2026-03-17T13:52:36+00:00", - "Duplica": true, - "CustomField": { - "IdCustomField": 260, - "TitoloTraduzione": "Sample Unlock Date:", - "Titolo": "Sample Unlock Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308690, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 55, - "Valore": "2C Cina", - "Duplica": true, - "CustomField": { - "IdCustomField": 261, - "TitoloTraduzione": "Tipologia report (solo per Cina)", - "Titolo": "Tipologia report (solo per Cina)", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308691, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 36, - "Valore": "13:52", - "Duplica": true, - "CustomField": { - "IdCustomField": 349, - "TitoloTraduzione": "Sample Unlock Time:", - "Titolo": "Sample Unlock Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308692, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 48, - "Valore": "14:44", - "Duplica": false, - "CustomField": { - "IdCustomField": 350, - "TitoloTraduzione": "Login Time:", - "Titolo": "Login Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308693, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 38, - "Valore": "14:00", - "Duplica": true, - "CustomField": { - "IdCustomField": 360, - "TitoloTraduzione": "Presa in carico, Orario:", - "Titolo": "Presa in carico, Orario:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308694, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 37, - "Valore": "2026-03-17T13:52:36+00:00", - "Duplica": true, - "CustomField": { - "IdCustomField": 361, - "TitoloTraduzione": "Presa in carico, Data:", - "Titolo": "Presa in carico, Data:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308695, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 58, - "Valore": "FAIL", - "Duplica": false, - "CustomField": { - "IdCustomField": 771, - "TitoloTraduzione": "RATING RSL MONCLER", - "Titolo": "RATING RSL MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308696, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 56, - "Valore": "FAIL", - "Duplica": false, - "CustomField": { - "IdCustomField": 772, - "TitoloTraduzione": "RATING CHINA MONCLER", - "Titolo": "RATING CHINA MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308697, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 57, - "Valore": "DATA", - "Duplica": false, - "CustomField": { - "IdCustomField": 773, - "TitoloTraduzione": "RATING MANUAL MONCLER", - "Titolo": "RATING MANUAL MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308647, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 6, - "Valore": "L209A4M00130M7280", - "Duplica": true, - "CustomField": { - "IdCustomField": 263, - "TitoloTraduzione": "Style Code:", - "Titolo": "Style Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308648, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 5, - "Valore": "1", - "Duplica": true, - "CustomField": { - "IdCustomField": 264, - "TitoloTraduzione": "Color Code:", - "Titolo": "Color Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308649, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 3, - "Valore": "1", - "Duplica": true, - "CustomField": { - "IdCustomField": 467, - "TitoloTraduzione": "Sample Code:", - "Titolo": "Sample Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308650, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 17, - "Valore": "Abbigliamento", - "Duplica": true, - "CustomField": { - "IdCustomField": 150, - "TitoloTraduzione": "Destinazione d'uso: ", - "Titolo": "Destinazione d'uso: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308651, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 18, - "Valore": "Accessoire", - "Duplica": true, - "CustomField": { - "IdCustomField": 156, - "TitoloTraduzione": "Tipologia di Materiale:", - "Titolo": "Tipologia di Materiale:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308652, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 16, - "Valore": "AAA", - "Duplica": true, - "CustomField": { - "IdCustomField": 161, - "TitoloTraduzione": "Categoria:", - "Titolo": "Categoria:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308653, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 15, - "Valore": "According to 16 CFR 1500.51-53", - "Duplica": true, - "CustomField": { - "IdCustomField": 167, - "TitoloTraduzione": "Capitolato di riferimento", - "Titolo": "Capitolato di riferimento", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308654, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 13, - "Valore": "aaa", - "Duplica": true, - "CustomField": { - "IdCustomField": 207, - "TitoloTraduzione": "Composition Claimed", - "Titolo": "Composition Claimed", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308655, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 9, - "Valore": "qqq", - "Duplica": true, - "CustomField": { - "IdCustomField": 468, - "TitoloTraduzione": "Style Description:", - "Titolo": "Style Description:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308656, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 14, - "Valore": "1", - "Duplica": true, - "CustomField": { - "IdCustomField": 543, - "TitoloTraduzione": "Collezione:", - "Titolo": "Collezione:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308657, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 12, - "Valore": "1", - "Duplica": true, - "CustomField": { - "IdCustomField": 1014, - "TitoloTraduzione": "CDC", - "Titolo": "CDC", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308658, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 21, - "Valore": "qqq", - "Duplica": false, - "CustomField": { - "IdCustomField": 142, - "TitoloTraduzione": "Fornitore:", - "Titolo": "Fornitore:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308659, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 19, - "Valore": "Anilina", - "Duplica": true, - "CustomField": { - "IdCustomField": 146, - "TitoloTraduzione": "Tipologia di Trattamento Superficiale:", - "Titolo": "Tipologia di Trattamento Superficiale:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308660, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 20, - "Valore": "Allume", - "Duplica": true, - "CustomField": { - "IdCustomField": 147, - "TitoloTraduzione": "Tipologia di concia: ", - "Titolo": "Tipologia di concia: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308661, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 26, - "Valore": "ciao", - "Duplica": true, - "CustomField": { - "IdCustomField": 166, - "TitoloTraduzione": "Note:", - "Titolo": "Note:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308662, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 25, - "Valore": "bbb", - "Duplica": false, - "CustomField": { - "IdCustomField": 189, - "TitoloTraduzione": "Tested Component:", - "Titolo": "Tested Component:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308663, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 29, - "Valore": "12234", - "Duplica": true, - "CustomField": { - "IdCustomField": 193, - "TitoloTraduzione": "DDT N. ", - "Titolo": "DDT N. ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308664, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 22, - "Valore": "MONCLER", - "Duplica": true, - "CustomField": { - "IdCustomField": 194, - "TitoloTraduzione": "Fabbricante:", - "Titolo": "Fabbricante:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308671, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 27, - "Valore": "L209A4M00130M7280 - PACEY2", - "Duplica": true, - "CustomField": { - "IdCustomField": 555, - "TitoloTraduzione": "Additional Info:", - "Titolo": "Additional Info:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308672, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 23, - "Valore": "MONCLER", - "Duplica": false, - "CustomField": { - "IdCustomField": 595, - "TitoloTraduzione": "Final Customer: ", - "Titolo": "Final Customer: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "MONCLER", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308673, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 24, - "Valore": "1", - "Duplica": false, - "CustomField": { - "IdCustomField": 748, - "TitoloTraduzione": "Analisi Richieste:", - "Titolo": "Analisi Richieste:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308674, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 39, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 163, - "TitoloTraduzione": "Campionamento:", - "Titolo": "Campionamento:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308675, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 40, - "Valore": "(According to UNI EN ISO 2419:2012) 23\u00b0+\/-2\u00b0C; 50+\/-5% R.H. (If required by the test method, trial carried out in standard atmosphere)", - "Duplica": true, - "CustomField": { - "IdCustomField": 165, - "TitoloTraduzione": "Condizionamento prima e durante il Test: ", - "Titolo": "Condizionamento prima e durante il Test: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308679, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 41, - "Valore": "Il campione \u00e8 preparato secondo la ISO 4044 (quando richiesto dal metodo di prova).", - "Duplica": true, - "CustomField": { - "IdCustomField": 181, - "TitoloTraduzione": "Preparazione del campione ai test chimici: ", - "Titolo": "Preparazione del campione ai test chimici: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - } - ] -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_564663_get_step7_1773755556.txt b/public/userarea/logs/api/commessa_564663_get_step7_1773755556.txt deleted file mode 100644 index 56cae592..00000000 --- a/public/userarea/logs/api/commessa_564663_get_step7_1773755556.txt +++ /dev/null @@ -1,1314 +0,0 @@ -curl --location --request GET 'https://93.43.5.102/limsapi/api/odata/CommessaWeb(564663)?$expand=CommesseCustomFields($expand=CustomField)' \ ---header 'Authorization: Bearer ••••••' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CommessaWeb(CommesseCustomFields(CustomField()))\/$entity", - "IdCommessa": 564663, - "CodiceCommessa": "26C0059", - "RiferimentoCertificato": null, - "StatoCommessaWeb": "Nuova", - "DataCreazioneWeb": "2026-03-17T14:52:29.347+01:00", - "CodiceCommessaWeb": "26C0059", - "DataInviatoWeb": null, - "Richiedente": "From TRFSmart Application", - "Descrizione": "From TRFSmart Application", - "CommesseCustomFields": [ - { - "IdCommesseCustomFields": 23308665, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 33, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 259, - "TitoloTraduzione": "Sample Arrival Date:", - "Titolo": "Sample Arrival Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308666, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 34, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 348, - "TitoloTraduzione": "Sample Arrival Time:", - "Titolo": "Sample Arrival Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308667, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 28, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 362, - "TitoloTraduzione": "Tracciante materiale", - "Titolo": "Tracciante materiale", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308668, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 30, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 370, - "TitoloTraduzione": "DDT del", - "Titolo": "DDT del", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308669, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 31, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 371, - "TitoloTraduzione": "Mittente (se diverso da Committente)", - "Titolo": "Mittente (se diverso da Committente)", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308670, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 32, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 372, - "TitoloTraduzione": "Quantit\u00e0", - "Titolo": "Quantit\u00e0", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308676, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 42, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 169, - "TitoloTraduzione": "(*Restituzione Materiale Residuo:", - "Titolo": "(*Restituzione Materiale Residuo:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308677, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 43, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 170, - "TitoloTraduzione": "(*Originali:", - "Titolo": "(*Originali:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308678, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 44, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 171, - "TitoloTraduzione": "(*Corriere:", - "Titolo": "(*Corriere:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308680, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 49, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 236, - "TitoloTraduzione": "Consegna campione:", - "Titolo": "Consegna campione:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308681, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 45, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 241, - "TitoloTraduzione": "N. di Prove:", - "Titolo": "N. di Prove:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308682, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 46, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 244, - "TitoloTraduzione": "Accettatore:", - "Titolo": "Accettatore:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308683, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 50, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 246, - "TitoloTraduzione": "Lab outsourcing:", - "Titolo": "Lab outsourcing:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308684, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 54, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 252, - "TitoloTraduzione": "Service required:", - "Titolo": "Service required:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308644, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 1, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 1083, - "TitoloTraduzione": "MONCLER_Analisi Commissionate da: ", - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308645, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 2, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 214, - "TitoloTraduzione": "Season", - "Titolo": "Season", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308646, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 4, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 210, - "TitoloTraduzione": "Sample Description ", - "Titolo": "Sample Description ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308685, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 53, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 253, - "TitoloTraduzione": "Sample return:", - "Titolo": "Sample return:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308686, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 51, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 254, - "TitoloTraduzione": "AWB: ", - "Titolo": "AWB: ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308687, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 52, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 255, - "TitoloTraduzione": "Data ricezione risultati test:", - "Titolo": "Data ricezione risultati test:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308688, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 47, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 258, - "TitoloTraduzione": "Login Date:", - "Titolo": "Login Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308689, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 35, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 260, - "TitoloTraduzione": "Sample Unlock Date:", - "Titolo": "Sample Unlock Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308690, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 55, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 261, - "TitoloTraduzione": "Tipologia report (solo per Cina)", - "Titolo": "Tipologia report (solo per Cina)", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308691, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 36, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 349, - "TitoloTraduzione": "Sample Unlock Time:", - "Titolo": "Sample Unlock Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308692, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 48, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 350, - "TitoloTraduzione": "Login Time:", - "Titolo": "Login Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308693, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 38, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 360, - "TitoloTraduzione": "Presa in carico, Orario:", - "Titolo": "Presa in carico, Orario:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308694, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 37, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 361, - "TitoloTraduzione": "Presa in carico, Data:", - "Titolo": "Presa in carico, Data:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308695, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 58, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 771, - "TitoloTraduzione": "RATING RSL MONCLER", - "Titolo": "RATING RSL MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308696, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 56, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 772, - "TitoloTraduzione": "RATING CHINA MONCLER", - "Titolo": "RATING CHINA MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308697, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 57, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 773, - "TitoloTraduzione": "RATING MANUAL MONCLER", - "Titolo": "RATING MANUAL MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308647, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 6, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 263, - "TitoloTraduzione": "Style Code:", - "Titolo": "Style Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308648, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 5, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 264, - "TitoloTraduzione": "Color Code:", - "Titolo": "Color Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308649, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 3, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 467, - "TitoloTraduzione": "Sample Code:", - "Titolo": "Sample Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308650, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 17, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 150, - "TitoloTraduzione": "Destinazione d'uso: ", - "Titolo": "Destinazione d'uso: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308651, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 18, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 156, - "TitoloTraduzione": "Tipologia di Materiale:", - "Titolo": "Tipologia di Materiale:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308652, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 16, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 161, - "TitoloTraduzione": "Categoria:", - "Titolo": "Categoria:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308653, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 15, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 167, - "TitoloTraduzione": "Capitolato di riferimento", - "Titolo": "Capitolato di riferimento", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308654, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 13, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 207, - "TitoloTraduzione": "Composition Claimed", - "Titolo": "Composition Claimed", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308655, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 9, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 468, - "TitoloTraduzione": "Style Description:", - "Titolo": "Style Description:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308656, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 14, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 543, - "TitoloTraduzione": "Collezione:", - "Titolo": "Collezione:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308657, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 12, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 1014, - "TitoloTraduzione": "CDC", - "Titolo": "CDC", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308658, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 21, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 142, - "TitoloTraduzione": "Fornitore:", - "Titolo": "Fornitore:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308659, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 19, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 146, - "TitoloTraduzione": "Tipologia di Trattamento Superficiale:", - "Titolo": "Tipologia di Trattamento Superficiale:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308660, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 20, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 147, - "TitoloTraduzione": "Tipologia di concia: ", - "Titolo": "Tipologia di concia: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308661, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 26, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 166, - "TitoloTraduzione": "Note:", - "Titolo": "Note:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308662, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 25, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 189, - "TitoloTraduzione": "Tested Component:", - "Titolo": "Tested Component:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308663, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 29, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 193, - "TitoloTraduzione": "DDT N. ", - "Titolo": "DDT N. ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308664, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 22, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 194, - "TitoloTraduzione": "Fabbricante:", - "Titolo": "Fabbricante:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308671, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 27, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 555, - "TitoloTraduzione": "Additional Info:", - "Titolo": "Additional Info:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308672, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 23, - "Valore": "MONCLER", - "Duplica": false, - "CustomField": { - "IdCustomField": 595, - "TitoloTraduzione": "Final Customer: ", - "Titolo": "Final Customer: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "MONCLER", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308673, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 24, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 748, - "TitoloTraduzione": "Analisi Richieste:", - "Titolo": "Analisi Richieste:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308674, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 39, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 163, - "TitoloTraduzione": "Campionamento:", - "Titolo": "Campionamento:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308675, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 40, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 165, - "TitoloTraduzione": "Condizionamento prima e durante il Test: ", - "Titolo": "Condizionamento prima e durante il Test: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23308679, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 41, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 181, - "TitoloTraduzione": "Preparazione del campione ai test chimici: ", - "Titolo": "Preparazione del campione ai test chimici: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - } - ] -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_564663_importa_step91_1773755561.txt b/public/userarea/logs/api/commessa_564663_importa_step91_1773755561.txt deleted file mode 100644 index a829b4d5..00000000 --- a/public/userarea/logs/api/commessa_564663_importa_step91_1773755561.txt +++ /dev/null @@ -1,20 +0,0 @@ -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/CommessaWeb(564663)/ImportaCommessa' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "IdUtente": 285 -}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CommessaWeb\/$entity", - "IdCommessa": 564663, - "CodiceCommessa": "26C0059", - "RiferimentoCertificato": null, - "StatoCommessaWeb": "Elaborata", - "DataCreazioneWeb": "2026-03-17T14:52:29.347+01:00", - "CodiceCommessaWeb": "26C0059", - "DataInviatoWeb": "2026-03-17T14:52:38.99+01:00", - "Richiedente": "From TRFSmart Application", - "Descrizione": "From TRFSmart Application" -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_564663_photos_step5_2_1773755555.txt b/public/userarea/logs/api/commessa_564663_photos_step5_2_1773755555.txt deleted file mode 100644 index da44bcb9..00000000 --- a/public/userarea/logs/api/commessa_564663_photos_step5_2_1773755555.txt +++ /dev/null @@ -1,48 +0,0 @@ -Photos for CommessaWeb 564663 (iddatadb=1268): -Total photos found: 2, campioni: 2 - -=== Campione 736244 (main) === -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/Campione(736244)/UploadCampioneFile' \ ---header 'Authorization: Bearer ••••••' \ ---form 'file=@C:\xampp\htdocs\trf_certest\public\photostrf\1268-20260317134828-1e672dd9-5420-4432-b422-02d8d271c178.jpg' \ ---form 'StampaNelRapporto=true' \ ---form 'PrimaPagina=true' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CampioneFiles\/$entity", - "IdCampioneFile": 1784768, - "FileName": "1268-20260317134828-1e672dd9-5420-4432-b422-02d8d271c178.jpg", - "Web": false, - "AllegaAlRapporto": false, - "StampaNelRapporto": false, - "ReportGermania": false, - "PrimaPagina": false, - "Duplica": false, - "LastUpdate": "2026-03-17T14:52:33.9816658+01:00", - "Titolo": null -} - ---- -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/Campione(736244)/UploadCampioneFile' \ ---header 'Authorization: Bearer ••••••' \ ---form 'file=@C:\xampp\htdocs\trf_certest\public\photostrf\1268-20260317134828-104a2ca5-8a4c-4df8-b2ca-a28f518b7b25.jpg' \ ---form 'StampaNelRapporto=false' \ ---form 'PrimaPagina=false' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CampioneFiles\/$entity", - "IdCampioneFile": 1784769, - "FileName": "1268-20260317134828-104a2ca5-8a4c-4df8-b2ca-a28f518b7b25.jpg", - "Web": false, - "AllegaAlRapporto": false, - "StampaNelRapporto": false, - "ReportGermania": false, - "PrimaPagina": false, - "Duplica": false, - "LastUpdate": "2026-03-17T14:52:35.2759882+01:00", - "Titolo": null -} - ---- diff --git a/public/userarea/logs/api/commessa_564663_send_step9_1773755559.txt b/public/userarea/logs/api/commessa_564663_send_step9_1773755559.txt deleted file mode 100644 index 94a5d03c..00000000 --- a/public/userarea/logs/api/commessa_564663_send_step9_1773755559.txt +++ /dev/null @@ -1,18 +0,0 @@ -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/CommessaWeb(564663)/InviaCommessa' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CommessaWeb\/$entity", - "IdCommessa": 564663, - "CodiceCommessa": "26C0059", - "RiferimentoCertificato": null, - "StatoCommessaWeb": "Nuova", - "DataCreazioneWeb": "2026-03-17T14:52:29.347+01:00", - "CodiceCommessaWeb": "26C0059", - "DataInviatoWeb": "2026-03-17T14:52:38.9894528+01:00", - "Richiedente": "From TRFSmart Application", - "Descrizione": "From TRFSmart Application" -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_564663_update_step7_1773755558.txt b/public/userarea/logs/api/commessa_564663_update_step7_1773755558.txt deleted file mode 100644 index 9d5e650a..00000000 --- a/public/userarea/logs/api/commessa_564663_update_step7_1773755558.txt +++ /dev/null @@ -1,226 +0,0 @@ -curl --location --request PATCH 'https://93.43.5.102/limsapi/api/odata/CommessaWeb(564663)' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "CommesseCustomFields": [ - { - "IdCommesseCustomFields": 23308665, - "Valore": "2026-03-17T13:52:36+00:00" - }, - { - "IdCommesseCustomFields": 23308666, - "Valore": "13:52" - }, - { - "IdCommesseCustomFields": 23308667, - "Valore": "9299" - }, - { - "IdCommesseCustomFields": 23308668, - "Valore": "2026-03-17T13:52:36+00:00" - }, - { - "IdCommesseCustomFields": 23308669, - "Valore": "aaa" - }, - { - "IdCommesseCustomFields": 23308670, - "Valore": "1" - }, - { - "IdCommesseCustomFields": 23308676, - "Valore": "673" - }, - { - "IdCommesseCustomFields": 23308677, - "Valore": "674" - }, - { - "IdCommesseCustomFields": 23308678, - "Valore": "4410" - }, - { - "IdCommesseCustomFields": 23308680, - "Valore": "1468" - }, - { - "IdCommesseCustomFields": 23308681, - "Valore": "1604" - }, - { - "IdCommesseCustomFields": 23308682, - "Valore": "12875" - }, - { - "IdCommesseCustomFields": 23308683, - "Valore": "8755" - }, - { - "IdCommesseCustomFields": 23308684, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23308644, - "Valore": "13497" - }, - { - "IdCommesseCustomFields": 23308645, - "Valore": "AAA" - }, - { - "IdCommesseCustomFields": 23308646, - "Valore": "Example Description" - }, - { - "IdCommesseCustomFields": 23308685, - "Valore": "1892" - }, - { - "IdCommesseCustomFields": 23308686, - "Valore": "1111" - }, - { - "IdCommesseCustomFields": 23308687, - "Valore": "2026-03-02T13:52:36+00:00" - }, - { - "IdCommesseCustomFields": 23308688, - "Valore": "2026-03-17T13:52:36+00:00" - }, - { - "IdCommesseCustomFields": 23308689, - "Valore": "2026-03-17T13:52:36+00:00" - }, - { - "IdCommesseCustomFields": 23308690, - "Valore": "1978" - }, - { - "IdCommesseCustomFields": 23308691, - "Valore": "13:52" - }, - { - "IdCommesseCustomFields": 23308692, - "Valore": "14:44" - }, - { - "IdCommesseCustomFields": 23308693, - "Valore": "14:00" - }, - { - "IdCommesseCustomFields": 23308694, - "Valore": "2026-03-17T13:52:36+00:00" - }, - { - "IdCommesseCustomFields": 23308695, - "Valore": "8596" - }, - { - "IdCommesseCustomFields": 23308696, - "Valore": "8600" - }, - { - "IdCommesseCustomFields": 23308697, - "Valore": "8605" - }, - { - "IdCommesseCustomFields": 23308647, - "Valore": "L209A4M00130M7280" - }, - { - "IdCommesseCustomFields": 23308648, - "Valore": "1" - }, - { - "IdCommesseCustomFields": 23308649, - "Valore": "1" - }, - { - "IdCommesseCustomFields": 23308650, - "Valore": "264" - }, - { - "IdCommesseCustomFields": 23308651, - "Valore": "1589" - }, - { - "IdCommesseCustomFields": 23308652, - "Valore": "AAA" - }, - { - "IdCommesseCustomFields": 23308653, - "Valore": "3055" - }, - { - "IdCommesseCustomFields": 23308654, - "Valore": "aaa" - }, - { - "IdCommesseCustomFields": 23308655, - "Valore": "qqq" - }, - { - "IdCommesseCustomFields": 23308656, - "Valore": "1" - }, - { - "IdCommesseCustomFields": 23308657, - "Valore": "1" - }, - { - "IdCommesseCustomFields": 23308658, - "Valore": "qqq" - }, - { - "IdCommesseCustomFields": 23308659, - "Valore": "236" - }, - { - "IdCommesseCustomFields": 23308660, - "Valore": "1208" - }, - { - "IdCommesseCustomFields": 23308661, - "Valore": "ciao" - }, - { - "IdCommesseCustomFields": 23308662, - "Valore": "bbb" - }, - { - "IdCommesseCustomFields": 23308663, - "Valore": "12234" - }, - { - "IdCommesseCustomFields": 23308664, - "Valore": "MONCLER" - }, - { - "IdCommesseCustomFields": 23308671, - "Valore": "L209A4M00130M7280 - PACEY2" - }, - { - "IdCommesseCustomFields": 23308672, - "Valore": "4678" - }, - { - "IdCommesseCustomFields": 23308673, - "Valore": "1" - }, - { - "IdCommesseCustomFields": 23308674, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23308675, - "Valore": "2450" - }, - { - "IdCommesseCustomFields": 23308679, - "Valore": "744" - } - ] -}' - -RESPONSE: -null \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_564817_campioni_step6_1773827647.txt b/public/userarea/logs/api/commessa_564817_campioni_step6_1773827647.txt deleted file mode 100644 index 62ae9ac1..00000000 --- a/public/userarea/logs/api/commessa_564817_campioni_step6_1773827647.txt +++ /dev/null @@ -1,120 +0,0 @@ -CAMPIONE #0 -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/Campione' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "Commessa": 564817, - "Matrice": 3028, - "SottoMatrice": null, - "SchemaCustomField": 82, - "NoteWeb": "AAA", - "ConsegnaRichiesta": "2026-01-29" -}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#Campione\/$entity", - "IdCampione": 736487, - "CodiceCampione": "11016", - "CodiceCampioneWeb": "11016", - "StatoCampione": "Nuovo", - "DataCreazioneWeb": "2026-03-18T10:54:03.4537462+01:00", - "RiferimentoWeb": "", - "ConsegnaRichiesta": "2026-01-29T00:00:00+01:00", - "DataAccettazioneLims": null, - "Riferimento": null, - "NoteWeb": "AAA", - "GruppiRicercati": null -} - ---- -CAMPIONE #1 -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/Campione' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "Commessa": 564817, - "Matrice": 3028, - "SottoMatrice": null, - "SchemaCustomField": 82, - "NoteWeb": "CCC", - "ConsegnaRichiesta": "2026-01-29" -}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#Campione\/$entity", - "IdCampione": 736488, - "CodiceCampione": "11017", - "CodiceCampioneWeb": "11017", - "StatoCampione": "Nuovo", - "DataCreazioneWeb": "2026-03-18T10:54:04.8623753+01:00", - "RiferimentoWeb": "", - "ConsegnaRichiesta": "2026-01-29T00:00:00+01:00", - "DataAccettazioneLims": null, - "Riferimento": null, - "NoteWeb": "CCC", - "GruppiRicercati": null -} - ---- -CAMPIONE #2 -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/Campione' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "Commessa": 564817, - "Matrice": 3028, - "SottoMatrice": null, - "SchemaCustomField": 82, - "NoteWeb": "DDD", - "ConsegnaRichiesta": "2026-01-29" -}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#Campione\/$entity", - "IdCampione": 736489, - "CodiceCampione": "11018", - "CodiceCampioneWeb": "11018", - "StatoCampione": "Nuovo", - "DataCreazioneWeb": "2026-03-18T10:54:06.2840533+01:00", - "RiferimentoWeb": "", - "ConsegnaRichiesta": "2026-01-29T00:00:00+01:00", - "DataAccettazioneLims": null, - "Riferimento": null, - "NoteWeb": "DDD", - "GruppiRicercati": null -} - ---- -CAMPIONE #3 -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/Campione' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "Commessa": 564817, - "Matrice": 3028, - "SottoMatrice": null, - "SchemaCustomField": 82, - "NoteWeb": "EEE", - "ConsegnaRichiesta": "2026-01-29" -}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#Campione\/$entity", - "IdCampione": 736490, - "CodiceCampione": "11019", - "CodiceCampioneWeb": "11019", - "StatoCampione": "Nuovo", - "DataCreazioneWeb": "2026-03-18T10:54:07.8853452+01:00", - "RiferimentoWeb": "", - "ConsegnaRichiesta": "2026-01-29T00:00:00+01:00", - "DataAccettazioneLims": null, - "Riferimento": null, - "NoteWeb": "EEE", - "GruppiRicercati": null -} - ---- diff --git a/public/userarea/logs/api/commessa_564817_get_step10_1773827657.txt b/public/userarea/logs/api/commessa_564817_get_step10_1773827657.txt deleted file mode 100644 index 25b0ff54..00000000 --- a/public/userarea/logs/api/commessa_564817_get_step10_1773827657.txt +++ /dev/null @@ -1,1314 +0,0 @@ -curl --location --request GET 'https://93.43.5.102/limsapi/api/odata/CommessaWeb(564817)?$expand=CommesseCustomFields($expand=CustomField)' \ ---header 'Authorization: Bearer ••••••' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CommessaWeb(CommesseCustomFields(CustomField()))\/$entity", - "IdCommessa": 564817, - "CodiceCommessa": "2613986", - "RiferimentoCertificato": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20262\r\nSample Code: PE007J\r\nSample Description ART. PEACH\r\nColour Code: BLACK\r\nStyle Code: L209A4M00130M7280\r\nCDC RM-ACC\r\nCollection: P\r\nRequirements: According to A&FW_PEFCR_v3.1_Annex V\r\nApplication: Abbigliamento\r\nType of Material: Leather\r\nType of superficial treatment: Abrasivato\r\nType of tanning: Bianca\r\nSupplier: CONCERIA M2 SRL\r\nFinal Customer: MONCLER\r\nRequested Tests: Leather&amp;Fur\r\nDelivery Note: Not provided\r\nMittente (se diverso da Committente) \/\r\nPresa in carico, Data: 2026-03-18T09:54:11+00:00\r\nPresa in carico, Orario: 10:37\r\nSampling: done by the laboratory according to the UNI EN ISO 2418:2023\r\nConditioning before and during the Trial: 24\u00b12h; 21\u00b11\u00b0C; 65\u00b12% R.H. (If required by the test method, analysis carried out in standard atmosphere)\r\nSample preparation for chemical tests: Sample is prepared according to ISO 4044 (whenever requested by the test method) - Would you like to receive the residual material? No - Would you like to receive the tested samples? No - Would you like to receive the samples by courrier? No \r\nAccettatore: Baroni M\r\nLogin Date: 2026-03-18T09:54:11+00:00\r\nLogin Time: 09:53\r\nConsegna campione: Inviato tramite corriere\r\nSample return: No ", - "StatoCommessaWeb": "Elaborata", - "DataCreazioneWeb": "2026-03-18T00:00:00+01:00", - "CodiceCommessaWeb": "26C0071", - "DataInviatoWeb": "2026-03-18T10:54:14.727+01:00", - "Richiedente": "From TRFSmart Application", - "Descrizione": "From TRFSmart Application", - "CommesseCustomFields": [ - { - "IdCommesseCustomFields": 23315543, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 33, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 259, - "TitoloTraduzione": "Sample Arrival Date:", - "Titolo": "Sample Arrival Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315544, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 34, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 348, - "TitoloTraduzione": "Sample Arrival Time:", - "Titolo": "Sample Arrival Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315545, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 28, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 362, - "TitoloTraduzione": "Tracciante materiale", - "Titolo": "Tracciante materiale", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315546, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 30, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 370, - "TitoloTraduzione": "DDT del", - "Titolo": "DDT del", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315547, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 31, - "Valore": "\/", - "Duplica": true, - "CustomField": { - "IdCustomField": 371, - "TitoloTraduzione": "Mittente (se diverso da Committente)", - "Titolo": "Mittente (se diverso da Committente)", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315548, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 32, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 372, - "TitoloTraduzione": "Quantit\u00e0", - "Titolo": "Quantit\u00e0", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315554, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 42, - "Valore": "No", - "Duplica": true, - "CustomField": { - "IdCustomField": 169, - "TitoloTraduzione": "(*Restituzione Materiale Residuo:", - "Titolo": "(*Restituzione Materiale Residuo:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315555, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 43, - "Valore": "No", - "Duplica": true, - "CustomField": { - "IdCustomField": 170, - "TitoloTraduzione": "(*Originali:", - "Titolo": "(*Originali:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315556, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 44, - "Valore": "No", - "Duplica": true, - "CustomField": { - "IdCustomField": 171, - "TitoloTraduzione": "(*Corriere:", - "Titolo": "(*Corriere:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315558, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 49, - "Valore": "Inviato tramite corriere", - "Duplica": true, - "CustomField": { - "IdCustomField": 236, - "TitoloTraduzione": "Consegna campione:", - "Titolo": "Consegna campione:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315559, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 45, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 241, - "TitoloTraduzione": "N. di Prove:", - "Titolo": "N. di Prove:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315560, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 46, - "Valore": "Baroni M", - "Duplica": true, - "CustomField": { - "IdCustomField": 244, - "TitoloTraduzione": "Accettatore:", - "Titolo": "Accettatore:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315561, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 50, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 246, - "TitoloTraduzione": "Lab outsourcing:", - "Titolo": "Lab outsourcing:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315562, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 54, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 252, - "TitoloTraduzione": "Service required:", - "Titolo": "Service required:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315522, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 1, - "Valore": "Moncler Compliance_CB", - "Duplica": false, - "CustomField": { - "IdCustomField": 1083, - "TitoloTraduzione": "MONCLER_Analisi Commissionate da: ", - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315523, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 2, - "Valore": "20262", - "Duplica": true, - "CustomField": { - "IdCustomField": 214, - "TitoloTraduzione": "Season", - "Titolo": "Season", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315524, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 4, - "Valore": "ART. PEACH", - "Duplica": false, - "CustomField": { - "IdCustomField": 210, - "TitoloTraduzione": "Sample Description ", - "Titolo": "Sample Description ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315563, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 53, - "Valore": "No", - "Duplica": true, - "CustomField": { - "IdCustomField": 253, - "TitoloTraduzione": "Sample return:", - "Titolo": "Sample return:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315564, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 51, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 254, - "TitoloTraduzione": "AWB: ", - "Titolo": "AWB: ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315565, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 52, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 255, - "TitoloTraduzione": "Data ricezione risultati test:", - "Titolo": "Data ricezione risultati test:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315566, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 47, - "Valore": "2026-03-18T09:54:11+00:00", - "Duplica": true, - "CustomField": { - "IdCustomField": 258, - "TitoloTraduzione": "Login Date:", - "Titolo": "Login Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315567, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 35, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 260, - "TitoloTraduzione": "Sample Unlock Date:", - "Titolo": "Sample Unlock Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315568, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 55, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 261, - "TitoloTraduzione": "Tipologia report (solo per Cina)", - "Titolo": "Tipologia report (solo per Cina)", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315569, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 36, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 349, - "TitoloTraduzione": "Sample Unlock Time:", - "Titolo": "Sample Unlock Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315570, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 48, - "Valore": "09:53", - "Duplica": false, - "CustomField": { - "IdCustomField": 350, - "TitoloTraduzione": "Login Time:", - "Titolo": "Login Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315571, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 38, - "Valore": "10:37", - "Duplica": true, - "CustomField": { - "IdCustomField": 360, - "TitoloTraduzione": "Presa in carico, Orario:", - "Titolo": "Presa in carico, Orario:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315572, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 37, - "Valore": "2026-03-18T09:54:11+00:00", - "Duplica": true, - "CustomField": { - "IdCustomField": 361, - "TitoloTraduzione": "Presa in carico, Data:", - "Titolo": "Presa in carico, Data:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315573, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 58, - "Valore": "", - "Duplica": false, - "CustomField": { - "IdCustomField": 771, - "TitoloTraduzione": "RATING RSL MONCLER", - "Titolo": "RATING RSL MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315574, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 56, - "Valore": "", - "Duplica": false, - "CustomField": { - "IdCustomField": 772, - "TitoloTraduzione": "RATING CHINA MONCLER", - "Titolo": "RATING CHINA MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315575, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 57, - "Valore": "", - "Duplica": false, - "CustomField": { - "IdCustomField": 773, - "TitoloTraduzione": "RATING MANUAL MONCLER", - "Titolo": "RATING MANUAL MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315525, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 6, - "Valore": "L209A4M00130M7280", - "Duplica": true, - "CustomField": { - "IdCustomField": 263, - "TitoloTraduzione": "Style Code:", - "Titolo": "Style Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315526, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 5, - "Valore": "BLACK", - "Duplica": true, - "CustomField": { - "IdCustomField": 264, - "TitoloTraduzione": "Color Code:", - "Titolo": "Color Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315527, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 3, - "Valore": "PE007J", - "Duplica": true, - "CustomField": { - "IdCustomField": 467, - "TitoloTraduzione": "Sample Code:", - "Titolo": "Sample Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315528, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 17, - "Valore": "Abbigliamento", - "Duplica": true, - "CustomField": { - "IdCustomField": 150, - "TitoloTraduzione": "Destinazione d'uso: ", - "Titolo": "Destinazione d'uso: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315529, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 18, - "Valore": "Leather", - "Duplica": true, - "CustomField": { - "IdCustomField": 156, - "TitoloTraduzione": "Tipologia di Materiale:", - "Titolo": "Tipologia di Materiale:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315530, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 16, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 161, - "TitoloTraduzione": "Categoria:", - "Titolo": "Categoria:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315531, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 15, - "Valore": "According to A&FW_PEFCR_v3.1_Annex V", - "Duplica": true, - "CustomField": { - "IdCustomField": 167, - "TitoloTraduzione": "Capitolato di riferimento", - "Titolo": "Capitolato di riferimento", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315532, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 13, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 207, - "TitoloTraduzione": "Composition Claimed", - "Titolo": "Composition Claimed", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315533, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 9, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 468, - "TitoloTraduzione": "Style Description:", - "Titolo": "Style Description:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315534, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 14, - "Valore": "P", - "Duplica": true, - "CustomField": { - "IdCustomField": 543, - "TitoloTraduzione": "Collezione:", - "Titolo": "Collezione:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315535, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 12, - "Valore": "RM-ACC", - "Duplica": true, - "CustomField": { - "IdCustomField": 1014, - "TitoloTraduzione": "CDC", - "Titolo": "CDC", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315536, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 21, - "Valore": " CONCERIA M2 SRL", - "Duplica": false, - "CustomField": { - "IdCustomField": 142, - "TitoloTraduzione": "Fornitore:", - "Titolo": "Fornitore:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315537, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 19, - "Valore": "Abrasivato", - "Duplica": true, - "CustomField": { - "IdCustomField": 146, - "TitoloTraduzione": "Tipologia di Trattamento Superficiale:", - "Titolo": "Tipologia di Trattamento Superficiale:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315538, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 20, - "Valore": "Bianca", - "Duplica": true, - "CustomField": { - "IdCustomField": 147, - "TitoloTraduzione": "Tipologia di concia: ", - "Titolo": "Tipologia di concia: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315539, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 26, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 166, - "TitoloTraduzione": "Note:", - "Titolo": "Note:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315540, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 25, - "Valore": "", - "Duplica": false, - "CustomField": { - "IdCustomField": 189, - "TitoloTraduzione": "Tested Component:", - "Titolo": "Tested Component:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315541, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 29, - "Valore": "Not provided", - "Duplica": true, - "CustomField": { - "IdCustomField": 193, - "TitoloTraduzione": "DDT N. ", - "Titolo": "DDT N. ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315542, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 22, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 194, - "TitoloTraduzione": "Fabbricante:", - "Titolo": "Fabbricante:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315549, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 27, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 555, - "TitoloTraduzione": "Additional Info:", - "Titolo": "Additional Info:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315550, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 23, - "Valore": "MONCLER", - "Duplica": false, - "CustomField": { - "IdCustomField": 595, - "TitoloTraduzione": "Final Customer: ", - "Titolo": "Final Customer: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "MONCLER", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315551, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 24, - "Valore": "Leather&amp;Fur", - "Duplica": false, - "CustomField": { - "IdCustomField": 748, - "TitoloTraduzione": "Analisi Richieste:", - "Titolo": "Analisi Richieste:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315552, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 39, - "Valore": "done by the laboratory according to the UNI EN ISO 2418:2023", - "Duplica": true, - "CustomField": { - "IdCustomField": 163, - "TitoloTraduzione": "Campionamento:", - "Titolo": "Campionamento:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315553, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 40, - "Valore": "24\u00b12h; 21\u00b11\u00b0C; 65\u00b12% R.H. (If required by the test method, analysis carried out in standard atmosphere)", - "Duplica": true, - "CustomField": { - "IdCustomField": 165, - "TitoloTraduzione": "Condizionamento prima e durante il Test: ", - "Titolo": "Condizionamento prima e durante il Test: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315557, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 41, - "Valore": "Sample is prepared according to ISO 4044 (whenever requested by the test method)", - "Duplica": true, - "CustomField": { - "IdCustomField": 181, - "TitoloTraduzione": "Preparazione del campione ai test chimici: ", - "Titolo": "Preparazione del campione ai test chimici: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - } - ] -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_564817_get_step7_1773827651.txt b/public/userarea/logs/api/commessa_564817_get_step7_1773827651.txt deleted file mode 100644 index 6f41c245..00000000 --- a/public/userarea/logs/api/commessa_564817_get_step7_1773827651.txt +++ /dev/null @@ -1,1314 +0,0 @@ -curl --location --request GET 'https://93.43.5.102/limsapi/api/odata/CommessaWeb(564817)?$expand=CommesseCustomFields($expand=CustomField)' \ ---header 'Authorization: Bearer ••••••' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CommessaWeb(CommesseCustomFields(CustomField()))\/$entity", - "IdCommessa": 564817, - "CodiceCommessa": "26C0071", - "RiferimentoCertificato": null, - "StatoCommessaWeb": "Nuova", - "DataCreazioneWeb": "2026-03-18T10:54:02.187+01:00", - "CodiceCommessaWeb": "26C0071", - "DataInviatoWeb": null, - "Richiedente": "From TRFSmart Application", - "Descrizione": "From TRFSmart Application", - "CommesseCustomFields": [ - { - "IdCommesseCustomFields": 23315543, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 33, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 259, - "TitoloTraduzione": "Sample Arrival Date:", - "Titolo": "Sample Arrival Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315544, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 34, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 348, - "TitoloTraduzione": "Sample Arrival Time:", - "Titolo": "Sample Arrival Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315545, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 28, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 362, - "TitoloTraduzione": "Tracciante materiale", - "Titolo": "Tracciante materiale", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315546, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 30, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 370, - "TitoloTraduzione": "DDT del", - "Titolo": "DDT del", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315547, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 31, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 371, - "TitoloTraduzione": "Mittente (se diverso da Committente)", - "Titolo": "Mittente (se diverso da Committente)", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315548, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 32, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 372, - "TitoloTraduzione": "Quantit\u00e0", - "Titolo": "Quantit\u00e0", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315554, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 42, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 169, - "TitoloTraduzione": "(*Restituzione Materiale Residuo:", - "Titolo": "(*Restituzione Materiale Residuo:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315555, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 43, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 170, - "TitoloTraduzione": "(*Originali:", - "Titolo": "(*Originali:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315556, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 44, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 171, - "TitoloTraduzione": "(*Corriere:", - "Titolo": "(*Corriere:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315558, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 49, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 236, - "TitoloTraduzione": "Consegna campione:", - "Titolo": "Consegna campione:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315559, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 45, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 241, - "TitoloTraduzione": "N. di Prove:", - "Titolo": "N. di Prove:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315560, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 46, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 244, - "TitoloTraduzione": "Accettatore:", - "Titolo": "Accettatore:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315561, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 50, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 246, - "TitoloTraduzione": "Lab outsourcing:", - "Titolo": "Lab outsourcing:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315562, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 54, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 252, - "TitoloTraduzione": "Service required:", - "Titolo": "Service required:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315522, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 1, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 1083, - "TitoloTraduzione": "MONCLER_Analisi Commissionate da: ", - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315523, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 2, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 214, - "TitoloTraduzione": "Season", - "Titolo": "Season", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315524, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 4, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 210, - "TitoloTraduzione": "Sample Description ", - "Titolo": "Sample Description ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315563, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 53, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 253, - "TitoloTraduzione": "Sample return:", - "Titolo": "Sample return:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315564, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 51, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 254, - "TitoloTraduzione": "AWB: ", - "Titolo": "AWB: ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315565, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 52, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 255, - "TitoloTraduzione": "Data ricezione risultati test:", - "Titolo": "Data ricezione risultati test:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315566, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 47, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 258, - "TitoloTraduzione": "Login Date:", - "Titolo": "Login Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315567, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 35, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 260, - "TitoloTraduzione": "Sample Unlock Date:", - "Titolo": "Sample Unlock Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315568, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 55, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 261, - "TitoloTraduzione": "Tipologia report (solo per Cina)", - "Titolo": "Tipologia report (solo per Cina)", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315569, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 36, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 349, - "TitoloTraduzione": "Sample Unlock Time:", - "Titolo": "Sample Unlock Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315570, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 48, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 350, - "TitoloTraduzione": "Login Time:", - "Titolo": "Login Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315571, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 38, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 360, - "TitoloTraduzione": "Presa in carico, Orario:", - "Titolo": "Presa in carico, Orario:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315572, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 37, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 361, - "TitoloTraduzione": "Presa in carico, Data:", - "Titolo": "Presa in carico, Data:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315573, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 58, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 771, - "TitoloTraduzione": "RATING RSL MONCLER", - "Titolo": "RATING RSL MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315574, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 56, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 772, - "TitoloTraduzione": "RATING CHINA MONCLER", - "Titolo": "RATING CHINA MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315575, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 57, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 773, - "TitoloTraduzione": "RATING MANUAL MONCLER", - "Titolo": "RATING MANUAL MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315525, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 6, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 263, - "TitoloTraduzione": "Style Code:", - "Titolo": "Style Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315526, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 5, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 264, - "TitoloTraduzione": "Color Code:", - "Titolo": "Color Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315527, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 3, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 467, - "TitoloTraduzione": "Sample Code:", - "Titolo": "Sample Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315528, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 17, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 150, - "TitoloTraduzione": "Destinazione d'uso: ", - "Titolo": "Destinazione d'uso: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315529, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 18, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 156, - "TitoloTraduzione": "Tipologia di Materiale:", - "Titolo": "Tipologia di Materiale:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315530, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 16, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 161, - "TitoloTraduzione": "Categoria:", - "Titolo": "Categoria:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315531, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 15, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 167, - "TitoloTraduzione": "Capitolato di riferimento", - "Titolo": "Capitolato di riferimento", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315532, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 13, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 207, - "TitoloTraduzione": "Composition Claimed", - "Titolo": "Composition Claimed", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315533, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 9, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 468, - "TitoloTraduzione": "Style Description:", - "Titolo": "Style Description:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315534, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 14, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 543, - "TitoloTraduzione": "Collezione:", - "Titolo": "Collezione:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315535, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 12, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 1014, - "TitoloTraduzione": "CDC", - "Titolo": "CDC", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315536, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 21, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 142, - "TitoloTraduzione": "Fornitore:", - "Titolo": "Fornitore:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315537, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 19, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 146, - "TitoloTraduzione": "Tipologia di Trattamento Superficiale:", - "Titolo": "Tipologia di Trattamento Superficiale:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315538, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 20, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 147, - "TitoloTraduzione": "Tipologia di concia: ", - "Titolo": "Tipologia di concia: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315539, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 26, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 166, - "TitoloTraduzione": "Note:", - "Titolo": "Note:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315540, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 25, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 189, - "TitoloTraduzione": "Tested Component:", - "Titolo": "Tested Component:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315541, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 29, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 193, - "TitoloTraduzione": "DDT N. ", - "Titolo": "DDT N. ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315542, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 22, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 194, - "TitoloTraduzione": "Fabbricante:", - "Titolo": "Fabbricante:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315549, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 27, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 555, - "TitoloTraduzione": "Additional Info:", - "Titolo": "Additional Info:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315550, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 23, - "Valore": "MONCLER", - "Duplica": false, - "CustomField": { - "IdCustomField": 595, - "TitoloTraduzione": "Final Customer: ", - "Titolo": "Final Customer: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "MONCLER", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315551, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 24, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 748, - "TitoloTraduzione": "Analisi Richieste:", - "Titolo": "Analisi Richieste:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315552, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 39, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 163, - "TitoloTraduzione": "Campionamento:", - "Titolo": "Campionamento:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315553, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 40, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 165, - "TitoloTraduzione": "Condizionamento prima e durante il Test: ", - "Titolo": "Condizionamento prima e durante il Test: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23315557, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 41, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 181, - "TitoloTraduzione": "Preparazione del campione ai test chimici: ", - "Titolo": "Preparazione del campione ai test chimici: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - } - ] -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_564817_importa_step91_1773827656.txt b/public/userarea/logs/api/commessa_564817_importa_step91_1773827656.txt deleted file mode 100644 index 94518bd0..00000000 --- a/public/userarea/logs/api/commessa_564817_importa_step91_1773827656.txt +++ /dev/null @@ -1,20 +0,0 @@ -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/CommessaWeb(564817)/ImportaCommessa' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "IdUtente": 285 -}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CommessaWeb\/$entity", - "IdCommessa": 564817, - "CodiceCommessa": "26C0071", - "RiferimentoCertificato": null, - "StatoCommessaWeb": "Elaborata", - "DataCreazioneWeb": "2026-03-18T10:54:02.187+01:00", - "CodiceCommessaWeb": "26C0071", - "DataInviatoWeb": "2026-03-18T10:54:14.727+01:00", - "Richiedente": "From TRFSmart Application", - "Descrizione": "From TRFSmart Application" -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_564817_photos_step5_2_1773827650.txt b/public/userarea/logs/api/commessa_564817_photos_step5_2_1773827650.txt deleted file mode 100644 index 98ceacc8..00000000 --- a/public/userarea/logs/api/commessa_564817_photos_step5_2_1773827650.txt +++ /dev/null @@ -1,48 +0,0 @@ -Photos for CommessaWeb 564817 (iddatadb=1270): -Total photos found: 2, campioni: 4 - -=== Campione 736487 (main) === -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/Campione(736487)/UploadCampioneFile' \ ---header 'Authorization: Bearer ••••••' \ ---form 'file=@C:\xampp\htdocs\trf_certest\public\photostrf\1270-20260318095305-1e672dd9-5420-4432-b422-02d8d271c178.jpg' \ ---form 'StampaNelRapporto=true' \ ---form 'PrimaPagina=true' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CampioneFiles\/$entity", - "IdCampioneFile": 1785492, - "FileName": "1270-20260318095305-1e672dd9-5420-4432-b422-02d8d271c178.jpg", - "Web": false, - "AllegaAlRapporto": false, - "StampaNelRapporto": false, - "ReportGermania": false, - "PrimaPagina": false, - "Duplica": false, - "LastUpdate": "2026-03-18T10:54:09.5438326+01:00", - "Titolo": null -} - ---- -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/Campione(736487)/UploadCampioneFile' \ ---header 'Authorization: Bearer ••••••' \ ---form 'file=@C:\xampp\htdocs\trf_certest\public\photostrf\1270-20260318095305-104a2ca5-8a4c-4df8-b2ca-a28f518b7b25.jpg' \ ---form 'StampaNelRapporto=false' \ ---form 'PrimaPagina=false' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CampioneFiles\/$entity", - "IdCampioneFile": 1785493, - "FileName": "1270-20260318095305-104a2ca5-8a4c-4df8-b2ca-a28f518b7b25.jpg", - "Web": false, - "AllegaAlRapporto": false, - "StampaNelRapporto": false, - "ReportGermania": false, - "PrimaPagina": false, - "Duplica": false, - "LastUpdate": "2026-03-18T10:54:10.8237002+01:00", - "Titolo": null -} - ---- diff --git a/public/userarea/logs/api/commessa_564817_send_step9_1773827653.txt b/public/userarea/logs/api/commessa_564817_send_step9_1773827653.txt deleted file mode 100644 index cdd11edc..00000000 --- a/public/userarea/logs/api/commessa_564817_send_step9_1773827653.txt +++ /dev/null @@ -1,18 +0,0 @@ -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/CommessaWeb(564817)/InviaCommessa' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CommessaWeb\/$entity", - "IdCommessa": 564817, - "CodiceCommessa": "26C0071", - "RiferimentoCertificato": null, - "StatoCommessaWeb": "Nuova", - "DataCreazioneWeb": "2026-03-18T10:54:02.187+01:00", - "CodiceCommessaWeb": "26C0071", - "DataInviatoWeb": "2026-03-18T10:54:14.7252132+01:00", - "Richiedente": "From TRFSmart Application", - "Descrizione": "From TRFSmart Application" -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_564817_update_step7_1773827653.txt b/public/userarea/logs/api/commessa_564817_update_step7_1773827653.txt deleted file mode 100644 index 8bd888e0..00000000 --- a/public/userarea/logs/api/commessa_564817_update_step7_1773827653.txt +++ /dev/null @@ -1,226 +0,0 @@ -curl --location --request PATCH 'https://93.43.5.102/limsapi/api/odata/CommessaWeb(564817)' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "CommesseCustomFields": [ - { - "IdCommesseCustomFields": 23315543, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23315544, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23315545, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23315546, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23315547, - "Valore": "/" - }, - { - "IdCommesseCustomFields": 23315548, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23315554, - "Valore": "673" - }, - { - "IdCommesseCustomFields": 23315555, - "Valore": "674" - }, - { - "IdCommesseCustomFields": 23315556, - "Valore": "669" - }, - { - "IdCommesseCustomFields": 23315558, - "Valore": "1469" - }, - { - "IdCommesseCustomFields": 23315559, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23315560, - "Valore": "12875" - }, - { - "IdCommesseCustomFields": 23315561, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23315562, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23315522, - "Valore": "13497" - }, - { - "IdCommesseCustomFields": 23315523, - "Valore": "20262" - }, - { - "IdCommesseCustomFields": 23315524, - "Valore": "ART. PEACH" - }, - { - "IdCommesseCustomFields": 23315563, - "Valore": "1892" - }, - { - "IdCommesseCustomFields": 23315564, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23315565, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23315566, - "Valore": "2026-03-18T09:54:11+00:00" - }, - { - "IdCommesseCustomFields": 23315567, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23315568, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23315569, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23315570, - "Valore": "09:53" - }, - { - "IdCommesseCustomFields": 23315571, - "Valore": "10:37" - }, - { - "IdCommesseCustomFields": 23315572, - "Valore": "2026-03-18T09:54:11+00:00" - }, - { - "IdCommesseCustomFields": 23315573, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23315574, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23315575, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23315525, - "Valore": "L209A4M00130M7280" - }, - { - "IdCommesseCustomFields": 23315526, - "Valore": "BLACK" - }, - { - "IdCommesseCustomFields": 23315527, - "Valore": "PE007J" - }, - { - "IdCommesseCustomFields": 23315528, - "Valore": "264" - }, - { - "IdCommesseCustomFields": 23315529, - "Valore": "420" - }, - { - "IdCommesseCustomFields": 23315530, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23315531, - "Valore": "15357" - }, - { - "IdCommesseCustomFields": 23315532, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23315533, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23315534, - "Valore": "P" - }, - { - "IdCommesseCustomFields": 23315535, - "Valore": "RM-ACC" - }, - { - "IdCommesseCustomFields": 23315536, - "Valore": " CONCERIA M2 SRL" - }, - { - "IdCommesseCustomFields": 23315537, - "Valore": "344" - }, - { - "IdCommesseCustomFields": 23315538, - "Valore": "520" - }, - { - "IdCommesseCustomFields": 23315539, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23315540, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23315541, - "Valore": "Not provided" - }, - { - "IdCommesseCustomFields": 23315542, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23315549, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23315550, - "Valore": "4678" - }, - { - "IdCommesseCustomFields": 23315551, - "Valore": "Leather&amp;Fur" - }, - { - "IdCommesseCustomFields": 23315552, - "Valore": "278" - }, - { - "IdCommesseCustomFields": 23315553, - "Valore": "2089" - }, - { - "IdCommesseCustomFields": 23315557, - "Valore": "745" - } - ] -}' - -RESPONSE: -null \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_565085_campioni_step6_1773911004.txt b/public/userarea/logs/api/commessa_565085_campioni_step6_1773911004.txt deleted file mode 100644 index 7c98dcdd..00000000 --- a/public/userarea/logs/api/commessa_565085_campioni_step6_1773911004.txt +++ /dev/null @@ -1,90 +0,0 @@ -CAMPIONE #0 -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/Campione' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "Commessa": 565085, - "Matrice": 7714, - "SottoMatrice": null, - "SchemaCustomField": 82, - "NoteWeb": "Parte AAA", - "ConsegnaRichiesta": "2026-04-08" -}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#Campione\/$entity", - "IdCampione": 736899, - "CodiceCampione": "11038", - "CodiceCampioneWeb": "11038", - "StatoCampione": "Nuovo", - "DataCreazioneWeb": "2026-03-19T10:03:19.8547279+01:00", - "RiferimentoWeb": "", - "ConsegnaRichiesta": "2026-04-08T00:00:00+02:00", - "DataAccettazioneLims": null, - "Riferimento": null, - "NoteWeb": "Parte AAA", - "GruppiRicercati": null -} - ---- -CAMPIONE #1 -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/Campione' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "Commessa": 565085, - "Matrice": 7714, - "SottoMatrice": null, - "SchemaCustomField": 82, - "NoteWeb": "Parte BBB", - "ConsegnaRichiesta": "2026-04-08" -}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#Campione\/$entity", - "IdCampione": 736900, - "CodiceCampione": "11039", - "CodiceCampioneWeb": "11039", - "StatoCampione": "Nuovo", - "DataCreazioneWeb": "2026-03-19T10:03:22.0431135+01:00", - "RiferimentoWeb": "", - "ConsegnaRichiesta": "2026-04-08T00:00:00+02:00", - "DataAccettazioneLims": null, - "Riferimento": null, - "NoteWeb": "Parte BBB", - "GruppiRicercati": null -} - ---- -CAMPIONE #2 -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/Campione' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "Commessa": 565085, - "Matrice": 7714, - "SottoMatrice": null, - "SchemaCustomField": 82, - "NoteWeb": "Parte CCC", - "ConsegnaRichiesta": "2026-04-08" -}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#Campione\/$entity", - "IdCampione": 736901, - "CodiceCampione": "11040", - "CodiceCampioneWeb": "11040", - "StatoCampione": "Nuovo", - "DataCreazioneWeb": "2026-03-19T10:03:23.6170597+01:00", - "RiferimentoWeb": "", - "ConsegnaRichiesta": "2026-04-08T00:00:00+02:00", - "DataAccettazioneLims": null, - "Riferimento": null, - "NoteWeb": "Parte CCC", - "GruppiRicercati": null -} - ---- diff --git a/public/userarea/logs/api/commessa_565085_get_step10_1773911014.txt b/public/userarea/logs/api/commessa_565085_get_step10_1773911014.txt deleted file mode 100644 index fafa43d8..00000000 --- a/public/userarea/logs/api/commessa_565085_get_step10_1773911014.txt +++ /dev/null @@ -1,1314 +0,0 @@ -curl --location --request GET 'https://93.43.5.102/limsapi/api/odata/CommessaWeb(565085)?$expand=CommesseCustomFields($expand=CustomField)' \ ---header 'Authorization: Bearer ••••••' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CommessaWeb(CommesseCustomFields(CustomField()))\/$entity", - "IdCommessa": 565085, - "CodiceCommessa": "2614232", - "RiferimentoCertificato": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20262\r\nSample Code: PE007J\r\nSample Description ART. PEACH\r\nColour Code: BLACK\r\nStyle Code: L209B4M00110M7280\r\nStyle Description: AAA\r\nCDC RM-ACC\r\nComposition Claimed AAA\r\nCollection: P\r\nRequirements: According to 16 CFR 1500.51-53\r\nCategory: AAA\r\nApplication: Abbigliamento\r\nType of Material: Leather\r\nType of superficial treatment: Abrasivato\r\nType of tanning: Allume\r\nSupplier: \u00a0CONCERIA M2 SRL\r\nVendor: AAA\r\nFinal Customer: MONCLER\r\nRequested Tests: Leather&amp;Fur\r\nTested Component: AAA\r\nNotes: AAA\r\nAdditional Information: aaa\r\nTracciante materiale Apparel Hardware\r\nDelivery Note: Not provided\r\nDelivery Note Date 17\/03\/2026\r\nMittente (se diverso da Committente) \/ - Quantit\u00e0 5\r\nSample Arrival Date: 18\/03\/2026\r\nSample Arrival Time: 09:00\r\nSample Unlock Date: 18\/03\/2026\r\nSample Unlock Time: 09:00\r\nPresa in carico, Data: 19\/03\/2026\r\nPresa in carico, Orario: 09:58\r\nSampling: done by the laboratory according to the UNI EN ISO 2418:2023\r\nConditioning before and during the Trial: 24\u00b12h; 21\u00b11\u00b0C; 65\u00b12% R.H. (If required by the test method, analysis carried out in standard atmosphere)\r\nSample preparation for chemical tests: Sample is prepared according to ISO 4044 (whenever requested by the test method) - Would you like to receive the residual material? No - Would you like to receive the tested samples? No - Would you like to receive the samples by courrier? No - N. di Prove: >3\r\nAccettatore: Baroni M\r\nLogin Date: 19\/03\/2026\r\nLogin Time: 09:03\r\nConsegna campione: Inviato tramite corriere\r\nLab outsourcing: Appliance Engineering Technology France SAS\r\nSample return: No ", - "StatoCommessaWeb": "Elaborata", - "DataCreazioneWeb": "2026-03-19T00:00:00+01:00", - "CodiceCommessaWeb": "26C0089", - "DataInviatoWeb": "2026-03-19T10:03:30.603+01:00", - "Richiedente": "From TRFSmart Application", - "Descrizione": "From TRFSmart Application", - "CommesseCustomFields": [ - { - "IdCommesseCustomFields": 23328248, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 33, - "Valore": "18\/03\/2026", - "Duplica": true, - "CustomField": { - "IdCustomField": 259, - "TitoloTraduzione": "Sample Arrival Date:", - "Titolo": "Sample Arrival Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328249, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 34, - "Valore": "09:00", - "Duplica": true, - "CustomField": { - "IdCustomField": 348, - "TitoloTraduzione": "Sample Arrival Time:", - "Titolo": "Sample Arrival Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328250, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 28, - "Valore": "Apparel Hardware", - "Duplica": true, - "CustomField": { - "IdCustomField": 362, - "TitoloTraduzione": "Tracciante materiale", - "Titolo": "Tracciante materiale", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328251, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 30, - "Valore": "17\/03\/2026", - "Duplica": true, - "CustomField": { - "IdCustomField": 370, - "TitoloTraduzione": "DDT del", - "Titolo": "DDT del", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328252, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 31, - "Valore": "\/", - "Duplica": true, - "CustomField": { - "IdCustomField": 371, - "TitoloTraduzione": "Mittente (se diverso da Committente)", - "Titolo": "Mittente (se diverso da Committente)", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328253, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 32, - "Valore": "5", - "Duplica": true, - "CustomField": { - "IdCustomField": 372, - "TitoloTraduzione": "Quantit\u00e0", - "Titolo": "Quantit\u00e0", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328259, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 42, - "Valore": "No", - "Duplica": true, - "CustomField": { - "IdCustomField": 169, - "TitoloTraduzione": "(*Restituzione Materiale Residuo:", - "Titolo": "(*Restituzione Materiale Residuo:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328260, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 43, - "Valore": "No", - "Duplica": true, - "CustomField": { - "IdCustomField": 170, - "TitoloTraduzione": "(*Originali:", - "Titolo": "(*Originali:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328261, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 44, - "Valore": "No", - "Duplica": true, - "CustomField": { - "IdCustomField": 171, - "TitoloTraduzione": "(*Corriere:", - "Titolo": "(*Corriere:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328263, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 49, - "Valore": "Inviato tramite corriere", - "Duplica": true, - "CustomField": { - "IdCustomField": 236, - "TitoloTraduzione": "Consegna campione:", - "Titolo": "Consegna campione:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328264, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 45, - "Valore": ">3", - "Duplica": true, - "CustomField": { - "IdCustomField": 241, - "TitoloTraduzione": "N. di Prove:", - "Titolo": "N. di Prove:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328265, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 46, - "Valore": "Baroni M", - "Duplica": true, - "CustomField": { - "IdCustomField": 244, - "TitoloTraduzione": "Accettatore:", - "Titolo": "Accettatore:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328266, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 50, - "Valore": "Appliance Engineering Technology France SAS", - "Duplica": true, - "CustomField": { - "IdCustomField": 246, - "TitoloTraduzione": "Lab outsourcing:", - "Titolo": "Lab outsourcing:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328267, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 54, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 252, - "TitoloTraduzione": "Service required:", - "Titolo": "Service required:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328227, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 1, - "Valore": "Moncler Compliance_CB", - "Duplica": false, - "CustomField": { - "IdCustomField": 1083, - "TitoloTraduzione": "MONCLER_Analisi Commissionate da: ", - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328228, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 2, - "Valore": "20262", - "Duplica": true, - "CustomField": { - "IdCustomField": 214, - "TitoloTraduzione": "Season", - "Titolo": "Season", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328229, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 4, - "Valore": "ART. PEACH", - "Duplica": false, - "CustomField": { - "IdCustomField": 210, - "TitoloTraduzione": "Sample Description ", - "Titolo": "Sample Description ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328268, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 53, - "Valore": "No", - "Duplica": true, - "CustomField": { - "IdCustomField": 253, - "TitoloTraduzione": "Sample return:", - "Titolo": "Sample return:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328269, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 51, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 254, - "TitoloTraduzione": "AWB: ", - "Titolo": "AWB: ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328270, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 52, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 255, - "TitoloTraduzione": "Data ricezione risultati test:", - "Titolo": "Data ricezione risultati test:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328271, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 47, - "Valore": "19\/03\/2026", - "Duplica": true, - "CustomField": { - "IdCustomField": 258, - "TitoloTraduzione": "Login Date:", - "Titolo": "Login Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328272, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 35, - "Valore": "18\/03\/2026", - "Duplica": true, - "CustomField": { - "IdCustomField": 260, - "TitoloTraduzione": "Sample Unlock Date:", - "Titolo": "Sample Unlock Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328273, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 55, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 261, - "TitoloTraduzione": "Tipologia report (solo per Cina)", - "Titolo": "Tipologia report (solo per Cina)", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328274, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 36, - "Valore": "09:00", - "Duplica": true, - "CustomField": { - "IdCustomField": 349, - "TitoloTraduzione": "Sample Unlock Time:", - "Titolo": "Sample Unlock Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328275, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 48, - "Valore": "09:03", - "Duplica": false, - "CustomField": { - "IdCustomField": 350, - "TitoloTraduzione": "Login Time:", - "Titolo": "Login Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328276, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 38, - "Valore": "09:58", - "Duplica": true, - "CustomField": { - "IdCustomField": 360, - "TitoloTraduzione": "Presa in carico, Orario:", - "Titolo": "Presa in carico, Orario:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328277, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 37, - "Valore": "19\/03\/2026", - "Duplica": true, - "CustomField": { - "IdCustomField": 361, - "TitoloTraduzione": "Presa in carico, Data:", - "Titolo": "Presa in carico, Data:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328278, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 58, - "Valore": "", - "Duplica": false, - "CustomField": { - "IdCustomField": 771, - "TitoloTraduzione": "RATING RSL MONCLER", - "Titolo": "RATING RSL MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328279, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 56, - "Valore": "", - "Duplica": false, - "CustomField": { - "IdCustomField": 772, - "TitoloTraduzione": "RATING CHINA MONCLER", - "Titolo": "RATING CHINA MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328280, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 57, - "Valore": "", - "Duplica": false, - "CustomField": { - "IdCustomField": 773, - "TitoloTraduzione": "RATING MANUAL MONCLER", - "Titolo": "RATING MANUAL MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328230, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 6, - "Valore": "L209B4M00110M7280", - "Duplica": true, - "CustomField": { - "IdCustomField": 263, - "TitoloTraduzione": "Style Code:", - "Titolo": "Style Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328231, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 5, - "Valore": "BLACK", - "Duplica": true, - "CustomField": { - "IdCustomField": 264, - "TitoloTraduzione": "Color Code:", - "Titolo": "Color Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328232, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 3, - "Valore": "PE007J", - "Duplica": true, - "CustomField": { - "IdCustomField": 467, - "TitoloTraduzione": "Sample Code:", - "Titolo": "Sample Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328233, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 17, - "Valore": "Abbigliamento", - "Duplica": true, - "CustomField": { - "IdCustomField": 150, - "TitoloTraduzione": "Destinazione d'uso: ", - "Titolo": "Destinazione d'uso: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328234, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 18, - "Valore": "Leather", - "Duplica": true, - "CustomField": { - "IdCustomField": 156, - "TitoloTraduzione": "Tipologia di Materiale:", - "Titolo": "Tipologia di Materiale:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328235, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 16, - "Valore": "AAA", - "Duplica": true, - "CustomField": { - "IdCustomField": 161, - "TitoloTraduzione": "Categoria:", - "Titolo": "Categoria:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328236, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 15, - "Valore": "According to 16 CFR 1500.51-53", - "Duplica": true, - "CustomField": { - "IdCustomField": 167, - "TitoloTraduzione": "Capitolato di riferimento", - "Titolo": "Capitolato di riferimento", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328237, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 13, - "Valore": "AAA", - "Duplica": true, - "CustomField": { - "IdCustomField": 207, - "TitoloTraduzione": "Composition Claimed", - "Titolo": "Composition Claimed", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328238, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 9, - "Valore": "AAA", - "Duplica": true, - "CustomField": { - "IdCustomField": 468, - "TitoloTraduzione": "Style Description:", - "Titolo": "Style Description:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328239, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 14, - "Valore": "P", - "Duplica": true, - "CustomField": { - "IdCustomField": 543, - "TitoloTraduzione": "Collezione:", - "Titolo": "Collezione:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328240, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 12, - "Valore": "RM-ACC", - "Duplica": true, - "CustomField": { - "IdCustomField": 1014, - "TitoloTraduzione": "CDC", - "Titolo": "CDC", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328241, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 21, - "Valore": "\u00a0CONCERIA M2 SRL", - "Duplica": false, - "CustomField": { - "IdCustomField": 142, - "TitoloTraduzione": "Fornitore:", - "Titolo": "Fornitore:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328242, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 19, - "Valore": "Abrasivato", - "Duplica": true, - "CustomField": { - "IdCustomField": 146, - "TitoloTraduzione": "Tipologia di Trattamento Superficiale:", - "Titolo": "Tipologia di Trattamento Superficiale:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328243, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 20, - "Valore": "Allume", - "Duplica": true, - "CustomField": { - "IdCustomField": 147, - "TitoloTraduzione": "Tipologia di concia: ", - "Titolo": "Tipologia di concia: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328244, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 26, - "Valore": "AAA", - "Duplica": true, - "CustomField": { - "IdCustomField": 166, - "TitoloTraduzione": "Note:", - "Titolo": "Note:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328245, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 25, - "Valore": "AAA", - "Duplica": false, - "CustomField": { - "IdCustomField": 189, - "TitoloTraduzione": "Tested Component:", - "Titolo": "Tested Component:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328246, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 29, - "Valore": "Not provided", - "Duplica": true, - "CustomField": { - "IdCustomField": 193, - "TitoloTraduzione": "DDT N. ", - "Titolo": "DDT N. ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328247, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 22, - "Valore": "AAA", - "Duplica": true, - "CustomField": { - "IdCustomField": 194, - "TitoloTraduzione": "Fabbricante:", - "Titolo": "Fabbricante:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328254, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 27, - "Valore": "aaa", - "Duplica": true, - "CustomField": { - "IdCustomField": 555, - "TitoloTraduzione": "Additional Info:", - "Titolo": "Additional Info:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328255, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 23, - "Valore": "MONCLER", - "Duplica": false, - "CustomField": { - "IdCustomField": 595, - "TitoloTraduzione": "Final Customer: ", - "Titolo": "Final Customer: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "MONCLER", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328256, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 24, - "Valore": "Leather&amp;Fur", - "Duplica": false, - "CustomField": { - "IdCustomField": 748, - "TitoloTraduzione": "Analisi Richieste:", - "Titolo": "Analisi Richieste:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328257, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 39, - "Valore": "done by the laboratory according to the UNI EN ISO 2418:2023", - "Duplica": true, - "CustomField": { - "IdCustomField": 163, - "TitoloTraduzione": "Campionamento:", - "Titolo": "Campionamento:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328258, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 40, - "Valore": "24\u00b12h; 21\u00b11\u00b0C; 65\u00b12% R.H. (If required by the test method, analysis carried out in standard atmosphere)", - "Duplica": true, - "CustomField": { - "IdCustomField": 165, - "TitoloTraduzione": "Condizionamento prima e durante il Test: ", - "Titolo": "Condizionamento prima e durante il Test: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328262, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 41, - "Valore": "Sample is prepared according to ISO 4044 (whenever requested by the test method)", - "Duplica": true, - "CustomField": { - "IdCustomField": 181, - "TitoloTraduzione": "Preparazione del campione ai test chimici: ", - "Titolo": "Preparazione del campione ai test chimici: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - } - ] -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_565085_get_step7_1773911008.txt b/public/userarea/logs/api/commessa_565085_get_step7_1773911008.txt deleted file mode 100644 index 5fab2c1e..00000000 --- a/public/userarea/logs/api/commessa_565085_get_step7_1773911008.txt +++ /dev/null @@ -1,1314 +0,0 @@ -curl --location --request GET 'https://93.43.5.102/limsapi/api/odata/CommessaWeb(565085)?$expand=CommesseCustomFields($expand=CustomField)' \ ---header 'Authorization: Bearer ••••••' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CommessaWeb(CommesseCustomFields(CustomField()))\/$entity", - "IdCommessa": 565085, - "CodiceCommessa": "26C0089", - "RiferimentoCertificato": null, - "StatoCommessaWeb": "Nuova", - "DataCreazioneWeb": "2026-03-19T10:03:18.653+01:00", - "CodiceCommessaWeb": "26C0089", - "DataInviatoWeb": null, - "Richiedente": "From TRFSmart Application", - "Descrizione": "From TRFSmart Application", - "CommesseCustomFields": [ - { - "IdCommesseCustomFields": 23328248, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 33, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 259, - "TitoloTraduzione": "Sample Arrival Date:", - "Titolo": "Sample Arrival Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328249, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 34, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 348, - "TitoloTraduzione": "Sample Arrival Time:", - "Titolo": "Sample Arrival Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328250, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 28, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 362, - "TitoloTraduzione": "Tracciante materiale", - "Titolo": "Tracciante materiale", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328251, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 30, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 370, - "TitoloTraduzione": "DDT del", - "Titolo": "DDT del", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328252, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 31, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 371, - "TitoloTraduzione": "Mittente (se diverso da Committente)", - "Titolo": "Mittente (se diverso da Committente)", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328253, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 32, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 372, - "TitoloTraduzione": "Quantit\u00e0", - "Titolo": "Quantit\u00e0", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328259, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 42, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 169, - "TitoloTraduzione": "(*Restituzione Materiale Residuo:", - "Titolo": "(*Restituzione Materiale Residuo:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328260, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 43, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 170, - "TitoloTraduzione": "(*Originali:", - "Titolo": "(*Originali:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328261, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 44, - "Valore": "", - "Duplica": true, - "CustomField": { - "IdCustomField": 171, - "TitoloTraduzione": "(*Corriere:", - "Titolo": "(*Corriere:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328263, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 49, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 236, - "TitoloTraduzione": "Consegna campione:", - "Titolo": "Consegna campione:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328264, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 45, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 241, - "TitoloTraduzione": "N. di Prove:", - "Titolo": "N. di Prove:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328265, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 46, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 244, - "TitoloTraduzione": "Accettatore:", - "Titolo": "Accettatore:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328266, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 50, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 246, - "TitoloTraduzione": "Lab outsourcing:", - "Titolo": "Lab outsourcing:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328267, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 54, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 252, - "TitoloTraduzione": "Service required:", - "Titolo": "Service required:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328227, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 1, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 1083, - "TitoloTraduzione": "MONCLER_Analisi Commissionate da: ", - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328228, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 2, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 214, - "TitoloTraduzione": "Season", - "Titolo": "Season", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328229, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 4, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 210, - "TitoloTraduzione": "Sample Description ", - "Titolo": "Sample Description ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328268, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 53, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 253, - "TitoloTraduzione": "Sample return:", - "Titolo": "Sample return:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328269, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 51, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 254, - "TitoloTraduzione": "AWB: ", - "Titolo": "AWB: ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328270, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 52, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 255, - "TitoloTraduzione": "Data ricezione risultati test:", - "Titolo": "Data ricezione risultati test:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328271, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 47, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 258, - "TitoloTraduzione": "Login Date:", - "Titolo": "Login Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328272, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 35, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 260, - "TitoloTraduzione": "Sample Unlock Date:", - "Titolo": "Sample Unlock Date:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328273, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 55, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 261, - "TitoloTraduzione": "Tipologia report (solo per Cina)", - "Titolo": "Tipologia report (solo per Cina)", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328274, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 36, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 349, - "TitoloTraduzione": "Sample Unlock Time:", - "Titolo": "Sample Unlock Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328275, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 48, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 350, - "TitoloTraduzione": "Login Time:", - "Titolo": "Login Time:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328276, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 38, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 360, - "TitoloTraduzione": "Presa in carico, Orario:", - "Titolo": "Presa in carico, Orario:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328277, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 37, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 361, - "TitoloTraduzione": "Presa in carico, Data:", - "Titolo": "Presa in carico, Data:", - "Descrizione": null, - "Tipo": "Data", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328278, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 58, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 771, - "TitoloTraduzione": "RATING RSL MONCLER", - "Titolo": "RATING RSL MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328279, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 56, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 772, - "TitoloTraduzione": "RATING CHINA MONCLER", - "Titolo": "RATING CHINA MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328280, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 57, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 773, - "TitoloTraduzione": "RATING MANUAL MONCLER", - "Titolo": "RATING MANUAL MONCLER", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328230, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 6, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 263, - "TitoloTraduzione": "Style Code:", - "Titolo": "Style Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328231, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 5, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 264, - "TitoloTraduzione": "Color Code:", - "Titolo": "Color Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328232, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 3, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 467, - "TitoloTraduzione": "Sample Code:", - "Titolo": "Sample Code:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328233, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 17, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 150, - "TitoloTraduzione": "Destinazione d'uso: ", - "Titolo": "Destinazione d'uso: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328234, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 18, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 156, - "TitoloTraduzione": "Tipologia di Materiale:", - "Titolo": "Tipologia di Materiale:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328235, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 16, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 161, - "TitoloTraduzione": "Categoria:", - "Titolo": "Categoria:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328236, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 15, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 167, - "TitoloTraduzione": "Capitolato di riferimento", - "Titolo": "Capitolato di riferimento", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328237, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 13, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 207, - "TitoloTraduzione": "Composition Claimed", - "Titolo": "Composition Claimed", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328238, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 9, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 468, - "TitoloTraduzione": "Style Description:", - "Titolo": "Style Description:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328239, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 14, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 543, - "TitoloTraduzione": "Collezione:", - "Titolo": "Collezione:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328240, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 12, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 1014, - "TitoloTraduzione": "CDC", - "Titolo": "CDC", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328241, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 21, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 142, - "TitoloTraduzione": "Fornitore:", - "Titolo": "Fornitore:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328242, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 19, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 146, - "TitoloTraduzione": "Tipologia di Trattamento Superficiale:", - "Titolo": "Tipologia di Trattamento Superficiale:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328243, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 20, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 147, - "TitoloTraduzione": "Tipologia di concia: ", - "Titolo": "Tipologia di concia: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328244, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 26, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 166, - "TitoloTraduzione": "Note:", - "Titolo": "Note:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328245, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 25, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 189, - "TitoloTraduzione": "Tested Component:", - "Titolo": "Tested Component:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328246, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 29, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 193, - "TitoloTraduzione": "DDT N. ", - "Titolo": "DDT N. ", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328247, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 22, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 194, - "TitoloTraduzione": "Fabbricante:", - "Titolo": "Fabbricante:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328254, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 27, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 555, - "TitoloTraduzione": "Additional Info:", - "Titolo": "Additional Info:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328255, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 23, - "Valore": "MONCLER", - "Duplica": false, - "CustomField": { - "IdCustomField": 595, - "TitoloTraduzione": "Final Customer: ", - "Titolo": "Final Customer: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": "MONCLER", - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328256, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 24, - "Valore": null, - "Duplica": false, - "CustomField": { - "IdCustomField": 748, - "TitoloTraduzione": "Analisi Richieste:", - "Titolo": "Analisi Richieste:", - "Descrizione": null, - "Tipo": "Testo", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328257, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 39, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 163, - "TitoloTraduzione": "Campionamento:", - "Titolo": "Campionamento:", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328258, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 40, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 165, - "TitoloTraduzione": "Condizionamento prima e durante il Test: ", - "Titolo": "Condizionamento prima e durante il Test: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": true, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - }, - { - "IdCommesseCustomFields": 23328262, - "GruppoWeb": null, - "ObbligatorioWeb": false, - "Descrizione": null, - "Ordine": 41, - "Valore": null, - "Duplica": true, - "CustomField": { - "IdCustomField": 181, - "TitoloTraduzione": "Preparazione del campione ai test chimici: ", - "Titolo": "Preparazione del campione ai test chimici: ", - "Descrizione": null, - "Tipo": "SceltaMultipla", - "Decimali": 0, - "Lunghezza": 0, - "Minimo": null, - "Massimo": null, - "ValoreDefault": null, - "Elenco": false, - "DefaultCurrDate": false, - "ObbligatorioWeb": false - } - } - ] -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_565085_importa_step91_1773911013.txt b/public/userarea/logs/api/commessa_565085_importa_step91_1773911013.txt deleted file mode 100644 index f903d08c..00000000 --- a/public/userarea/logs/api/commessa_565085_importa_step91_1773911013.txt +++ /dev/null @@ -1,20 +0,0 @@ -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/CommessaWeb(565085)/ImportaCommessa' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "IdUtente": 285 -}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CommessaWeb\/$entity", - "IdCommessa": 565085, - "CodiceCommessa": "26C0089", - "RiferimentoCertificato": null, - "StatoCommessaWeb": "Elaborata", - "DataCreazioneWeb": "2026-03-19T10:03:18.653+01:00", - "CodiceCommessaWeb": "26C0089", - "DataInviatoWeb": "2026-03-19T10:03:30.603+01:00", - "Richiedente": "From TRFSmart Application", - "Descrizione": "From TRFSmart Application" -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_565085_photos_step5_2_1773911007.txt b/public/userarea/logs/api/commessa_565085_photos_step5_2_1773911007.txt deleted file mode 100644 index acca0407..00000000 --- a/public/userarea/logs/api/commessa_565085_photos_step5_2_1773911007.txt +++ /dev/null @@ -1,48 +0,0 @@ -Photos for CommessaWeb 565085 (iddatadb=1279): -Total photos found: 2, campioni: 3 - -=== Campione 736899 (main) === -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/Campione(736899)/UploadCampioneFile' \ ---header 'Authorization: Bearer ••••••' \ ---form 'file=@C:\xampp\htdocs\trf_certest\public\photostrf\1279-20260319090037-1e672dd9-5420-4432-b422-02d8d271c178.jpg' \ ---form 'StampaNelRapporto=true' \ ---form 'PrimaPagina=true' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CampioneFiles\/$entity", - "IdCampioneFile": 1786602, - "FileName": "1279-20260319090037-1e672dd9-5420-4432-b422-02d8d271c178.jpg", - "Web": false, - "AllegaAlRapporto": false, - "StampaNelRapporto": false, - "ReportGermania": false, - "PrimaPagina": false, - "Duplica": false, - "LastUpdate": "2026-03-19T10:03:25.2757049+01:00", - "Titolo": null -} - ---- -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/Campione(736899)/UploadCampioneFile' \ ---header 'Authorization: Bearer ••••••' \ ---form 'file=@C:\xampp\htdocs\trf_certest\public\photostrf\1279-20260319090037-104a2ca5-8a4c-4df8-b2ca-a28f518b7b25.jpg' \ ---form 'StampaNelRapporto=false' \ ---form 'PrimaPagina=false' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CampioneFiles\/$entity", - "IdCampioneFile": 1786603, - "FileName": "1279-20260319090037-104a2ca5-8a4c-4df8-b2ca-a28f518b7b25.jpg", - "Web": false, - "AllegaAlRapporto": false, - "StampaNelRapporto": false, - "ReportGermania": false, - "PrimaPagina": false, - "Duplica": false, - "LastUpdate": "2026-03-19T10:03:26.7566613+01:00", - "Titolo": null -} - ---- diff --git a/public/userarea/logs/api/commessa_565085_send_step9_1773911010.txt b/public/userarea/logs/api/commessa_565085_send_step9_1773911010.txt deleted file mode 100644 index 3da7d0d6..00000000 --- a/public/userarea/logs/api/commessa_565085_send_step9_1773911010.txt +++ /dev/null @@ -1,18 +0,0 @@ -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/CommessaWeb(565085)/InviaCommessa' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CommessaWeb\/$entity", - "IdCommessa": 565085, - "CodiceCommessa": "26C0089", - "RiferimentoCertificato": null, - "StatoCommessaWeb": "Nuova", - "DataCreazioneWeb": "2026-03-19T10:03:18.653+01:00", - "CodiceCommessaWeb": "26C0089", - "DataInviatoWeb": "2026-03-19T10:03:30.6022436+01:00", - "Richiedente": "From TRFSmart Application", - "Descrizione": "From TRFSmart Application" -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_565085_update_step7_1773911009.txt b/public/userarea/logs/api/commessa_565085_update_step7_1773911009.txt deleted file mode 100644 index 6f2f2f38..00000000 --- a/public/userarea/logs/api/commessa_565085_update_step7_1773911009.txt +++ /dev/null @@ -1,226 +0,0 @@ -curl --location --request PATCH 'https://93.43.5.102/limsapi/api/odata/CommessaWeb(565085)' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "CommesseCustomFields": [ - { - "IdCommesseCustomFields": 23328248, - "Valore": "18/03/2026" - }, - { - "IdCommesseCustomFields": 23328249, - "Valore": "09:00" - }, - { - "IdCommesseCustomFields": 23328250, - "Valore": "9299" - }, - { - "IdCommesseCustomFields": 23328251, - "Valore": "17/03/2026" - }, - { - "IdCommesseCustomFields": 23328252, - "Valore": "/" - }, - { - "IdCommesseCustomFields": 23328253, - "Valore": "5" - }, - { - "IdCommesseCustomFields": 23328259, - "Valore": "673" - }, - { - "IdCommesseCustomFields": 23328260, - "Valore": "674" - }, - { - "IdCommesseCustomFields": 23328261, - "Valore": "669" - }, - { - "IdCommesseCustomFields": 23328263, - "Valore": "1469" - }, - { - "IdCommesseCustomFields": 23328264, - "Valore": "1604" - }, - { - "IdCommesseCustomFields": 23328265, - "Valore": "12875" - }, - { - "IdCommesseCustomFields": 23328266, - "Valore": "8755" - }, - { - "IdCommesseCustomFields": 23328267, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23328227, - "Valore": "13497" - }, - { - "IdCommesseCustomFields": 23328228, - "Valore": "20262" - }, - { - "IdCommesseCustomFields": 23328229, - "Valore": "ART. PEACH" - }, - { - "IdCommesseCustomFields": 23328268, - "Valore": "1892" - }, - { - "IdCommesseCustomFields": 23328269, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23328270, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23328271, - "Valore": "19/03/2026" - }, - { - "IdCommesseCustomFields": 23328272, - "Valore": "18/03/2026" - }, - { - "IdCommesseCustomFields": 23328273, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23328274, - "Valore": "09:00" - }, - { - "IdCommesseCustomFields": 23328275, - "Valore": "09:03" - }, - { - "IdCommesseCustomFields": 23328276, - "Valore": "09:58" - }, - { - "IdCommesseCustomFields": 23328277, - "Valore": "19/03/2026" - }, - { - "IdCommesseCustomFields": 23328278, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23328279, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23328280, - "Valore": "" - }, - { - "IdCommesseCustomFields": 23328230, - "Valore": "L209B4M00110M7280" - }, - { - "IdCommesseCustomFields": 23328231, - "Valore": "BLACK" - }, - { - "IdCommesseCustomFields": 23328232, - "Valore": "PE007J" - }, - { - "IdCommesseCustomFields": 23328233, - "Valore": "264" - }, - { - "IdCommesseCustomFields": 23328234, - "Valore": "420" - }, - { - "IdCommesseCustomFields": 23328235, - "Valore": "AAA" - }, - { - "IdCommesseCustomFields": 23328236, - "Valore": "3055" - }, - { - "IdCommesseCustomFields": 23328237, - "Valore": "AAA" - }, - { - "IdCommesseCustomFields": 23328238, - "Valore": "AAA" - }, - { - "IdCommesseCustomFields": 23328239, - "Valore": "P" - }, - { - "IdCommesseCustomFields": 23328240, - "Valore": "RM-ACC" - }, - { - "IdCommesseCustomFields": 23328241, - "Valore": "\u00a0CONCERIA M2 SRL" - }, - { - "IdCommesseCustomFields": 23328242, - "Valore": "344" - }, - { - "IdCommesseCustomFields": 23328243, - "Valore": "1208" - }, - { - "IdCommesseCustomFields": 23328244, - "Valore": "AAA" - }, - { - "IdCommesseCustomFields": 23328245, - "Valore": "AAA" - }, - { - "IdCommesseCustomFields": 23328246, - "Valore": "Not provided" - }, - { - "IdCommesseCustomFields": 23328247, - "Valore": "AAA" - }, - { - "IdCommesseCustomFields": 23328254, - "Valore": "aaa" - }, - { - "IdCommesseCustomFields": 23328255, - "Valore": "4678" - }, - { - "IdCommesseCustomFields": 23328256, - "Valore": "Leather&amp;Fur" - }, - { - "IdCommesseCustomFields": 23328257, - "Valore": "278" - }, - { - "IdCommesseCustomFields": 23328258, - "Valore": "2089" - }, - { - "IdCommesseCustomFields": 23328262, - "Valore": "745" - } - ] -}' - -RESPONSE: -null \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_95833_campioni_step6_1772306905.txt b/public/userarea/logs/api/commessa_95833_campioni_step6_1772306905.txt deleted file mode 100644 index 2fecaad4..00000000 --- a/public/userarea/logs/api/commessa_95833_campioni_step6_1772306905.txt +++ /dev/null @@ -1,40 +0,0 @@ -CAMPIONE #0 -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/Campione' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "Commessa": 95833, - "Matrice": 8413, - "SottoMatrice": null, - "SchemaCustomField": 82, - "NoteWeb": "aaa" -}' - -RESPONSE: -{ - "IdCampione": 14445, - "Commessa": 95833, - "Matrice": 8413 -} - ---- -CAMPIONE #1 -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/Campione' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "Commessa": 95833, - "Matrice": 3879, - "SottoMatrice": null, - "SchemaCustomField": 82, - "NoteWeb": "bbb" -}' - -RESPONSE: -{ - "IdCampione": 15750, - "Commessa": 95833, - "Matrice": 3879 -} - ---- diff --git a/public/userarea/logs/api/commessa_95833_get_step10_1772306905.txt b/public/userarea/logs/api/commessa_95833_get_step10_1772306905.txt deleted file mode 100644 index 129b566b..00000000 --- a/public/userarea/logs/api/commessa_95833_get_step10_1772306905.txt +++ /dev/null @@ -1,9 +0,0 @@ -curl --location --request GET 'https://93.43.5.102/limsapi/api/odata/CommessaWeb(95833)?$expand=CommesseCustomFields($expand=CustomField)' \ ---header 'Authorization: Bearer ••••••' - -RESPONSE: -{ - "IdCommessa": 95833, - "CodiceCommessa": "SIM-95833", - "CommesseCustomFields": [] -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_95833_get_step7_1772306905.txt b/public/userarea/logs/api/commessa_95833_get_step7_1772306905.txt deleted file mode 100644 index 129b566b..00000000 --- a/public/userarea/logs/api/commessa_95833_get_step7_1772306905.txt +++ /dev/null @@ -1,9 +0,0 @@ -curl --location --request GET 'https://93.43.5.102/limsapi/api/odata/CommessaWeb(95833)?$expand=CommesseCustomFields($expand=CustomField)' \ ---header 'Authorization: Bearer ••••••' - -RESPONSE: -{ - "IdCommessa": 95833, - "CodiceCommessa": "SIM-95833", - "CommesseCustomFields": [] -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_95833_importa_step91_1772306905.txt b/public/userarea/logs/api/commessa_95833_importa_step91_1772306905.txt deleted file mode 100644 index 2e8843ae..00000000 --- a/public/userarea/logs/api/commessa_95833_importa_step91_1772306905.txt +++ /dev/null @@ -1,10 +0,0 @@ -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/CommessaWeb(95833)/ImportaCommessa' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{}' - -RESPONSE: -{ - "simulated": true, - "endpoint": "CommessaWeb(95833)\/ImportaCommessa" -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_95833_photos_step5_2_1772306905.txt b/public/userarea/logs/api/commessa_95833_photos_step5_2_1772306905.txt deleted file mode 100644 index 944e0eae..00000000 --- a/public/userarea/logs/api/commessa_95833_photos_step5_2_1772306905.txt +++ /dev/null @@ -1,15 +0,0 @@ -Photos for CommessaWeb 95833 (iddatadb=1237): -Total photos found: 1 - -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/AllegatoCommessaWeb' \ ---header 'Authorization: Bearer ••••••' \ ---form 'IdCommessa=95833' \ ---form 'file=@C:\xampp\htdocs\trf_certest\public\photostrf\1237-20260228192737-Blue and White Simple Daily Vlogger YouTube Banner (15) (1) (1).png' - -RESPONSE: -{ - "simulated": true, - "file": "1237-20260228192737-Blue and White Simple Daily Vlogger YouTube Banner (15) (1) (1).png" -} - ---- diff --git a/public/userarea/logs/api/commessa_create_step5_1237_1772306905.txt b/public/userarea/logs/api/commessa_create_step5_1237_1772306905.txt deleted file mode 100644 index 616b1738..00000000 --- a/public/userarea/logs/api/commessa_create_step5_1237_1772306905.txt +++ /dev/null @@ -1,22 +0,0 @@ -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/CommessaWeb' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "Cliente": 3378, - "SchemaCustomField": 82, - "Richiedente": "Test Web Import", - "Descrizione": "TEST CommessaWeb", - "ClienteResponsabile": 3, - "MoltiplicatorePrezzo": 1, - "AnagraficaCertestObject": 2, - "AnagraficaCertestService": 1, - "ClienteFornitore": null -}' - -RESPONSE: -{ - "IdCommessa": 95833, - "CodiceCommessa": "SIM-95833", - "Richiedente": "Test Web Import", - "Descrizione": "TEST CommessaWeb" -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_create_step5_1255_1772784559.txt b/public/userarea/logs/api/commessa_create_step5_1255_1772784559.txt deleted file mode 100644 index b34b1615..00000000 --- a/public/userarea/logs/api/commessa_create_step5_1255_1772784559.txt +++ /dev/null @@ -1,28 +0,0 @@ -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/CommessaWeb' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "Cliente": 3378, - "SchemaCustomField": 82, - "Richiedente": "Test Web Import", - "Descrizione": "TEST CommessaWeb", - "ClienteResponsabile": 7586, - "MoltiplicatorePrezzo": 3, - "AnagraficaCertestObject": 8963, - "AnagraficaCertestService": 9007, - "ClienteFornitore": null -}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CommessaWeb\/$entity", - "IdCommessa": 562479, - "CodiceCommessa": "26C0013", - "RiferimentoCertificato": null, - "StatoCommessaWeb": "Nuova", - "DataCreazioneWeb": "2026-03-06T09:09:16.9338074+01:00", - "CodiceCommessaWeb": "26C0013", - "DataInviatoWeb": null, - "Richiedente": "Test Web Import", - "Descrizione": "TEST CommessaWeb" -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_create_step5_1259_1773234602.txt b/public/userarea/logs/api/commessa_create_step5_1259_1773234602.txt deleted file mode 100644 index a769248b..00000000 --- a/public/userarea/logs/api/commessa_create_step5_1259_1773234602.txt +++ /dev/null @@ -1,28 +0,0 @@ -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/CommessaWeb' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "Cliente": 3378, - "SchemaCustomField": 82, - "Richiedente": "Test Web Import", - "Descrizione": "TEST CommessaWeb", - "ClienteResponsabile": 10653, - "MoltiplicatorePrezzo": 1, - "AnagraficaCertestObject": 8960, - "AnagraficaCertestService": 9010, - "ClienteFornitore": null -}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CommessaWeb\/$entity", - "IdCommessa": 563528, - "CodiceCommessa": "26C0029", - "RiferimentoCertificato": null, - "StatoCommessaWeb": "Nuova", - "DataCreazioneWeb": "2026-03-11T14:10:00.8960358+01:00", - "CodiceCommessaWeb": "26C0029", - "DataInviatoWeb": null, - "Richiedente": "Test Web Import", - "Descrizione": "TEST CommessaWeb" -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_create_step5_1268_1773755380.txt b/public/userarea/logs/api/commessa_create_step5_1268_1773755380.txt deleted file mode 100644 index aed19008..00000000 --- a/public/userarea/logs/api/commessa_create_step5_1268_1773755380.txt +++ /dev/null @@ -1,28 +0,0 @@ -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/CommessaWeb' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "Cliente": 3378, - "SchemaCustomField": 82, - "Richiedente": "From TRFSmart Application", - "Descrizione": "From TRFSmart Application", - "ClienteResponsabile": 7598, - "MoltiplicatorePrezzo": 2, - "AnagraficaCertestObject": 8964, - "AnagraficaCertestService": 9012, - "ClienteFornitore": 11208 -}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CommessaWeb\/$entity", - "IdCommessa": 564662, - "CodiceCommessa": "26C0058", - "RiferimentoCertificato": null, - "StatoCommessaWeb": "Nuova", - "DataCreazioneWeb": "2026-03-17T14:49:39.4933462+01:00", - "CodiceCommessaWeb": "26C0058", - "DataInviatoWeb": null, - "Richiedente": "From TRFSmart Application", - "Descrizione": "From TRFSmart Application" -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_create_step5_1268_1773755549.txt b/public/userarea/logs/api/commessa_create_step5_1268_1773755549.txt deleted file mode 100644 index 917b6d6f..00000000 --- a/public/userarea/logs/api/commessa_create_step5_1268_1773755549.txt +++ /dev/null @@ -1,28 +0,0 @@ -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/CommessaWeb' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "Cliente": 3378, - "SchemaCustomField": 82, - "Richiedente": "From TRFSmart Application", - "Descrizione": "From TRFSmart Application", - "ClienteResponsabile": 7598, - "MoltiplicatorePrezzo": 2, - "AnagraficaCertestObject": 8964, - "AnagraficaCertestService": 9012, - "ClienteFornitore": 11208 -}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CommessaWeb\/$entity", - "IdCommessa": 564663, - "CodiceCommessa": "26C0059", - "RiferimentoCertificato": null, - "StatoCommessaWeb": "Nuova", - "DataCreazioneWeb": "2026-03-17T14:52:29.3463415+01:00", - "CodiceCommessaWeb": "26C0059", - "DataInviatoWeb": null, - "Richiedente": "From TRFSmart Application", - "Descrizione": "From TRFSmart Application" -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_create_step5_1270_1773827641.txt b/public/userarea/logs/api/commessa_create_step5_1270_1773827641.txt deleted file mode 100644 index 0d537da0..00000000 --- a/public/userarea/logs/api/commessa_create_step5_1270_1773827641.txt +++ /dev/null @@ -1,28 +0,0 @@ -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/CommessaWeb' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "Cliente": 3378, - "SchemaCustomField": 82, - "Richiedente": "From TRFSmart Application", - "Descrizione": "From TRFSmart Application", - "ClienteResponsabile": 7586, - "MoltiplicatorePrezzo": null, - "AnagraficaCertestObject": 8973, - "AnagraficaCertestService": 9007, - "ClienteFornitore": 11208 -}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CommessaWeb\/$entity", - "IdCommessa": 564817, - "CodiceCommessa": "26C0071", - "RiferimentoCertificato": null, - "StatoCommessaWeb": "Nuova", - "DataCreazioneWeb": "2026-03-18T10:54:02.1867227+01:00", - "CodiceCommessaWeb": "26C0071", - "DataInviatoWeb": null, - "Richiedente": "From TRFSmart Application", - "Descrizione": "From TRFSmart Application" -} \ No newline at end of file diff --git a/public/userarea/logs/api/commessa_create_step5_1279_1773910998.txt b/public/userarea/logs/api/commessa_create_step5_1279_1773910998.txt deleted file mode 100644 index 4882d88d..00000000 --- a/public/userarea/logs/api/commessa_create_step5_1279_1773910998.txt +++ /dev/null @@ -1,29 +0,0 @@ -curl --location --request POST 'https://93.43.5.102/limsapi/api/odata/CommessaWeb' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer ••••••' \ ---data '{ - "Cliente": 3378, - "SchemaCustomField": 82, - "Richiedente": "From TRFSmart Application", - "Descrizione": "From TRFSmart Application", - "ClienteResponsabile": 7586, - "MoltiplicatorePrezzo": 2, - "AnagraficaCertestObject": 8973, - "AnagraficaCertestService": 9007, - "ClienteFornitore": 4505, - "ClienteAnalisi": null -}' - -RESPONSE: -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#CommessaWeb\/$entity", - "IdCommessa": 565085, - "CodiceCommessa": "26C0089", - "RiferimentoCertificato": null, - "StatoCommessaWeb": "Nuova", - "DataCreazioneWeb": "2026-03-19T10:03:18.6527414+01:00", - "CodiceCommessaWeb": "26C0089", - "DataInviatoWeb": null, - "Richiedente": "From TRFSmart Application", - "Descrizione": "From TRFSmart Application" -} \ No newline at end of file diff --git a/public/userarea/mapping_template_xls.php b/public/userarea/mapping_template_xls.php deleted file mode 100644 index b382abb7..00000000 --- a/public/userarea/mapping_template_xls.php +++ /dev/null @@ -1,564 +0,0 @@ -getConnection(); -$stmt = $pdo->prepare("SELECT name, header_row, start_column, target_table, sample_xlsx FROM excel_templates WHERE id = ?"); -$stmt->execute([$id]); -$template = $stmt->fetch(PDO::FETCH_ASSOC); - - -if (!$template) { - die("Template not found"); -} -?> - - - - - - - - - - - Mapping XLS Template <?= htmlspecialchars($titlewebsite, ENT_QUOTES, 'UTF-8'); ?> - - - - - - -
    - - - - - - - -
    -
    - - - - -
    -
    -
    -
    -
    Associate Columns - Template:
    -

    Header Row: | Start Column:

    -
    - -
    -
    -
    - -
    - - - - - ✅ Current file: - - - - No file uploaded yet. - - -
    - - - - - -
    -
    -
    XLS Column
    -
      -
      -
      - -
      -
      -
      Table Column
      -
        -
        -
        - - -
        -
        Current Associations
        -
          -
          - - -
          -
          Default Values (Fixed fields)
          - -
          -
          - - - Loaded from API: get_moltiplicatoreprezzo.php -
          - -
          - - -
          -
          - -
          - - -
          -
          - - - - -
          -
          - -
          -
          - - -
          - - - - - -
          - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/userarea/mapping_template_xls_scheme.php b/public/userarea/mapping_template_xls_scheme.php deleted file mode 100644 index 4d9af1c0..00000000 --- a/public/userarea/mapping_template_xls_scheme.php +++ /dev/null @@ -1,614 +0,0 @@ -getConnection(); -$stmt = $pdo->prepare("SELECT name, header_row, start_column, target_table, sample_xlsx, idclient, clientname, idschema, schemaname, schemajson FROM excel_templates WHERE id = ?"); -$stmt->execute([$id]); -$template = $stmt->fetch(PDO::FETCH_ASSOC); - -if (!$template) { - die("Template not found"); -} - -// Opzionale: se clientname o schemaname non sono disponibili, potresti volerli recuperare dinamicamente -$clientName = $template['clientname'] ?: ''; -$schemaName = $template['schemaname'] ?: ''; -$schemajson = $template['schemajson'] ?: ''; // Recupera il valore di schemajson -$isSchemajsonEmpty = empty(trim($template['schemajson'])); - -?> - - - - - - - - - - - Mapping XLS Template <?= htmlspecialchars($titlewebsite, ENT_QUOTES, 'UTF-8'); ?> - - - - - - -
          - - - - - - - -
          -
          - - - - -
          -
          -
          -
          -
          Associate Columns - Template:
          -

          - Client: | - Schema: | - Header Row: | - Start Column: -

          -
          -
          -
          -
          - -
          - - - - - ✅ Current file: - - - - No file uploaded yet. - - -
          - - -
          -
          -
          XLS Column
          -
            -
            -
            - -
            -
            -
            -
            Schema Fields
            - -
            - - - - - - - - - - - -
            TitleIDType
            -
            -
            - - -
            -
            Current Associations
            -
              -
              - - - -
              -
              - -
              -
              - - -
              - - - - - -
              - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/userarea/mapping_template_xls_scheme2.php b/public/userarea/mapping_template_xls_scheme2.php deleted file mode 100644 index f36ca483..00000000 --- a/public/userarea/mapping_template_xls_scheme2.php +++ /dev/null @@ -1,2481 +0,0 @@ -getConnection(); - -$stmt = $pdo->prepare(" - SELECT - name, - header_row, - start_column, - target_table, - source_type, - xls_sheet_index, - sample_xlsx, - idclient, - clientname, - idschema, - schemaname, - schemajson, - xls_headers, - api_sample_json, - json_nodes - FROM excel_templates - WHERE id = ? -"); -$stmt->execute([$id]); -$template = $stmt->fetch(PDO::FETCH_ASSOC); - -if (!$template) { - die("Template not found"); -} - -$sourceType = strtoupper($template['source_type'] ?? 'XLS'); -if (!in_array($sourceType, ['XLS', 'API', 'PDF'], true)) { - $sourceType = 'XLS'; -} - -$xlsSheetIndex = isset($template['xls_sheet_index']) && $template['xls_sheet_index'] !== null - ? (int)$template['xls_sheet_index'] - : 0; - -if ($xlsSheetIndex < 0) { - $xlsSheetIndex = 0; -} - -$clientName = $template['clientname'] ?: ''; -$schemaName = $template['schemaname'] ?: ''; -$schemajson = $template['schemajson'] ? json_decode($template['schemajson'], true) : []; -$isSchemajsonEmpty = empty(trim($template['schemajson'] ?? '')); - -// Recupera i campi dalla tabella template_mapping -$stmt = $pdo->prepare(" - SELECT - id, - field_id, - field_order, - excel_column, - json_node, - is_manual, - manual_default, - auto_value, - data_type, - is_required, - default_value, - has_list, - length, - decimals, - min_value, - max_value, - default_curr_date, - tablename, - field_label, - main_field, - is_visible_import, - is_visible_parts - FROM template_mapping - WHERE template_id = ? - ORDER BY field_order ASC, id ASC -"); -$stmt->execute([$id]); -$mappings = $stmt->fetchAll(PDO::FETCH_ASSOC); - -// Recupera i fixed fields dalla tabella template_fixed_mapping -$stmt = $pdo->prepare(" - SELECT id, fixed_field_key, is_manual, data_type, is_required, default_value, is_visible_import - FROM template_fixed_mapping - WHERE template_id = ? - ORDER BY id ASC -"); -$stmt->execute([$id]); -$fixedMappings = $stmt->fetchAll(PDO::FETCH_ASSOC); - -$hasFixedMappings = !empty($fixedMappings); - -// Recupera le colonne XLS già associate nel database -$usedColumnsFromDB = array_filter(array_column($mappings, 'excel_column')); - -// Recupera i nodi JSON già associati nel database -$usedJsonNodesFromDB = array_filter(array_column($mappings, 'json_node')); - -// Decodifica l'header XLS salvato, se presente -$xlsHeaders = $template['xls_headers'] ? json_decode($template['xls_headers'], true) : []; -if (!is_array($xlsHeaders)) { - $xlsHeaders = []; -} - -// Decodifica nodi JSON API salvati, se presenti -$jsonNodes = $template['json_nodes'] ? json_decode($template['json_nodes'], true) : []; -if (!is_array($jsonNodes)) { - $jsonNodes = []; -} - -$apiSampleJson = $template['api_sample_json'] ?? ''; -?> - - - - - - - - - - Configure Template <?= htmlspecialchars($template['name'], ENT_QUOTES, 'UTF-8'); ?> - - - - - - - -
              - - -
              -
              - - -
              -
              -
              -
              -
              Configure Template:
              -

              - Client: | - Schema: | - Source: - - | - Sheet Number: | - Header Row: | - Start Column: - -

              -
              -
              -
              -
              - - -
              - -
              - - -
              - - - ✅ Current file: - - No file uploaded yet. - - -
              - -
              - - - -
              - - - - - ✅ JSON nodes already loaded: - - No JSON nodes loaded yet. - - -
              -
              - -
              - PDF source type is not implemented yet. -
              - - -
              -
              -
              -
              Schema Fields Configuration
              - -
              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              MainImportPartsTitleOrderTypeDefault Value
              - > - - > - - > - - - - Required - - - - - - - - - - - - - - - - - - - - - () - - - - - () - - - - - - - - - -
              -
              -
              - - - -
              -
              -
              Fixed Fields Defaults
              - - - - -
              - -
              - Defaults are saved automatically when changed -
              -
              - -
              -
              - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
              Visible on ImportRequiredFieldTypeDefault Value
              - > - - > - - - - - - - - - - - - - - - - - - -
              - -
              -
              -
              - - - -
              -
              -
              -
              -
              - - -
              - - - - - - - - \ No newline at end of file diff --git a/public/userarea/mapping_template_xls_scheme2bck31072025.php b/public/userarea/mapping_template_xls_scheme2bck31072025.php deleted file mode 100644 index eee1224f..00000000 --- a/public/userarea/mapping_template_xls_scheme2bck31072025.php +++ /dev/null @@ -1,464 +0,0 @@ -getConnection(); -$stmt = $pdo->prepare("SELECT name, header_row, start_column, target_table, sample_xlsx, idclient, clientname, idschema, schemaname, schemajson, xls_headers FROM excel_templates WHERE id = ?"); -$stmt->execute([$id]); -$template = $stmt->fetch(PDO::FETCH_ASSOC); - -if (!$template) { - die("Template not found"); -} - -$clientName = $template['clientname'] ?: ''; -$schemaName = $template['schemaname'] ?: ''; -$schemajson = $template['schemajson'] ? json_decode($template['schemajson'], true) : []; -$isSchemajsonEmpty = empty(trim($template['schemajson'])); - -// Recupera i campi dalla tabella template_mapping -$stmt = $pdo->prepare("SELECT id, field_id, excel_column, is_manual, manual_default, data_type, is_required, default_value, has_list, length, decimals, min_value, max_value, default_curr_date, tablename, field_label FROM template_mapping WHERE template_id = ?"); -$stmt->execute([$id]); -$mappings = $stmt->fetchAll(PDO::FETCH_ASSOC); - -// Recupera le colonne già associate nel database -$usedColumnsFromDB = array_filter(array_column($mappings, 'excel_column')); - -// Decodifica l'header XLS salvato, se presente -$xlsHeaders = $template['xls_headers'] ? json_decode($template['xls_headers'], true) : []; -?> - - - - - - - - - - Configure Template <?= htmlspecialchars($template['name'], ENT_QUOTES, 'UTF-8'); ?> - - - - -
              - - -
              -
              - - -
              -
              -
              -
              -
              Configure Template:
              -

              - Client: | - Schema: | - Header Row: | - Start Column: -

              -
              -
              -
              -
              -
              - - - - - ✅ Current file: - - No file uploaded yet. - - -
              - -
              -
              -
              -
              Schema Fields Configuration
              - -
              - - - - - - - - - - - - - - - - - - - - - -
              TitleIDTypeMappingDefault Value
              - - - - - - - - -
              -
              -
              - - -
              -
              -
              -
              -
              - - -
              - - - - - - \ No newline at end of file diff --git a/public/userarea/metadata_response.xml b/public/userarea/metadata_response.xml deleted file mode 100644 index 453cac58..00000000 --- a/public/userarea/metadata_response.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/userarea/modal_analysis.php b/public/userarea/modal_analysis.php deleted file mode 100644 index 50895b6b..00000000 --- a/public/userarea/modal_analysis.php +++ /dev/null @@ -1,423 +0,0 @@ - - -getConnection(); - -$stmt = $pdo->prepare(" - SELECT - p.id, - p.iddatadb, - p.part_number, - p.part_description, - p.material, - p.color, - p.mix, - p.idmatrice, - p.note, - p.dateexpiry, - a.NomeMatriceTraduzione - FROM identification_parts p - LEFT JOIN auth_matrici a ON a.IdMatrice = p.idmatrice - WHERE p.iddatadb = ? - ORDER BY - CASE WHEN p.part_number IS NULL THEN 999999 ELSE p.part_number END ASC, - p.id ASC -"); -$stmt->execute([$iddatadb]); -$parts = $stmt->fetchAll(PDO::FETCH_ASSOC); - -$partIds = array_column($parts, 'id'); -$assignedAnalysesByPart = []; - -if (!empty($partIds)) { - $placeholders = implode(',', array_fill(0, count($partIds), '?')); - - $stmtAssigned = $pdo->prepare(" - SELECT - ipa.id, - ipa.part_id, - ipa.analysis_recordkey, - ipa.analysis_name, - ipa.analysis_method, - ipa.analysis_level, - ipa.is_web_selectable, - ipa.is_accredited - FROM identification_parts_analyses ipa - WHERE ipa.part_id IN ($placeholders) - ORDER BY ipa.analysis_name ASC, ipa.id ASC - "); - $stmtAssigned->execute($partIds); - $assignedRows = $stmtAssigned->fetchAll(PDO::FETCH_ASSOC); - - foreach ($assignedRows as $row) { - $partId = (int)$row['part_id']; - if (!isset($assignedAnalysesByPart[$partId])) { - $assignedAnalysesByPart[$partId] = []; - } - $assignedAnalysesByPart[$partId][] = $row; - } -} - -/** - * Build matrix groups from parts. - * No join for now: we use idmatrice only. - */ -$matrixGroups = []; -foreach ($parts as $part) { - $matrixKey = (!empty($part['idmatrice'])) ? (string)$part['idmatrice'] : 'NO_MATRIX'; - - if (!isset($matrixGroups[$matrixKey])) { - $matrixGroups[$matrixKey] = [ - 'idmatrice' => $part['idmatrice'], - 'NomeMatriceTraduzione' => $part['NomeMatriceTraduzione'] ?? '', - 'parts_count' => 0, - 'parts' => [], - ]; - } - - $matrixGroups[$matrixKey]['parts_count']++; - $matrixGroups[$matrixKey]['parts'][] = $part['id']; -} - -$matrixGroups = array_values($matrixGroups); -?> - - - - \ No newline at end of file diff --git a/public/userarea/modal_annotations.php b/public/userarea/modal_annotations.php deleted file mode 100644 index 47fb0771..00000000 --- a/public/userarea/modal_annotations.php +++ /dev/null @@ -1,284 +0,0 @@ - - - - - \ No newline at end of file diff --git a/public/userarea/modal_parts.php b/public/userarea/modal_parts.php deleted file mode 100644 index 02d15601..00000000 --- a/public/userarea/modal_parts.php +++ /dev/null @@ -1,329 +0,0 @@ - - - - \ No newline at end of file diff --git a/public/userarea/modal_partsTable.php b/public/userarea/modal_partsTable.php deleted file mode 100644 index bb161285..00000000 --- a/public/userarea/modal_partsTable.php +++ /dev/null @@ -1,742 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/userarea/modals_gridData.js b/public/userarea/modals_gridData.js deleted file mode 100644 index 36959e61..00000000 --- a/public/userarea/modals_gridData.js +++ /dev/null @@ -1,264 +0,0 @@ -/** - * modals_gridData.js — Photos, Parts, Tested Component handlers for gridData pages - */ -(function () { - "use strict"; - - // ── Photos — use photos.js loadPopupContent (exported to window) ── - $(document).on("click", ".photos-btn", function () { - const iddatadb = $(this).data("iddatadb") || null; - const idquotations = $(this).data("idquotations") || null; - const modal = document.getElementById("photosModal"); - if (!modal) return; - - modal.style.display = "block"; - - if (typeof window.loadPopupContent === "function") { - window.loadPopupContent(iddatadb, idquotations); - } - }); - - // Close photos modal - $(document).on("click", ".close-btn", function () { - const modal = document.getElementById("photosModal"); - if (modal) modal.style.display = "none"; - }); - - // Close on backdrop click - $(document).on("click", "#photosModal", function (e) { - if (e.target === this) { - this.style.display = "none"; - } - }); - - // ── Parts (matching import_edit2.php behavior) ───────────────────── - $(document).on("click", ".parts-btn", function () { - const iddatadb = $(this).data("iddatadb") || null; - const idquotations = $(this).data("idquotations") || null; - - $.ajax({ - url: "modal_partsTable.php", - method: "GET", - data: { iddatadb: iddatadb }, - success: function (response) { - $("#partsModalContainer").html(response); - const modalElement = document.getElementById("partsModal"); - if (!modalElement) return; - - $("#trfHeader").text(iddatadb || idquotations || ""); - - const visibleIddatadbList = Array.isArray(window.gridData) - ? window.gridData - .map((r) => parseInt(r.iddatadb, 10)) - .filter((v) => !isNaN(v) && v > 0) - : []; - - $("#partsModal") - .data("iddatadb", iddatadb) - .data("idquotations", idquotations) - .data("visible-iddatadb-list", visibleIddatadbList); - - let modal = bootstrap.Modal.getInstance(modalElement); - if (!modal) - modal = new bootstrap.Modal(modalElement, { - backdrop: true, - keyboard: true, - focus: true, - }); - modal.show(); - - if (typeof window.loadParts === "function") { - window.loadParts(iddatadb, idquotations); - } - }, - error: function (xhr, status, error) { - console.error("Error loading parts:", error); - }, - }); - }); - - $(document).on("hidden.bs.modal", "#partsModal", function () { - const modalElement = document.getElementById("partsModal"); - if (modalElement) { - const modal = bootstrap.Modal.getInstance(modalElement); - if (modal) modal.dispose(); - } - $("#partsModalContainer").empty(); - $(".modal-backdrop").remove(); - $("body").removeClass("modal-open").css("padding-right", ""); - }); - - // ── Tested Component quick add ─────────────────────────────────────── - $(document).on("click", ".add-part-btn", async function () { - const iddatadb = $(this).data("iddatadb") || null; - const rowIndex = parseInt($(this).data("row")); - const row = window.gridData?.[rowIndex]; - const id = iddatadb || (row ? row.iddatadb : null); - if (!id) return; - - const $cell = $(this).closest(".grid-cell, div"); - const $input = $cell.find("input"); - const raw = ($input.val() || "").trim(); - const parts = raw - .split("|") - .map((s) => s.trim()) - .filter((s) => s.length > 0); - const uniqueParts = [...new Set(parts)]; - - if (!uniqueParts.length) { - alert("Insert a description first."); - $input.focus(); - return; - } - - try { - for (const p of uniqueParts) { - const formData = new FormData(); - formData.append("iddatadb", id); - formData.append("part_description", p); - await fetch("add_part_quick.php", { - method: "POST", - body: formData, - }); - } - - if (row) { - row.tested_component = raw; - row._dirty = true; - } - - alert(`Added ${uniqueParts.length} part(s).`); - $input.val(raw); - } catch (e) { - alert("Error: " + e.message); - } - }); - - // ── Delete row ─────────────────────────────────────────────────────── - let deleteIddatadb = null; - let deleteRowIndex = null; - - $(document).on("click", ".delete-btn", function () { - deleteIddatadb = $(this).data("iddatadb"); - deleteRowIndex = parseInt($(this).data("row")); - const modalEl = document.getElementById("deleteConfirmModal"); - if (modalEl) { - document.getElementById("deleteIddatadbText").textContent = - deleteIddatadb; - new bootstrap.Modal(modalEl).show(); - } - }); - - $(document).on("click", "#deleteConfirmBtn", async function () { - const modalEl = document.getElementById("deleteConfirmModal"); - const modal = bootstrap.Modal.getInstance(modalEl); - if (modal) modal.hide(); - - if (!deleteIddatadb) return; - - try { - const resp = await fetch("delete_record.php", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ id: deleteIddatadb }), - }); - const result = await resp.json(); - - if (result.success) { - // Remove from gridData - const idx = window.gridData.findIndex( - (r) => r.iddatadb === deleteIddatadb, - ); - if (idx >= 0) window.gridData.splice(idx, 1); - - // Re-render - const gr = window.gridRenderer; - if (gr) gr.renderVisibleRows(); - } else { - alert("Error: " + result.message); - } - } catch (e) { - alert("Error: " + e.message); - } - - deleteIddatadb = null; - deleteRowIndex = null; - }); - - // ── Add new row ────────────────────────────────────────────────────── - $(document).on("click", "#addRowBtn", async function () { - const btn = this; - btn.disabled = true; - - try { - const templateId = window.gridMeta?.templateId; - if (!templateId) { - alert("Template ID missing"); - return; - } - - const urlParams = new URLSearchParams(window.location.search); - const importref = urlParams.get("importref") || ""; - const resp = await fetch("add_record.php", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - template_id: templateId, - importreferencecode: importref, - }), - }); - const result = await resp.json(); - - if (result.success && result.iddatadb) { - // Build new row object - const newRow = { - iddatadb: result.iddatadb, - status: "i", - idclient: window.gridMeta?.defaultIdclient || "", - cliente_fornitore_id: null, - commessaweb: null, - user_name: result.user_name || "", - importreferencecode: result.importreferencecode || "", - filename_import: "", - importdate: new Date() - .toISOString() - .slice(0, 19) - .replace("T", " "), - fixedFields: {}, - details: {}, - mainFieldValue: "", - _dirty: false, - }; - - // Add to beginning of gridData - window.gridData.unshift(newRow); - - // Re-render - const gr = window.gridRenderer; - if (gr) gr.renderVisibleRows(); - - // Highlight new row briefly - const newGridRow = document.querySelector( - `.grid-row[data-id="${result.iddatadb}"]`, - ); - if (newGridRow) { - newGridRow.classList.add("row-just-created"); - newGridRow.scrollIntoView({ - behavior: "smooth", - block: "center", - }); - setTimeout( - () => newGridRow.classList.remove("row-just-created"), - 4000, - ); - } - } else { - alert("Error: " + (result.message || "Unknown error")); - } - } catch (e) { - alert("Error: " + e.message); - } finally { - btn.disabled = false; - } - }); -})(); diff --git a/public/userarea/parts - Copia.js b/public/userarea/parts - Copia.js deleted file mode 100644 index 9427811d..00000000 --- a/public/userarea/parts - Copia.js +++ /dev/null @@ -1,572 +0,0 @@ -$(document).ready(function () { - console.log("parts.js caricato correttamente"); - - $(".parts-btn").on("click", function () { - console.log("Pulsante Parts cliccato"); - const iddatadb = $(this).data("iddatadb"); - const rowIndex = $(this).data("row"); - const importRef = $("table tbody tr") - .eq(rowIndex) - .find("td") - .eq(1) - .text(); - const description = - $("table tbody tr").eq(rowIndex).find("td").eq(2).text() || - "Sconosciuto"; - - $("#trfHeader").text(`${iddatadb} - ${importRef} - ${description}`); - $("#partsModal").data("iddatadb", iddatadb); - - loadPhoto(iddatadb); - loadExistingParts(iddatadb); - - $("#partsModal").modal("show"); - }); - - function loadPhoto(iddatadb) { - $.ajax({ - url: "load_photo.php", - method: "GET", - data: { iddatadb: iddatadb }, - success: function (response) { - if (response.success && response.file_path) { - const img = $("#samplePhoto"); - img.attr("src", response.file_path); - img.on("load", function () { - const container = img.parent(); - const canvas = document.getElementById("photoCanvas"); - const containerWidth = container.width(); - const containerHeight = container.height(); - const scaleX = containerWidth / img[0].naturalWidth; - const scaleY = containerHeight / img[0].naturalHeight; - const scale = Math.min(scaleX, scaleY); - canvas.width = img[0].naturalWidth * scale; - canvas.height = img[0].naturalHeight * scale; - canvas.style.width = `${containerWidth}px`; - canvas.style.height = `${containerHeight}px`; - const ctx = canvas.getContext("2d"); - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.drawImage( - img.get(0), - 0, - 0, - canvas.width, - canvas.height, - ); - updateMarkers(); - }); - } else { - $("#samplePhoto").attr("src", ""); - alert("Nessuna foto trovata per questo TRF."); - } - }, - error: function (xhr, status, error) { - alert("Errore nel caricamento della foto: " + error); - }, - }); - } - - function addNewRow(nextPartNumber) { - const newRow = ` - - - - - - - - - - - `; - $("#partsTableBody").append(newRow); - updateRowButtons(); - } - - function updateRowButtons() { - const rowCount = $("#partsTableBody tr").length; - $("#partsTableBody tr").each(function (index) { - const $removeBtn = $(this).find(".remove-row"); - if (rowCount > 1) { - $removeBtn.show(); - } else { - $removeBtn.hide(); - } - }); - } - - $(document).on("click", ".add-row", function (e) { - e.preventDefault(); - console.log("Pulsante Aggiungi riga cliccato"); - const maxPartNumber = Math.max( - ...$("#partsTableBody tr") - .map(function () { - return parseInt($(this).find(".part-number").val()) || 0; - }) - .get(), - ); - addNewRow(maxPartNumber + 1); - updatePartsList(); - }); - - $(document).on("click", ".remove-row", function (e) { - e.preventDefault(); - console.log("Pulsante Rimuovi riga cliccato"); - const $row = $(this).closest("tr"); - const partId = $row.data("part-id"); - console.log("ID parte da eliminare:", partId); - - if (partId !== "new" && partId !== undefined && partId !== null) { - console.log("Procedo con la cancellazione dal database"); - $.ajax({ - url: "delete_part.php", - method: "POST", - data: JSON.stringify({ part_id: partId }), - contentType: "application/json", - beforeSend: function () { - console.log( - "Invio richiesta AJAX a delete_part.php con part_id:", - partId, - ); - }, - success: function (response) { - console.log("Risposta da delete_part.php:", response); - if (response.success) { - $row.remove(); - updateRowButtons(); - updatePartsList(); - clearCanvasMarkers(); - } else { - alert("Errore nell'eliminazione: " + response.message); - } - }, - error: function (xhr, status, error) { - console.log("Errore AJAX:", status, error); - alert( - "Errore nell'eliminazione: " + - error + - ". Stato: " + - xhr.status + - " - " + - xhr.responseText, - ); - }, - }); - } else { - console.log( - 'Riga non salvata nel database (partId = "new" o non definito), rimuovo solo visivamente', - ); - $row.remove(); - updateRowButtons(); - updatePartsList(); - } - }); - - $(document).on("blur", ".part-description, .part-number", function () { - const $input = $(this); - const $row = $input.closest("tr"); - const partNumber = $row.find(".part-number").val(); - const partDescription = $row.find(".part-description").val().trim(); - const $saveStatus = $row.find(".save-status"); - const $saveLoading = $row.find(".save-loading"); - const iddatadb = $("#partsModal").data("iddatadb"); - - console.log("Evento blur su input:", { partNumber, partDescription }); - - if (partDescription && iddatadb) { - $saveLoading.show(); - $saveStatus.hide(); - - $.ajax({ - url: "save_parts.php", - method: "POST", - data: JSON.stringify({ - iddatadb: iddatadb, - parts: [ - { - part_number: partNumber, - part_description: partDescription, - }, - ], - }), - contentType: "application/json", - success: function (response) { - if (response.success) { - if (response.part_id) { - $row.data("part-id", response.part_id); - console.log( - "Aggiornato partId della riga:", - response.part_id, - ); - } - $saveLoading.hide(); - $saveStatus.show(); - updatePartsList(); - setTimeout(() => $saveStatus.hide(), 2000); - } else { - alert("Errore nel salvataggio: " + response.message); - $saveLoading.hide(); - } - }, - error: function (xhr, status, error) { - alert("Errore nel salvataggio delle parti: " + error); - $saveLoading.hide(); - }, - }); - } - }); - - function loadExistingParts(iddatadb) { - $.ajax({ - url: "load_parts.php", - method: "GET", - data: { iddatadb: iddatadb }, - success: function (response) { - if (response.success) { - $("#partsTableBody").empty(); - if (response.parts.length > 0) { - response.parts.forEach((part) => { - const newRow = ` - - - - - - - - - - - `; - $("#partsTableBody").append(newRow); - }); - } else { - addNewRow(1); - } - updateRowButtons(); - updatePartsList(); - } else { - alert( - "Errore nel caricamento delle parti: " + - response.message, - ); - addNewRow(1); - } - }, - error: function (xhr, status, error) { - alert("Errore nel caricamento delle parti: " + error); - addNewRow(1); - }, - }); - } - - function updatePartsList() { - $("#partsList").empty(); - $("#partsTableBody tr").each(function () { - const partNumber = $(this).find(".part-number").val(); - const partDescription = $(this).find(".part-description").val(); - if (partNumber && partDescription) { - const listItem = `
            • ${partNumber} - ${partDescription}
            • `; - $("#partsList").append(listItem); - } - }); - } - - let selectedPartNumber = null; - let markers = []; - let descriptionPosition = { x: 10, y: 10 }; - let hasDescriptions = false; - - $("#partsList").on("click", "li", function () { - selectedPartNumber = $(this).data("part-number"); - console.log("Part number selezionato:", selectedPartNumber); - $(this).addClass("active").siblings().removeClass("active"); - }); - - const canvas = document.getElementById("photoCanvas"); - const ctx = canvas.getContext("2d"); - - $("#markerContainer").on("click", function (e) { - console.log("Click sul markerContainer rilevato"); // Debug - if (selectedPartNumber !== null) { - const img = $("#samplePhoto"); - const canvas = document.getElementById("photoCanvas"); - const rect = canvas.getBoundingClientRect(); - const container = img.parent(); - const containerWidth = container.width(); - const containerHeight = container.height(); - const scaleX = containerWidth / img.get(0).naturalWidth; - const scaleY = containerHeight / img.get(0).naturalHeight; - const scale = Math.min(scaleX, scaleY); - const x = (e.clientX - rect.left) / scale; - const y = (e.clientY - rect.top) / scale; - - console.log("Coordinate cliccate (x, y):", x, y); // Debug - - const existingMarker = markers.find( - (m) => m.partNumber == selectedPartNumber, - ); - if (existingMarker) { - existingMarker.x = x; - existingMarker.y = y; - } else { - markers.push({ partNumber: selectedPartNumber, x, y }); - } - console.log("Markers aggiornati:", markers); // Debug - updateMarkers(); - if (hasDescriptions) { - drawDescriptions(descriptionPosition.x, descriptionPosition.y); - } - selectedPartNumber = null; - $("#partsList li").removeClass("active"); - } else { - console.log("Nessun part number selezionato"); // Debug - } - }); - function updateMarkers() { - const img = $("#samplePhoto"); - const container = img.parent(); - const containerWidth = container.width(); - const containerHeight = container.height(); - const scaleX = containerWidth / img.get(0).naturalWidth; - const scaleY = containerHeight / img.get(0).naturalHeight; - const scale = Math.min(scaleX, scaleY); - - const markerContainer = $("#markerContainer"); - markerContainer.empty(); - - markers.forEach((marker) => { - const scaledX = marker.x * scale; - const scaledY = marker.y * scale; - console.log( - "Aggiungo marker:", - marker.partNumber, - "a posizione (scaledX, scaledY):", - scaledX, - scaledY, - ); // Debug - const $marker = $( - `
              ${marker.partNumber}
              `, - ).css({ - left: scaledX - 8 + "px", - top: scaledY - 8 + "px", - }); - markerContainer.append($marker); - makeDraggable($marker, marker, scale); - }); - } - - function makeDraggable($element, item, scale) { - let isDragging = false; - let currentX = parseFloat($element.css("left")) || 0; - let currentY = parseFloat($element.css("top")) || 0; - let initialX, initialY; - - $element.on("mousedown", function (e) { - e.preventDefault(); - isDragging = true; - initialX = e.clientX - currentX; - initialY = e.clientY - currentY; - $element.css("z-index", 1001); - }); - - $(document).on("mousemove", function (e) { - if (isDragging) { - e.preventDefault(); - currentX = e.clientX - initialX; - currentY = e.clientY - initialY; - const container = $("#photoCanvas").parent(); - const containerWidth = container.width(); - const containerHeight = container.height(); - const maxX = containerWidth - $element.width(); - const maxY = containerHeight - $element.height(); - - currentX = Math.max(0, Math.min(currentX, maxX)); - currentY = Math.max(0, Math.min(currentY, maxY)); - - $element.css({ - left: currentX + "px", - top: currentY + "px", - }); - - if (item.partNumber) { - // È un marker - item.x = (currentX + 8) / scale; - item.y = (currentY + 8) / scale; - } else { - // È la lista - descriptionPosition.x = (currentX + 5) / scale; - descriptionPosition.y = (currentY + 5) / scale; - } - } - }); - - $(document).on("mouseup", function () { - isDragging = false; - $element.css("z-index", 1000); - }); - } - - function drawDescriptions(x, y) { - const img = $("#samplePhoto"); - const container = img.parent(); - const containerWidth = container.width(); - const containerHeight = container.height(); - const scaleX = containerWidth / img.get(0).naturalWidth; - const scaleY = containerHeight / img.get(0).naturalHeight; - const scale = Math.min(scaleX, scaleY); - - const partsList = []; - $("#partsTableBody tr").each(function () { - const partNumber = $(this).find(".part-number").val(); - const partDescription = $(this).find(".part-description").val(); - if (partNumber && partDescription) { - partsList.push(`${partNumber} ${partDescription}`); - } - }); - - const descriptionList = $("#descriptionList"); - descriptionList.empty(); - descriptionList.css({ - display: "block", - top: y * scale + "px", - left: x * scale + "px", - width: "200px", - }); - partsList.forEach((part) => { - descriptionList.append(`
              ${part}
              `); - }); - - updateMarkers(); - } - - function clearCanvasMarkers() { - markers = []; - hasDescriptions = false; - $("#descriptionList").css("display", "none"); - $("#markerContainer").empty(); - const canvas = document.getElementById("photoCanvas"); - const img = $("#samplePhoto"); - const ctx = canvas.getContext("2d"); - const container = img.parent(); - const containerWidth = container.width(); - const containerHeight = container.height(); - const scaleX = containerWidth / img.get(0).naturalWidth; - const scaleY = containerHeight / img.get(0).naturalHeight; - const scale = Math.min(scaleX, scaleY); - - canvas.width = img.get(0).naturalWidth * scale; - canvas.height = img.get(0).naturalHeight * scale; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.drawImage(img.get(0), 0, 0, canvas.width, canvas.height); - } - - $("#addDescriptionsBtn").on("click", function () { - hasDescriptions = true; - descriptionPosition = { x: 10, y: 10 }; - drawDescriptions(descriptionPosition.x, descriptionPosition.y); - makeDraggable( - $("#descriptionList"), - descriptionPosition, - Math.min( - $("#photoCanvas").parent().width() / - $("#samplePhoto").get(0).naturalWidth, - $("#photoCanvas").parent().height() / - $("#samplePhoto").get(0).naturalHeight, - ), - ); - }); - - $("#removeAnnotationsBtn").on("click", function () { - clearCanvasMarkers(); - }); - - $("#savePhotoBtn").on("click", function () { - const canvas = document.getElementById("photoCanvas"); - const img = $("#samplePhoto"); - const ctx = canvas.getContext("2d"); - - canvas.width = img.get(0).naturalWidth; - canvas.height = img.get(0).naturalHeight; - ctx.drawImage(img.get(0), 0, 0); - - const partsList = []; - $("#partsTableBody tr").each(function () { - const partNumber = $(this).find(".part-number").val(); - const partDescription = $(this).find(".part-description").val(); - if (partNumber && partDescription) { - partsList.push(`${partNumber} ${partDescription}`); - } - }); - - if (hasDescriptions) { - ctx.fillStyle = "rgba(255, 255, 255, 0.8)"; - ctx.fillRect( - descriptionPosition.x, - descriptionPosition.y, - 200, - partsList.length * 12 + 10, - ); - ctx.fillStyle = "#000000"; - ctx.font = "10px Arial"; - partsList.forEach((part, index) => { - ctx.fillText( - part, - descriptionPosition.x + 5, - descriptionPosition.y + 12 + index * 12, - ); - }); - } - - markers.forEach((marker) => { - ctx.beginPath(); - ctx.arc(marker.x, marker.y, 8, 0, 2 * Math.PI); - ctx.fillStyle = "rgba(255, 0, 0, 0.5)"; - ctx.fill(); - ctx.strokeStyle = "#ff0000"; - ctx.lineWidth = 1; - ctx.stroke(); - ctx.fillStyle = "#ffffff"; - ctx.font = "bold 8px Arial"; - ctx.textAlign = "center"; - ctx.textBaseline = "middle"; - ctx.fillText(marker.partNumber, marker.x, marker.y); - }); - - const dataURL = canvas.toDataURL("image/png"); - const timestamp = new Date().toISOString().replace(/[:.]/g, "-"); - const defaultName = `photo_${$("#partsModal").data("iddatadb")}_${timestamp}.png`; - const newName = prompt( - "Inserisci il nome del file (senza estensione):", - defaultName.split(".png")[0], - ); - if (newName) { - const finalName = newName + "_" + timestamp + ".png"; - $.ajax({ - url: "save_annotated_photo.php", - method: "POST", - data: { dataURL: dataURL, filename: finalName }, - success: function (response) { - if (response.success) { - alert( - "Foto salvata con successo: " + response.file_path, - ); - } else { - alert("Errore nel salvataggio: " + response.message); - } - }, - error: function (xhr, status, error) { - alert("Errore nel salvataggio della foto: " + error); - }, - }); - } - }); - - $(document).on("mouseenter", "tr", function () { - console.log("Mouse entrato su riga"); - }); - - $(document).on("mouseleave", "tr", function () { - console.log("Mouse uscito da riga"); - }); -}); diff --git a/public/userarea/parts.js b/public/userarea/parts.js deleted file mode 100644 index 4e8a84e2..00000000 --- a/public/userarea/parts.js +++ /dev/null @@ -1,1917 +0,0 @@ -$(document).ready(function () { - // =================== - // GLOBAL STATE - // =================== - let photoData = { - naturalWidth: 0, - naturalHeight: 0, - displayWidth: 0, - displayHeight: 0, - scale: 1, - }; - - let photoAnnotations = {}; - let partColors = {}; - let partMatrice = {}; - let selectedPartNumber = null; - let unsavedChanges = false; - let fabricCanvas = null; - let descriptionTextbox = null; - let markerObjects = {}; - let matrici = []; - - // =================== - // VOICE RECOGNITION SETUP - // =================== - const SpeechRecognition = - window.SpeechRecognition || window.webkitSpeechRecognition; - let recognition = null; - let isVoiceActive = false; - const magicWord = "salva"; - - if (SpeechRecognition) { - recognition = new SpeechRecognition(); - recognition.lang = "it-IT"; - recognition.continuous = true; - recognition.interimResults = false; - - recognition.onresult = function (event) { - const transcript = event.results[ - event.results.length - 1 - ][0].transcript - .trim() - .toLowerCase(); - - const $currentRow = $("#partsTableBody tr:last"); - const $descriptionInput = $currentRow.find(".part-description"); - - if (transcript.includes(magicWord)) { - const cleanedTranscript = transcript - .replace(magicWord, "") - .trim(); - if (cleanedTranscript) { - $descriptionInput.val( - ( - $descriptionInput.val() + - " " + - cleanedTranscript - ).trim(), - ); - $descriptionInput.trigger("blur"); - } - const maxPartNumber = Math.max( - ...$("#partsTableBody tr") - .map(function () { - return ( - parseInt($(this).find(".part-number").val()) || - 0 - ); - }) - .get(), - ); - addNewRow(maxPartNumber + 1); - const $newRow = $("#partsTableBody tr:last"); - $newRow.find(".part-description").focus(); - } else { - $descriptionInput.val( - ($descriptionInput.val() + " " + transcript).trim(), - ); - $descriptionInput.trigger("blur"); - } - }; - - recognition.onerror = function (event) { - if (event.error === "no-speech" || event.error === "aborted") { - if (isVoiceActive) recognition.start(); - } else { - alert("Errore nel riconoscimento vocale: " + event.error); - toggleVoiceRecognition(); - } - }; - - recognition.onend = function () { - if (isVoiceActive) recognition.start(); - }; - } else { - $("#toggleVoiceBtn").hide(); - } - - function toggleVoiceRecognition() { - if (!recognition) return; - isVoiceActive = !isVoiceActive; - const $btn = $("#toggleVoiceBtn"); - if (isVoiceActive) { - $btn.addClass("btn-danger").html( - ' Stop Voce', - ); - recognition.start(); - $("#partsTableBody tr:last").find(".part-description").focus(); - } else { - $btn.removeClass("btn-danger") - .addClass("btn-secondary") - .html(' Voce'); - recognition.stop(); - } - } - - $("#toggleVoiceBtn").on("click", toggleVoiceRecognition); - - // =================== - // MODAL HANDLING - // =================== - $(".parts-btn").on("click", function () { - const iddatadb = $(this).data("iddatadb"); - const idquotations = $(this).data("idquotations"); - const rowIndex = $(this).data("row"); - const importRef = $("table tbody tr") - .eq(rowIndex) - .find("td") - .eq(1) - .text(); - const description = - $("table tbody tr").eq(rowIndex).find("td").eq(2).text() || - "Sconosciuto"; - - $("#trfHeader").text( - `${iddatadb || idquotations} - ${importRef} - ${description}`, - ); - $("#partsModal") - .data("iddatadb", iddatadb) - .data("idquotations", idquotations); - - // Precarica le matrici se iddatadb (assumendo matrici solo per iddatadb) - if (iddatadb) { - if (matrici.length === 0) { - $.ajax({ - url: "get_matrici.php", - method: "GET", - dataType: "json", - success: function (data) { - matrici = data.value || []; - initializeGlobalSelect2(); - loadPhoto(iddatadb, idquotations); - loadExistingParts(iddatadb, idquotations); - }, - error: function (xhr, status, error) { - matrici = []; - initializeGlobalSelect2(); - loadPhoto(iddatadb, idquotations); - loadExistingParts(iddatadb, idquotations); - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }, - }); - } else { - initializeGlobalSelect2(); - loadPhoto(iddatadb, idquotations); - loadExistingParts(iddatadb, idquotations); - } - } else { - loadPhoto(iddatadb, idquotations); - loadExistingParts(iddatadb, idquotations); - } - - const modalElement = document.getElementById("partsModal"); - if (modalElement) { - // Verifica se il modale è già stato inizializzato - let modal = bootstrap.Modal.getInstance(modalElement); - if (!modal) { - modal = new bootstrap.Modal(modalElement, { - backdrop: true, - keyboard: true, - focus: true, - }); - } - modal.show(); - } else { - console.error("Elemento modale non trovato: #partsModal"); - const errorMsg = $( - '', - ); - $("body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - }); - - $("#partsModal .close-btn, #partsModal").on("click", function (event) { - if (event.target === this || $(event.target).hasClass("close-btn")) { - const modalElement = document.getElementById("partsModal"); - const modal = bootstrap.Modal.getInstance(modalElement); - if (modal) { - modal.hide(); - } - } - }); - - $("#partsModal").on("hide.bs.modal", function (e) { - if ( - unsavedChanges && - !confirm("Hai modifiche non salvate. Vuoi davvero uscire?") - ) { - e.preventDefault(); - } - }); - - $("#partsModal").on("hidden.bs.modal", function () { - // Resetta lo stato - photoData = { - naturalWidth: 0, - naturalHeight: 0, - displayWidth: 0, - displayHeight: 0, - scale: 1, - }; - photoAnnotations = {}; - partColors = {}; - partMatrice = {}; - selectedPartNumber = null; - unsavedChanges = false; - if (fabricCanvas) { - fabricCanvas.off(); - fabricCanvas.dispose(); - fabricCanvas = null; - } - descriptionTextbox = null; - markerObjects = {}; - matrici = []; - $("#photoSelectorContainer").empty().hide(); - $("#samplePhoto").attr("src", ""); - $("#partsTableBody").empty(); - $("#global-matrice").empty(); - $(".temp-alert").remove(); - - // Rimuovi manualmente il backdrop e ripristina il body - const modalElement = document.getElementById("partsModal"); - const modal = bootstrap.Modal.getInstance(modalElement); - if (modal) { - modal.dispose(); // Distrugge l'istanza del modale - } - $(".modal-backdrop").remove(); - $("body").removeClass("modal-open"); - $("body").css("padding-right", ""); - $(":focus").blur(); - }); - - // =================== - // PHOTO LOADERS - // =================== - function loadPhoto(iddatadb, idquotations) { - const currentPhoto = $("#samplePhoto").attr("src"); - const endpoint = idquotations - ? "load_photo_quotation.php" - : "load_photo.php"; - const data = idquotations - ? { idquotations: idquotations } - : { iddatadb: iddatadb }; - $.ajax({ - url: endpoint, - method: "GET", - data: data, - success: function (response) { - if (response.success) { - if (response.photos && response.photos.length > 1) { - showPhotoSelector(response.photos, currentPhoto); - } else if ( - response.photos && - response.photos.length === 1 - ) { - loadSinglePhoto(response.photos[0]); - } else { - $("#samplePhoto").attr("src", ""); - const errorMsg = $( - '', - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - } else { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - }, - error: function (xhr, status, error) { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }, - }); - } - - function showPhotoSelector(photos, selected = null) { - const selectorContainer = $("#photoSelectorContainer"); - selectorContainer.empty().show(); - const selector = $( - '', - ); - photos.forEach((photo, index) => { - const photoName = photo.split("/").pop(); - const option = $("") - .val(photo) - .text(`Photo ${index + 1} - ${photoName}`); - selector.append(option); - }); - selector.on("change", function () { - loadSinglePhoto($(this).val()); - }); - selectorContainer.append(selector); - const photoToSelect = - selected && photos.includes(selected) ? selected : photos[0]; - if (photoToSelect) { - selector.val(photoToSelect); - loadSinglePhoto(photoToSelect); - } - } - - function loadSinglePhoto(photoPath) { - const img = $("#samplePhoto"); - img.off("load").attr("src", photoPath); - img.on("load", function () { - const canvas = document.getElementById("photoCanvas"); - const ctx = canvas.getContext("2d"); - const naturalWidth = img[0].naturalWidth; - const naturalHeight = img[0].naturalHeight; - const parent = $(canvas).parent(); - const maxW = parent.width(); - const maxH = parent.height(); - const scale = Math.min(maxW / naturalWidth, maxH / naturalHeight); - - photoData = { - naturalWidth, - naturalHeight, - displayWidth: Math.max(1, Math.round(naturalWidth * scale)), - displayHeight: Math.max(1, Math.round(naturalHeight * scale)), - scale, - }; - - canvas.width = naturalWidth; - canvas.height = naturalHeight; - canvas.style.width = `${photoData.displayWidth}px`; - canvas.style.height = `${photoData.displayHeight}px`; - - ctx.clearRect(0, 0, naturalWidth, naturalHeight); - ctx.drawImage(img[0], 0, 0, naturalWidth, naturalHeight); - - // === FIX PER FABRIC.JS === - - // 1. Disponi completamente il canvas esistente - if (fabricCanvas) { - fabricCanvas.off(); // Rimuove tutti gli eventi esistenti - fabricCanvas.dispose(); - fabricCanvas = null; - } - - // 2. Resetta completamente l'elemento canvas overlay - const overlayCanvas = document.getElementById("overlayCanvas"); - - // Rimuovi l'elemento esistente e creane uno nuovo - const canvasContainer = overlayCanvas.parentElement; - const newOverlayCanvas = document.createElement("canvas"); - newOverlayCanvas.id = "overlayCanvas"; - newOverlayCanvas.width = photoData.displayWidth; - newOverlayCanvas.height = photoData.displayHeight; - newOverlayCanvas.style.width = `${photoData.displayWidth}px`; - newOverlayCanvas.style.height = `${photoData.displayHeight}px`; - - // Mantieni gli stili CSS esistenti - newOverlayCanvas.style.position = "absolute"; - newOverlayCanvas.style.top = "0"; - newOverlayCanvas.style.left = "0"; - newOverlayCanvas.style.zIndex = "10"; - - // Sostituisci l'elemento - canvasContainer.removeChild(overlayCanvas); - canvasContainer.appendChild(newOverlayCanvas); - - // 3. Aspetta un tick per assicurarsi che il DOM sia aggiornato - setTimeout(() => { - // 4. Inizializza nuovo canvas Fabric.js - fabricCanvas = new fabric.Canvas("overlayCanvas", { - selection: true, - preserveObjectStacking: true, - width: photoData.displayWidth, - height: photoData.displayHeight, - }); - - // 5. Forza il ridimensionamento del canvas - fabricCanvas.setDimensions({ - width: photoData.displayWidth, - height: photoData.displayHeight, - }); - - // 6. Registra gli eventi - fabricCanvas.on("mouse:down", function (options) { - if (selectedPartNumber === null) { - return; - } - if (options.target) { - return; - } - const pointer = fabricCanvas.getPointer(options.e); - const x = pointer.x / photoData.scale; - const y = pointer.y / photoData.scale; - const currentPhoto = $("#samplePhoto").attr("src"); - - if (!photoAnnotations[currentPhoto]) { - photoAnnotations[currentPhoto] = { - markers: [], - hasDescriptions: false, - descriptionPosition: { x: 10, y: 10 }, - descriptionSize: { - width: photoData.displayWidth * 0.3, - height: photoData.displayHeight * 0.3, - }, - }; - } - - const partColor = - partColors[selectedPartNumber] || "#ff0000"; - const existingMarker = photoAnnotations[ - currentPhoto - ].markers.find((m) => m.partNumber == selectedPartNumber); - - if (existingMarker) { - existingMarker.x = x; - existingMarker.y = y; - existingMarker.color = partColor; - } else { - photoAnnotations[currentPhoto].markers.push({ - partNumber: selectedPartNumber, - x, - y, - color: partColor, - }); - } - - updateMarkers(); - markUnsaved(); - selectedPartNumber = null; - $("#partsList li").removeClass("active"); - }); - - // 7. Forza focus e render - fabricCanvas.upperCanvasEl.focus(); - fabricCanvas.renderAll(); - - // 8. Aggiorna marker e descrizioni esistenti per questa foto - updateMarkers(); - updateDescriptions(); - }, 10); // Piccolo delay per assicurare che il DOM sia pronto - }); - } - - // =================== - // DOWNLOAD PHOTO - // =================== - $("#downloadPhotoBtn").on("click", function () { - const photoSrc = $("#samplePhoto").attr("src"); - if (!photoSrc) { - const errorMsg = $( - '', - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - return; - } - const photoName = photoSrc.split("/").pop(); - const link = document.createElement("a"); - link.href = photoSrc; - link.download = photoName; - document.body.appendChild(link); - link.click(); - document.body.removeChild(link); - }); - - // =================== - // PARTS TABLE - // =================== - function addNewRow(nextPartNumber, isMix = false) { - const description = isMix ? "Mix" : ""; - const defaultColor = isMix ? "#0000ff" : "#ff0000"; - const newRow = ` - - - - - - - - - - - `; - $("#partsTableBody").append(newRow); - updateRowButtons(); - partColors[nextPartNumber || 1] = defaultColor; - markUnsaved(); - } - - function updateRowButtons() { - const rowCount = $("#partsTableBody tr").length; - $("#partsTableBody tr").each(function () { - $(this) - .find(".remove-row") - .toggle(rowCount > 1); - }); - } - - $(document).on("click", ".add-row", function (e) { - e.preventDefault(); - const maxPartNumber = Math.max( - ...$("#partsTableBody tr") - .map(function () { - return parseInt($(this).find(".part-number").val()) || 0; - }) - .get(), - ); - addNewRow(maxPartNumber + 1); - updatePartsList(); - if (photoAnnotations[$("#samplePhoto").attr("src")]?.hasDescriptions) { - updateDescriptions(); - } - }); - - $(document).on("click", ".add-mix-row", function (e) { - e.preventDefault(); - const maxPartNumber = Math.max( - ...$("#partsTableBody tr") - .map(function () { - return parseInt($(this).find(".part-number").val()) || 0; - }) - .get(), - ); - addNewRow(maxPartNumber + 1, true); - updatePartsList(); - if (photoAnnotations[$("#samplePhoto").attr("src")]?.hasDescriptions) { - updateDescriptions(); - } - }); - - $(document).on("click", ".remove-row", function (e) { - e.preventDefault(); - const $row = $(this).closest("tr"); - const partId = $row.data("part-id"); - const partNumber = $row.find(".part-number").val(); - const iddatadb = $("#partsModal").data("iddatadb"); - const idquotations = $("#partsModal").data("idquotations"); - const endpoint = idquotations - ? "delete_part_quotation.php" - : "delete_part.php"; - - if (partId && partId !== "new") { - $.ajax({ - url: endpoint, - method: "POST", - data: JSON.stringify({ part_id: partId }), - contentType: "application/json", - success: function (response) { - if (response.success) { - $row.remove(); - delete partColors[partNumber]; - delete partMatrice[partNumber]; - if (markerObjects[partNumber]) { - fabricCanvas.remove(markerObjects[partNumber]); - delete markerObjects[partNumber]; - fabricCanvas.renderAll(); - } - updateRowButtons(); - updatePartsList(); - markUnsaved(); - } else { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - }, - error: function (xhr, status, error) { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }, - }); - } else { - $row.remove(); - delete partColors[partNumber]; - delete partMatrice[partNumber]; - if (markerObjects[partNumber]) { - fabricCanvas.remove(markerObjects[partNumber]); - delete markerObjects[partNumber]; - fabricCanvas.renderAll(); - } - updateRowButtons(); - updatePartsList(); - if ( - photoAnnotations[$("#samplePhoto").attr("src")]?.hasDescriptions - ) { - updateDescriptions(); - } - markUnsaved(); - } - }); - - $(document).on("blur", ".part-description, .part-number", function () { - const $input = $(this); - const $row = $input.closest("tr"); - const partNumber = $row.find(".part-number").val(); - const partDescription = $row.find(".part-description").val().trim(); - const $saveStatus = $row.find(".save-status"); - const $saveLoading = $row.find(".save-loading"); - const iddatadb = $("#partsModal").data("iddatadb"); - const idquotations = $("#partsModal").data("idquotations"); - const isMix = partDescription.startsWith("Mix") ? "Y" : "N"; - const partId = $row.data("part-id") || null; - const endpoint = idquotations - ? "save_parts_quotation.php" - : "save_parts.php"; - const data = idquotations - ? { idquotations: idquotations } - : { iddatadb: iddatadb }; - - if (partDescription && (iddatadb || idquotations)) { - $saveLoading.show(); - $saveStatus.hide(); - $.ajax({ - url: endpoint, - method: "POST", - data: JSON.stringify({ - ...data, - parts: [ - { - id: partId, - part_number: partNumber, - part_description: partDescription, - mix: isMix, - }, - ], - }), - contentType: "application/json", - success: function (response) { - $saveLoading.hide(); - if (response.success) { - $saveStatus.show(); - if (response.part_id) { - $row.attr("data-part-id", response.part_id).data( - "part-id", - response.part_id, - ); - } - setTimeout(() => $saveStatus.hide(), 2000); - updatePartsList(); - if ( - photoAnnotations[$("#samplePhoto").attr("src")] - ?.hasDescriptions - ) { - updateDescriptions(); - } - } else { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - }, - error: function (xhr, status, error) { - $saveLoading.hide(); - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }, - }); - } - }); - - // =================== - // LOAD EXISTING PARTS - // =================== - function loadExistingParts(iddatadb, idquotations) { - const endpoint = idquotations - ? "load_parts_quotation.php" - : "load_parts.php"; - const data = idquotations - ? { idquotations: idquotations } - : { iddatadb: iddatadb }; - $.ajax({ - url: endpoint, - method: "GET", - data: data, - success: function (response) { - $("#partsTableBody").empty(); - if (response.success && response.parts.length > 0) { - response.parts.forEach((part) => { - const defaultColor = part.part_description.startsWith( - "Mix", - ) - ? "#0000ff" - : "#ff0000"; - const newRow = ` - - - - - - - - - - - `; - $("#partsTableBody").append(newRow); - partColors[part.part_number] = defaultColor; - if (part.idmatrice) { - partMatrice[part.part_number] = part.idmatrice; - } - }); - } else { - addNewRow(1); - } - updateRowButtons(); - updatePartsList(); - }, - error: function (xhr, status, error) { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - addNewRow(1); - }, - }); - } - - // Funzione per inizializzare Select2 sulle tendine delle matrici - function initializeSelect2($select, partNumber, partId, idmatrice) { - if (typeof $.fn.select2 === "undefined") { - $select.replaceWith( - '', - ); - return; - } - - const options = matrici.map(function (matrice) { - return { - id: matrice.IdMatrice, - text: matrice.NomeMatrice, // Updated to use NomeMatrice - }; - }); - - $select.select2({ - placeholder: "Seleziona matrice", - allowClear: true, - data: options, - dropdownParent: $("#partsModal"), - matcher: function (params, data) { - if (!params.term || params.term.length < 3) { - return data; - } - const term = params.term.toUpperCase(); - if (data.text.toUpperCase().indexOf(term) >= 0) { - return data; - } - return null; - }, - }); - - if (partId && partId !== "new" && idmatrice) { - const matrice = matrici.find((m) => m.IdMatrice == idmatrice); - if (matrice) { - const option = new Option( - matrice.NomeMatrice, // Updated to use NomeMatrice - matrice.IdMatrice, - true, - true, - ); - $select.append(option).trigger("change"); - partMatrice[partNumber] = matrice.IdMatrice; - } - } - - $select.on("change", function () { - const idmatrice = $(this).val(); - const $listItem = $(this).closest("li"); - const $saveStatus = $listItem.find(".save-status"); - const $saveLoading = $listItem.find(".save-loading"); - - partMatrice[partNumber] = idmatrice || null; - - if (partId && partId !== "new") { - $saveLoading.show(); - $saveStatus.hide(); - - const iddatadb = $("#partsModal").data("iddatadb"); - const idquotations = $("#partsModal").data("idquotations"); - const endpoint = idquotations - ? "save_matrice_quotation.php" - : "save_matrice.php"; - const data = idquotations - ? { idquotations: idquotations } - : { iddatadb: iddatadb }; - - $.ajax({ - url: endpoint, - method: "POST", - data: JSON.stringify({ - ...data, - parts: [ - { - id: partId, - idmatrice: idmatrice || null, - }, - ], - }), - contentType: "application/json", - success: function (response) { - if (response.success) { - $saveLoading.hide(); - $saveStatus.show(); - setTimeout(() => $saveStatus.hide(), 2000); - } else { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - $saveLoading.hide(); - } - }, - error: function (xhr, status, error) { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - $saveLoading.hide(); - }, - }); - } - }); - } - - // Funzione per inizializzare Select2 sul dropdown globale - function initializeGlobalSelect2() { - const $select = $("#global-matrice"); - if (typeof $.fn.select2 === "undefined") { - $select.replaceWith( - '', - ); - return; - } - - const options = matrici.map(function (matrice) { - return { - id: matrice.IdMatrice, - text: matrice.NomeMatrice, // Updated to use NomeMatrice - }; - }); - - $select.select2({ - placeholder: "Seleziona matrice globale", - allowClear: true, - data: options, - dropdownParent: $("#partsModal"), - matcher: function (params, data) { - if (!params.term || params.term.length < 3) { - return data; - } - const term = params.term.toUpperCase(); - if (data.text.toUpperCase().indexOf(term) >= 0) { - return data; - } - return null; - }, - }); - } - - // =================== - // PARTS LIST - // =================== - function updatePartsList() { - const showMixParts = $("#showMixParts").is(":checked"); - $("#partsList").empty(); - const predefinedColors = [ - "#ff0000", // Rosso - "#0000ff", // Blu - "#00ff00", // Verde - "#01832cff", // Giallo - "#ff00ff", // Magenta - "#00ffff", // Ciano - "#800080", // Viola - "#ffa500", // Arancione - ]; - - $("#partsTableBody tr").each(function () { - const partNumber = $(this).find(".part-number").val(); - const partDescription = $(this).find(".part-description").val(); - const partId = $(this).data("part-id"); - const partColor = - partColors[partNumber] || - (partDescription.startsWith("Mix") ? "#0000ff" : "#ff0000"); - if ( - partNumber && - partDescription && - (showMixParts || !partDescription.startsWith("Mix")) - ) { - const colorOptions = predefinedColors - .map( - (color) => - `
              `, - ) - .join(""); - const listItem = ` -
            • - ${partNumber} - ${partDescription} -
              - - - -
              -
              -
              ${colorOptions}
              -
              - - -
              -
            • `; - $("#partsList").append(listItem); - const $select = $("#partsList").find( - `li[data-part-number="${partNumber}"] .part-matrice`, - ); - initializeSelect2( - $select, - partNumber, - partId, - partMatrice[partNumber], - ); - } - }); - - $(".selected-color").on("click", function (e) { - e.stopPropagation(); - const $picker = $(this).siblings(".color-picker"); - $(".color-picker").not($picker).hide(); - $picker.toggle(); - }); - - $(".color-option").on("click", function (e) { - e.stopPropagation(); - const $this = $(this); - const color = $this.data("color"); - const $listItem = $this.closest("li"); - const partNumber = $listItem.data("part-number"); - partColors[partNumber] = color; - $listItem.find(".selected-color").css("background-color", color); - $this.closest(".color-picker").hide(); - updateMarkers(); - markUnsaved(); - }); - - $(document).on("click", function (e) { - if (!$(e.target).closest(".color-picker-container").length) { - $(".color-picker").hide(); - } - }); - } - - $(document).on("click", ".add-to-mix-btn", function () { - const $listItem = $(this).closest("li"); - const partDescription = $listItem.text().split(" - ")[1].trim(); - const $mixRow = $("#partsTableBody tr") - .filter(function () { - return $(this) - .find(".part-description") - .val() - .startsWith("Mix"); - }) - .last(); - - if ($mixRow.length === 0) { - const errorMsg = $( - '', - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - return; - } - - const $descriptionInput = $mixRow.find(".part-description"); - let currentDescription = $descriptionInput.val().trim(); - if (currentDescription === "Mix") { - currentDescription = `Mix ${partDescription}`; - } else if (!currentDescription.includes(partDescription)) { - currentDescription += ` + ${partDescription}`; - } else { - return; - } - - $descriptionInput.val(currentDescription); - $descriptionInput.trigger("blur"); - updatePartsList(); - if (photoAnnotations[$("#samplePhoto").attr("src")]?.hasDescriptions) { - updateDescriptions(); - } - }); - - $(document).on("click", ".propagate-matrice-btn", function () { - const $listItem = $(this).closest("li"); - const globalVal = $("#global-matrice").val(); - if (globalVal) { - $listItem.find(".part-matrice").val(globalVal).trigger("change"); - } else { - const errorMsg = $( - '', - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - }); - - $("#partsList").on("click", "li", function (e) { - if ( - $(e.target).hasClass("add-to-mix-btn") || - $(e.target).hasClass("color-option") || - $(e.target).closest(".color-picker-container").length || - $(e.target).hasClass("part-matrice") || - $(e.target).closest(".select2-container").length || - $(e.target).hasClass("propagate-matrice-btn") - ) - return; - selectedPartNumber = $(this).data("part-number"); - $(this).addClass("active").siblings().removeClass("active"); - }); - - $("#showMixParts").on("change", function () { - updatePartsList(); - updateMarkers(); - if (photoAnnotations[$("#samplePhoto").attr("src")]?.hasDescriptions) { - updateDescriptions(); - } - }); - - function renumberParts() { - const $rows = $("#partsTableBody tr"); - const iddatadb = $("#partsModal").data("iddatadb"); - const idquotations = $("#partsModal").data("idquotations"); - const endpoint = idquotations - ? "renumber_parts_quotation.php" - : "renumber_parts.php"; - const data = idquotations - ? { idquotations: idquotations } - : { iddatadb: iddatadb }; - let newPartColors = {}; - let newPartMatrice = {}; - let newMarkerObjects = {}; - - let partsData = $rows - .map(function (index) { - const $row = $(this); - return { - partNumber: $row.find(".part-number").val(), - partDescription: $row.find(".part-description").val(), - partId: $row.data("part-id"), - }; - }) - .get(); - - partsData.forEach((part, index) => { - const newNumber = index + 1; - newPartColors[newNumber] = partColors[part.partNumber] || "#ff0000"; - newPartMatrice[newNumber] = partMatrice[part.partNumber] || null; - if (markerObjects[part.partNumber]) { - newMarkerObjects[newNumber] = markerObjects[part.partNumber]; - } - part.partNumber = newNumber; - }); - - $rows.each(function (index) { - $(this) - .find(".part-number") - .val(index + 1); - }); - - const currentPhoto = $("#samplePhoto").attr("src"); - if (photoAnnotations[currentPhoto]) { - photoAnnotations[currentPhoto].markers.forEach((marker) => { - const newPartNumber = partsData.find( - (p) => p.partNumber == marker.partNumber, - )?.partNumber; - if (newPartNumber) { - marker.partNumber = newPartNumber; - marker.color = newPartColors[newPartNumber]; - } - }); - } - - partColors = newPartColors; - partMatrice = newPartMatrice; - markerObjects = newMarkerObjects; - - const partsToSave = partsData.map((part) => ({ - id: part.partId || null, - part_number: part.partNumber, - part_description: part.partDescription, - mix: part.partDescription.startsWith("Mix") ? "Y" : "N", - idmatrice: partMatrice[part.partNumber] || null, - })); - - $.ajax({ - url: endpoint, - method: "POST", - data: JSON.stringify({ ...data, parts: partsToSave }), - contentType: "application/json", - success: function (response) { - if (response.success) { - $rows.each(function (index) { - const $row = $(this); - const newPartId = - response.part_ids && response.part_ids[index] - ? response.part_ids[index] - : $row.data("part-id"); - if (newPartId) { - $row.attr("data-part-id", newPartId).data( - "part-id", - newPartId, - ); - } - const $saveStatus = $row.find(".save-status"); - const $saveLoading = $row.find(".save-loading"); - $saveLoading.hide(); - $saveStatus.show(); - setTimeout(() => $saveStatus.hide(), 2000); - }); - updatePartsList(); - updateMarkers(); - if (photoAnnotations[currentPhoto]?.hasDescriptions) { - updateDescriptions(); - } - markUnsaved(); - } else { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - }, - error: function (xhr, status, error) { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }, - }); - } - - $("#renumberPartsBtn").on("click", renumberParts); - - // =================== - // MARKERS & DESCRIPTIONS - // =================== - function updateMarkers() { - // Rimuovi marker esistenti - for (let partNumber in markerObjects) { - fabricCanvas.remove(markerObjects[partNumber]); - delete markerObjects[partNumber]; - } - markerObjects = {}; - - const currentPhoto = $("#samplePhoto").attr("src"); - const annotations = photoAnnotations[currentPhoto] || { - markers: [], - hasDescriptions: false, - descriptionPosition: { x: 10, y: 10 }, - descriptionSize: { - width: photoData.displayWidth * 0.3, - height: photoData.displayHeight * 0.3, - }, - }; - const showMixParts = $("#showMixParts").is(":checked"); - - annotations.markers.forEach((marker) => { - const partRow = $("#partsTableBody tr").filter(function () { - return $(this).find(".part-number").val() == marker.partNumber; - }); - const partDescription = partRow.find(".part-description").val(); - if ( - !showMixParts && - partDescription && - partDescription.startsWith("Mix") - ) - return; - - const radius = 12; - const fontSize = 16; - const markerColor = - marker.color || partColors[marker.partNumber] || "#ff0000"; - - // Crea cerchio - const circle = new fabric.Circle({ - radius: radius, - fill: markerColor, - stroke: markerColor, - strokeWidth: 1, - left: marker.x * photoData.scale, - top: marker.y * photoData.scale, - originX: "center", - originY: "center", - selectable: true, - hasControls: false, - lockScalingX: true, - lockScalingY: true, - lockRotation: true, - }); - - // Crea testo - const text = new fabric.Text(marker.partNumber.toString(), { - fontFamily: "Arial", - fontSize: fontSize, - fontWeight: "bold", - fill: "#ffffff", - left: marker.x * photoData.scale, - top: marker.y * photoData.scale, - originX: "center", - originY: "middle", - selectable: true, - hasControls: false, - lockScalingX: true, - lockScalingY: true, - lockRotation: true, - }); - - // Raggruppa cerchio e testo - const group = new fabric.Group([circle, text], { - left: marker.x * photoData.scale, - top: marker.y * photoData.scale, - originX: "center", - originY: "center", - selectable: true, - hasControls: false, - lockScalingX: true, - lockScalingY: true, - lockRotation: true, - }); - - group.on("moving", function () { - marker.x = this.left / photoData.scale; - marker.y = this.top / photoData.scale; - markUnsaved(); - }); - - fabricCanvas.add(group); - markerObjects[marker.partNumber] = group; - }); - - fabricCanvas.renderAll(); - } - - function updateDescriptions() { - const currentPhoto = $("#samplePhoto").attr("src"); - const annotations = photoAnnotations[currentPhoto] || { - markers: [], - hasDescriptions: false, - descriptionPosition: { x: 10, y: 10 }, - descriptionSize: { - width: photoData.displayWidth * 0.3, - height: photoData.displayHeight * 0.3, - }, - }; - const showMixParts = $("#showMixParts").is(":checked"); - - if (!annotations.hasDescriptions) { - if (descriptionTextbox) { - fabricCanvas.remove(descriptionTextbox); - descriptionTextbox = null; - fabricCanvas.renderAll(); - } - return; - } - - const partsList = []; - $("#partsTableBody tr").each(function () { - const partNumber = $(this).find(".part-number").val(); - const partDescription = $(this).find(".part-description").val(); - if ( - partNumber && - partDescription && - (showMixParts || !partDescription.startsWith("Mix")) - ) { - partsList.push(`${partNumber} ${partDescription}`); - } - }); - - const text = partsList.join("\n"); - - // Rimuovi il textbox esistente - if (descriptionTextbox) { - fabricCanvas.remove(descriptionTextbox); - descriptionTextbox = null; - } - - descriptionTextbox = new fabric.Textbox(text, { - left: annotations.descriptionPosition.x * photoData.scale, - top: annotations.descriptionPosition.y * photoData.scale, - width: annotations.descriptionSize.width, - scaleX: 1, - scaleY: 1, - backgroundColor: "rgba(255, 255, 255, 0)", // Changed to fully transparent - fontFamily: "Arial", - fontSize: 24, - fill: "#000000", - padding: 10, - editable: false, - selectable: true, - hasControls: true, - borderColor: "#ccc", - cornerColor: "#888", - cornerSize: 10, - transparentCorners: false, - lockRotation: true, - lockScalingFlip: true, - minScaleLimit: 0.1, - }); - - descriptionTextbox.on("scaling", function () { - fitFontToBox(this); - annotations.descriptionSize.width = this.width * this.scaleX; - annotations.descriptionSize.height = this.height * this.scaleY; - markUnsaved(); - }); - - descriptionTextbox.on("moving", function () { - annotations.descriptionPosition.x = this.left / photoData.scale; - annotations.descriptionPosition.y = this.top / photoData.scale; - markUnsaved(); - }); - - fabricCanvas.add(descriptionTextbox); - fitFontToBox(descriptionTextbox); - fabricCanvas.renderAll(); - } - - function fitFontToBox(textbox) { - let fontSize = 24; - textbox.set("fontSize", fontSize); - textbox.setCoords(); - - while ( - (textbox.textLines.length * textbox.fontSize * 1.2 > - textbox.height * textbox.scaleY || - textbox._getTransformedDimensions().x > - textbox.width * textbox.scaleX) && - fontSize > 8 - ) { - fontSize -= 1; - textbox.set("fontSize", fontSize); - textbox.setCoords(); - } - - while ( - textbox.textLines.length * textbox.fontSize * 1.2 < - textbox.height * textbox.scaleY && - textbox._getTransformedDimensions().x < - textbox.width * textbox.scaleX && - fontSize < 32 - ) { - fontSize += 1; - textbox.set("fontSize", fontSize); - textbox.setCoords(); - } - } - - function clearCanvasMarkers(clearDescriptions = true) { - const currentPhoto = $("#samplePhoto").attr("src"); - if (clearDescriptions && photoAnnotations[currentPhoto]) { - photoAnnotations[currentPhoto].hasDescriptions = false; - photoAnnotations[currentPhoto].descriptionPosition = { - x: 10, - y: 10, - }; - photoAnnotations[currentPhoto].descriptionSize = { - width: photoData.displayWidth * 0.3, - height: photoData.displayHeight * 0.3, - }; - if (descriptionTextbox) { - fabricCanvas.remove(descriptionTextbox); - descriptionTextbox = null; - } - } - - for (let partNumber in markerObjects) { - fabricCanvas.remove(markerObjects[partNumber]); - delete markerObjects[partNumber]; - } - markerObjects = {}; - - const canvas = document.getElementById("photoCanvas"); - const ctx = canvas.getContext("2d"); - canvas.width = photoData.naturalWidth; - canvas.height = photoData.naturalHeight; - canvas.style.width = `${photoData.displayWidth}px`; - canvas.style.height = `${photoData.displayHeight}px`; - ctx.clearRect(0, 0, canvas.width, canvas.height); - if ($("#samplePhoto")[0].naturalWidth) { - ctx.drawImage( - $("#samplePhoto")[0], - 0, - 0, - canvas.width, - canvas.height, - ); - } - updateMarkers(); - if (photoAnnotations[currentPhoto]?.hasDescriptions) { - updateDescriptions(); - } - } - - function undoLastMarker() { - const currentPhoto = $("#samplePhoto").attr("src"); - if ( - photoAnnotations[currentPhoto] && - photoAnnotations[currentPhoto].markers.length > 0 - ) { - const lastMarker = photoAnnotations[currentPhoto].markers.pop(); - if (markerObjects[lastMarker.partNumber]) { - fabricCanvas.remove(markerObjects[lastMarker.partNumber]); - delete markerObjects[lastMarker.partNumber]; - fabricCanvas.renderAll(); - } - markUnsaved(); - } - } - - $("#addDescriptionsBtn").on("click", function () { - const currentPhoto = $("#samplePhoto").attr("src"); - if (!photoAnnotations[currentPhoto]) { - photoAnnotations[currentPhoto] = { - markers: [], - hasDescriptions: false, - descriptionPosition: { x: 10, y: 10 }, - descriptionSize: { - width: photoData.displayWidth * 0.3, - height: photoData.displayHeight * 0.3, - }, - }; - } - photoAnnotations[currentPhoto].hasDescriptions = true; - updateDescriptions(); - markUnsaved(); - }); - - $("#removeAnnotationsBtn").on("click", function () { - clearCanvasMarkers(true); - }); - - $("#undoMarkerBtn").on("click", undoLastMarker); - - // =================== - // SAVE PHOTO - // =================== - $("#savePhotoBtn").on("click", function () { - console.log("savePhotoBtn clicked"); - - if (!$("#samplePhoto").attr("src")) { - console.log("No image source found"); - const errorMsg = $( - '', - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - return; - } - - if (!fabricCanvas) { - console.log("fabricCanvas is undefined"); - const errorMsg = $( - '', - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - return; - } - - const canvas = document.getElementById("photoCanvas"); - const ctx = canvas.getContext("2d"); - const img = $("#samplePhoto")[0]; - - console.log( - "Image loaded:", - img.complete, - "Natural width:", - img.naturalWidth, - ); - - if (!img.complete || img.naturalWidth === 0) { - console.log("Image not loaded correctly"); - const errorMsg = $( - '', - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - return; - } - - console.log( - "Setting canvas dimensions:", - photoData.naturalWidth, - photoData.naturalHeight, - ); - canvas.width = photoData.naturalWidth; - canvas.height = photoData.naturalHeight; - ctx.drawImage(img, 0, 0, canvas.width, canvas.height); - - console.log("Rendering Fabric canvas"); - try { - const fabricDataURL = fabricCanvas.toDataURL({ - format: "png", - multiplier: 1 / photoData.scale, - }); - console.log( - "Fabric DataURL generated, length:", - fabricDataURL.length, - ); - - const tempImg = new Image(); - tempImg.src = fabricDataURL; - tempImg.onload = function () { - console.log("Drawing Fabric overlay on canvas"); - ctx.drawImage(tempImg, 0, 0, canvas.width, canvas.height); - - fetch(fabricDataURL) - .then((res) => res.blob()) - .then((blob) => { - console.log("Fabric blob generated, size:", blob.size); - finalizeSave(blob); - }) - .catch((err) => { - console.log("Error converting DataURL to Blob:", err); - const errorMsg = $( - '', - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }); - }; - tempImg.onerror = function () { - console.log("Error loading Fabric overlay image"); - const errorMsg = $( - '', - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }; - } catch (e) { - console.log("Error generating Fabric DataURL:", e); - const errorMsg = $( - '', - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - return; - } - - function finalizeSave(fabricBlob) { - console.log("Finalizing save"); - canvas.toBlob( - function (blob) { - if (!blob) { - console.log("Failed to generate final blob"); - const errorMsg = $( - '', - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - return; - } - - console.log("Final blob generated, size:", blob.size); - const timestamp = new Date() - .toISOString() - .replace(/[:.]/g, "-"); - const iddatadb = $("#partsModal").data("iddatadb"); - const idquotations = $("#partsModal").data("idquotations"); - const id = iddatadb || idquotations; - const endpoint = idquotations - ? "save_annotated_photo_quotation.php" - : "save_annotated_photo.php"; - const finalName = `photo_${id}_${timestamp}.png`; - - console.log( - "Sending AJAX request to:", - endpoint, - "with filename:", - finalName, - "and ID:", - id, - ); - - const formData = new FormData(); - formData.append("file", blob, finalName); - formData.append("filename", finalName); - formData.append( - idquotations ? "idquotations" : "iddatadb", - id, - ); - - $.ajax({ - url: endpoint, - method: "POST", - data: formData, - processData: false, - contentType: false, - success: function (response) { - console.log("AJAX success:", response); - if (response.success) { - const successMsg = $( - '", - ); - $("#partsModal .modal-body").prepend( - successMsg, - ); - setTimeout(function () { - successMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - - const photoSelector = $("#photoSelector"); - if (photoSelector.length > 0) { - const newPhotoPath = response.file_path; - const newPhotoName = newPhotoPath - .split("/") - .pop(); - const optionCount = - photoSelector.find("option").length; - - const newOption = $("") - .val(newPhotoPath) - .text( - `Photo ${optionCount + 1} - ${newPhotoName}`, - ); - photoSelector.append(newOption); - - const firstPhotoPath = photoSelector - .find("option:first") - .val(); - photoSelector.val(firstPhotoPath); - - console.log( - "Loading first photo:", - firstPhotoPath, - ); - loadSinglePhoto(firstPhotoPath); - } else { - const currentPhoto = - $("#samplePhoto").attr("src"); - if (currentPhoto) { - console.log( - "Reloading current photo:", - currentPhoto, - ); - loadSinglePhoto(currentPhoto); - } - } - - const currentPhoto = - $("#samplePhoto").attr("src"); - - const newPhoto = response.file_path; - photoAnnotations[newPhoto] = { - markers: [], - hasDescriptions: false, - descriptionPosition: { x: 10, y: 10 }, - descriptionSize: { - width: photoData.displayWidth * 0.3, - height: photoData.displayHeight * 0.3, - }, - }; - - photoAnnotations[currentPhoto] = { - markers: [], - hasDescriptions: false, - descriptionPosition: { x: 10, y: 10 }, - descriptionSize: { - width: photoData.displayWidth * 0.3, - height: photoData.displayHeight * 0.3, - }, - }; - - console.log("Clearing canvas and annotations"); - clearCanvasMarkers(true); - clearUnsaved(); - } else { - console.log( - "AJAX response error:", - response.message, - ); - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - }, - error: function (xhr, status, error) { - console.log( - "AJAX error:", - status, - error, - xhr.status, - ); - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }, - }); - }, - "image/png", - 0.9, - ); - } - }); - - // =================== - // HELPER FUNCTIONS - // =================== - function markUnsaved() { - if (!unsavedChanges) { - unsavedChanges = true; - $("#savePhotoBtn").addClass("unsaved").text("⚠️ Salva Modifiche"); - } - } - - function clearUnsaved() { - unsavedChanges = false; - $("#savePhotoBtn").removeClass("unsaved").text("Salva Foto"); - } - - $(document).on("input change", "#partsTableBody input", markUnsaved); - $(document).on("click", ".add-row, .add-mix-row, .remove-row", markUnsaved); -}); diff --git a/public/userarea/partsTable.js b/public/userarea/partsTable.js deleted file mode 100644 index a4bba99d..00000000 --- a/public/userarea/partsTable.js +++ /dev/null @@ -1,2942 +0,0 @@ -$(document).ready(function () { - // =================== - // GLOBAL STATE - // =================== - let partMatrice = {}; - let unsavedChanges = false; - let matrici = []; - let macroMatrici = []; - let quotations = []; - let partsExtraField = null; // {field_id, field_label} oppure null - let extraFieldOptions = []; // [{id,label}] - let isLoadingPartsRecord = false; - - // --- ROW ID helpers: niente più cache impazzita di jQuery .data() --- - function getPartId($row) { - // Legge in ordine: cache jQuery, nostra cache, attributo - const d = $row.data("part-id"); - const ours = $row.data("__pid"); - const attr = $row.attr("data-part-id"); - - // Scegli il primo definito - const id = - d !== undefined - ? d - : ours !== undefined - ? ours - : attr !== undefined - ? attr - : null; - - // Normalizza: "new" o "" NON sono ID validi - return id === "new" || id === "" || id === null ? null : id; - } - - function loadPartsExtraField(iddatadb, done) { - partsExtraField = null; - - if (!iddatadb) return done(); - - $.ajax({ - url: "get_parts_extra_field.php", - method: "GET", - dataType: "json", - data: { iddatadb }, - success: function (res) { - partsExtraField = - res && res.success && res.field ? res.field : null; - - if ( - partsExtraField && - (partsExtraField.data_type || "").toLowerCase() === - "sceltamultipla" - ) { - loadExtraFieldOptions( - String(partsExtraField.field_id), - function () { - applyExtraFieldColumn(); - done(); - }, - ); - } else { - applyExtraFieldColumn(); - done(); - } - }, - error: function () { - partsExtraField = null; - applyExtraFieldColumn(); - done(); - }, - }); - } - - function loadExtraFieldOptions(fieldId, done) { - extraFieldOptions = []; - if (!fieldId) return done(); - - $.ajax({ - url: "get_customfield_values.php", - method: "GET", - dataType: "json", - data: { field_ids: fieldId }, - success: function (res) { - const arr = res && res[fieldId] ? res[fieldId] : []; - - extraFieldOptions = (arr || []) - .map((x) => ({ - id: x.IdCustomFieldsValue, - label: x.Valore || "", - })) - .sort((a, b) => - a.label.localeCompare(b.label, "it", { - sensitivity: "base", - numeric: true, - }), - ); - - done(); - }, - error: function () { - extraFieldOptions = []; - done(); - }, - }); - } - - function buildExtraFieldCellHtml($row = null) { - if (!partsExtraField) return ""; - - const selectedValueId = $row ? $row.data("extra-value-id") || "" : ""; - const selectedValueText = $row - ? $row.data("extra-value-text") || "" - : ""; - - // SceltaMultipla -> select + hidden value id - if ( - (partsExtraField.data_type || "").toLowerCase() === "sceltamultipla" - ) { - const opts = [``] - .concat( - extraFieldOptions.map( - (o) => - ``, - ), - ) - .join(""); - - return ` - - - - - `; - } - - // Testo -> input + hidden field_id - return ` - - - - `; - } - - function buildExtraFieldHeaderHtml() { - if (!partsExtraField) return ""; - - const label = partsExtraField.field_label || "Extra"; - - // SceltaMultipla: titolo sopra, select + bottone sotto - if ( - (partsExtraField.data_type || "").toLowerCase() === "sceltamultipla" - ) { - const opts = [``] - .concat( - extraFieldOptions.map( - (o) => ``, - ), - ) - .join(""); - - return ` - -
              -
              - ${label} -
              -
              - - -
              -
              - `; - } - - // Campo testo: titolo sopra, input + bottone sotto - return ` - -
              -
              - ${label} -
              -
              - - -
              -
              - `; - } - - function initializeExtraFieldSelect2($context) { - if (typeof $.fn.select2 === "undefined") return; - - $context.find(".part-extra-select").each(function () { - const $select = $(this); - - if ($select.hasClass("select2-hidden-accessible")) { - $select.select2("destroy"); - } - - $select.select2({ - placeholder: "Seleziona...", - allowClear: true, - width: "100%", - dropdownParent: $("#partsModal"), - minimumResultsForSearch: 0, - sorter: function (data) { - return data.sort(function (a, b) { - const textA = (a.text || "").toLowerCase(); - const textB = (b.text || "").toLowerCase(); - return textA.localeCompare(textB, "it", { - sensitivity: "base", - numeric: true, - }); - }); - }, - matcher: function (params, data) { - if ($.trim(params.term) === "") return data; - if (typeof data.text === "undefined") return null; - - const term = params.term.toLowerCase(); - const text = data.text.toLowerCase(); - - return text.indexOf(term) > -1 ? data : null; - }, - }); - - const selected = ($select.attr("data-selected") || "").toString(); - if (selected) { - $select.val(selected).trigger("change.select2"); - } - }); - } - - $(document).on("change", ".part-extra-select", function () { - const valId = $(this).val() || ""; - const $row = $(this).closest("tr"); - - // salva nello stato della riga (così sopravvive ai re-render) - $row.data("extra-value-id", valId); - - $(this).closest("td").find(".part-extra-value-id").val(valId); - saveRow($row); - }); - - $(document).on("click", ".extra-propagate-btn", function (e) { - e.preventDefault(); - - if (!partsExtraField) return; - - const isSelect = - (partsExtraField.data_type || "").toLowerCase() === - "sceltamultipla"; - - let propagateValueId = null; - let propagateValueText = null; - - if (isSelect) { - propagateValueId = - $("#partsTable thead .extra-propagate-select").val() || ""; - - if (!propagateValueId) { - const errorMsg = $( - '', - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(() => { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 3500); - return; - } - } else { - propagateValueText = ( - $("#partsTable thead .extra-propagate-input").val() || "" - ).trim(); - - if (!propagateValueText) { - const errorMsg = $( - '', - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(() => { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 3500); - return; - } - } - - $("#partsTableBody tr").each(function () { - const $row = $(this); - - if (isSelect) { - const $select = $row.find(".part-extra-select"); - - if ($select.length) { - $select.val(propagateValueId).trigger("change.select2"); - - $row.data("extra-value-id", propagateValueId); - $row.find(".part-extra-value-id").val(propagateValueId); - } - } else { - const $input = $row.find(".part-extra-field"); - - if ($input.length) { - $input.val(propagateValueText); - - $row.data("extra-value-text", propagateValueText); - } - } - - saveRow($row); - }); - }); - - function applyExtraFieldColumn() { - const $theadRow = $("#partsTable thead tr"); - - // 1) rimuovi header extra - $theadRow.find("th.extra-field-th").remove(); - - // 2) rimuovi celle extra esistenti - $("#partsTableBody tr").each(function () { - $(this).find("td.extra-field-td").remove(); - }); - - // 3) se non c'è campo extra -> fine - if (!partsExtraField) { - if (typeof window.applyPartsColumnWidths === "function") { - setTimeout(window.applyPartsColumnWidths, 100); - } - return; - } - - // 4) inserisci header propagabile prima di "Azioni" ultima colonna - $theadRow.find("th:last").before(buildExtraFieldHeaderHtml()); - - // 5) aggiungi cella a ogni riga già presente - $("#partsTableBody tr").each(function () { - const $row = $(this); - $row.find("td:last").before(buildExtraFieldCellHtml($row)); - - const selected = ($row.data("extra-value-id") || "").toString(); - if (selected) { - $row.find(".part-extra-value-id").val(selected); - $row.find(".part-extra-select").attr("data-selected", selected); - } - }); - - initializeExtraFieldSelect2($("#partsTableBody")); - - // Select2 anche sul campo di propagazione in testata - if ( - (partsExtraField.data_type || "").toLowerCase() === "sceltamultipla" - ) { - const $headerSelect = $( - "#partsTable thead .extra-propagate-select", - ); - - if ($headerSelect.length && typeof $.fn.select2 !== "undefined") { - if ($headerSelect.hasClass("select2-hidden-accessible")) { - $headerSelect.select2("destroy"); - } - - $headerSelect.select2({ - placeholder: "Select…", - allowClear: true, - width: "100%", - dropdownParent: $("#partsModal"), - minimumResultsForSearch: 0, - }); - } - } - - if (typeof window.applyPartsColumnWidths === "function") { - setTimeout(window.applyPartsColumnWidths, 100); - } - } - - function setPartId($row, id) { - if (!id) return; - // Sincronizza TUTTO: attributo + cache jQuery + nostra cache - $row.attr("data-part-id", id); - $row.data("part-id", id); // <<< fondamentale per invalidare la cache di jQuery - $row.data("__pid", id); - } - - function setRowMix($row, isMix) { - const mixValue = isMix === true || isMix === "Y" ? "Y" : "N"; - $row.attr("data-is-mix", mixValue); - $row.data("is-mix", mixValue); - } - - function getRowMix($row) { - const value = $row.attr("data-is-mix") || $row.data("is-mix"); - return value === "Y" ? "Y" : "N"; - } - - // =================== - // VOICE RECOGNITION SETUP - // =================== - const SpeechRecognition = - window.SpeechRecognition || window.webkitSpeechRecognition; - let recognition = null; - let isVoiceActive = false; - const magicWord = "salva"; - - if (SpeechRecognition) { - recognition = new SpeechRecognition(); - recognition.lang = "it-IT"; - recognition.continuous = true; - recognition.interimResults = false; - - recognition.onresult = function (event) { - const transcript = event.results[ - event.results.length - 1 - ][0].transcript - .trim() - .toLowerCase(); - const $currentRow = $("#partsTableBody tr:last"); - const $descriptionInput = $currentRow.find(".part-description"); - - if (transcript.includes(magicWord)) { - const cleanedTranscript = transcript - .replace(magicWord, "") - .trim(); - if (cleanedTranscript) { - $descriptionInput.val( - ( - $descriptionInput.val() + - " " + - cleanedTranscript - ).trim(), - ); - $descriptionInput.trigger("blur"); - } - const maxPartNumber = Math.max( - ...$("#partsTableBody tr") - .map(function () { - return ( - parseInt($(this).find(".part-number").val()) || - 0 - ); - }) - .get(), - ); - addNewRow(maxPartNumber + 1, false); // Aggiunge riga normale per riconoscimento vocale - const $newRow = $("#partsTableBody tr:last"); - $newRow.find(".part-description").focus(); - } else { - $descriptionInput.val( - ($descriptionInput.val() + " " + transcript).trim(), - ); - $descriptionInput.trigger("blur"); - } - }; - - recognition.onerror = function (event) { - if (event.error === "no-speech" || event.error === "aborted") { - if (isVoiceActive) recognition.start(); - } else { - alert("Errore nel riconoscimento vocale: " + event.error); - toggleVoiceRecognition(); - } - }; - - recognition.onend = function () { - if (isVoiceActive) recognition.start(); - }; - } else { - $("#toggleVoiceBtn").hide(); - } - - function toggleVoiceRecognition() { - if (!recognition) { - console.log("Voce non supportata dal browser"); - return; - } - isVoiceActive = !isVoiceActive; - const $btn = $("#toggleVoiceBtn"); - if (isVoiceActive) { - $btn.addClass("btn-danger").html( - ' Stop Voce', - ); - recognition.start(); - $("#partsTableBody tr:last").find(".part-description").focus(); - } else { - $btn.removeClass("btn-danger") - .addClass("btn-secondary") - .html(' Voce'); - recognition.stop(); - } - } - - $(document).on("click", "#toggleVoiceBtn", function (e) { - console.log("Clicked Voce - Evento triggerato"); - e.preventDefault(); - toggleVoiceRecognition(); - }); - - // =================== - // MODAL HANDLING - // =================== - function loadParts(iddatadb, idquotations, callback = null) { - isLoadingPartsRecord = true; - unsavedChanges = false; - - // Store current modal context - $("#partsModal").data("iddatadb", iddatadb || null); - $("#partsModal").data("idquotations", idquotations || null); - - // Store the visible record list from the main grid - if (Array.isArray(window.visibleIddatadbList)) { - $("#partsModal").data( - "visible-iddatadb-list", - window.visibleIddatadbList, - ); - } - - updatePartsRecordHeader(iddatadb); - - const finishLoading = function () { - unsavedChanges = false; - isLoadingPartsRecord = false; - - if (callback) callback(); - }; - - if (iddatadb) { - loadMacroMatrici(); - initializeGlobalSelect2(); - loadPartsExtraField(iddatadb, function () { - loadPhoto(iddatadb, idquotations); - loadExistingParts(iddatadb, idquotations, finishLoading); - }); - } else { - loadPartsExtraField(iddatadb, function () { - loadPhoto(iddatadb, idquotations); - loadExistingParts(iddatadb, idquotations, finishLoading); - }); - } - } - - // =================== - // PARTS MODAL RECORD NAVIGATION - // =================== - - function getVisiblePartsRecordList() { - const listFromModal = $("#partsModal").data("visible-iddatadb-list"); - - if (Array.isArray(listFromModal) && listFromModal.length > 0) { - return listFromModal.map((v) => parseInt(v, 10)).filter(Boolean); - } - - if ( - Array.isArray(window.visibleIddatadbList) && - window.visibleIddatadbList.length > 0 - ) { - return window.visibleIddatadbList - .map((v) => parseInt(v, 10)) - .filter(Boolean); - } - - if (Array.isArray(window.gridData) && window.gridData.length > 0) { - return window.gridData - .map((row) => parseInt(row.iddatadb, 10)) - .filter(Boolean); - } - - return []; - } - - function getGridRecordById(iddatadb) { - if (!Array.isArray(window.gridData)) return null; - - return ( - window.gridData.find((row) => { - return parseInt(row.iddatadb, 10) === parseInt(iddatadb, 10); - }) || null - ); - } - - function getRecordHeaderLabel(iddatadb) { - const record = getGridRecordById(iddatadb); - - if (!record) { - return iddatadb ? "#" + iddatadb : ""; - } - - // Prefer main field value if available - if (record.mainFieldValue) { - return record.mainFieldValue; - } - - // Fallbacks - if (record.importreferencecode) { - return record.importreferencecode; - } - - if (record.filename_import) { - return record.filename_import; - } - - return "#" + iddatadb; - } - - function updatePartsRecordHeader(iddatadb) { - const list = getVisiblePartsRecordList(); - const currentId = parseInt(iddatadb, 10); - const currentIndex = list.indexOf(currentId); - - $("#trfHeader").text(getRecordHeaderLabel(currentId)); - - if (list.length <= 1 || currentIndex === -1) { - $("#partsRecordCounter").text("-"); - $("#prevPartsRecordBtn").prop("disabled", true); - $("#nextPartsRecordBtn").prop("disabled", true); - return; - } - - $("#partsRecordCounter").text(currentIndex + 1 + " / " + list.length); - - $("#prevPartsRecordBtn").prop("disabled", currentIndex <= 0); - $("#nextPartsRecordBtn").prop( - "disabled", - currentIndex >= list.length - 1, - ); - } - - function goToAdjacentPartsRecord(direction) { - const list = getVisiblePartsRecordList(); - const currentId = parseInt($("#partsModal").data("iddatadb"), 10); - const currentIndex = list.indexOf(currentId); - - if (currentIndex === -1) return; - - const nextIndex = currentIndex + direction; - - if (nextIndex < 0 || nextIndex >= list.length) return; - - if ( - !isLoadingPartsRecord && - unsavedChanges && - !confirm( - "Hai modifiche non salvate. Vuoi cambiare record senza salvare?", - ) - ) { - return; - } - - const nextIddatadb = list[nextIndex]; - - // Reset local modal state before loading the next record - partMatrice = {}; - unsavedChanges = false; - $("#partsTableBody").empty(); - $("#photoSelectorContainer").empty().hide(); - $("#samplePhoto").attr("src", ""); - $(".temp-alert").remove(); - - loadParts(nextIddatadb, null); - } - - $(document).on("click", "#prevPartsRecordBtn", function (e) { - e.preventDefault(); - goToAdjacentPartsRecord(-1); - }); - - $(document).on("click", "#nextPartsRecordBtn", function (e) { - e.preventDefault(); - goToAdjacentPartsRecord(1); - }); - - // EVENTO PER APRIRE IL SECONDO MODALE - $(document).on("click", "#openAnnotationsBtn", function () { - console.log("Clic su Apri Annotazioni..."); - const iddatadb = $("#partsModal").data("iddatadb"); - const idquotations = $("#partsModal").data("idquotations"); - const trfHeader = $("#trfHeader").text(); - - console.log("Dati recuperati da partsModal:", { - iddatadb, - idquotations, - trfHeader, - }); - - const partsModal = bootstrap.Modal.getInstance( - document.getElementById("partsModal"), - ); - if (partsModal) { - partsModal.hide(); - } - - const annotationsModalElement = - document.getElementById("annotationsModal"); - if (annotationsModalElement) { - console.log("Elemento #annotationsModal trovato nel DOM."); - openAnnotationsModal(iddatadb, idquotations, trfHeader); - return; - } - - console.log("Caricamento dinamico di modal_annotations.php..."); - $.ajax({ - url: "modal_annotations.php", - method: "GET", - cache: false, - beforeSend: function () { - console.log("Inizio richiesta AJAX per modal_annotations.php"); - }, - success: function (response) { - console.log( - "modal_annotations.php caricato con successo:", - response.substring(0, 100) + "...", - ); - $("#annotationsModalContainer").html(response); - - const annotationsModalElementAfterLoad = - document.getElementById("annotationsModal"); - if (!annotationsModalElementAfterLoad) { - console.error( - "Errore: #annotationsModal non trovato nel DOM dopo il caricamento.", - ); - alert( - "Errore: Il modale delle annotazioni non è stato caricato correttamente. Controlla il contenuto di modal_annotations.php.", - ); - return; - } - - openAnnotationsModal(iddatadb, idquotations, trfHeader); - }, - error: function (xhr, status, error) { - console.error( - "Errore nel caricamento di modal_annotations.php:", - { - status: status, - statusCode: xhr.status, - error: error, - responseText: xhr.responseText, - }, - ); - alert( - "Errore nel caricamento del modale delle annotazioni: " + - error + - " (Codice: " + - xhr.status + - ")", - ); - }, - }); - }); - - function openAnnotationsModal(iddatadb, idquotations, trfHeader) { - console.log("Tentativo di aprire annotationsModal con:", { - iddatadb, - idquotations, - trfHeader, - }); - const annotationsModalElement = - document.getElementById("annotationsModal"); - if (!annotationsModalElement) { - console.error( - "Elemento #annotationsModal non trovato nel DOM durante openAnnotationsModal.", - ); - alert( - "Errore: Modale annotazioni non trovato dopo il caricamento.", - ); - return; - } - - if (typeof window.initAnnotationsModal === "function") { - console.log("Chiamata a window.initAnnotationsModal..."); - window.initAnnotationsModal(iddatadb, idquotations, trfHeader); - } else { - console.error( - "initAnnotationsModal non definito. Verifica che annotationsModal.js sia caricato correttamente.", - ); - alert( - "Errore: Funzione initAnnotationsModal non trovata. Controlla che annotationsModal.js sia incluso correttamente.", - ); - } - } - - $("#partsModal").on("hide.bs.modal", function (e) { - if ( - unsavedChanges && - !confirm("Hai modifiche non salvate. Vuoi davvero uscire?") - ) { - e.preventDefault(); - } - }); - - $("#partsModal").on("hidden.bs.modal", function () { - partMatrice = {}; - unsavedChanges = false; - matrici = []; - macroMatrici = []; - $("#photoSelectorContainer").empty().hide(); - $("#samplePhoto").attr("src", ""); - $("#partsTableBody").empty(); - $("#global-matrice").empty(); - $("#macro-matrice-filter").empty(); - $(".temp-alert").remove(); - $(".modal-backdrop").remove(); - $("body").removeClass("modal-open").css("padding-right", ""); - $(":focus").blur(); - }); - - // =================== - // PHOTO LOADERS - // =================== - function loadPhoto(iddatadb, idquotations) { - const currentPhoto = $("#samplePhoto").attr("src"); - const endpoint = idquotations - ? "load_photo_quotation.php" - : "load_photo.php"; - const data = idquotations - ? { idquotations: idquotations } - : { iddatadb: iddatadb }; - $.ajax({ - url: endpoint, - method: "GET", - data: data, - success: function (response) { - if (response.success) { - if (response.photos && response.photos.length > 1) { - showPhotoSelector(response.photos, currentPhoto); - } else if ( - response.photos && - response.photos.length === 1 - ) { - loadSinglePhoto(response.photos[0]); - } else { - $("#samplePhoto").attr("src", ""); - const errorMsg = $( - '', - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - } else { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - }, - error: function (xhr, status, error) { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }, - }); - } - - function showPhotoSelector(photos, selected = null) { - const selectorContainer = $("#photoSelectorContainer"); - selectorContainer.empty().show(); - const selector = $( - '', - ); - photos.forEach((photo, index) => { - const photoName = photo.split("/").pop(); - const option = $("") - .val(photo) - .text(`Photo ${index + 1} - ${photoName}`); - selector.append(option); - }); - selector.on("change", function () { - loadSinglePhoto($(this).val()); - }); - selectorContainer.append(selector); - const photoToSelect = - selected && photos.includes(selected) ? selected : photos[0]; - if (photoToSelect) { - selector.val(photoToSelect); - loadSinglePhoto(photoToSelect); - } - } - - function loadSinglePhoto(photoPath) { - const img = $("#samplePhoto"); - img.off("load").attr("src", photoPath); - } - - // =================== - // DOWNLOAD PHOTO - // =================== - $(document).on("click", "#downloadPhotoBtn", function (e) { - console.log("Clicked Download Photo - Evento triggerato"); - e.preventDefault(); - const photoSrc = $("#samplePhoto").attr("src"); - if (!photoSrc) { - console.log("Nessuna foto caricata"); - const errorMsg = $( - '', - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - return; - } - const photoName = photoSrc.split("/").pop(); - const link = document.createElement("a"); - link.href = photoSrc; - link.download = photoName; - document.body.appendChild(link); - link.click(); - document.body.removeChild(link); - console.log("Download avviato per:", photoSrc); - }); - - // =================== - // PARTS TABLE - // =================== - $(document).on("click", ".add-row-global", function (e) { - e.preventDefault(); - const maxPartNumber = Math.max( - ...$("#partsTableBody tr") - .map(function () { - return parseInt($(this).find(".part-number").val()) || 0; - }) - .get(), - ); - addNewRow(maxPartNumber + 1, false); // Riga normale - }); - - $(document).on("click", ".add-mix-global", function (e) { - e.preventDefault(); - - const maxPartNumber = Math.max( - ...$("#partsTableBody tr") - .map(function () { - return parseInt($(this).find(".part-number").val()) || 0; - }) - .get(), - ); - - // Crea la riga Mix - addNewRow(maxPartNumber + 1, true); - const $mixRow = $("#partsTableBody tr:last"); - - // Consenti SOLO ora la creazione (INSERT) della riga Mix - $mixRow.data("allowCreateMix", true); - - // esegue SUBITO l'INSERT così ottieni part-id - saveRow($mixRow); - }); - - function extractPartId(response) { - // prova i campi più comuni - if (response == null) return null; - - if (response.part_id) return response.part_id; - if (response.id) return response.id; - if (response.insert_id) return response.insert_id; - if (response.lastId) return response.lastId; - - // array di id - if (Array.isArray(response.part_ids) && response.part_ids[0]) { - return response.part_ids[0]; - } - - // oggetti annidati - if (response.parts && response.parts[0]) { - if (response.parts[0].id) return response.parts[0].id; - if (response.parts[0].part_id) return response.parts[0].part_id; - if (response.parts[0].insert_id) return response.parts[0].insert_id; - } - - // altri possibili nomi dal backend - if (response.new_id) return response.new_id; - if (response.partId) return response.partId; - - // ✅ RISPOSTA DI save_parts.php: { success:true, results:[{part_id:...}] } - if (Array.isArray(response.results) && response.results[0]) { - if (response.results[0].part_id) return response.results[0].part_id; - if (response.results[0].id) return response.results[0].id; - } - return null; - } - - function saveRow($row) { - const partNumber = $row.find(".part-number").val(); - const partDescription = $row.find(".part-description").val().trim(); - const dateexpiry = $row.find(".part-dateexpiry").val(); - const note = $row.data("note") || null; - const $saveStatus = $row.find(".save-status"); - const $saveLoading = $row.find(".save-loading"); - const iddatadb = $("#partsModal").data("iddatadb"); - const idquotations = $("#partsModal").data("idquotations"); - const isMix = getRowMix($row); - - // EXTRA FIELD (0/1) - const extra_field_id = $row.find(".part-extra-field-id").val() || null; - const extra_value_id = $row.find(".part-extra-value-id").val() || null; - const extra_value_text = $row.find(".part-extra-field").length - ? ($row.find(".part-extra-field").val() || "").trim() - : null; - let partId = getPartId($row); - if (partId === "new") partId = null; // difesa extra (non dovrebbe più servire, ma sicura) - const endpoint = idquotations - ? "save_parts_quotation.php" - : "save_parts.php"; - const data = idquotations ? { idquotations } : { iddatadb }; - - // Evita salvataggi concorrenti - if ($row.data("saving") === true) return; - - // Blocca INSERT del Mix se non esplicitamente richiesta - if (isMix === "Y" && !partId && $row.data("allowCreateMix") !== true) { - return; - } - - $row.data("saving", true); - - if (partDescription && (iddatadb || idquotations)) { - $saveLoading.show(); - $saveStatus.hide(); - - $.ajax({ - url: endpoint, - method: "POST", - data: JSON.stringify({ - ...data, - parts: [ - { - id: partId, - part_number: partNumber, - part_description: partDescription, - mix: isMix, - idmatrice: $row.find(".part-matrice").val() || null, - dateexpiry: dateexpiry || null, - note: note, - - // extra custom field - extra_field_id: extra_field_id, - extra_value_id: extra_value_id, - extra_value_text: extra_value_text, - }, - ], - }), - contentType: "application/json", - - success: function (response) { - // assegna ID appena arriva (robusto) - if (response.success) { - const newId = extractPartId(response); - if (newId) { - setPartId($row, newId); - } else { - console.warn( - "Parte salvata ma ID non presente nella risposta. Ricarico parti per sincronizzare gli ID.", - ); - loadExistingParts(iddatadb, idquotations); // <<< ORA ANCHE PER RIGHE NORMALI - } - } - - $row.data("saving", false); - $row.removeData("allowCreateMix"); - - // ora che l'ID c'è di sicuro, sblocco gli update pendenti (es. M+) - $row.trigger("row:saved"); - - $saveLoading.hide(); - if (response.success) { - $saveStatus.show(); - setTimeout(() => $saveStatus.hide(), 2000); - - if (!$("#quotationeBtn").hasClass("d-none")) - $("#quotationeBtn").addClass("d-none"); - } else { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(() => { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - }, - - error: function (xhr, status, error) { - $row.data("saving", false); - $row.removeData("allowCreateMix"); - $saveLoading.hide(); - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(() => { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }, - }); - } - } - - $(document).on("click", ".add-mix-row", function (e) { - e.preventDefault(); - - const $srcRow = $(this).closest("tr"); - const partDescription = $srcRow.find(".part-description").val().trim(); - if (!partDescription) { - const errorMsg = $( - '', - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout( - () => - errorMsg.fadeOut(500, function () { - $(this).remove(); - }), - 5000, - ); - return; - } - - let $mixRow = $("#partsTableBody tr") - .filter(function () { - return getRowMix($(this)) === "Y"; - }) - .last(); - - // Se non esiste una riga Mix, ne creo una e la INSERISCO SUBITO (come fa il bottone in header) - if ($mixRow.length === 0) { - const maxPartNumber = Math.max( - ...$("#partsTableBody tr") - .map(function () { - return ( - parseInt($(this).find(".part-number").val()) || 0 - ); - }) - .get(), - ); - - addNewRow(maxPartNumber + 1, true); - $mixRow = $("#partsTableBody tr:last"); - $mixRow.find(".part-description").val(`Mix ${partDescription}`); - - // Consenti la creazione (INSERT) della riga Mix e salvala subito - $mixRow.data("allowCreateMix", true); - - saveRow($mixRow); // -> INSERT - return; // la descrizione include già l'elemento appena aggiunto - } - - // Aggiorna la descrizione del Mix esistente - const currentMix = $mixRow.find(".part-description").val().trim(); - let newDesc = currentMix; - if (currentMix === "Mix") newDesc = currentMix + " " + partDescription; - else if (!currentMix.includes(partDescription)) - newDesc = currentMix + " + " + partDescription; - - $mixRow.find(".part-description").val(newDesc); - - // Se il Mix è già in salvataggio (INSERT o UPDATE in corso), accodiamo un solo UPDATE - if ($mixRow.data("saving") === true) { - // evita più code accumulate - if (!$mixRow.data("pendingUpdate")) { - $mixRow.data("pendingUpdate", true); - $mixRow.one("row:saved", function () { - $mixRow.removeData("pendingUpdate"); - // ora che saving è false, salviamo l'ultima descrizione impostata - saveRow($mixRow); - }); - } - } else { - // libero: salva subito - saveRow($mixRow); - } - }); - - function addNewRow(nextPartNumber, isMix = false) { - const description = isMix ? "Mix" : ""; - const newRow = ` - - - - -
              - - -
              - - - ${partsExtraField ? buildExtraFieldCellHtml(null) : ``} - - - - - - - - `; - $("#partsTableBody").append(newRow); - const $newRow = $("#partsTableBody tr:last"); - setRowMix($newRow, isMix ? "Y" : "N"); - const $select = $newRow.find(".part-matrice"); - const selectedMacro = $("#macro-matrice-filter").val() || ""; - - initializeSelect2($select, nextPartNumber, "", null, selectedMacro); - initializeExtraFieldSelect2($newRow); - - updateRowButtons(); - - if (!isLoadingPartsRecord) { - markUnsaved(); - } - } - - // =================== - // NOTE HANDLING - // =================== - $(document).on("click", ".note-btn", function () { - const $row = $(this).closest("tr"); - const partId = getPartId($row); - const note = $row.data("note") || ""; - const $noteModal = $("#noteModal"); - $noteModal.find(".part-note").val(note); - $noteModal.data("part-id", partId); - $noteModal.data("row", $row); - const modalInstance = new bootstrap.Modal($noteModal[0], { - backdrop: "static", - keyboard: false, - }); - modalInstance.show(); - }); - - $(document).on("click", ".save-note-btn", function () { - const $noteModal = $("#noteModal"); - const $row = $noteModal.data("row"); - const partId = $noteModal.data("part-id"); - const note = $noteModal.find(".part-note").val().trim(); - const iddatadb = $("#partsModal").data("iddatadb"); - const idquotations = $("#partsModal").data("idquotations"); - const endpoint = idquotations - ? "save_parts_quotation.php" - : "save_parts.php"; - const data = idquotations - ? { idquotations: idquotations } - : { iddatadb: iddatadb }; - - // Raccogli tutti i dati della riga per evitare sovrascritture - const partNumber = $row.find(".part-number").val(); - const partDescription = $row.find(".part-description").val().trim(); - const mix = getRowMix($row); - const idmatrice = $row.find(".part-matrice").val() || null; - const dateexpiry = $row.find(".part-dateexpiry").val() || null; - - if (partId && partId !== "new") { - const $saveStatus = $row.find(".save-status"); - const $saveLoading = $row.find(".save-loading"); - $saveLoading.show(); - $saveStatus.hide(); - - $.ajax({ - url: endpoint, - method: "POST", - data: JSON.stringify({ - ...data, - parts: [ - { - id: partId, - part_number: partNumber, - part_description: partDescription, - mix: mix, - idmatrice: idmatrice, - note: note || null, - dateexpiry: dateexpiry, - }, - ], - }), - contentType: "application/json", - success: function (response) { - $saveLoading.hide(); - if (response.success) { - $row.data("note", note); - $row.find(".note-btn").toggleClass("has-note", !!note); - $saveStatus.show(); - setTimeout(() => $saveStatus.hide(), 2000); - bootstrap.Modal.getInstance( - document.getElementById("noteModal"), - ).hide(); - } else { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - }, - error: function (xhr, status, error) { - $saveLoading.hide(); - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }, - }); - } else { - $row.data("note", note); - $row.find(".note-btn").toggleClass("has-note", !!note); - bootstrap.Modal.getInstance( - document.getElementById("noteModal"), - ).hide(); - markUnsaved(); - } - }); - - // =================== - // DATEEXPIRY HANDLING - // =================== - $(document).on("change", ".part-dateexpiry", function () { - const $input = $(this); - const $row = $input.closest("tr"); - const partId = getPartId($row); - const dateexpiry = $input.val(); - const iddatadb = $("#partsModal").data("iddatadb"); - const idquotations = $("#partsModal").data("idquotations"); - const endpoint = idquotations - ? "save_parts_quotation.php" - : "save_parts.php"; - const data = idquotations - ? { idquotations: idquotations } - : { iddatadb: iddatadb }; - - // Raccogli tutti i dati della riga per evitare sovrascritture - const partNumber = $row.find(".part-number").val(); - const partDescription = $row.find(".part-description").val().trim(); - const mix = getRowMix($row); - const idmatrice = $row.find(".part-matrice").val() || null; - const note = $row.data("note") || null; - - if (partId && partId !== "new") { - const $saveStatus = $row.find(".save-status"); - const $saveLoading = $row.find(".save-loading"); - $saveLoading.show(); - $saveStatus.hide(); - - $.ajax({ - url: endpoint, - method: "POST", - data: JSON.stringify({ - ...data, - parts: [ - { - id: partId, - part_number: partNumber, - part_description: partDescription, - mix: mix, - idmatrice: idmatrice, - note: note, - dateexpiry: dateexpiry || null, - }, - ], - }), - contentType: "application/json", - success: function (response) { - $saveLoading.hide(); - if (response.success) { - $saveStatus.show(); - setTimeout(() => $saveStatus.hide(), 2000); - } else { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - }, - error: function (xhr, status, error) { - $saveLoading.hide(); - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }, - }); - } else { - markUnsaved(); - } - }); - - // =================== - // OTHER TABLE HANDLERS - // =================== - function updateRowButtons() { - const rowCount = $("#partsTableBody tr").length; - $("#partsTableBody tr").each(function () { - const $row = $(this); - $row.find(".remove-row").css( - "display", - rowCount > 1 ? "inline-block" : "none", - ); - }); - } - - $(document).on("click", ".remove-row", function (e) { - e.preventDefault(); - console.log("Clic su .remove-row rilevato"); // Debug: verifica clic - const $row = $(this).closest("tr"); - const partId = $row.data("part-id"); - const partNumber = $row.find(".part-number").val(); - const iddatadb = $("#partsModal").data("iddatadb"); - const idquotations = $("#partsModal").data("idquotations"); - const endpoint = idquotations - ? "delete_part_quotation.php" - : "delete_part.php"; - - // Verifica se il modale esiste - const $modal = $("#confirmDeleteModal"); - if ($modal.length) { - try { - // Inizializza il modale Bootstrap in modo esplicito - const modalInstance = new bootstrap.Modal($modal[0], { - backdrop: "static", - keyboard: false, - }); - // Associa l'handler al pulsante Elimina - $("#confirmDeleteBtn") - .off("click") - .on("click", function () { - if (partId && partId !== "new") { - $.ajax({ - url: endpoint, - method: "POST", - data: JSON.stringify({ part_id: partId }), - contentType: "application/json", - success: function (response) { - if (response.success) { - $row.remove(); - delete partMatrice[partNumber]; - updateRowButtons(); - markUnsaved(); - } else { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend( - errorMsg, - ); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - modalInstance.hide(); - }, - error: function (xhr, status, error) { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend( - errorMsg, - ); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - modalInstance.hide(); - }, - }); - } else { - $row.remove(); - delete partMatrice[partNumber]; - updateRowButtons(); - markUnsaved(); - modalInstance.hide(); - } - }); - // Mostra il modale - modalInstance.show(); - } catch (error) { - console.error("Errore nell'apertura del modale:", error); - alert( - "Errore: Impossibile aprire il modale di conferma. Dettagli: " + - error.message, - ); - // Fallback con confirm nativo - if (confirm("Sei sicuro di voler eliminare questa parte?")) { - if (partId && partId !== "new") { - $.ajax({ - url: endpoint, - method: "POST", - data: JSON.stringify({ part_id: partId }), - contentType: "application/json", - success: function (response) { - if (response.success) { - $row.remove(); - delete partMatrice[partNumber]; - updateRowButtons(); - markUnsaved(); - } else { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend( - errorMsg, - ); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - }, - error: function (xhr, status, error) { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }, - }); - } else { - $row.remove(); - delete partMatrice[partNumber]; - updateRowButtons(); - markUnsaved(); - } - } - } - } else { - console.error("Modale #confirmDeleteModal non trovato nel DOM"); - alert("Errore: Modale di conferma non trovato. Verifica l'HTML."); - // Fallback con confirm nativo - if (confirm("Sei sicuro di voler eliminare questa parte?")) { - if (partId && partId !== "new") { - $.ajax({ - url: endpoint, - method: "POST", - data: JSON.stringify({ part_id: partId }), - contentType: "application/json", - success: function (response) { - if (response.success) { - $row.remove(); - delete partMatrice[partNumber]; - updateRowButtons(); - markUnsaved(); - } else { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - }, - error: function (xhr, status, error) { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }, - }); - } else { - $row.remove(); - delete partMatrice[partNumber]; - updateRowButtons(); - markUnsaved(); - } - } - } - }); - - $(document).on( - "blur", - ".part-description, .part-number, .part-extra-field", - function () { - saveRow($(this).closest("tr")); - }, - ); - - function loadExistingParts(iddatadb, idquotations, callback = null) { - const endpoint = idquotations - ? "load_parts_quotation.php" - : "load_parts.php"; - const data = idquotations - ? { idquotations: idquotations } - : { iddatadb: iddatadb }; - $.ajax({ - url: endpoint, - method: "GET", - data: data, - success: function (response) { - $("#partsTableBody").empty(); - if ( - response.success && - response.parts && - response.parts.length > 0 - ) { - response.parts.forEach((part) => { - console.log( - "Caricamento parte:", - part.id, - "Numero:", - part.part_number, - "Descrizione:", - part.part_description, - "idmatrice:", - part.idmatrice || "non definito", - "note:", - part.note || "non definito", - "dateexpiry:", - part.dateexpiry || "non definito", - ); - // Escape HTML per evitare problemi con caratteri speciali - const escapedDescription = $("
              ") - .text(part.part_description || "") - .html(); - const escapedNote = part.note - ? $("
              ").text(part.note).html() - : ""; - const newRow = ` - - - - -
              - - -
              - - - ${partsExtraField ? buildExtraFieldCellHtml() : ``} - - - - - - - - `; - $("#partsTableBody").append(newRow); - - const $row = $( - `#partsTableBody tr[data-part-id="${part.id}"]`, - ); - setRowMix($row, part.mix === "Y" ? "Y" : "N"); - if ( - part.extra_value_id !== undefined && - part.extra_value_id !== null - ) { - const vid = String(part.extra_value_id); - $row.data("extra-value-id", vid); - $row.find(".part-extra-value-id").val(vid); - $row.find(".part-extra-select").attr( - "data-selected", - vid, - ); - } - - if ( - part.extra_value_text !== undefined && - part.extra_value_text !== null - ) { - $row.data( - "extra-value-text", - part.extra_value_text, - ); - $row.find(".part-extra-field").val( - part.extra_value_text, - ); - } - - initializeExtraFieldSelect2($row); - - const $select = $("#partsTableBody").find( - `tr[data-part-id="${part.id}"] .part-matrice`, - ); - const selectedMacro = - $("#macro-matrice-filter").val() || ""; - initializeSelect2( - $select, - part.part_number, - part.id, - part.idmatrice || null, - selectedMacro, - ); - if (part.idmatrice) { - partMatrice[part.part_number] = part.idmatrice; - } - }); - } else { - addNewRow(1, false); // Riga iniziale normale - $("#quotationeBtn").removeClass("d-none"); - } - updateRowButtons(); - - if (callback) callback(); - }, - error: function (xhr, status, error) { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - addNewRow(1, false); // Riga iniziale normale - }, - }); - } - - function loadMacroMatrici() { - $.ajax({ - url: "search_matrici.php?macro_list=1", - method: "GET", - dataType: "json", - success: function (data) { - macroMatrici = data.value || []; - initializeMacroMatriceFilter(); - }, - error: function (xhr, status, error) { - console.error( - "Errore nel caricamento delle MacroMatrici:", - error, - ); - macroMatrici = []; - initializeMacroMatriceFilter(); - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }, - }); - } - - function initializeMacroMatriceFilter() { - const $select = $("#macro-matrice-filter"); - if ($select.length === 0) return; // Ignora se il filtro non è presente nell'HTML - if (typeof $.fn.select2 === "undefined") { - $select.replaceWith( - '', - ); - return; - } - - // Popola il dropdown MacroMatrice - const options = [ - { id: "", text: "Tutte le MacroMatrici" }, - ...macroMatrici.map(function (macro) { - return { id: macro, text: macro }; - }), - ]; - - // Distrugge Select2 esistente, se presente - if ($select.hasClass("select2-hidden-accessible")) { - $select.select2("destroy"); - } - - $select.empty().select2({ - placeholder: "Seleziona MacroMatrice", - allowClear: true, - data: options, - dropdownParent: $("#partsModal"), - }); - - $select.on("change", function () { - const selectedMacro = $(this).val() || ""; - console.log("Filtro MacroMatrice cambiato:", selectedMacro); - // Aggiorna global-matrice - initializeGlobalSelect2(selectedMacro); - // Aggiorna tutti i part-matrice - $("#partsTableBody .part-matrice").each(function () { - const $partSelect = $(this); - const partNumber = $partSelect - .closest("tr") - .find(".part-number") - .val(); - const partId = $partSelect.closest("tr").data("part-id"); - const currentValue = - $partSelect.val() || partMatrice[partNumber] || null; - initializeSelect2( - $partSelect, - partNumber, - partId, - currentValue, - selectedMacro, - true, - ); - }); - }); - } - - function initializeGlobalSelect2(selectedMacro = null) { - const $select = $("#global-matrice"); - if (typeof $.fn.select2 === "undefined") { - $select.replaceWith( - '', - ); - return; - } - - // Memorizza il valore corrente - const currentValue = $select.val(); - - // Distrugge Select2 esistente, se presente - if ($select.hasClass("select2-hidden-accessible")) { - $select.select2("destroy"); - } - - // Inizializza Select2 con AJAX - $select.empty().select2({ - placeholder: "Seleziona matrice globale", - allowClear: true, - dropdownParent: $("#partsModal"), - minimumInputLength: 0, - ajax: { - url: "search_matrici.php", - dataType: "json", - delay: 150, - data: function (params) { - return { - q: params.term || "", - limit: 20, - macro: selectedMacro || "", - }; - }, - processResults: function (data) { - return { results: data.results || [] }; - }, - cache: true, - }, - }); - - // Ripristina il valore corrente - if (currentValue) { - $.ajax({ - url: "search_matrici.php", - data: { id: currentValue }, - dataType: "json", - }).then(function (data) { - const item = (data.results || [])[0]; - if (item) { - const option = new Option(item.text, item.id, true, true); - $select.append(option).trigger("change"); - } - }); - } - } - - function initializeSelect2( - $select, - partNumber, - partId, - idmatrice, - selectedMacro = null, - fromFilter = false, - ) { - if (typeof $.fn.select2 === "undefined") { - $select.replaceWith( - '', - ); - return; - } - - // Memorizza il valore corrente - const currentValue = idmatrice || $select.val(); - - // Distrugge Select2 esistente, se presente - if ($select.hasClass("select2-hidden-accessible")) { - $select.select2("destroy"); - } - - // Inizializza Select2 con AJAX - $select.empty().select2({ - placeholder: "Seleziona matrice", - allowClear: true, - dropdownParent: $("#partsModal"), - minimumInputLength: 0, - ajax: { - url: "search_matrici.php", - dataType: "json", - delay: 150, - data: function (params) { - return { - q: params.term || "", - limit: 20, - macro: selectedMacro || "", - }; - }, - processResults: function (data) { - return { results: data.results || [] }; - }, - cache: true, - }, - }); - - // Ripristina il valore se valido - if (partId && partId !== "new" && currentValue) { - $.ajax({ - url: "search_matrici.php", - data: { id: currentValue }, - dataType: "json", - }).then(function (data) { - const item = (data.results || [])[0]; - if (item) { - const option = new Option(item.text, item.id, true, true); - if (!fromFilter) $select.append(option).trigger("change"); - else $select.append(option); - partMatrice[partNumber] = item.id; - } else { - if (!fromFilter) $select.val(null).trigger("change"); - partMatrice[partNumber] = null; - } - }); - } else { - $select.val(null).trigger("change", [{ skipHandler: true }]); - } - - $select.on("change", function (event, data) { - if (data && data?.skipHandler) return; - - const idmatrice = $(this).val(); - const $row = $(this).closest("tr"); - const partId = $row.data("part-id"); - const partNumber = $row.find(".part-number").val(); - const $saveStatus = $row.find(".save-status"); - const $saveLoading = $row.find(".save-loading"); - - partMatrice[partNumber] = idmatrice || null; - - if (partId && partId !== "new") { - $saveLoading.show(); - $saveStatus.hide(); - const iddatadb = $("#partsModal").data("iddatadb"); - const idquotations = $("#partsModal").data("idquotations"); - const endpoint = idquotations - ? "save_matrice_quotation.php" - : "save_matrice.php"; - const data = idquotations - ? { idquotations: idquotations } - : { iddatadb: iddatadb }; - - $.ajax({ - url: endpoint, - method: "POST", - data: JSON.stringify({ - ...data, - parts: [{ id: partId, idmatrice: idmatrice || null }], - }), - contentType: "application/json", - success: function (response) { - if (response.success) { - $saveLoading.hide(); - $saveStatus.show(); - setTimeout(() => $saveStatus.hide(), 2000); - } else { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - $saveLoading.hide(); - } - }, - error: function (xhr, status, error) { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - $saveLoading.hide(); - }, - }); - } - }); - - // Messaggio se macro selezionata ma nessun risultato sarà gestito dal placeholder Select2 - - // Debug per verificare inizializzazione - console.log( - "Inizializzo Select2 per partId:", - partId, - "con idmatrice:", - idmatrice, - "Macro:", - selectedMacro, - ); - } - - $(document).on("click", ".propagate-matrice-btn", function () { - const $row = $(this).closest("tr"); - const globalVal = $("#global-matrice").val(); - const globalText = $("#global-matrice").find("option:selected").text(); - if (globalVal) { - const $target = $row.find(".part-matrice"); - if (!$target.find(`option[value="${globalVal}"]`).length) { - $target.append(new Option(globalText, globalVal, true, true)); - } - $target.val(globalVal).trigger("change"); - } else { - const errorMsg = $( - '', - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - }); - - $(document).on("click", ".propagate-all-btn", function () { - const globalVal = $("#global-matrice").val(); - const globalText = $("#global-matrice").find("option:selected").text(); - if (globalVal) { - $("#partsTableBody .part-matrice").each(function () { - const $target = $(this); - if (!$target.find(`option[value="${globalVal}"]`).length) { - $target.append( - new Option(globalText, globalVal, true, true), - ); - } - $target.val(globalVal).trigger("change"); - }); - } else { - const errorMsg = $( - '', - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - }); - - function renumberParts() { - console.log( - "Inizio rinumera parts, numero righe:", - $("#partsTableBody tr").length, - ); - const $rows = $("#partsTableBody tr"); - const iddatadb = $("#partsModal").data("iddatadb"); - const idquotations = $("#partsModal").data("idquotations"); - const endpoint = idquotations - ? "renumber_parts_quotation.php" - : "renumber_parts.php"; - const data = idquotations - ? { idquotations: idquotations } - : { iddatadb: iddatadb }; - let newPartMatrice = {}; - - let partsData = $rows - .map(function (index) { - const $row = $(this); - return { - partNumber: $row.find(".part-number").val(), - partDescription: $row - .find(".part-description") - .val() - .trim(), - partId: - $row.data("part-id") === "new" || - $row.data("part-id") === "" - ? null - : $row.data("part-id"), - note: $row.data("note") || null, - dateexpiry: $row.find(".part-dateexpiry").val() || null, - }; - }) - .get(); - - console.log("Parts to save prima di rinumerazione:", partsData); - - partsData.forEach((part, index) => { - const newNumber = index + 1; - newPartMatrice[newNumber] = partMatrice[part.partNumber] || null; - part.partNumber = newNumber; - }); - - $rows.each(function (index) { - $(this) - .find(".part-number") - .val(index + 1); - }); - - partMatrice = newPartMatrice; - - const partsToSave = partsData.map((part, index) => ({ - id: part.partId, - part_number: index + 1, - part_description: part.partDescription, - mix: getRowMix($rows.eq(index)), - idmatrice: partMatrice[index + 1] || null, - note: part.note, - dateexpiry: part.dateexpiry, - })); - - console.log("Parts to save inviati al server:", partsToSave); - - $.ajax({ - url: endpoint, - method: "POST", - data: JSON.stringify({ ...data, parts: partsToSave }), - contentType: "application/json", - success: function (response) { - console.log("Risposta server:", response); - if (response.success && response.part_ids) { - $rows.each(function (index) { - const $row = $(this); - const newPartId = - response.part_ids[index] || $row.data("part-id"); - if (newPartId) { - $row.attr("data-part-id", newPartId).data( - "part-id", - newPartId, - ); - } - const $saveStatus = $row.find(".save-status"); - const $saveLoading = $row.find(".save-loading"); - $saveLoading.hide(); - $saveStatus.show(); - setTimeout(() => $saveStatus.hide(), 2000); - }); - $rows - .find(".part-number, .part-description") - .trigger("blur"); - unsavedChanges = false; - } else { - console.error("Errore risposta server:", response.message); - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - }, - error: function (xhr, status, error) { - console.error( - "Errore AJAX rinumerazione:", - error, - xhr.responseText, - ); - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }, - }); - } - - $(document).on("click", "#renumberPartsBtn", function (e) { - console.log("Clicked Rinumera Parti - Evento triggerato"); - e.preventDefault(); - renumberParts(); - }); - - function markUnsaved() { - if (isLoadingPartsRecord) return; - - if (!unsavedChanges) { - unsavedChanges = true; - } - } - - $(document).on( - "input change", - "#partsTableBody input, #partsTableBody select", - markUnsaved, - ); - $(document).on( - "click", - ".add-row-global, .add-mix-global, .add-mix-row, .remove-row, .propagate-matrice-btn, .propagate-all-btn, .note-btn", - markUnsaved, - ); - $(document).on("click", "#clonePartsBtn", function (e) { - e.preventDefault(); - - const sourceIddatadb = - parseInt($("#partsModal").data("iddatadb"), 10) || null; - const visibleListRaw = - $("#partsModal").data("visible-iddatadb-list") || []; - - if (!sourceIddatadb) { - const errorMsg = $( - '', - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(() => { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - return; - } - - const targetIds = (Array.isArray(visibleListRaw) ? visibleListRaw : []) - .map((v) => parseInt(v, 10)) - .filter((v) => !isNaN(v) && v > 0 && v !== sourceIddatadb); - - if (!targetIds.length) { - const errorMsg = $( - '', - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(() => { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - return; - } - - if ( - !confirm( - `Confermi il clone delle parti del record ${sourceIddatadb} negli altri ${targetIds.length} record visibili?`, - ) - ) { - return; - } - - const $btn = $(this); - const originalHtml = $btn.html(); - $btn.prop("disabled", true).html( - ' Clonazione...', - ); - - $.ajax({ - url: "clone_parts_to_visible.php", - method: "POST", - contentType: "application/json", - dataType: "json", - data: JSON.stringify({ - source_iddatadb: sourceIddatadb, - target_iddatadb_list: targetIds, - }), - success: function (response) { - $btn.prop("disabled", false).html(originalHtml); - - if (response.success) { - const successMsg = $( - ``, - ); - $("#partsModal .modal-body").prepend(successMsg); - setTimeout(() => { - successMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } else { - const errorMsg = $( - ``, - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(() => { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - }, - error: function (xhr, status, error) { - $btn.prop("disabled", false).html(originalHtml); - - const errorMsg = $( - ``, - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(() => { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }, - }); - }); - // Esporta la funzione loadParts per essere usata da import_Edit2.php - window.loadParts = loadParts; - - $(document).on("click", "#quotationeBtn", function () { - $("#addQuotationModal").modal("show"); - - if (quotations.length > 0) { - reloadQuotations(); - } else { - $.ajax({ - url: "load_quotations.php", - method: "GET", - success: function (response) { - quotations = response?.quotations || []; - - reloadQuotations(); - }, - error: function (xhr, status, error) { - console.error( - "Errore AJAX caricamento quotations:", - error, - xhr.responseText, - ); - let message = ` - - `; - - $("#partsModal .modal-body").prepend(errorMsg); - - setTimeout(function () { - message.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }, - }); - } - }); - - $(document).on("click", "#addQuotationBtn", function () { - const quotationId = $("#addQuotationSelect").val(); - - if ( - quotationId && - confirm("Confermo di collegare la quotazione al campione?") - ) { - $("#addQuotationModal").modal("hide"); - - loadParts(null, quotationId, () => { - $("#quotationeBtn").addClass("d-none"); - - setTimeout(() => { - $("#partsTableBody tr").each(function () { - $(this).find(".save-loading").show(); - }); - - let photoList = $("#photoSelector option") - .map(function () { - return this.value?.split("/")?.pop(); - }) - .get(); - - if (!photoList.length) { - let path = $("#samplePhoto") - .attr("src") - ?.split("/") - ?.pop(); - - if (path) photoList = [path]; - } - - $.ajax({ - url: "save_parts_photo_iddatadb.php", - method: "POST", - data: JSON.stringify({ - iddatadb: $("#partsModal").data("iddatadb"), - photoList, - partIds: $("#partsTableBody tr") - .map(function () { - return $(this).data("part-id"); - }) - .get(), - }), - success: function () { - $("#partsTableBody tr").each(function () { - let $row = $(this); - let $saveStatus = $row.find(".save-status"); - let $saveLoading = $row.find(".save-loading"); - - $saveLoading.hide(); - $saveStatus.show(); - - setTimeout(() => $saveStatus.hide(), 2000); - }); - }, - error: function (xhr, status, error) { - let message = ` - - `; - - $("#partsModal .modal-body").prepend(message); - - setTimeout(function () { - message.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }, - }); - }, 100); - }); - } - }); - - function reloadQuotations() { - if (quotations.length > 0) { - $("#addQuotationSelect").empty(); - - $("#addQuotationSelect").append( - "", - ); - - quotations.forEach((quotation) => { - if (quotation?.description) { - $("#addQuotationSelect").append( - ``, - ); - } - }); - - $("#addQuotationSelect").select2(); - } - } -}); - -$(document).on("change", ".propagate-date-input", function () { - const dateexpiry = $(this).val(); - const iddatadb = $("#partsModal").data("iddatadb"); - const idquotations = $("#partsModal").data("idquotations"); - const endpoint = idquotations - ? "save_parts_quotation.php" - : "save_parts.php"; - const data = idquotations - ? { idquotations: idquotations } - : { iddatadb: iddatadb }; - - const partsToSave = []; - $("#partsTableBody tr").each(function () { - const $row = $(this); - const partId = $row.data("part-id"); - const partNumber = $row.find(".part-number").val(); - const partDescription = $row.find(".part-description").val().trim(); - const mix = $row.attr("data-is-mix") === "Y" ? "Y" : "N"; - const idmatrice = $row.find(".part-matrice").val() || null; - const note = $row.data("note") || null; - - partsToSave.push({ - id: partId && partId !== "new" ? partId : null, - part_number: partNumber, - part_description: partDescription, - mix: mix, - idmatrice: idmatrice, - note: note, - dateexpiry: dateexpiry || null, - }); - - if (partId && partId !== "new") { - $row.find(".save-loading").show(); - $row.find(".save-status").hide(); - } - }); - - if (partsToSave.length > 0) { - $.ajax({ - url: endpoint, - method: "POST", - data: JSON.stringify({ - ...data, - parts: partsToSave, - }), - contentType: "application/json", - success: function (response) { - $("#partsTableBody tr").each(function () { - const $row = $(this); - const partId = $row.data("part-id"); - if (partId && partId !== "new") { - $row.find(".save-loading").hide(); - $row.find(".save-status").show(); - setTimeout( - () => $row.find(".save-status").hide(), - 2000, - ); - } - $row.find(".part-dateexpiry").val(dateexpiry); - }); - if (!response.success) { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - }, - error: function (xhr, status, error) { - $("#partsTableBody tr").each(function () { - const $row = $(this); - $row.find(".save-loading").hide(); - }); - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }, - }); - } else { - $("#partsTableBody tr").find(".part-dateexpiry").val(dateexpiry); - markUnsaved(); - } -}); - -$(document).on("click", ".propagate-note-btn", function () { - const $commonNoteModal = $("#commonNoteModal"); - $commonNoteModal.find(".part-note").val(""); - const modalInstance = new bootstrap.Modal($commonNoteModal[0], { - backdrop: "static", - keyboard: false, - }); - modalInstance.show(); -}); - -$(document).on("click", ".save-common-note-btn", function () { - const $commonNoteModal = $("#commonNoteModal"); - const note = $commonNoteModal.find(".part-note").val().trim(); - const iddatadb = $("#partsModal").data("iddatadb"); - const idquotations = $("#partsModal").data("idquotations"); - const endpoint = idquotations - ? "save_parts_quotation.php" - : "save_parts.php"; - const data = idquotations - ? { idquotations: idquotations } - : { iddatadb: iddatadb }; - - const partsToSave = []; - $("#partsTableBody tr").each(function () { - const $row = $(this); - const partId = $row.data("part-id"); - const partNumber = $row.find(".part-number").val(); - const partDescription = $row.find(".part-description").val().trim(); - const mix = $row.attr("data-is-mix") === "Y" ? "Y" : "N"; - const idmatrice = $row.find(".part-matrice").val() || null; - const dateexpiry = $row.find(".part-dateexpiry").val() || null; - - partsToSave.push({ - id: partId && partId !== "new" ? partId : null, - part_number: partNumber, - part_description: partDescription, - mix: mix, - idmatrice: idmatrice, - note: note || null, - dateexpiry: dateexpiry, - }); - - if (partId && partId !== "new") { - $row.find(".save-loading").show(); - $row.find(".save-status").hide(); - } - }); - - if (partsToSave.length > 0) { - $.ajax({ - url: endpoint, - method: "POST", - data: JSON.stringify({ - ...data, - parts: partsToSave, - }), - contentType: "application/json", - success: function (response) { - $("#partsTableBody tr").each(function () { - const $row = $(this); - const partId = $row.data("part-id"); - if (partId && partId !== "new") { - $row.find(".save-loading").hide(); - $row.find(".save-status").show(); - setTimeout( - () => $row.find(".save-status").hide(), - 2000, - ); - } - $row.data("note", note); - $row.find(".note-btn").toggleClass("has-note", !!note); - }); - bootstrap.Modal.getInstance( - document.getElementById("commonNoteModal"), - ).hide(); - if (!response.success) { - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - } - }, - error: function (xhr, status, error) { - $("#partsTableBody tr").each(function () { - const $row = $(this); - $row.find(".save-loading").hide(); - }); - const errorMsg = $( - '", - ); - $("#partsModal .modal-body").prepend(errorMsg); - setTimeout(function () { - errorMsg.fadeOut(500, function () { - $(this).remove(); - }); - }, 5000); - }, - }); - } else { - $("#partsTableBody tr").each(function () { - const $row = $(this); - $row.data("note", note); - $row.find(".note-btn").toggleClass("has-note", !!note); - }); - bootstrap.Modal.getInstance( - document.getElementById("commonNoteModal"), - ).hide(); - markUnsaved(); - } -}); - -$(document).on("click", "#showHideImageBtn", function () { - let mainRow = $(this).closest(".parts-row"); - let photoContainer = mainRow.find(".col-md-3"); - let tableContainer = mainRow - .find("#partsTable") - .closest("div[class*='col-md']"); - - if (photoContainer.hasClass("d-none")) { - photoContainer.removeClass("d-none"); - tableContainer.removeClass("col-md-12").addClass("col-md-9"); - $(this).html( - "", - ); - } else { - photoContainer.addClass("d-none"); - tableContainer.removeClass("col-md-9").addClass("col-md-12"); - $(this).html( - "", - ); - } - - if (typeof window.applyPartsColumnWidths === "function") { - setTimeout(window.applyPartsColumnWidths, 150); - } -}); -// =================== -// RESIZABLE PARTS TABLE COLUMNS - FIXED COLGROUP VERSION -// =================== -(function () { - // Larghezze default per indice colonna (0-based) - const defaultWidths = [55, 320, 360, 150, 220, 230]; - const savedWidths = [...defaultWidths]; - - function getColgroup() { - return $("#partsTableColgroup"); - } - - function syncColgroupToHeaders() { - const $table = $("#partsTable"); - const $ths = $table.find("thead tr:first th"); - const $colgroup = getColgroup(); - const thCount = $ths.length; - - // Assicura che ci siano esattamente tante quante - while ($colgroup.find("col").length < thCount) { - $colgroup.append(""); - } - while ($colgroup.find("col").length > thCount) { - $colgroup.find("col:last").remove(); - } - - // Applica le larghezze salvate - $colgroup.find("col").each(function (i) { - const w = savedWidths[i] !== undefined ? savedWidths[i] : 150; - $(this).css("width", w + "px"); - }); - - // Imposta larghezza totale della tabella = somma colonne (evita reflow) - const total = savedWidths.slice(0, thCount).reduce((a, b) => a + b, 0); - $table.css("width", total + "px"); - } - - function applyColumnWidth(colIndex, newWidth) { - const w = Math.max(40, Math.round(newWidth)); - savedWidths[colIndex] = w; - - const $col = getColgroup().find("col").eq(colIndex); - if ($col.length) { - $col.css("width", w + "px"); - } - - // Aggiorna larghezza totale tabella senza toccare le altre colonne - const thCount = $("#partsTable thead tr:first th").length; - const total = savedWidths.slice(0, thCount).reduce((a, b) => a + b, 0); - $("#partsTable").css("width", total + "px"); - } - - function addResizers() { - const $table = $("#partsTable"); - if (!$table.length) return; - - $table.find("thead tr:first th").each(function (colIndex) { - const $th = $(this); - - // Salta colonna Num (indice 0) — non ridimensionabile - if (colIndex === 0) return; - - // Non aggiungere due volte - if ($th.find(".parts-resizer").length) return; - - const $resizer = $(""); - $th.css("position", "relative"); // necessario per il posizionamento assoluto - $th.append($resizer); - - $resizer.on("mousedown", function (e) { - e.preventDefault(); - e.stopPropagation(); - - const startX = e.pageX; - // Leggi la larghezza ESATTA dalla , non dal - const startWidth = - savedWidths[colIndex] !== undefined - ? savedWidths[colIndex] - : parseInt( - getColgroup() - .find("col") - .eq(colIndex) - .css("width"), - 10, - ) || 150; - - $("body") - .css("user-select", "none") - .css("cursor", "col-resize"); - - $(document).on("mousemove.partsResize", function (ev) { - const delta = ev.pageX - startX; - applyColumnWidth(colIndex, startWidth + delta); - }); - - $(document).on("mouseup.partsResize", function () { - $("body").css("user-select", "").css("cursor", ""); - $(document).off(".partsResize"); - }); - }); - }); - } - - function init() { - syncColgroupToHeaders(); - addResizers(); - } - - // Init al primo show del modale - $(document).on("shown.bs.modal", "#partsModal", function () { - setTimeout(init, 120); - }); - - // Re-init dopo ogni AJAX (nuove righe, caricamenti) - $(document).ajaxComplete(function () { - if ($("#partsModal").hasClass("show")) { - setTimeout(syncColgroupToHeaders, 200); - setTimeout(addResizers, 220); - } - }); - - // Re-init dopo aggiunta/rimozione righe - $(document).on( - "click", - ".add-row-global, .add-mix-global, .add-mix-row, .remove-row, #renumberPartsBtn, #clonePartsBtn", - function () { - setTimeout(syncColgroupToHeaders, 120); - setTimeout(addResizers, 140); - }, - ); - - window.initPartsResizableColumns = init; - window.applyPartsColumnWidths = syncColgroupToHeaders; -})(); diff --git a/public/userarea/parts_functions.php b/public/userarea/parts_functions.php deleted file mode 100644 index a9105d16..00000000 --- a/public/userarea/parts_functions.php +++ /dev/null @@ -1,5 +0,0 @@ - - \ No newline at end of file diff --git a/public/userarea/partsold.js b/public/userarea/partsold.js deleted file mode 100644 index 3cb0bfb1..00000000 --- a/public/userarea/partsold.js +++ /dev/null @@ -1,668 +0,0 @@ -$(document).ready(function () { - console.log("parts.js caricato correttamente"); - - const partsButtons = document.querySelectorAll(".parts-btn"); - const partsModal = document.getElementById("partsModal"); - const overlay = document.querySelector(".overlay"); - - partsButtons.forEach((button) => { - button.addEventListener("click", function () { - console.log( - "Pulsante Parts cliccato, iddatadb:", - $(this).data("iddatadb"), - ); - const iddatadb = $(this).data("iddatadb"); - const rowIndex = $(this).data("row"); - console.log("Row index:", rowIndex); - const importRef = $("table tbody tr") - .eq(rowIndex) - .find("td") - .eq(1) - .text(); - console.log("ImportRef:", importRef); - const description = - $("table tbody tr").eq(rowIndex).find("td").eq(2).text() || - "Sconosciuto"; - console.log("Description:", description); - - $("#trfHeader").text(`${iddatadb} - ${importRef} - ${description}`); - $("#partsModal").data("iddatadb", iddatadb); - - if (partsModal) { - console.log( - "Tento di aprire il modal, bootstrap:", - typeof bootstrap !== "undefined" - ? "definito" - : "non definito", - ); - try { - console.log("Inizio try per creare modal instance"); - const modalInstance = new bootstrap.Modal(partsModal, { - focus: true, - }); // Forza la gestione del focus - console.log("Modal instance creata"); - console.log("Inizio show del modal"); - modalInstance.show(); - console.log("Modal mostrato"); - if (overlay) overlay.style.display = "none"; // Nascondi overlay solo se esiste - } catch (error) { - console.error("Errore nell'apertura del modal:", error); - } - } else { - console.error("Modal Parts non trovato"); - } - - console.log("Prima di chiamare loadPhoto e loadExistingParts"); - loadPhoto(iddatadb) - .then(() => { - console.log("loadPhoto completata"); - loadExistingParts(iddatadb) - .then(() => { - console.log("loadExistingParts completata"); - }) - .catch((error) => { - console.error( - "Errore in loadExistingParts:", - error, - ); - }); - }) - .catch((error) => { - console.error("Errore in loadPhoto:", error); - }); - console.log("Dopo l'avvio delle chiamate AJAX"); - }); - }); - - // Gestione della chiusura del modal Parts - if (closeBtn) { - closeBtn.addEventListener("click", function () { - partsModal.style.display = "none"; - overlay.style.display = "none"; // Nascondi overlay - document.body.style.pointerEvents = "auto"; // Riattiva la pagina - }); - } - - if (partsModal) { - window.addEventListener("click", function (event) { - if (event.target === partsModal) { - partsModal.style.display = "none"; - overlay.style.display = "none"; // Nascondi overlay - document.body.style.pointerEvents = "auto"; // Riattiva la pagina - } - }); - } - - function loadPhoto(iddatadb) { - console.log("Inizio loadPhoto per iddatadb:", iddatadb); - return $.ajax({ - url: "load_photo.php", - method: "GET", - data: { iddatadb: iddatadb }, - }) - .then(function (response) { - console.log("Risposta loadPhoto:", response); - if (response.success && response.file_path) { - const img = $("#samplePhoto"); - img.attr("src", response.file_path); - return new Promise((resolve) => { - img.on("load", function () { - const container = img.parent(); - const canvas = - document.getElementById("photoCanvas"); - const containerWidth = container.width(); - const containerHeight = container.height(); - const scaleX = containerWidth / img[0].naturalWidth; - const scaleY = - containerHeight / img[0].naturalHeight; - const scale = Math.min(scaleX, scaleY); - canvas.width = img[0].naturalWidth * scale; - canvas.height = img[0].naturalHeight * scale; - canvas.style.width = `${containerWidth}px`; - canvas.style.height = `${containerHeight}px`; - const ctx = canvas.getContext("2d"); - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.drawImage( - img.get(0), - 0, - 0, - canvas.width, - canvas.height, - ); - updateMarkers(); - resolve(); - }); - }); - } else { - $("#samplePhoto").attr("src", ""); - console.log( - "Nessuna foto trovata:", - response.message || "Nessun messaggio", - ); - return Promise.resolve(); // Risolvi comunque la promessa - } - }) - .catch(function (xhr, status, error) { - console.error("Errore in loadPhoto:", { - status, - error, - response: xhr.responseText, - }); - $("#samplePhoto").attr("src", ""); - alert("Errore nel caricamento della foto: " + error); - return Promise.reject(error); // Rifiuta la promessa in caso di errore - }); - } - - function addNewRow(nextPartNumber) { - const newRow = ` - - - - - - - - - - - `; - $("#partsTableBody").append(newRow); - updateRowButtons(); - } - - function updateRowButtons() { - const rowCount = $("#partsTableBody tr").length; - $("#partsTableBody tr").each(function (index) { - const $removeBtn = $(this).find(".remove-row"); - if (rowCount > 1) { - $removeBtn.show(); - } else { - $removeBtn.hide(); - } - }); - } - - $(document).on("click", ".add-row", function (e) { - e.preventDefault(); - console.log("Pulsante Aggiungi riga cliccato"); - const maxPartNumber = Math.max( - ...$("#partsTableBody tr") - .map(function () { - return parseInt($(this).find(".part-number").val()) || 0; - }) - .get(), - ); - addNewRow(maxPartNumber + 1); - updatePartsList(); - }); - - $(document).on("click", ".remove-row", function (e) { - e.preventDefault(); - console.log("Pulsante Rimuovi riga cliccato"); - const $row = $(this).closest("tr"); - const partId = $row.data("part-id"); - console.log("ID parte da eliminare:", partId); - - if (partId !== "new" && partId !== undefined && partId !== null) { - console.log("Procedo con la cancellazione dal database"); - $.ajax({ - url: "delete_part.php", - method: "POST", - data: JSON.stringify({ part_id: partId }), - contentType: "application/json", - beforeSend: function () { - console.log( - "Invio richiesta AJAX a delete_part.php con part_id:", - partId, - ); - }, - success: function (response) { - console.log("Risposta da delete_part.php:", response); - if (response.success) { - $row.remove(); - updateRowButtons(); - updatePartsList(); - clearCanvasMarkers(); - } else { - alert("Errore nell'eliminazione: " + response.message); - } - }, - error: function (xhr, status, error) { - console.log("Errore AJAX:", status, error); - alert( - "Errore nell'eliminazione: " + - error + - ". Stato: " + - xhr.status + - " - " + - xhr.responseText, - ); - }, - }); - } else { - console.log( - 'Riga non salvata nel database (partId = "new" o non definito), rimuovo solo visivamente', - ); - $row.remove(); - updateRowButtons(); - updatePartsList(); - } - }); - - $(document).on("blur", ".part-description, .part-number", function () { - const $input = $(this); - const $row = $input.closest("tr"); - const partNumber = $row.find(".part-number").val(); - const partDescription = $row.find(".part-description").val().trim(); - const $saveStatus = $row.find(".save-status"); - const $saveLoading = $row.find(".save-loading"); - const iddatadb = $("#partsModal").data("iddatadb"); - - console.log("Evento blur su input:", { partNumber, partDescription }); - - if (partDescription && iddatadb) { - $saveLoading.show(); - $saveStatus.hide(); - - $.ajax({ - url: "save_parts.php", - method: "POST", - data: JSON.stringify({ - iddatadb: iddatadb, - parts: [ - { - part_number: partNumber, - part_description: partDescription, - }, - ], - }), - contentType: "application/json", - success: function (response) { - if (response.success) { - if (response.part_id) { - $row.data("part-id", response.part_id); - console.log( - "Aggiornato partId della riga:", - response.part_id, - ); - } - $saveLoading.hide(); - $saveStatus.show(); - updatePartsList(); - setTimeout(() => $saveStatus.hide(), 2000); - } else { - alert("Errore nel salvataggio: " + response.message); - $saveLoading.hide(); - } - }, - error: function (xhr, status, error) { - alert("Errore nel salvataggio delle parti: " + error); - $saveLoading.hide(); - }, - }); - } - }); - - function loadExistingParts(iddatadb) { - console.log("Inizio loadExistingParts per iddatadb:", iddatadb); - return $.ajax({ - url: "load_parts.php", - method: "GET", - data: { iddatadb: iddatadb }, - }) - .then(function (response) { - console.log("Risposta loadExistingParts:", response); - if (response.success) { - $("#partsTableBody").empty(); - if (response.parts.length > 0) { - response.parts.forEach((part) => { - const newRow = ` - - - - - - - - - - - `; - $("#partsTableBody").append(newRow); - }); - } else { - addNewRow(1); - } - updateRowButtons(); - updatePartsList(); - } else { - console.log( - "Errore nel caricamento delle parti:", - response.message, - ); - addNewRow(1); - } - return Promise.resolve(); // Risolvi la promessa - }) - .catch(function (xhr, status, error) { - console.error("Errore in loadExistingParts:", { - status, - error, - response: xhr.responseText, - }); - alert("Errore nel caricamento delle parti: " + error); - addNewRow(1); - return Promise.reject(error); // Rifiuta la promessa in caso di errore - }); - } - - function updatePartsList() { - $("#partsList").empty(); - $("#partsTableBody tr").each(function () { - const partNumber = $(this).find(".part-number").val(); - const partDescription = $(this).find(".part-description").val(); - if (partNumber && partDescription) { - const listItem = `
            • ${partNumber} - ${partDescription}
            • `; - $("#partsList").append(listItem); - } - }); - } - - let selectedPartNumber = null; - let markers = []; - let descriptionPosition = { x: 10, y: 10 }; - let hasDescriptions = false; - - $("#partsList").on("click", "li", function () { - selectedPartNumber = $(this).data("part-number"); - console.log("Part number selezionato:", selectedPartNumber); - $(this).addClass("active").siblings().removeClass("active"); - }); - - const canvas = document.getElementById("photoCanvas"); - const ctx = canvas.getContext("2d"); - - $("#markerContainer").on("click", function (e) { - console.log("Click sul markerContainer rilevato"); - if (selectedPartNumber !== null) { - const img = $("#samplePhoto"); - const canvas = document.getElementById("photoCanvas"); - const rect = canvas.getBoundingRect(); - const container = img.parent(); - const containerWidth = container.width(); - const containerHeight = container.height(); - const scaleX = containerWidth / img.get(0).naturalWidth; - const scaleY = containerHeight / img.get(0).naturalHeight; - const scale = Math.min(scaleX, scaleY); - const x = (e.clientX - rect.left) / scale; - const y = (e.clientY - rect.top) / scale; - - console.log("Coordinate cliccate (x, y):", x, y); - - const existingMarker = markers.find( - (m) => m.partNumber == selectedPartNumber, - ); - if (existingMarker) { - existingMarker.x = x; - existingMarker.y = y; - } else { - markers.push({ partNumber: selectedPartNumber, x, y }); - } - console.log("Markers aggiornati:", markers); - updateMarkers(); - if (hasDescriptions) { - drawDescriptions(descriptionPosition.x, descriptionPosition.y); - } - selectedPartNumber = null; - $("#partsList li").removeClass("active"); - } else { - console.log("Nessun part number selezionato"); - } - }); - - function updateMarkers() { - const img = $("#samplePhoto"); - const container = img.parent(); - const containerWidth = container.width(); - const containerHeight = container.height(); - const scaleX = containerWidth / img.get(0).naturalWidth; - const scaleY = containerHeight / img.get(0).naturalHeight; - const scale = Math.min(scaleX, scaleY); - - const markerContainer = $("#markerContainer"); - markerContainer.empty(); - - markers.forEach((marker) => { - const scaledX = marker.x * scale; - const scaledY = marker.y * scale; - console.log( - "Aggiungo marker:", - marker.partNumber, - "a posizione (scaledX, scaledY):", - scaledX, - scaledY, - ); - const $marker = $( - `
              ${marker.partNumber}
              `, - ).css({ - left: scaledX - 8 + "px", - top: scaledY - 8 + "px", - }); - markerContainer.append($marker); - makeDraggable($marker, marker, scale); - }); - } - - function makeDraggable($element, item, scale) { - let isDragging = false; - let currentX = parseFloat($element.css("left")) || 0; - let currentY = parseFloat($element.css("top")) || 0; - let initialX, initialY; - - $element.on("mousedown", function (e) { - e.preventDefault(); - isDragging = true; - initialX = e.clientX - currentX; - initialY = e.clientY - currentY; - $element.css("z-index", 1001); - }); - - $(document).on("mousemove", function (e) { - if (isDragging) { - e.preventDefault(); - currentX = e.clientX - initialX; - currentY = e.clientY - initialY; - const container = $("#photoCanvas").parent(); - const containerWidth = container.width(); - const containerHeight = container.height(); - const maxX = containerWidth - $element.width(); - const maxY = containerHeight - $element.height(); - - currentX = Math.max(0, Math.min(currentX, maxX)); - currentY = Math.max(0, Math.min(currentY, maxY)); - - $element.css({ - left: currentX + "px", - top: currentY + "px", - }); - - if (item.partNumber) { - item.x = (currentX + 8) / scale; - item.y = (currentY + 8) / scale; - } else { - descriptionPosition.x = (currentX + 5) / scale; - descriptionPosition.y = (currentY + 5) / scale; - } - } - }); - - $(document).on("mouseup", function () { - isDragging = false; - $element.css("z-index", 1000); - }); - } - - function drawDescriptions(x, y) { - const img = $("#samplePhoto"); - const container = img.parent(); - const containerWidth = container.width(); - const containerHeight = container.height(); - const scaleX = containerWidth / img.get(0).naturalWidth; - const scaleY = containerHeight / img.get(0).naturalHeight; - const scale = Math.min(scaleX, scaleY); - - const partsList = []; - $("#partsTableBody tr").each(function () { - const partNumber = $(this).find(".part-number").val(); - const partDescription = $(this).find(".part-description").val(); - if (partNumber && partDescription) { - partsList.push(`${partNumber} ${partDescription}`); - } - }); - - const descriptionList = $("#descriptionList"); - descriptionList.empty(); - descriptionList.css({ - display: "block", - top: y * scale + "px", - left: x * scale + "px", - width: "200px", - }); - partsList.forEach((part) => { - descriptionList.append(`
              ${part}
              `); - }); - - updateMarkers(); - } - - function clearCanvasMarkers() { - markers = []; - hasDescriptions = false; - $("#descriptionList").css("display", "none"); - $("#markerContainer").empty(); - const canvas = document.getElementById("photoCanvas"); - const img = $("#samplePhoto"); - const ctx = canvas.getContext("2d"); - const container = img.parent(); - const containerWidth = container.width(); - const containerHeight = container.height(); - const scaleX = containerWidth / img.get(0).naturalWidth; - const scaleY = containerHeight / img.get(0).naturalHeight; - const scale = Math.min(scaleX, scaleY); - - canvas.width = img.get(0).naturalWidth * scale; - canvas.height = img.get(0).naturalHeight * scale; - ctx.clearRect(0, 0, canvas.width, canvas.height); - ctx.drawImage(img.get(0), 0, 0, canvas.width, canvas.height); - } - - $("#addDescriptionsBtn").on("click", function () { - hasDescriptions = true; - descriptionPosition = { x: 10, y: 10 }; - drawDescriptions(descriptionPosition.x, descriptionPosition.y); - makeDraggable( - $("#descriptionList"), - descriptionPosition, - Math.min( - $("#photoCanvas").parent().width() / - $("#samplePhoto").get(0).naturalWidth, - $("#photoCanvas").parent().height() / - $("#samplePhoto").get(0).naturalHeight, - ), - ); - }); - - $("#removeAnnotationsBtn").on("click", function () { - clearCanvasMarkers(); - }); - - $("#savePhotoBtn").on("click", function () { - const canvas = document.getElementById("photoCanvas"); - const img = $("#samplePhoto"); - const ctx = canvas.getContext("2d"); - - canvas.width = img.get(0).naturalWidth; - canvas.height = img.get(0).naturalHeight; - ctx.drawImage(img.get(0), 0, 0); - - const partsList = []; - $("#partsTableBody tr").each(function () { - const partNumber = $(this).find(".part-number").val(); - const partDescription = $(this).find(".part-description").val(); - if (partNumber && partDescription) { - partsList.push(`${partNumber} ${partDescription}`); - } - }); - - if (hasDescriptions) { - ctx.fillStyle = "rgba(255, 255, 255, 0.8)"; - ctx.fillRect( - descriptionPosition.x, - descriptionPosition.y, - 200, - partsList.length * 12 + 10, - ); - ctx.fillStyle = "#000000"; - ctx.font = "10px Arial"; - partsList.forEach((part, index) => { - ctx.fillText( - part, - descriptionPosition.x + 5, - descriptionPosition.y + 12 + index * 12, - ); - }); - } - - markers.forEach((marker) => { - ctx.beginPath(); - ctx.arc(marker.x, marker.y, 8, 0, 2 * Math.PI); - ctx.fillStyle = "rgba(255, 0, 0, 0.5)"; - ctx.fill(); - ctx.strokeStyle = "#ff0000"; - ctx.lineWidth = 1; - ctx.stroke(); - ctx.fillStyle = "#ffffff"; - ctx.font = "bold 8px Arial"; - ctx.textAlign = "center"; - ctx.textBaseline = "middle"; - ctx.fillText(marker.partNumber, marker.x, marker.y); - }); - - const dataURL = canvas.toDataURL("image/png"); - const timestamp = new Date().toISOString().replace(/[:.]/g, "-"); - const defaultName = `photo_${$("#partsModal").data("iddatadb")}_${timestamp}.png`; - const newName = prompt( - "Inserisci il nome del file (senza estensione):", - defaultName.split(".png")[0], - ); - if (newName) { - const finalName = newName + "_" + timestamp + ".png"; - $.ajax({ - url: "save_annotated_photo.php", - method: "POST", - data: { dataURL: dataURL, filename: finalName }, - success: function (response) { - if (response.success) { - alert( - "Foto salvata con successo: " + response.file_path, - ); - } else { - alert("Errore nel salvataggio: " + response.message); - } - }, - error: function (xhr, status, error) { - alert("Errore nel salvataggio della foto: " + error); - }, - }); - } - }); - - $(document).on("mouseenter", "tr", function () { - console.log("Mouse entrato su riga"); - }); - - $(document).on("mouseleave", "tr", function () { - console.log("Mouse uscito da riga"); - }); -}); diff --git a/public/userarea/photos.js b/public/userarea/photos.js deleted file mode 100644 index f41f73e9..00000000 --- a/public/userarea/photos.js +++ /dev/null @@ -1,1224 +0,0 @@ -document.addEventListener("DOMContentLoaded", function () { - // Funzione per caricare il contenuto del popup (exported for external use) - async function loadPopupContent(iddatadb, idquotations) { - const popupContent = document.getElementById("popupContent"); - if (!popupContent) { - console.error("Elemento popupContent non trovato"); - return; - } - try { - const endpoint = idquotations - ? `photos_popup.php?idquotations=${idquotations}` - : `photos_popup.php?iddatadb=${iddatadb}`; - console.log("Caricamento popup da:", endpoint); - const response = await fetch(endpoint); - if (!response.ok) - throw new Error("Errore nella risposta del server"); - popupContent.innerHTML = await response.text(); - attachPhotoEventListeners(iddatadb, idquotations); - } catch (error) { - popupContent.innerHTML = `

              Errore durante il caricamento: ${error.message}

              `; - console.error("Errore in loadPopupContent:", error); - } - } - - // Funzione per gestire la webcam - function setupWebcam(iddatadb, idquotations) { - const openWebcamBtn = document.getElementById("openWebcamBtn"); - const webcamArea = document.getElementById("webcamArea"); - const webcamVideo = document.getElementById("webcamVideo"); - const captureBtn = document.getElementById("captureBtn"); - const closeWebcamBtn = document.getElementById("closeWebcamBtn"); - const webcamSelect = document.getElementById("webcamSelect"); - let stream = null; - - if (!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) { - console.warn("La webcam non è supportata dal browser."); - if (openWebcamBtn) openWebcamBtn.style.display = "none"; - return; - } - - if ( - !openWebcamBtn || - !webcamArea || - !webcamVideo || - !captureBtn || - !closeWebcamBtn || - !webcamSelect - ) { - console.error("Elementi webcam mancanti", { - openWebcamBtn, - webcamArea, - webcamVideo, - captureBtn, - closeWebcamBtn, - webcamSelect, - }); - return; - } - - async function startWebcam(deviceId = null) { - try { - if (stream) { - stream.getTracks().forEach((track) => track.stop()); - stream = null; - webcamVideo.srcObject = null; - } - - const constraints = { - video: deviceId ? { deviceId: { exact: deviceId } } : true, - }; - - stream = await navigator.mediaDevices.getUserMedia(constraints); - webcamVideo.srcObject = stream; - webcamArea.style.display = "block"; - openWebcamBtn.style.display = "none"; - dropArea.style.display = "none"; - } catch (error) { - console.error("Errore nell'accesso alla webcam:", error); - alert("Errore nell'accesso alla webcam: " + error.message); - webcamArea.style.display = "none"; - openWebcamBtn.style.display = "block"; - dropArea.style.display = "block"; - } - } - - async function populateWebcamSelect() { - try { - await navigator.mediaDevices.getUserMedia({ video: true }); - const devices = await navigator.mediaDevices.enumerateDevices(); - const videoDevices = devices.filter( - (device) => device.kind === "videoinput", - ); - - webcamSelect.innerHTML = - ''; - - videoDevices.forEach((device) => { - const option = document.createElement("option"); - option.value = device.deviceId; - option.text = - device.label || `Webcam ${webcamSelect.options.length}`; - webcamSelect.appendChild(option); - }); - - webcamSelect.style.display = - videoDevices.length > 1 ? "block" : "none"; - - if (videoDevices.length > 0) { - await startWebcam(videoDevices[0].deviceId); - } else { - alert("Nessuna webcam rilevata."); - webcamArea.style.display = "none"; - openWebcamBtn.style.display = "block"; - dropArea.style.display = "block"; - } - } catch (error) { - console.error("Errore nel recupero dei dispositivi:", error); - alert("Errore nel recupero dei dispositivi: " + error.message); - webcamSelect.style.display = "none"; - } - } - - openWebcamBtn.addEventListener("click", async () => { - await populateWebcamSelect(); - }); - - webcamSelect.addEventListener("change", async (e) => { - const deviceId = e.target.value; - if (deviceId) { - await startWebcam(deviceId); - } - }); - - closeWebcamBtn.addEventListener("click", () => { - if (stream) { - stream.getTracks().forEach((track) => track.stop()); - stream = null; - webcamVideo.srcObject = null; - } - webcamArea.style.display = "none"; - openWebcamBtn.style.display = "block"; - dropArea.style.display = "block"; - }); - - captureBtn.addEventListener("click", () => { - const canvas = document.createElement("canvas"); - canvas.width = webcamVideo.videoWidth; - canvas.height = webcamVideo.videoHeight; - canvas - .getContext("2d") - .drawImage(webcamVideo, 0, 0, canvas.width, canvas.height); - - canvas.toBlob(async (blob) => { - const file = new File( - [blob], - `webcam_photo_${Date.now()}.jpg`, - { type: "image/jpeg" }, - ); - const loader = document.getElementById("loader"); - if (loader) { - loader.style.display = "flex"; - } - await handleFiles([file], iddatadb, idquotations); - if (stream) { - stream.getTracks().forEach((track) => track.stop()); - stream = null; - webcamVideo.srcObject = null; - } - webcamArea.style.display = "none"; - openWebcamBtn.style.display = "block"; - dropArea.style.display = "block"; - }, "image/jpeg"); - }); - } - - async function handleFiles(files, iddatadb, idquotations) { - const loader = document.getElementById("loader"); - if (!loader) { - console.error("Elemento loader non trovato"); - return; - } - - if (!files || files.length === 0) { - console.warn("Nessun file da caricare"); - return; - } - - loader.style.display = "flex"; - console.log(`Inizio upload di ${files.length} file`); - - let successCount = 0; - let errorMessages = []; - let uploadPromises = []; - - for (let i = 0; i < files.length; i++) { - const file = files[i]; - if (!file.type.startsWith("image/")) { - alert(`File ${file.name} non è un'immagine, saltato!`); - continue; - } - - console.log(`Preparazione upload file ${i + 1}: ${file.name}`); - - const formData = new FormData(); - formData.append("photo", file); - if (idquotations) { - formData.append("idquotations", idquotations); - } else { - formData.append("iddatadb", iddatadb); - } - - const uploadPromise = fetch("upload_photo.php", { - method: "POST", - body: formData, - }) - .then((response) => response.json()) - .then((result) => { - if (result.success) { - successCount++; - console.log(`Successo per ${file.name}`); - } else { - errorMessages.push( - `Errore per ${file.name}: ${result.message}`, - ); - } - }) - .catch((error) => { - errorMessages.push( - `Errore per ${file.name}: ${error.message}`, - ); - }); - - uploadPromises.push(uploadPromise); - } - - await Promise.all(uploadPromises); - - loader.style.display = "none"; - console.log( - `Fine upload: ${successCount} riusciti, ${errorMessages.length} errori`, - ); - - if (errorMessages.length > 0) { - alert("Errori durante l'upload:\n" + errorMessages.join("\n")); - } - - // Ricarica sempre alla fine per aggiornare la lista, anche se parziale successo - loadPopupContent(iddatadb, idquotations); - } - - function attachPhotoEventListeners(iddatadb, idquotations) { - const dropArea = document.getElementById("dropArea"); - const photoInput = document.getElementById("photoInput"); - const photosModal = document.getElementById("photosModal"); - - if (!dropArea || !photoInput || !photosModal) { - console.error("Elementi mancanti:", { - dropArea, - photoInput, - photosModal, - }); - return; - } - - const preventDefaults = (e) => { - e.preventDefault(); - e.stopPropagation(); - }; - - ["dragenter", "dragover", "dragleave", "drop"].forEach((eventName) => { - dropArea.addEventListener(eventName, preventDefaults, false); - }); - - ["dragenter", "dragover"].forEach((eventName) => { - dropArea.addEventListener( - eventName, - () => dropArea.classList.add("highlight"), - false, - ); - }); - - ["dragleave", "drop"].forEach((eventName) => { - dropArea.addEventListener( - eventName, - () => dropArea.classList.remove("highlight"), - false, - ); - }); - - dropArea.addEventListener( - "drop", - (e) => { - const files = e.dataTransfer.files; - if (files.length > 0) { - handleFiles(files, iddatadb, idquotations); - } - }, - false, - ); - - dropArea.addEventListener( - "click", - () => { - photoInput.click(); - }, - false, - ); - - photoInput.addEventListener( - "change", - (e) => { - const files = e.target.files; - if (files.length > 0) { - handleFiles(files, iddatadb, idquotations); - } - e.target.value = ""; - }, - false, - ); - - document.querySelectorAll(".delete-photo-btn").forEach((button) => { - button.addEventListener("click", async function () { - const photoId = this.getAttribute("data-photo-id"); - if (confirm("Sei sicuro di voler eliminare questa foto?")) { - try { - const response = await fetch("delete_photo.php", { - method: "POST", - headers: { - "Content-Type": - "application/x-www-form-urlencoded", - }, - body: `photo_id=${photoId}`, - }); - const result = await response.json(); - if (result.success) { - loadPopupContent(iddatadb, idquotations); - } else { - alert( - "Errore durante l'eliminazione: " + - result.message, - ); - } - } catch (error) { - alert( - "Errore durante l'eliminazione: " + error.message, - ); - } - } - }); - }); - - document - .querySelectorAll(".photo-flag-checkbox") - .forEach((checkbox) => { - checkbox.addEventListener("change", async function () { - const photoId = this.getAttribute("data-photo-id"); - const field = this.getAttribute("data-field"); - const value = this.checked ? 1 : 0; - const currentCheckbox = this; - - // Only one PrimaPagina visually in the current popup - if (field === "PrimaPagina" && value === 1) { - document - .querySelectorAll( - ".photo-flag-checkbox[data-field='PrimaPagina']", - ) - .forEach((cb) => { - if (cb !== currentCheckbox) { - cb.checked = false; - } - }); - } - - try { - const formData = new URLSearchParams(); - formData.append("photo_id", photoId); - formData.append("field", field); - formData.append("value", value); - - const response = await fetch("update_photo_flags.php", { - method: "POST", - headers: { - "Content-Type": - "application/x-www-form-urlencoded", - }, - body: formData.toString(), - }); - - const result = await response.json(); - - if (!result.success) { - throw new Error( - result.message || "Errore salvataggio flag", - ); - } - - // Safety refresh for PrimaPagina to ensure UI matches DB - if (field === "PrimaPagina") { - loadPopupContent(iddatadb, idquotations); - } - } catch (error) { - alert( - "Errore durante il salvataggio del flag: " + - error.message, - ); - - // rollback current checkbox - currentCheckbox.checked = !currentCheckbox.checked; - - // reload popup to restore coherent state - loadPopupContent(iddatadb, idquotations); - } - }); - }); - document.querySelectorAll(".thumbnail").forEach((img) => { - img.addEventListener("click", function () { - const enlargedImage = document.getElementById("enlargedImage"); - enlargedImage.src = this.src; - document.getElementById("imageModal").style.display = "block"; - }); - }); - - const imageCloseBtn = document.querySelector(".image-modal-close"); - if (imageCloseBtn) { - imageCloseBtn.addEventListener("click", () => { - document.getElementById("imageModal").style.display = "none"; - }); - } - document - .getElementById("imageModal") - .addEventListener("click", function (event) { - if (event.target === this) { - this.style.display = "none"; - } - }); - - setupWebcam(iddatadb, idquotations); - - const createCollageBtn = document.getElementById("createCollageBtn"); - if (createCollageBtn) { - createCollageBtn.addEventListener("click", () => { - document.getElementById("collageModal").style.display = "block"; - initCollageCanvas(); - }); - } - - const closeCollageBtn = document.querySelector(".close-collage"); - if (closeCollageBtn) { - closeCollageBtn.addEventListener("click", () => { - document.getElementById("collageModal").style.display = "none"; - if (isCropping) { - exitCropMode(); - } - if (isRemovingBackground) { - exitBackgroundRemovalMode(); - } - }); - } - - let canvas; - let cropRect = null; - let isCropping = false; - let croppedImage = null; - let isApplyingCrop = false; - let isRemovingBackground = false; - let backgroundRemovalImage = null; - let history = []; - const maxHistory = 20; - - function initCollageCanvas() { - if (typeof fabric === "undefined") { - console.error("Fabric.js non è caricato!"); - alert( - "Errore: Fabric.js non è disponibile. Controlla la connessione al CDN.", - ); - return; - } - - if (canvas) { - canvas.dispose(); - } - - canvas = new fabric.Canvas("collageCanvas", { - backgroundColor: "#fff", - selection: true, - }); - fabric.Object.prototype.set({ - cornerColor: "black", - cornerStrokeColor: "black", - cornerSize: 12, - borderColor: "black", - transparentCorners: false, - }); - canvas.on("object:modified", () => { - saveCanvasState(); - updateLayersPanel(); - canvas.renderAll(); - }); - canvas.on("object:added", () => { - updateLayersPanel(); - }); - canvas.on("object:removed", () => { - updateLayersPanel(); - }); - canvas.on("selection:created", () => { - updateButtons(); - }); - canvas.on("selection:updated", () => { - updateButtons(); - }); - canvas.on("selection:cleared", () => { - if (!isCropping && !isRemovingBackground) { - updateButtons(); - } else if (isCropping && cropRect) { - canvas.setActiveObject(cropRect); - canvas.renderAll(); - } else if (isRemovingBackground) { - canvas.setActiveObject(backgroundRemovalImage); - canvas.renderAll(); - } - }); - canvas.on("mouse:down", (event) => { - if (isRemovingBackground && backgroundRemovalImage) { - handleBackgroundColorSelection(event); - } - }); - saveCanvasState(); - updateLayersPanel(); - updateButtons(); - } - - function updateLayersPanel() { - const layersList = document.getElementById("layersList"); - if (!layersList) { - console.error("Elemento layersList non trovato"); - return; - } - layersList.innerHTML = ""; - - const images = canvas.getObjects("image"); - images.forEach((img, index) => { - let thumbSrc; - try { - const thumbCanvas = document.createElement("canvas"); - thumbCanvas.width = 50; - thumbCanvas.height = 50; - const thumbFabric = new fabric.Canvas(thumbCanvas); - - const clonedImg = fabric.util.object.clone(img); - const scaleFactor = Math.min( - 50 / img.width, - 50 / img.height, - ); - clonedImg.scaleX = scaleFactor; - clonedImg.scaleY = scaleFactor; - clonedImg.left = (50 - img.width * scaleFactor) / 2; - clonedImg.top = (50 - img.height * scaleFactor) / 2; - clonedImg.setCoords(); - thumbFabric.add(clonedImg); - thumbFabric.renderAll(); - - thumbSrc = thumbCanvas.toDataURL("image/png"); - thumbFabric.dispose(); - } catch (error) { - console.warn( - "Errore nella generazione della thumbnail per immagine", - index + 1, - error, - ); - thumbSrc = img.getSrc(); // Fallback all'URL originale - } - - const layerItem = document.createElement("li"); - const thumbImg = document.createElement("img"); - thumbImg.src = thumbSrc; - thumbImg.title = `Layer ${index + 1}`; - thumbImg.addEventListener("click", () => { - canvas.setActiveObject(img); - canvas.renderAll(); - }); - - layerItem.appendChild(thumbImg); - layersList.appendChild(layerItem); - }); - } - - function saveCanvasState() { - if (isCropping || isRemovingBackground) { - return; - } - - const state = JSON.stringify( - canvas.toJSON([ - "cornerColor", - "cornerStrokeColor", - "cornerSize", - "borderColor", - "transparentCorners", - "backgroundImage", - ]), - ); - - history.push(state); - - if (history.length > maxHistory) { - history.shift(); - } - - updateButtons(); - } - - function undo() { - if (history.length <= 1) { - return; - } - - history.pop(); - const previousState = history[history.length - 1]; - - if (previousState) { - canvas.loadFromJSON(previousState, () => { - canvas.renderAll(); - updateLayersPanel(); - updateButtons(); - }); - } else { - console.warn("Nessuno stato precedente disponibile"); - canvas.clear(); - canvas.backgroundImage = null; - canvas.setBackgroundColor( - "#fff", - canvas.renderAll.bind(canvas), - ); - updateLayersPanel(); - updateButtons(); - } - } - - function updateButtons() { - const cropBtn = document.getElementById("cropImageBtn"); - const applyCropBtn = document.getElementById("applyCropBtn"); - const cancelCropBtn = document.getElementById("cancelCropBtn"); - const removeBackgroundBtn = document.getElementById( - "removeBackgroundBtn", - ); - const removeImageBtn = document.getElementById("removeImageBtn"); - const undoBtn = document.getElementById("undoBtn"); - const instruction = document.getElementById( - "backgroundRemovalInstruction", - ); - const activeObject = canvas.getActiveObject(); - if (isCropping && cropRect) { - cropBtn.disabled = true; - applyCropBtn.disabled = false; - cancelCropBtn.disabled = false; - removeBackgroundBtn.disabled = true; - removeImageBtn.disabled = true; - undoBtn.disabled = true; - instruction.style.display = "none"; - } else if (isRemovingBackground && backgroundRemovalImage) { - cropBtn.disabled = true; - applyCropBtn.disabled = true; - cancelCropBtn.disabled = true; - removeBackgroundBtn.disabled = true; - removeImageBtn.disabled = true; - undoBtn.disabled = true; - instruction.style.display = "block"; - } else if ( - activeObject && - activeObject.type === "image" && - !isCropping && - !isRemovingBackground - ) { - cropBtn.disabled = false; - applyCropBtn.disabled = true; - cancelCropBtn.disabled = true; - removeBackgroundBtn.disabled = false; - removeImageBtn.disabled = false; - undoBtn.disabled = history.length <= 1; - instruction.style.display = "none"; - } else { - cropBtn.disabled = true; - applyCropBtn.disabled = true; - cancelCropBtn.disabled = true; - removeBackgroundBtn.disabled = true; - removeImageBtn.disabled = true; - undoBtn.disabled = history.length <= 1; - instruction.style.display = "none"; - } - } - - function enterCropMode() { - const activeObject = canvas.getActiveObject(); - if (!activeObject || activeObject.type !== "image") { - console.warn("Nessuna immagine selezionata per il ritaglio"); - alert("Seleziona un'immagine prima di attivare il ritaglio!"); - return; - } - isCropping = true; - croppedImage = activeObject; - canvas.discardActiveObject(); - cropRect = new fabric.Rect({ - left: activeObject.left, - top: activeObject.top, - width: activeObject.width * activeObject.scaleX * 0.5, - height: activeObject.height * activeObject.scaleY * 0.5, - fill: "rgba(0, 0, 0, 0.3)", - stroke: "red", - strokeWidth: 2, - hasBorders: true, - hasControls: true, - lockRotation: true, - selectable: true, - cornerColor: "black", - cornerStrokeColor: "black", - cornerSize: 12, - borderColor: "black", - transparentCorners: false, - }); - canvas.add(cropRect); - canvas.setActiveObject(cropRect); - canvas.renderAll(); - updateButtons(); - } - - function exitCropMode() { - if (cropRect) { - canvas.remove(cropRect); - cropRect = null; - } - isCropping = false; - croppedImage = null; - isApplyingCrop = false; - canvas.discardActiveObject(); - canvas.renderAll(); - updateButtons(); - } - - function applyCrop() { - if (isApplyingCrop) { - return; - } - if (!isCropping || !cropRect || !croppedImage) { - console.warn("Condizioni per il ritaglio non soddisfatte", { - isCropping, - cropRect: !!cropRect, - croppedImage: !!croppedImage, - }); - alert( - "Nessun rettangolo di ritaglio attivo o immagine selezionata!", - ); - exitCropMode(); - return; - } - isApplyingCrop = true; - const img = croppedImage; - const cropX = (cropRect.left - img.left) / img.scaleX; - const cropY = (cropRect.top - img.top) / img.scaleY; - const cropWidth = (cropRect.width * cropRect.scaleX) / img.scaleX; - const cropHeight = (cropRect.height * cropRect.scaleY) / img.scaleY; - - fabric.Image.fromURL( - img.getSrc(), - (newImg) => { - newImg.set({ - left: cropRect.left, - top: cropRect.top, - scaleX: img.scaleX, - scaleY: img.scaleY, - cropX: cropX, - cropY: cropY, - width: cropWidth, - height: cropHeight, - hasControls: true, - hasBorders: true, - cornerColor: "black", - cornerStrokeColor: "black", - cornerSize: 12, - borderColor: "black", - transparentCorners: false, - }); - canvas.remove(img); - canvas.remove(cropRect); - canvas.add(newImg); - canvas.setActiveObject(newImg); - exitCropMode(); - saveCanvasState(); - updateLayersPanel(); - canvas.renderAll(); - }, - { crossOrigin: "anonymous" }, - ); - } - - function enterBackgroundRemovalMode() { - const activeObject = canvas.getActiveObject(); - if (!activeObject || activeObject.type !== "image") { - console.warn( - "Nessuna immagine selezionata per la rimozione dello sfondo", - ); - alert( - "Seleziona un'immagine prima di attivare la rimozione dello sfondo!", - ); - return; - } - isRemovingBackground = true; - backgroundRemovalImage = activeObject; - updateButtons(); - } - - function exitBackgroundRemovalMode() { - isRemovingBackground = false; - backgroundRemovalImage = null; - canvas.discardActiveObject(); - canvas.renderAll(); - updateButtons(); - } - - function handleBackgroundColorSelection(event) { - if (!isRemovingBackground || !backgroundRemovalImage) { - console.warn( - "Condizioni per la rimozione dello sfondo non soddisfatte", - ); - return; - } - const pointer = canvas.getPointer(event.e); - const img = backgroundRemovalImage; - - const tempCanvas = document.createElement("canvas"); - tempCanvas.width = img.width; - tempCanvas.height = img.height; - const ctx = tempCanvas.getContext("2d"); - ctx.drawImage(img.getElement(), 0, 0, img.width, img.height); - - const imgLeft = img.left; - const imgTop = img.top; - const scaleX = img.scaleX; - const scaleY = img.scaleY; - const x = (pointer.x - imgLeft) / scaleX; - const y = (pointer.y - imgTop) / scaleY; - - const pixelData = ctx.getImageData(x, y, 1, 1).data; - const targetColor = { - r: pixelData[0], - g: pixelData[1], - b: pixelData[2], - }; - - removeBackground(img, targetColor); - } - - function removeBackground(img, targetColor) { - const tempCanvas = document.createElement("canvas"); - tempCanvas.width = img.width; - tempCanvas.height = img.height; - const ctx = tempCanvas.getContext("2d"); - ctx.drawImage(img.getElement(), 0, 0, img.width, img.height); - - const imageData = ctx.getImageData( - 0, - 0, - tempCanvas.width, - tempCanvas.height, - ); - const data = imageData.data; - const tolerance = 50; - - for (let i = 0; i < data.length; i += 4) { - const r = data[i]; - const g = data[i + 1]; - const b = data[i + 2]; - if ( - Math.abs(r - targetColor.r) <= tolerance && - Math.abs(g - targetColor.g) <= tolerance && - Math.abs(b - targetColor.b) <= tolerance - ) { - data[i + 3] = 0; - } - } - - ctx.putImageData(imageData, 0, 0); - const newImageUrl = tempCanvas.toDataURL("image/png"); - - fabric.Image.fromURL( - newImageUrl, - (newImg) => { - newImg.set({ - left: img.left, - top: img.top, - scaleX: img.scaleX, - scaleY: img.scaleY, - hasControls: true, - hasBorders: true, - cornerColor: "black", - cornerStrokeColor: "black", - cornerSize: 12, - borderColor: "black", - transparentCorners: false, - }); - canvas.remove(img); - canvas.add(newImg); - canvas.setActiveObject(newImg); - exitBackgroundRemovalMode(); - saveCanvasState(); - updateLayersPanel(); - canvas.renderAll(); - }, - { crossOrigin: "anonymous" }, - ); - } - - function removeImage() { - const activeObject = canvas.getActiveObject(); - if (!activeObject || activeObject.type !== "image") { - console.warn("Nessuna immagine selezionata per la rimozione"); - alert("Seleziona un'immagine da rimuovere!"); - return; - } - canvas.remove(activeObject); - canvas.discardActiveObject(); - saveCanvasState(); - updateLayersPanel(); - canvas.renderAll(); - } - - function setCanvasBackground(imgPath) { - console.log("setCanvasBackground chiamata con:", imgPath); - - if (!canvas) { - console.error("Canvas non inizializzato"); - return; - } - - fabric.Image.fromURL( - imgPath, - (img) => { - const canvasWidth = canvas.getWidth(); - const canvasHeight = canvas.getHeight(); - - const imgWidth = img.width; - const imgHeight = img.height; - - if (!imgWidth || !imgHeight) { - alert( - "Impossibile leggere le dimensioni dell'immagine.", - ); - return; - } - - // Scale to cover: l'immagine copre tutto il canvas mantenendo il ratio - const scale = Math.max( - canvasWidth / imgWidth, - canvasHeight / imgHeight, - ); - - img.set({ - originX: "left", - originY: "top", - scaleX: scale, - scaleY: scale, - left: (canvasWidth - imgWidth * scale) / 2, - top: (canvasHeight - imgHeight * scale) / 2, - selectable: false, - evented: false, - hasControls: false, - hasBorders: false, - excludeFromExport: false, - }); - - canvas.setBackgroundImage(img, () => { - canvas.requestRenderAll(); - saveCanvasState(); - updateLayersPanel(); - updateButtons(); - }); - }, - { crossOrigin: "anonymous" }, - ); - } - - const addToCanvasBtn = document.getElementById("addToCanvasBtn"); - if (addToCanvasBtn) { - addToCanvasBtn.addEventListener("click", () => { - const checkboxes = document.querySelectorAll( - ".photo-checkbox:checked", - ); - if (checkboxes.length === 0) { - alert("Seleziona almeno una foto!"); - return; - } - checkboxes.forEach((cb) => { - const imgPath = cb.getAttribute("data-path"); - fabric.Image.fromURL( - imgPath, - (img) => { - img.set({ - left: Math.random() * 600, - top: Math.random() * 400, - scaleX: 0.5, - scaleY: 0.5, - hasControls: true, - hasBorders: true, - cornerColor: "black", - cornerStrokeColor: "black", - cornerSize: 12, - borderColor: "black", - transparentCorners: false, - }); - canvas.add(img); - canvas.renderAll(); - }, - { crossOrigin: "anonymous" }, - ); - }); - checkboxes.forEach((cb) => (cb.checked = false)); - saveCanvasState(); - }); - } - - const setBackgroundBtn = document.getElementById("setBackgroundBtn"); - if (setBackgroundBtn) { - setBackgroundBtn.addEventListener("click", () => { - const checkboxes = document.querySelectorAll( - ".photo-checkbox:checked", - ); - - if (checkboxes.length === 0) { - alert("Seleziona una foto da usare come sfondo!"); - return; - } - - if (checkboxes.length > 1) { - alert("Seleziona una sola foto per lo sfondo!"); - return; - } - - const imgPath = checkboxes[0].getAttribute("data-path"); - setCanvasBackground(imgPath); - - checkboxes.forEach((cb) => { - cb.checked = false; - }); - }); - } - - const saveCollageBtn = document.getElementById("saveCollageBtn"); - if (saveCollageBtn) { - saveCollageBtn.addEventListener("click", async () => { - if ( - canvas.getObjects().length === 0 && - !canvas.backgroundImage - ) { - alert("Il canvas è vuoto! Aggiungi almeno una foto."); - return; - } - const dataURL = canvas.toDataURL({ - format: "jpeg", - quality: 0.8, - }); - const blob = await (await fetch(dataURL)).blob(); - const file = new File([blob], `collage_${Date.now()}.jpg`, { - type: "image/jpeg", - }); - - await handleFiles([file], iddatadb, idquotations); - document.getElementById("collageModal").style.display = "none"; - loadPopupContent(iddatadb, idquotations); - }); - } - - const bringToFrontBtn = document.getElementById("bringToFrontBtn"); - if (bringToFrontBtn) { - bringToFrontBtn.addEventListener("click", () => { - const activeObject = canvas.getActiveObject(); - if (activeObject) { - canvas.bringToFront(activeObject); - canvas.renderAll(); - saveCanvasState(); - updateLayersPanel(); - } else { - alert("Seleziona un'immagine sul canvas!"); - } - }); - } - - const sendToBackBtn = document.getElementById("sendToBackBtn"); - if (sendToBackBtn) { - sendToBackBtn.addEventListener("click", () => { - const activeObject = canvas.getActiveObject(); - if (activeObject) { - canvas.sendToBack(activeObject); - canvas.renderAll(); - saveCanvasState(); - updateLayersPanel(); - } else { - alert("Seleziona un'immagine sul canvas!"); - } - }); - } - - const bringForwardBtn = document.getElementById("bringForwardBtn"); - if (bringForwardBtn) { - bringForwardBtn.addEventListener("click", () => { - const activeObject = canvas.getActiveObject(); - if (activeObject) { - canvas.bringForward(activeObject); - canvas.renderAll(); - saveCanvasState(); - updateLayersPanel(); - } else { - alert("Seleziona un'immagine sul canvas!"); - } - }); - } - - const sendBackwardBtn = document.getElementById("sendBackwardBtn"); - if (sendBackwardBtn) { - sendBackwardBtn.addEventListener("click", () => { - const activeObject = canvas.getActiveObject(); - if (activeObject) { - canvas.sendBackwards(activeObject); - canvas.renderAll(); - saveCanvasState(); - updateLayersPanel(); - } else { - alert("Seleziona un'immagine sul canvas!"); - } - }); - } - - const cropImageBtn = document.getElementById("cropImageBtn"); - if (cropImageBtn) { - cropImageBtn.addEventListener("click", () => { - enterCropMode(); - }); - } - - const applyCropBtn = document.getElementById("applyCropBtn"); - if (applyCropBtn) { - applyCropBtn.addEventListener("click", () => { - applyCrop(); - }); - } - - const cancelCropBtn = document.getElementById("cancelCropBtn"); - if (cancelCropBtn) { - cancelCropBtn.addEventListener("click", () => { - exitCropMode(); - }); - } - - const removeBackgroundBtn = document.getElementById( - "removeBackgroundBtn", - ); - if (removeBackgroundBtn) { - removeBackgroundBtn.addEventListener("click", () => { - enterBackgroundRemovalMode(); - }); - } - - const removeImageBtn = document.getElementById("removeImageBtn"); - if (removeImageBtn) { - removeImageBtn.addEventListener("click", () => { - removeImage(); - }); - } - - const undoBtn = document.getElementById("undoBtn"); - if (undoBtn) { - undoBtn.addEventListener("click", () => { - undo(); - }); - } - - const loader = document.getElementById("loader"); - if (loader) { - loader.style.display = "none"; - } - } - - const photosButtons = document.querySelectorAll(".photos-btn"); - const photosModal = document.getElementById("photosModal"); - const closeBtn = document.querySelector(".close-btn"); - - if (photosButtons.length && photosModal && closeBtn) { - photosButtons.forEach((button) => { - button.addEventListener("click", function () { - const iddatadb = this.getAttribute("data-iddatadb") || null; - const idquotations = - this.getAttribute("data-idquotations") || null; - console.log("Apertura modale foto con:", { - iddatadb, - idquotations, - }); - loadPopupContent(iddatadb, idquotations); - photosModal.style.display = "block"; - document.querySelector(".overlay").style.display = "none"; - }); - }); - - closeBtn.addEventListener("click", function () { - photosModal.style.display = "none"; - document.querySelector(".overlay").style.display = "none"; - document.body.style.pointerEvents = "auto"; - }); - - window.addEventListener("click", function (event) { - if (event.target === photosModal) { - photosModal.style.display = "none"; - document.querySelector(".overlay").style.display = "none"; - document.body.style.pointerEvents = "auto"; - } - }); - } else { - console.error("Elementi mancanti:", { - photosButtons, - photosModal, - closeBtn, - }); - } - - // Export for external use (gridData pages) - window.loadPopupContent = loadPopupContent; -}); diff --git a/public/userarea/photos_functions.php b/public/userarea/photos_functions.php deleted file mode 100644 index 9b684901..00000000 --- a/public/userarea/photos_functions.php +++ /dev/null @@ -1,68 +0,0 @@ - - -
              - × - -
              - \ No newline at end of file diff --git a/public/userarea/photos_popup.php b/public/userarea/photos_popup.php deleted file mode 100644 index 2ec45096..00000000 --- a/public/userarea/photos_popup.php +++ /dev/null @@ -1,547 +0,0 @@ - - - - -load(); -} catch (Exception $e) { - error_log("Errore nel caricamento del file .env: " . $e->getMessage()); -?> - - - -getConnection(); - -// Verifica che almeno uno degli ID sia passato -$iddatadb = isset($_GET['iddatadb']) && !empty($_GET['iddatadb']) ? intval($_GET['iddatadb']) : null; -$idquotations = isset($_GET['idquotations']) && !empty($_GET['idquotations']) ? intval($_GET['idquotations']) : null; - -if (!$iddatadb && !$idquotations) { - error_log("Errore: ID riga o ID quotations non fornito"); -?> - - - - prepare("SELECT {$paramName}, {$field} FROM {$table} WHERE {$paramName} = ?"); - $stmt->execute([$paramValue]); - $row = $stmt->fetch(PDO::FETCH_ASSOC); - - if (!$row) { - error_log("Errore: Riga non trovata per {$paramName} = {$paramValue}"); - ?> - - getMessage()); - ?> - -prepare(" - SELECT - id, - file_path, - file_name, - uploaded_at, - description, - StampaNelRapporto, - PrimaPagina - FROM {$photoTable} - WHERE {$photoParamName} = ? - ORDER BY uploaded_at DESC - "); - $stmt->execute([$paramValue]); - $photos = $stmt->fetchAll(PDO::FETCH_ASSOC); -} catch (Exception $e) { - error_log("Errore query foto: " . $e->getMessage()); - $photos = []; -} - -// Definisci il percorso base per le foto -$photoBasePath = '../photostrf/'; - -// Usa la variabile d'ambiente BASE_URL -$baseUrl = rtrim($_ENV['BASE_URL'], '/'); -$uploadUrl = $iddatadb - ? $baseUrl . "/upload_photos_mobile.php?iddatadb=" . $iddatadb - : $baseUrl . "/upload_photos_mobile.php?idquotations=" . $idquotations; - -// Genera il QR code con endroid/qr-code -$qrCodeDir = '../photostrf/qrcodes/'; -if (!is_dir($qrCodeDir)) { - mkdir($qrCodeDir, 0755, true); -} -$qrCodeFile = $qrCodeDir . "qrcode_{$id}.png"; - -$writer = new PngWriter(); -$qrCode = new QrCode( - data: $uploadUrl, - encoding: new Encoding('UTF-8'), - errorCorrectionLevel: ErrorCorrectionLevel::Low, - size: 150, - margin: 10, - roundBlockSizeMode: RoundBlockSizeMode::Margin, - foregroundColor: new Color(0, 0, 0), - backgroundColor: new Color(255, 255, 255) -); - -$result = $writer->write($qrCode); -$result->saveToFile($qrCodeFile); -?> - - - - \ No newline at end of file diff --git a/public/userarea/ping_lims_api.php b/public/userarea/ping_lims_api.php deleted file mode 100644 index ab020b05..00000000 --- a/public/userarea/ping_lims_api.php +++ /dev/null @@ -1,36 +0,0 @@ -get('Rapporto', [ - '$top' => 1, - '$select' => 'IdRapporto' - ]); - - $elapsed = round(microtime(true) - $start, 3); - - echo json_encode([ - 'success' => true, - 'elapsed_seconds' => $elapsed, - 'data' => $data - ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); -} catch (Exception $e) { - http_response_code(500); - - echo json_encode([ - 'success' => false, - 'error' => $e->getMessage() - ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); -} diff --git a/public/userarea/process_edit_template_xls.php b/public/userarea/process_edit_template_xls.php deleted file mode 100644 index e333d9ae..00000000 --- a/public/userarea/process_edit_template_xls.php +++ /dev/null @@ -1,156 +0,0 @@ - false, "message" => ""]; - -try { - if ($_SERVER["REQUEST_METHOD"] !== "POST") { - throw new Exception("Invalid request method."); - } - - // Retrieve and sanitize form data - $id = intval($_POST['id'] ?? 0); - $name = trim($_POST['name'] ?? ''); - $source_type = strtoupper(trim($_POST['source_type'] ?? 'XLS')); - - $header_row = isset($_POST['header_row']) && $_POST['header_row'] !== '' - ? intval($_POST['header_row']) - : null; - - $start_column = trim($_POST['start_column'] ?? ''); - - $xls_sheet_index = isset($_POST['xls_sheet_index']) && $_POST['xls_sheet_index'] !== '' - ? intval($_POST['xls_sheet_index']) - : 0; - - $api_config_id = isset($_POST['api_config_id']) && $_POST['api_config_id'] !== '' - ? intval($_POST['api_config_id']) - : null; - - $description = trim($_POST['description'] ?? ''); - $target_table = trim($_POST['target_table'] ?? 'datadb'); - $idclient = intval($_POST['client_id'] ?? 0); - $clientname = trim($_POST['client_name'] ?? ''); - $idschema = intval($_POST['idschema'] ?? 0); - $schemaname = trim($_POST['schemaname'] ?? ''); - $idroutine = isset($_POST['idroutine']) && $_POST['idroutine'] !== '' ? intval($_POST['idroutine']) : null; - $button_size = trim($_POST['button_size'] ?? 'medium'); - $button_bg_color = trim($_POST['button_bg_color'] ?? '#007bff'); - $button_text_color = trim($_POST['button_text_color'] ?? '#ffffff'); - $button_label = trim($_POST['button_label'] ?? 'Click Me'); - - // Allowed source types - if (!in_array($source_type, ['XLS', 'API', 'JSON', 'PDF'], true)) { - $source_type = 'XLS'; - } - - // Required fields validation - if ($id <= 0 || $name === '' || $target_table === '' || $idclient <= 0 || $idschema <= 0) { - throw new Exception("All fields marked with * are required, including client and schema."); - } - - // XLS-only validation - if ($source_type === 'XLS') { - if ($header_row === null || $header_row <= 0 || $start_column === '') { - throw new Exception("Header Row and Start Column are required for XLS templates."); - } - - if ($xls_sheet_index < 0) { - throw new Exception("XLS Sheet Number cannot be negative."); - } - - $api_config_id = null; - } - - // API/JSON validation - if ($source_type === 'API' || $source_type === 'JSON') { - if (empty($api_config_id)) { - throw new Exception("API/JSON configuration is required for API or JSON templates."); - } - - $header_row = null; - $start_column = null; - $xls_sheet_index = null; - } - - // PDF currently does not require XLS coordinates or API configuration - if ($source_type === 'PDF') { - $header_row = null; - $start_column = null; - $xls_sheet_index = null; - $api_config_id = null; - } - - // Database connection - $db = DBHandlerSelect::getInstance(); - $pdo = $db->getConnection(); - - // Optional check: verify API configuration exists and is active - if ($api_config_id !== null) { - $stmt = $pdo->prepare(" - SELECT COUNT(*) - FROM api_configurations - WHERE id = ? - AND is_active = 1 - "); - $stmt->execute([$api_config_id]); - - if ((int)$stmt->fetchColumn() === 0) { - throw new Exception("Selected API/JSON configuration does not exist or is not active."); - } - } - - // Update template - $stmt = $pdo->prepare(" - UPDATE excel_templates - SET - name = ?, - source_type = ?, - header_row = ?, - start_column = ?, - xls_sheet_index = ?, - api_config_id = ?, - description = ?, - target_table = ?, - idclient = ?, - clientname = ?, - schemaname = ?, - idschema = ?, - idroutine = ?, - button_size = ?, - button_bg_color = ?, - button_text_color = ?, - button_label = ?, - updated_at = NOW() - WHERE id = ? - "); - - $stmt->execute([ - $name, - $source_type, - $header_row, - $start_column, - $xls_sheet_index, - $api_config_id, - $description, - $target_table, - $idclient, - $clientname, - $schemaname, - $idschema, - $idroutine, - $button_size, - $button_bg_color, - $button_text_color, - $button_label, - $id - ]); - - $response["success"] = true; - $response["message"] = "Template updated successfully!"; -} catch (Exception $e) { - $response["message"] = $e->getMessage(); -} - -echo json_encode($response); diff --git a/public/userarea/process_import_xls.php b/public/userarea/process_import_xls.php deleted file mode 100644 index 6640ac5c..00000000 --- a/public/userarea/process_import_xls.php +++ /dev/null @@ -1,120 +0,0 @@ -safeLoad(); -date_default_timezone_set($_ENV['APP_TIMEZONE'] ?? 'Europe/Rome'); - -$response = ['error' => '', 'rows' => [], 'columns' => [], 'template_id' => 0, 'filename' => '']; - -try { - if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['excel_file'])) { - $template_id = isset($_POST['template_id']) ? intval($_POST['template_id']) : 0; - $header_row = isset($_POST['header_row']) ? intval($_POST['header_row']) : 1; - $start_column = isset($_POST['start_column']) ? intval($_POST['start_column']) : 1; - - $file = $_FILES['excel_file']; - $fileError = $file['error']; - - if ($fileError === UPLOAD_ERR_OK) { - // Recupera l'ID dell'utente loggato (assumiamo sia disponibile in $iduserlogin) - if (!isset($iduserlogin)) { - $iduserlogin = 1; // Valore di default - error_log("Warning: iduserlogin non definito, usando 1 come default"); - } - - // Genera il nome del file rinominato - $timestamp = date('YmdHis'); - $originalFilename = basename($file['name']); - $newFilename = "{$iduserlogin}-{$timestamp}-{$originalFilename}"; - $importFolder = __DIR__ . '/imported_trf/'; - if (!file_exists($importFolder)) { - mkdir($importFolder, 0777, true); - } - $destination = $importFolder . $newFilename; - - // Sposta il file - if (!move_uploaded_file($file['tmp_name'], $destination)) { - throw new Exception("Errore durante lo spostamento del file in $destination"); - } - error_log("File spostato con successo in: $destination"); - - // Carica il file rinominato con PHPSpreadsheet - $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($destination); - $worksheet = $spreadsheet->getActiveSheet(); - $highestRow = $worksheet->getHighestRow(); - $highestColumn = $worksheet->getHighestColumn(); - $highestColumnIndex = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn); - - $startRow = max(1, $header_row); - $startColumn = max(1, $start_column); - - // Debug dei parametri - error_log("Processing - startRow: $startRow, startColumn: $startColumn, highestRow: $highestRow, highestColumn: $highestColumn, highestColumnIndex: $highestColumnIndex"); - - // Validazione degli indici - if ($startRow > $highestRow) { - $response['error'] = "La riga di partenza ($startRow) supera il numero totale di righe ($highestRow)."; - } elseif ($startColumn > $highestColumnIndex) { - $response['error'] = "La colonna di partenza ($startColumn) supera il numero totale di colonne ($highestColumnIndex)."; - } else { - $excelData = []; - // Estrai la riga degli header - $headerRowData = []; - for ($col = $startColumn; $col <= $highestColumnIndex; $col++) { - $columnLetter = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($col); - $cell = $worksheet->getCell($columnLetter . $header_row); - $cellValue = $cell ? $cell->getCalculatedValue() : ''; // Usa getCalculatedValue per le formule - $headerRowData[] = $cellValue ?: ''; - } - - // Estrai i dati a partire dalla riga successiva - for ($row = $startRow + 1; $row <= $highestRow; $row++) { - $rowData = []; - for ($col = $startColumn; $col <= $highestColumnIndex; $col++) { - $columnLetter = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($col); - $cell = $worksheet->getCell($columnLetter . $row); - $cellValue = $cell ? $cell->getCalculatedValue() : ''; // Usa getCalculatedValue per le formule - $rowData[] = $cellValue ?: ''; - } - if (!empty(array_filter($rowData))) { - $excelData[] = $rowData; - } - } - - // Salva i dati in sessione - $_SESSION['excel_data'] = $excelData; - $_SESSION['template_id'] = $template_id; - $_SESSION['headers'] = $headerRowData; // Salva gli header in sessione - - $response['rows'] = $excelData; - $response['columns'] = $headerRowData; // Usa gli header reali - $response['template_id'] = $template_id; - $response['filename'] = $newFilename; // Aggiungi il nome del file rinominato - } - } else { - $response['error'] = "Errore nell'upload del file: Codice errore $fileError."; - } - } else { - $response['error'] = "Richiesta non valida."; - } -} catch (Exception $e) { - $response['error'] = "Errore durante il caricamento del file: " . $e->getMessage(); - error_log("Exception in process_import_xls.php: " . $e->getMessage()); -} - -// Pulisce qualsiasi output indesiderato -ob_end_clean(); - -// Invia la risposta JSON -header('Content-Type: application/json'); -echo json_encode($response); -exit; diff --git a/public/userarea/process_import_xls2.php b/public/userarea/process_import_xls2.php deleted file mode 100644 index 407ea08e..00000000 --- a/public/userarea/process_import_xls2.php +++ /dev/null @@ -1,392 +0,0 @@ - '', - 'rows' => [], - 'columns' => [], - 'template_id' => 0, - 'filename' => '', - 'apply_routine' => false -]; - -/** - * Converts a column value to a PhpSpreadsheet 1-based column index. - * Accepted values: - * - "A" => 1 - * - "B" => 2 - * - "AA" => 27 - * - "1" => 1 - * - 1 => 1 - */ -function normalizeColumnIndex($value): int -{ - $value = trim((string)$value); - - if ($value === '') { - return 1; - } - - if (ctype_digit($value)) { - return max(1, (int)$value); - } - - $value = strtoupper($value); - - if (preg_match('/^[A-Z]+$/', $value)) { - return Coordinate::columnIndexFromString($value); - } - - return 1; -} - -try { - if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['excel_file'])) { - $template_id = isset($_POST['template_id']) ? intval($_POST['template_id']) : 0; - - if ($template_id <= 0) { - throw new Exception("Template ID non valido."); - } - - // Connessione al database - $db = DBHandlerSelect::getInstance(); - $pdo = $db->getConnection(); - - /* - * Recuperiamo i parametri direttamente dal template. - * Così non dipendiamo solo dal form e siamo sicuri di usare i dati salvati. - */ - $stmt = $pdo->prepare(" - SELECT - id, - header_row, - start_column, - xls_sheet_index, - idroutine, - idclient - FROM excel_templates - WHERE id = ? - "); - $stmt->execute([$template_id]); - $template = $stmt->fetch(PDO::FETCH_ASSOC); - - if (!$template) { - throw new Exception("Template non trovato."); - } - - $header_row = isset($template['header_row']) && $template['header_row'] !== null - ? (int)$template['header_row'] - : 1; - - $start_column_raw = $template['start_column'] ?? 'A'; - $start_column = normalizeColumnIndex($start_column_raw); - - $xlsSheetIndex = isset($template['xls_sheet_index']) && $template['xls_sheet_index'] !== null - ? (int)$template['xls_sheet_index'] - : 0; - - if ($header_row <= 0) { - $header_row = 1; - } - - if ($xlsSheetIndex < 0) { - $xlsSheetIndex = 0; - } - - // Debug del template_id ricevuto - error_log("Received template_id from POST: " . print_r($_POST['template_id'], true)); - error_log("Converted template_id: $template_id"); - error_log("Template XLS settings - header_row: $header_row, start_column_raw: $start_column_raw, start_column_index: $start_column, xls_sheet_index: $xlsSheetIndex"); - - $file = $_FILES['excel_file']; - $fileError = $file['error']; - - if ($fileError === UPLOAD_ERR_OK) { - // Recupera l'ID dell'utente loggato - if (!isset($iduserlogin)) { - $iduserlogin = 1; - error_log("Warning: iduserlogin non definito, usando 1 come default"); - } - - // Genera il nome del file rinominato - $timestamp = date('YmdHis'); - $originalFilename = basename($file['name']); - $newFilename = "{$iduserlogin}-{$timestamp}-{$originalFilename}"; - $importFolder = __DIR__ . '/imported_trf/'; - - if (!file_exists($importFolder)) { - mkdir($importFolder, 0777, true); - } - - $destination = $importFolder . $newFilename; - - // Sposta il file - if (!move_uploaded_file($file['tmp_name'], $destination)) { - throw new Exception("Errore durante lo spostamento del file in $destination"); - } - - error_log("File spostato con successo in: $destination"); - - // Recupera il mapping da template_mapping - $stmt = $pdo->prepare(" - SELECT - field_id AS excel_column, - field_id AS mysql_column, - data_type, - is_required, - default_value, - is_manual - FROM template_mapping - WHERE template_id = ? - "); - $stmt->execute([$template_id]); - $mappings = $stmt->fetchAll(PDO::FETCH_ASSOC); - - // Debug dei mapping - error_log("Mappings found for template_id $template_id: " . print_r($mappings, true)); - - if (empty($mappings)) { - $response['error'] = "Nessun mapping trovato per il template con ID $template_id"; - } else { - // Carica il file rinominato con PHPSpreadsheet - $spreadsheet = IOFactory::load($destination); - - $sheetCount = $spreadsheet->getSheetCount(); - $sheetNames = $spreadsheet->getSheetNames(); - - if ($sheetCount <= 0) { - throw new Exception("Il file XLS non contiene fogli."); - } - - if ($xlsSheetIndex >= $sheetCount) { - throw new Exception( - "Il foglio XLS selezionato non esiste. " . - "Sheet Number selezionato: {$xlsSheetIndex}. " . - "Fogli disponibili: " . implode(", ", array_map( - fn($name, $index) => "{$index}={$name}", - $sheetNames, - array_keys($sheetNames) - )) - ); - } - - // Usa il foglio configurato nel template - $worksheet = $spreadsheet->getSheet($xlsSheetIndex); - $selectedSheetName = $worksheet->getTitle(); - - error_log("Selected XLS sheet - index: {$xlsSheetIndex}, name: {$selectedSheetName}"); - - $highestRow = $worksheet->getHighestRow(); - $highestColumn = $worksheet->getHighestColumn(); - $highestColumnIndex = Coordinate::columnIndexFromString($highestColumn); - - $startRow = max(1, $header_row); - $startColumn = max(1, $start_column); - - // Advance startColumn to first non-empty cell in header row, matching JS behavior - for ($sc = $startColumn; $sc <= $highestColumnIndex; $sc++) { - $cl = Coordinate::stringFromColumnIndex($sc); - $cv = trim((string)($worksheet->getCell($cl . $header_row)->getCalculatedValue() ?? '')); - - if ($cv !== '') { - $startColumn = $sc; - break; - } - } - - // Debug dei parametri - error_log( - "Processing - template_id: $template_id, " . - "sheetIndex: $xlsSheetIndex, sheetName: $selectedSheetName, " . - "startRow: $startRow, startColumn: $startColumn, " . - "highestRow: $highestRow, highestColumn: $highestColumn, highestColumnIndex: $highestColumnIndex" - ); - - // Validazione degli indici - if ($startRow > $highestRow) { - $response['error'] = "La riga di partenza ($startRow) supera il numero totale di righe ($highestRow) del foglio '$selectedSheetName'."; - } elseif ($startColumn > $highestColumnIndex) { - $response['error'] = "La colonna di partenza ($startColumn) supera il numero totale di colonne ($highestColumnIndex) del foglio '$selectedSheetName'."; - } else { - $excelData = []; - - // Build merge map for header row: physCol -> mergeStartCol - $mergeStartMap = []; - - foreach ($worksheet->getMergeCells() as $range) { - [$startCell, $endCell] = explode(':', $range); - - $mStartCol = Coordinate::columnIndexFromString(preg_replace('/\d+/', '', $startCell)); - $mEndCol = Coordinate::columnIndexFromString(preg_replace('/\d+/', '', $endCell)); - $mStartRow = (int)preg_replace('/[A-Z]+/i', '', $startCell); - $mEndRow = (int)preg_replace('/[A-Z]+/i', '', $endCell); - - if ($header_row >= $mStartRow && $header_row <= $mEndRow) { - for ($c = $mStartCol; $c <= $mEndCol; $c++) { - $mergeStartMap[$c] = $mStartCol; - } - } - } - - // Build logical columns: each merge = one column - $logicalCols = []; // array of physical column indices, one per logical column - $seen = []; - - for ($col = $startColumn; $col <= $highestColumnIndex; $col++) { - if (isset($mergeStartMap[$col])) { - $ms = $mergeStartMap[$col]; - - if (in_array($ms, $seen, true)) { - continue; - } - - $seen[] = $ms; - $logicalCols[] = $ms; - } else { - $logicalCols[] = $col; - } - } - - // Build header row using logical columns - $headerRowData = []; - $logicalNum = 0; - - foreach ($logicalCols as $physCol) { - $logicalNum++; - - $columnLetter = Coordinate::stringFromColumnIndex($physCol); - $cell = $worksheet->getCell($columnLetter . $header_row); - $cellValue = trim((string)($cell ? $cell->getCalculatedValue() : '')); - $cellValue = preg_replace('/[\r\n\t]+/', ' ', $cellValue); - - // Empty headers get __empty_N__ to match mapping page - $headerRowData[] = ($cellValue !== '') ? $cellValue : '__empty_' . $logicalNum . '__'; - } - - error_log("Logical headers: " . json_encode($headerRowData)); - error_log("Logical cols physical indices: " . json_encode($logicalCols)); - - // Find which logical columns have real headers - $headerFilledIndices = []; - - foreach ($headerRowData as $idx => $hVal) { - if (!str_starts_with($hVal, '__empty_')) { - $headerFilledIndices[] = $idx; - } - } - - $minFilled = max(1, min(2, count($headerFilledIndices))); - - // Extract data rows using logical columns - for ($row = $startRow + 1; $row <= $highestRow; $row++) { - $rowData = []; - - foreach ($logicalCols as $physCol) { - $columnLetter = Coordinate::stringFromColumnIndex($physCol); - $cell = $worksheet->getCell($columnLetter . $row); - $cellValue = $cell ? $cell->getCalculatedValue() : ''; - - $rowData[] = $cellValue ?: ''; - } - - // Count how many header columns have data in this row - $filledCount = 0; - - foreach ($headerFilledIndices as $idx) { - if (isset($rowData[$idx]) && trim((string)$rowData[$idx]) !== '') { - $filledCount++; - } - } - - if ($filledCount >= $minFilled) { - $excelData[] = [ - 'data' => $rowData, - 'excelrow' => $row - ]; - } - } - - // Recupera routine dal template - if ($template && !empty($template['idroutine'])) { - $stmtRoutine = $pdo->prepare(" - SELECT - idroutine, - name, - filename, - headerrow, - instruction - FROM routine - WHERE idroutine = ? - "); - $stmtRoutine->execute([$template['idroutine']]); - $routineData = $stmtRoutine->fetch(PDO::FETCH_ASSOC); - - if ($routineData) { - $response['apply_routine'] = true; - $response['routine_data'] = [ - 'name' => $routineData['name'] ?? 'Routine Sconosciuta', - 'instruction' => $routineData['instruction'] ?? 'Nessuna descrizione disponibile', - 'filename' => $routineData['filename'] ?? '', - 'headerrow' => $routineData['headerrow'] ?? $header_row - ]; - - error_log("Routine rilevata per template {$template_id}: " . print_r($routineData, true)); - } else { - error_log("Errore: Nessuna routine trovata per idroutine {$template['idroutine']}"); - } - } else { - error_log("Nessuna routine associata al template {$template_id}"); - } - - // Aggiungi idclient alla risposta - $response['idclient'] = $template['idclient'] ?? null; - - // Salva i dati in sessione - $_SESSION['excel_data'] = $excelData; - $_SESSION['template_id'] = $template_id; - $_SESSION['headers'] = $headerRowData; - $_SESSION['mappings'] = $mappings; - $_SESSION['xls_sheet_index'] = $xlsSheetIndex; - $_SESSION['xls_sheet_name'] = $selectedSheetName; - - // Includi excel_data nella risposta JSON in ogni caso - $response['excel_data'] = $excelData; - $response['rows'] = array_column($excelData, 'data'); - $response['columns'] = $headerRowData; - $response['template_id'] = $template_id; - $response['filename'] = $newFilename; - $response['xls_sheet_index'] = $xlsSheetIndex; - $response['xls_sheet_name'] = $selectedSheetName; - } - } - } else { - $response['error'] = "Errore nell'upload del file: Codice errore $fileError."; - } - } else { - $response['error'] = "Richiesta non valida."; - } -} catch (Exception $e) { - $response['error'] = "Errore durante il caricamento del file: " . $e->getMessage(); - error_log("Exception in process_import_xls2.php: " . $e->getMessage()); -} - -// Pulisce qualsiasi output indesiderato -ob_end_clean(); - -// Invia la risposta JSON -header('Content-Type: application/json'); -echo json_encode($response); -exit; diff --git a/public/userarea/process_insert_template_xls.php b/public/userarea/process_insert_template_xls.php deleted file mode 100644 index e2576567..00000000 --- a/public/userarea/process_insert_template_xls.php +++ /dev/null @@ -1,166 +0,0 @@ - false, "message" => ""]; - -try { - if ($_SERVER["REQUEST_METHOD"] !== "POST") { - throw new Exception("Invalid request method."); - } - - // Retrieve and sanitize form data - $name = trim($_POST['name'] ?? ''); - $source_type = strtoupper(trim($_POST['source_type'] ?? 'XLS')); - - $header_row = isset($_POST['header_row']) && $_POST['header_row'] !== '' - ? intval($_POST['header_row']) - : null; - - $start_column = trim($_POST['start_column'] ?? ''); - - $xls_sheet_index = isset($_POST['xls_sheet_index']) && $_POST['xls_sheet_index'] !== '' - ? intval($_POST['xls_sheet_index']) - : 0; - - $api_config_id = isset($_POST['api_config_id']) && $_POST['api_config_id'] !== '' - ? intval($_POST['api_config_id']) - : null; - - $description = trim($_POST['description'] ?? ''); - $target_table = trim($_POST['target_table'] ?? 'datadb'); - $idclient = intval($_POST['client_id'] ?? 0); - $clientname = trim($_POST['client_name'] ?? ''); - $idschema = intval($_POST['idschema'] ?? 0); - $schemaname = trim($_POST['schemaname'] ?? ''); - $idroutine = isset($_POST['idroutine']) && $_POST['idroutine'] !== '' - ? intval($_POST['idroutine']) - : null; - - $button_size = trim($_POST['button_size'] ?? 'medium'); - $button_bg_color = trim($_POST['button_bg_color'] ?? '#007bff'); - $button_text_color = trim($_POST['button_text_color'] ?? '#ffffff'); - $button_label = trim($_POST['button_label'] ?? 'Click Me'); - - // Normalize source type - // API / JSON is saved as API - if (!in_array($source_type, ['XLS', 'API', 'PDF'], true)) { - $source_type = 'XLS'; - } - - // Required fields validation - if ($name === '' || $target_table === '' || $idclient <= 0 || $idschema <= 0) { - throw new Exception("All fields marked with * are required, including client and schema."); - } - - // XLS-only validation - if ($source_type === 'XLS') { - if ($header_row === null || $header_row <= 0 || $start_column === '') { - throw new Exception("Header Row and Start Column are required for XLS templates."); - } - - if ($xls_sheet_index < 0) { - throw new Exception("XLS Sheet Number cannot be negative."); - } - - $api_config_id = null; - } - - // API / JSON validation - if ($source_type === 'API') { - if (empty($api_config_id)) { - throw new Exception("API / JSON configuration is required for API / JSON templates."); - } - - $header_row = null; - $start_column = null; - $xls_sheet_index = null; - } - - // PDF currently does not require XLS coordinates or API configuration - if ($source_type === 'PDF') { - $header_row = null; - $start_column = null; - $xls_sheet_index = null; - $api_config_id = null; - } - - // Database connection - $db = DBHandlerSelect::getInstance(); - $pdo = $db->getConnection(); - - // Optional check: verify API configuration exists and is active - if ($api_config_id !== null) { - $stmt = $pdo->prepare(" - SELECT COUNT(*) - FROM api_configurations - WHERE id = ? - AND is_active = 1 - "); - $stmt->execute([$api_config_id]); - - if ((int)$stmt->fetchColumn() === 0) { - throw new Exception("Selected API / JSON configuration does not exist or is not active."); - } - } - - // Insert the new template - $stmt = $pdo->prepare(" - INSERT INTO excel_templates - ( - name, - source_type, - header_row, - start_column, - xls_sheet_index, - api_config_id, - description, - target_table, - idclient, - clientname, - idschema, - schemaname, - idroutine, - button_size, - button_bg_color, - button_text_color, - button_label, - created_at, - updated_at - ) - VALUES - ( - ?, ?, ?, ?, ?, ?, - ?, ?, ?, ?, ?, ?, - ?, ?, ?, ?, ?, - NOW(), NOW() - ) - "); - - $stmt->execute([ - $name, - $source_type, - $header_row, - $start_column, - $xls_sheet_index, - $api_config_id, - $description, - $target_table, - $idclient, - $clientname, - $idschema, - $schemaname, - $idroutine, - $button_size, - $button_bg_color, - $button_text_color, - $button_label - ]); - - $response["success"] = true; - $response["message"] = "Template created successfully!"; -} catch (Exception $e) { - $response["message"] = $e->getMessage(); -} - -echo json_encode($response); diff --git a/public/userarea/quotations.php b/public/userarea/quotations.php deleted file mode 100644 index 067fe1c5..00000000 --- a/public/userarea/quotations.php +++ /dev/null @@ -1,887 +0,0 @@ -getConnection(); - -$user_id = $iduserlogin ?? 1; - -/** - * Helper redirect - */ -function redirectWithMessage($status, $message, $extraQuery = '') -{ - $url = 'quotations.php?status=' . urlencode($status) . '&message=' . urlencode($message); - - if ($extraQuery !== '') { - $url .= '&' . ltrim($extraQuery, '&'); - } - - header("Location: " . $url); - exit; -} - -/** - * CREATE quotation - * Ora description e customer vengono salvati subito dal modale. - */ -if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'create') { - $description = trim($_POST['description'] ?? ''); - $customer = trim($_POST['customer'] ?? ''); - - if ($description === '' || $customer === '') { - redirectWithMessage('error', 'Descrizione e Cliente sono obbligatori'); - } - - try { - $stmt = $pdo->prepare(" - INSERT INTO quotations - (description, customer, iduser) - VALUES - (?, ?, ?) - "); - - $success = $stmt->execute([ - $description, - $customer, - $user_id - ]); - - if ($success) { - $newId = $pdo->lastInsertId(); - error_log("Creata nuova quotation ID: " . $newId); - - redirectWithMessage('success', 'Quotation creata con successo'); - } - - error_log("Errore: impossibile creare la quotation"); - redirectWithMessage('error', 'Errore durante la creazione della quotation'); - } catch (PDOException $e) { - error_log("Errore PDO durante la creazione della quotation: " . $e->getMessage()); - redirectWithMessage('error', 'Errore database: ' . $e->getMessage()); - } -} - -/** - * UPDATE quotation - * Gestisce sia form normale sia salvataggio inline AJAX. - */ -if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'update' && isset($_POST['id'])) { - $id = intval($_POST['id']); - $description = trim($_POST['description'] ?? ''); - $customer = trim($_POST['customer'] ?? ''); - $isAjax = isset($_POST['ajax']) && $_POST['ajax'] === '1'; - - if ($description === '' || $customer === '') { - if ($isAjax) { - header('Content-Type: application/json'); - echo json_encode([ - 'success' => false, - 'message' => 'Descrizione e Cliente sono obbligatori' - ]); - exit; - } - - redirectWithMessage('error', 'Descrizione e Cliente sono obbligatori'); - } - - try { - $stmt = $pdo->prepare(" - UPDATE quotations - SET description = ?, customer = ? - WHERE id = ? AND iduser = ? - "); - - $stmt->execute([ - $description, - $customer, - $id, - $user_id - ]); - - error_log("Modificata quotation ID: " . $id); - - if ($isAjax) { - header('Content-Type: application/json'); - echo json_encode([ - 'success' => true, - 'message' => 'Quotation modificata con successo' - ]); - exit; - } - - redirectWithMessage('success', 'Quotation modificata con successo'); - } catch (PDOException $e) { - error_log("Errore PDO durante la modifica della quotation: " . $e->getMessage()); - - if ($isAjax) { - header('Content-Type: application/json'); - echo json_encode([ - 'success' => false, - 'message' => 'Errore database: ' . $e->getMessage() - ]); - exit; - } - - redirectWithMessage('error', 'Errore database: ' . $e->getMessage()); - } -} - -/** - * DELETE quotation - */ -if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'delete' && isset($_POST['id'])) { - $id = intval($_POST['id']); - - try { - $stmt = $pdo->prepare(" - DELETE FROM quotations - WHERE id = ? AND iduser = ? - "); - - $stmt->execute([ - $id, - $user_id - ]); - - error_log("Cancellata quotation ID: " . $id); - - redirectWithMessage('success', 'Quotation cancellata con successo'); - } catch (PDOException $e) { - error_log("Errore PDO durante la cancellazione della quotation: " . $e->getMessage()); - redirectWithMessage('error', 'Errore database: ' . $e->getMessage()); - } -} - -/** - * Recupera tutte le quotations dell'utente. - * Ultima creata in alto. - */ -try { - $stmt = $pdo->prepare(" - SELECT * - FROM quotations - WHERE iduser = ? - ORDER BY creation_date DESC, id DESC - "); - - $stmt->execute([ - $user_id - ]); - - $quotations = $stmt->fetchAll(PDO::FETCH_ASSOC); -} catch (PDOException $e) { - error_log("Errore PDO durante il recupero delle quotations: " . $e->getMessage()); - $quotations = []; -} - -/** - * Recupera quotation in modifica dettagliata - */ -$editQuotation = null; - -if (isset($_GET['edit_id'])) { - $editId = intval($_GET['edit_id']); - - try { - $stmt = $pdo->prepare(" - SELECT * - FROM quotations - WHERE id = ? AND iduser = ? - "); - - $stmt->execute([ - $editId, - $user_id - ]); - - $editQuotation = $stmt->fetch(PDO::FETCH_ASSOC); - - if (!$editQuotation) { - error_log("Nessuna quotation trovata per id: " . $editId); - } - } catch (PDOException $e) { - error_log("Errore PDO durante il recupero della quotation per modifica: " . $e->getMessage()); - $editQuotation = null; - } -} -?> - - - - - - - - - - - - - - - - - - - Gestione Quotations - <?= htmlspecialchars($titlewebsite, ENT_QUOTES, 'UTF-8'); ?> - - - -
              - - - -
              -
              -
              -
              -
              -
              -
              Gestione Quotations
              -
              - - - - -
              -
              - -
              - - -
              - -
              - - - - -
              - Modifica Quotation ID: -
              - -
              - - - -
              - - -
              - -
              - - -
              - - - - - Torna alla Lista - -
              - -
              -
              Azioni
              - - - - -
              - - - -
              Quotations Esistenti
              - - - - - - - - - - - - - - $row): ?> - - - - - - - - - - - - - -
              IDData CreazioneDescrizioneClienteAzioni
              - - - - - - - - - - - - - - - -
              - - - -
              -
              -
              -
              - - - - - - - -
              - - - - - - -
              - -
              -
              - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/userarea/rapporto_espanso_response.json b/public/userarea/rapporto_espanso_response.json deleted file mode 100644 index 28d03eb4..00000000 --- a/public/userarea/rapporto_espanso_response.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "@odata.context": "https:\/\/93.43.5.102\/limsapi\/api\/odata\/$metadata#Rapporto\/$entity", - "IdRapporto": 515081, - "DataUltimaModifica": "2025-05-14T18:11:21.02+02:00", - "DaLeggere": false, - "CodiceRapporto": "2523026", - "Data": "2025-05-14T14:05:30+02:00", - "Versione": 0, - "DataStampa": "2025-05-14T14:11:00+02:00", - "Firmato": true -} \ No newline at end of file diff --git a/public/userarea/rapporto_expanded.json b/public/userarea/rapporto_expanded.json deleted file mode 100644 index c30e0538..00000000 --- a/public/userarea/rapporto_expanded.json +++ /dev/null @@ -1,13340 +0,0 @@ -{ - "@odata.context": "https://93.43.5.102/limsapi/api/odata/$metadata#Rapporto(CampioniDatiRapporto(AnalisiDatiRapporto(),CustomFieldsDatiRapporto()))/$entity", - "IdRapporto": 515081, - "DataUltimaModifica": "2025-05-14T18:11:21.02+02:00", - "DaLeggere": false, - "CodiceRapporto": "2523026", - "Data": "2025-05-14T14:05:30+02:00", - "Versione": 0, - "DataStampa": "2025-05-14T14:11:00+02:00", - "Firmato": true, - "CampioniDatiRapporto": [ - { - "IdCampioneDatiRapporto": 651935, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed /\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": null, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-13T00:00:00+02:00", - "CodiceCampione": "2523026.04", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28370998, - "CodiceParametro": null, - "CodiceCas": "84-74-2", - "ParametroRapporto": "Dibutyl Phthalate (DBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:22+02:00", - "FineAnalisi": "2025-05-12T10:33:16+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28370999, - "CodiceParametro": null, - "CodiceCas": "85-68-7", - "ParametroRapporto": "Butyl Benzil Phthalate (BBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:22+02:00", - "FineAnalisi": "2025-05-12T10:33:16+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28370994, - "CodiceParametro": null, - "CodiceCas": "117-81-7", - "ParametroRapporto": "Bis-2-Etylhexyl Phthalate (DEHP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:22+02:00", - "FineAnalisi": "2025-05-12T10:33:16+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28370996, - "CodiceParametro": null, - "CodiceCas": "117-84-0", - "ParametroRapporto": "Di-n-octyll Phthalate (DnOP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:22+02:00", - "FineAnalisi": "2025-05-12T10:33:16+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28371001, - "CodiceParametro": null, - "CodiceCas": "68515-49-1", - "ParametroRapporto": "Di-iso-decil Phthalate (DIDP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:22+02:00", - "FineAnalisi": "2025-05-12T10:33:16+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28371000, - "CodiceParametro": null, - "CodiceCas": "68515-48-0", - "ParametroRapporto": "Di-iso-nonyl Phthalate (DINP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:22+02:00", - "FineAnalisi": "2025-05-12T10:33:16+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28370995, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Sum of all Phthalates", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": null, - "LimiteQuantificazione": null, - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:22+02:00", - "FineAnalisi": "2025-05-12T10:33:16+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28371025, - "CodiceParametro": null, - "CodiceCas": "92-67-1", - "ParametroRapporto": "4-Aminobiphenyl", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "(1)", - "CommentoFisso": "If the use of this analytical method has detected 4-aminodiphenyl and/or 2-naphtylamine, according to the current state of knowledge it cannot be unequivocally confirmed without additional information that azo colorants which release amines were used.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371007, - "CodiceParametro": null, - "CodiceCas": "92-87-5", - "ParametroRapporto": "Benzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371010, - "CodiceParametro": null, - "CodiceCas": "95-69-2", - "ParametroRapporto": "4-Chloro-o-toluidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371015, - "CodiceParametro": null, - "CodiceCas": "91-59-8", - "ParametroRapporto": "2-Naphthylamine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "(1)", - "CommentoFisso": "If the use of this analytical method has detected 4-aminodiphenyl and/or 2-naphtylamine, according to the current state of knowledge it cannot be unequivocally confirmed without additional information that azo colorants which release amines were used.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371019, - "CodiceParametro": null, - "CodiceCas": "97-56-3", - "ParametroRapporto": "o-Aminoazotoluene ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371018, - "CodiceParametro": null, - "CodiceCas": "99-55-8", - "ParametroRapporto": "5-nitro-o-toluidine ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371023, - "CodiceParametro": null, - "CodiceCas": "106-47-8", - "ParametroRapporto": "4-Chloroaniline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371020, - "CodiceParametro": null, - "CodiceCas": "615-05-04", - "ParametroRapporto": "4-methoxy-m-phenylenediamine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371004, - "CodiceParametro": null, - "CodiceCas": "101-77-9", - "ParametroRapporto": "4,4'-methylenedianiline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "MDA", - "CommentoFisso": "\nIn case of polyurethane materials are used, e.g. PU foams and coatings and in prints, it cannot be ruled out that certain amines, e.g. 4,4'-methylene-dianiline (MDA, CAS number 101-77-9) are released from the PU component and not from a banned azo colorant.\r\nIn case of pigment prints care has to be taken that 4,4'-methylene-dianiline is not released from a source of banned azo colorants but from e.g. a chemical fixing agent.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371013, - "CodiceParametro": null, - "CodiceCas": "91-94-1", - "ParametroRapporto": "3,3'-Dichlorobenzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371016, - "CodiceParametro": null, - "CodiceCas": "119-90-4", - "ParametroRapporto": "3,3'-Dimethoxybenzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371027, - "CodiceParametro": null, - "CodiceCas": "119-93-7", - "ParametroRapporto": "3,3'-Dimethylbenzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371017, - "CodiceParametro": null, - "CodiceCas": "838-88-0", - "ParametroRapporto": "4,4'-methylenedi-o-toluidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371024, - "CodiceParametro": null, - "CodiceCas": "120-71-8", - "ParametroRapporto": "p-cresidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371005, - "CodiceParametro": null, - "CodiceCas": "101-14-4", - "ParametroRapporto": "4-4'-Methylene-bis-(2-chloroaniline)", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371008, - "CodiceParametro": null, - "CodiceCas": "101-80-4", - "ParametroRapporto": "4-4'-Oxydianiline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371009, - "CodiceParametro": null, - "CodiceCas": "139-65-1", - "ParametroRapporto": "4-4'-Thiodianiline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371022, - "CodiceParametro": null, - "CodiceCas": "95-53-4", - "ParametroRapporto": "o-Toluidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371021, - "CodiceParametro": null, - "CodiceCas": "95-80-7", - "ParametroRapporto": "4-methyl-m-phenylenediamine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "TDA", - "CommentoFisso": "In case of polyurethane materials are used, e.g. PU foams and coatings and in prints, it cannot be ruled out that certain amines, e.g. 2,4-toluen-diamine (TDA, CAS 95-80-7) are released from the PU component and not from a banned azo colorant.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371026, - "CodiceParametro": null, - "CodiceCas": "137-17-7", - "ParametroRapporto": "2,4,5-Trimethylaniline ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371014, - "CodiceParametro": null, - "CodiceCas": "90-04-0", - "ParametroRapporto": "o-anisidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371012, - "CodiceParametro": null, - "CodiceCas": "60-09-3", - "ParametroRapporto": "4-Aminoazobenzene", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371011, - "CodiceParametro": null, - "CodiceCas": "95-68-1", - "ParametroRapporto": "2,4- Xylidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28371006, - "CodiceParametro": null, - "CodiceCas": "87-62-7", - "ParametroRapporto": "2,6-Xylidine ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:20+02:00", - "FineAnalisi": "2025-05-12T14:40:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28370992, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Dioctyl tin (DOT)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of Organotin Compounds in footwear materials\r\n- Test Method:\r\nISO/TS 16179: 2012", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,2", - "LimiteQuantificazione": "0,2", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:21+02:00", - "FineAnalisi": "2025-05-13T10:19:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16179_Organotin compounds (DOT)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28371002, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Dimethylfumarate (DMFu)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Test method to quantitatively determine Dimethylfumarate (DMFu) in footwear materials\r\n- Test Method:\r\nISO 16186: 2021", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,05", - "LimiteQuantificazione": "0,05", - "LimitiDiLegge": "<=0,1", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-12T10:07:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16186_DMFu_Da caricare su 2 MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=0,1" - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27925192, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27925193, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27925194, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27925195, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27925196, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27925197, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27925198, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27925199, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27925200, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27925201, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27925205, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27925206, - "Titolo": "Tested Component:", - "Valore": "MIX LACES + TEXTILE TONGUE", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27925207, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27925208, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27925209, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27925210, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27925211, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27925224, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27925225, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27925235, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27925236, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27925237, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27925238, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27925239, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27925240, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27925244, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27925245, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - }, - { - "IdCampioneDatiRapporto": 651912, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed /\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": 810, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-12T00:00:00+02:00", - "CodiceCampione": "2523026.01", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28332143, - "CodiceParametro": null, - "CodiceCas": "84-74-2", - "ParametroRapporto": "Dibutyl Phthalate (DBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:16+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332144, - "CodiceParametro": null, - "CodiceCas": "85-68-7", - "ParametroRapporto": "Butyl Benzil Phthalate (BBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:16+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332139, - "CodiceParametro": null, - "CodiceCas": "117-81-7", - "ParametroRapporto": "Bis-2-Etylhexyl Phthalate (DEHP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:16+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332141, - "CodiceParametro": null, - "CodiceCas": "117-84-0", - "ParametroRapporto": "Di-n-octyll Phthalate (DnOP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:16+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332146, - "CodiceParametro": null, - "CodiceCas": "68515-49-1", - "ParametroRapporto": "Di-iso-decil Phthalate (DIDP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:16+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332145, - "CodiceParametro": null, - "CodiceCas": "68515-48-0", - "ParametroRapporto": "Di-iso-nonyl Phthalate (DINP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:16+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332140, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Sum of all Phthalates", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": null, - "LimiteQuantificazione": null, - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:16+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332147, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Dioctyl tin (DOT)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of Organotin Compounds in footwear materials\r\n- Test Method:\r\nISO/TS 16179: 2012", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,2", - "LimiteQuantificazione": "0,2", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:15+02:00", - "FineAnalisi": "2025-05-12T10:42:41+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16179_Organotin compounds (DOT)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27924018, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27924019, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27924020, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27924021, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27924022, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27924023, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27924024, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27924025, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27924026, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27924027, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27924031, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27924032, - "Titolo": "Tested Component:", - "Valore": "MIX OF GREEN PART OF SOLE, WHITE PART OF SOLE AND WHITE OUTERSOLE", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27924033, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27924034, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27924035, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27924036, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27924037, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27924050, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27924051, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27924061, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27924062, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27924063, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27924064, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27924065, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27924066, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27924070, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27924071, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - }, - { - "IdCampioneDatiRapporto": 651931, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed /\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": null, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-12T00:00:00+02:00", - "CodiceCampione": "2523026.02", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28332665, - "CodiceParametro": null, - "CodiceCas": "84-74-2", - "ParametroRapporto": "Dibutyl Phthalate (DBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:18+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332666, - "CodiceParametro": null, - "CodiceCas": "85-68-7", - "ParametroRapporto": "Butyl Benzil Phthalate (BBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:18+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332661, - "CodiceParametro": null, - "CodiceCas": "117-81-7", - "ParametroRapporto": "Bis-2-Etylhexyl Phthalate (DEHP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:18+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332663, - "CodiceParametro": null, - "CodiceCas": "117-84-0", - "ParametroRapporto": "Di-n-octyll Phthalate (DnOP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:18+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332668, - "CodiceParametro": null, - "CodiceCas": "68515-49-1", - "ParametroRapporto": "Di-iso-decil Phthalate (DIDP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:18+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332667, - "CodiceParametro": null, - "CodiceCas": "68515-48-0", - "ParametroRapporto": "Di-iso-nonyl Phthalate (DINP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:18+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332662, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Sum of all Phthalates", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": null, - "LimiteQuantificazione": null, - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:18+02:00", - "FineAnalisi": "2025-05-12T08:17:38+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332669, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Dioctyl tin (DOT)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of Organotin Compounds in footwear materials\r\n- Test Method:\r\nISO/TS 16179: 2012", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,2", - "LimiteQuantificazione": "0,2", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:17+02:00", - "FineAnalisi": "2025-05-12T10:44:02+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16179_Organotin compounds (DOT)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27924985, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27924986, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27924987, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27924988, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27924989, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27924990, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27924991, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27924992, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27924993, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27924994, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27924998, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27924999, - "Titolo": "Tested Component:", - "Valore": "MIX OF BLACK PART OF SOLE, CARBON FIBER AND WHITE BACK PART OF SOLE", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27925000, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27925001, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27925002, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27925003, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27925004, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27925017, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27925018, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27925028, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27925029, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27925030, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27925031, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27925032, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27925033, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27925037, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27925038, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - }, - { - "IdCampioneDatiRapporto": 651933, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed /\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": null, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-13T00:00:00+02:00", - "CodiceCampione": "2523026.03", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28332698, - "CodiceParametro": null, - "CodiceCas": "84-74-2", - "ParametroRapporto": "Dibutyl Phthalate (DBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:19+02:00", - "FineAnalisi": "2025-05-12T08:17:39+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332699, - "CodiceParametro": null, - "CodiceCas": "85-68-7", - "ParametroRapporto": "Butyl Benzil Phthalate (BBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:19+02:00", - "FineAnalisi": "2025-05-12T08:17:39+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332697, - "CodiceParametro": null, - "CodiceCas": "117-81-7", - "ParametroRapporto": "Bis-2-Etylhexyl Phthalate (DEHP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:19+02:00", - "FineAnalisi": "2025-05-12T08:17:39+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332703, - "CodiceParametro": null, - "CodiceCas": "117-84-0", - "ParametroRapporto": "Di-n-octyll Phthalate (DnOP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:19+02:00", - "FineAnalisi": "2025-05-12T08:17:39+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332701, - "CodiceParametro": null, - "CodiceCas": "68515-49-1", - "ParametroRapporto": "Di-iso-decil Phthalate (DIDP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:19+02:00", - "FineAnalisi": "2025-05-12T08:17:39+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332700, - "CodiceParametro": null, - "CodiceCas": "68515-48-0", - "ParametroRapporto": "Di-iso-nonyl Phthalate (DINP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:19+02:00", - "FineAnalisi": "2025-05-12T08:17:39+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332702, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Sum of all Phthalates", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": null, - "LimiteQuantificazione": null, - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:19+02:00", - "FineAnalisi": "2025-05-12T08:17:39+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332738, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Dioctyl tin (DOT)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of Organotin Compounds in footwear materials\r\n- Test Method:\r\nISO/TS 16179: 2012", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,2", - "LimiteQuantificazione": "0,2", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:19+02:00", - "FineAnalisi": "2025-05-13T10:36:34+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16179_Organotin compounds (DOT)_Da caricare su singolo componente_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27925096, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27925097, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27925098, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27925099, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27925100, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27925101, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27925102, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27925103, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27925104, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27925105, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27925109, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27925110, - "Titolo": "Tested Component:", - "Valore": "YELLOW VIBRAM LOGO ON SOLE", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27925111, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27925112, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27925113, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27925114, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27925115, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27925128, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27925129, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27925139, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27925140, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27925141, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27925142, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27925143, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27925144, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27925148, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27925149, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - }, - { - "IdCampioneDatiRapporto": 651939, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed /\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": null, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-13T00:00:00+02:00", - "CodiceCampione": "2523026.06", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28333037, - "CodiceParametro": null, - "CodiceCas": "92-67-1", - "ParametroRapporto": "4-Aminobiphenyl", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "(1)", - "CommentoFisso": "If the use of this analytical method has detected 4-aminodiphenyl and/or 2-naphtylamine, according to the current state of knowledge it cannot be unequivocally confirmed without additional information that azo colorants which release amines were used.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333032, - "CodiceParametro": null, - "CodiceCas": "92-87-5", - "ParametroRapporto": "Benzidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333031, - "CodiceParametro": null, - "CodiceCas": "95-69-2", - "ParametroRapporto": "4-Chloro-o-toluidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333053, - "CodiceParametro": null, - "CodiceCas": "91-59-8", - "ParametroRapporto": "2-Naphthylamine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "(1)", - "CommentoFisso": "If the use of this analytical method has detected 4-aminodiphenyl and/or 2-naphtylamine, according to the current state of knowledge it cannot be unequivocally confirmed without additional information that azo colorants which release amines were used.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333033, - "CodiceParametro": null, - "CodiceCas": "97-56-3", - "ParametroRapporto": "o-Aminoazotoluene ", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333051, - "CodiceParametro": null, - "CodiceCas": "99-55-8", - "ParametroRapporto": "5-nitro-o-toluidine ", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333035, - "CodiceParametro": null, - "CodiceCas": "106-47-8", - "ParametroRapporto": "4-Chloroaniline", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333030, - "CodiceParametro": null, - "CodiceCas": "615-05-04", - "ParametroRapporto": "4-methoxy-m-phenylenediamine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333040, - "CodiceParametro": null, - "CodiceCas": "101-77-9", - "ParametroRapporto": "4,4'-methylenedianiline", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "MDA", - "CommentoFisso": "\nIn case of polyurethane materials are used, e.g. PU foams and coatings and in prints, it cannot be ruled out that certain amines, e.g. 4,4'-methylene-dianiline (MDA, CAS number 101-77-9) are released from the PU component and not from a banned azo colorant.\r\nIn case of pigment prints care has to be taken that 4,4'-methylene-dianiline is not released from a source of banned azo colorants but from e.g. a chemical fixing agent.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333048, - "CodiceParametro": null, - "CodiceCas": "91-94-1", - "ParametroRapporto": "3,3'-Dichlorobenzidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333046, - "CodiceParametro": null, - "CodiceCas": "119-90-4", - "ParametroRapporto": "3,3'-Dimethoxybenzidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333039, - "CodiceParametro": null, - "CodiceCas": "119-93-7", - "ParametroRapporto": "3,3'-Dimethylbenzidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333047, - "CodiceParametro": null, - "CodiceCas": "838-88-0", - "ParametroRapporto": "4,4'-methylenedi-o-toluidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333036, - "CodiceParametro": null, - "CodiceCas": "120-71-8", - "ParametroRapporto": "p-cresidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333042, - "CodiceParametro": null, - "CodiceCas": "101-14-4", - "ParametroRapporto": "4-4'-Methylene-bis-(2-chloroaniline)", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333043, - "CodiceParametro": null, - "CodiceCas": "101-80-4", - "ParametroRapporto": "4-4'-Oxydianiline", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333044, - "CodiceParametro": null, - "CodiceCas": "139-65-1", - "ParametroRapporto": "4-4'-Thiodianiline", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333034, - "CodiceParametro": null, - "CodiceCas": "95-53-4", - "ParametroRapporto": "o-Toluidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333049, - "CodiceParametro": null, - "CodiceCas": "95-80-7", - "ParametroRapporto": "4-methyl-m-phenylenediamine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "TDA", - "CommentoFisso": "In case of polyurethane materials are used, e.g. PU foams and coatings and in prints, it cannot be ruled out that certain amines, e.g. 2,4-toluen-diamine (TDA, CAS 95-80-7) are released from the PU component and not from a banned azo colorant.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333029, - "CodiceParametro": null, - "CodiceCas": "137-17-7", - "ParametroRapporto": "2,4,5-Trimethylaniline ", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333052, - "CodiceParametro": null, - "CodiceCas": "90-04-0", - "ParametroRapporto": "o-anisidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333045, - "CodiceParametro": null, - "CodiceCas": "60-09-3", - "ParametroRapporto": "4-Aminoazobenzene", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333038, - "CodiceParametro": null, - "CodiceCas": "95-68-1", - "ParametroRapporto": "2,4- Xylidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333050, - "CodiceParametro": null, - "CodiceCas": "87-62-7", - "ParametroRapporto": "2,6-Xylidine ", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:27+02:00", - "FineAnalisi": "2025-05-13T17:04:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333058, - "CodiceParametro": null, - "CodiceCas": "84-74-2", - "ParametroRapporto": "Dibutyl Phthalate (DBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:29+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333059, - "CodiceParametro": null, - "CodiceCas": "85-68-7", - "ParametroRapporto": "Butyl Benzil Phthalate (BBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:29+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333054, - "CodiceParametro": null, - "CodiceCas": "117-81-7", - "ParametroRapporto": "Bis-2-Etylhexyl Phthalate (DEHP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:29+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333056, - "CodiceParametro": null, - "CodiceCas": "117-84-0", - "ParametroRapporto": "Di-n-octyll Phthalate (DnOP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:29+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333061, - "CodiceParametro": null, - "CodiceCas": "68515-49-1", - "ParametroRapporto": "Di-iso-decil Phthalate (DIDP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:29+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333060, - "CodiceParametro": null, - "CodiceCas": "68515-48-0", - "ParametroRapporto": "Di-iso-nonyl Phthalate (DINP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:29+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333055, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Sum of all Phthalates", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": null, - "LimiteQuantificazione": null, - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:29+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333062, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Dioctyl tin (DOT)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of Organotin Compounds in footwear materials\r\n- Test Method:\r\nISO/TS 16179: 2012", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,2", - "LimiteQuantificazione": "0,2", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:26+02:00", - "FineAnalisi": "2025-05-12T14:07:05+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16179_Organotin compounds (DOT)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333064, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Dimethylfumarate (DMFu)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Test method to quantitatively determine Dimethylfumarate (DMFu) in footwear materials\r\n- Test Method:\r\nISO 16186: 2021", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,05", - "LimiteQuantificazione": "0,05", - "LimitiDiLegge": "<=0,1", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:28+02:00", - "FineAnalisi": "2025-05-12T10:07:20+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16186_DMFu_Da caricare su 2 MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=0,1" - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27925414, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27925415, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27925416, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27925417, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27925418, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27925419, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27925420, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27925421, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27925422, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27925423, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27925427, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27925428, - "Titolo": "Tested Component:", - "Valore": "MIX OF GREEN SUEDE UPPER AND GREEN TOE CAP", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27925429, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27925430, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27925431, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27925432, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27925433, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27925446, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27925447, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27925457, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27925458, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27925459, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27925460, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27925461, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27925462, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27925466, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27925467, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - }, - { - "IdCampioneDatiRapporto": 651942, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed /\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": null, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-14T00:00:00+02:00", - "CodiceCampione": "2523026.07", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28333247, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Chromium [Cr VI]", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Chemical determination of chromium (VI) content in leather - Part 2: Chromatographic method\r\n-Test Method:\r\nISO 17075-2: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Inorg", - "Reparto": "Analytical_Inorganic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "3,0", - "LimiteQuantificazione": "3,0", - "LimitiDiLegge": "<=3", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "CrVI", - "CommentoFisso": "The official method establishes the quantification limit for Chromium VI at 3 mg / kg. At this concentration, the uncertainty of the method was estimated to be 50%.\r\nFor this reason, any number below 3 mg/kg could be affected by an uncertainty equal to or greater than that estimated at the quantification limit declared by the method.\r\nThe laboratory has performed the calculation of the recovery, as required by the method, and makes available the result if required.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:29+02:00", - "FineAnalisi": "2025-05-14T12:29:33+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17075-2_Cr VI_Da caricare su singolo componente_Prezzo compreso", - "LimitiDiLeggeStampa": "<=3" - }, - { - "IdAnalisiDatoRapporto": 28333248, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Volatile Matter", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "%", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of volatile matter\r\n- Test Method:\r\nISO 4684: 2005", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Inorg", - "Reparto": "Analytical_Inorganic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "9,5", - "RisultatoPositivo": true, - "MinimoRilevabile": "0,5", - "LimiteQuantificazione": "0,5", - "LimitiDiLegge": null, - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "\u00b10,3", - "IncertezzaStampaNumerica": 0.3, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "4684", - "CommentoFisso": "The execution of the test is needed to express some chemical tests. This parameter is not limited by legislations and Pass or Fail is indicated only when a requirement is showed in Customer's documents (ref to Requirements section Denomination).", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:30+02:00", - "FineAnalisi": "2025-05-13T09:58:58+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "9,5", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17075-2_Cr VI_Da caricare su singolo componente_Prezzo compreso", - "LimitiDiLeggeStampa": null - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27925569, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27925570, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27925571, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27925572, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27925573, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27925574, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27925575, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27925576, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27925577, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27925578, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27925582, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27925583, - "Titolo": "Tested Component:", - "Valore": "GREEN SUEDE UPPER", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27925584, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27925585, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27925586, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27925587, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27925588, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27925601, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27925602, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27925612, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27925613, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27925614, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27925615, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27925616, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27925617, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27925621, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27925622, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - }, - { - "IdCampioneDatiRapporto": 651938, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed /\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": null, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-13T00:00:00+02:00", - "CodiceCampione": "2523026.05", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28332958, - "CodiceParametro": null, - "CodiceCas": "92-67-1", - "ParametroRapporto": "4-Aminobiphenyl", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "(1)", - "CommentoFisso": "If the use of this analytical method has detected 4-aminodiphenyl and/or 2-naphtylamine, according to the current state of knowledge it cannot be unequivocally confirmed without additional information that azo colorants which release amines were used.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332940, - "CodiceParametro": null, - "CodiceCas": "92-87-5", - "ParametroRapporto": "Benzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332943, - "CodiceParametro": null, - "CodiceCas": "95-69-2", - "ParametroRapporto": "4-Chloro-o-toluidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332948, - "CodiceParametro": null, - "CodiceCas": "91-59-8", - "ParametroRapporto": "2-Naphthylamine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "(1)", - "CommentoFisso": "If the use of this analytical method has detected 4-aminodiphenyl and/or 2-naphtylamine, according to the current state of knowledge it cannot be unequivocally confirmed without additional information that azo colorants which release amines were used.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332952, - "CodiceParametro": null, - "CodiceCas": "97-56-3", - "ParametroRapporto": "o-Aminoazotoluene ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332951, - "CodiceParametro": null, - "CodiceCas": "99-55-8", - "ParametroRapporto": "5-nitro-o-toluidine ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332956, - "CodiceParametro": null, - "CodiceCas": "106-47-8", - "ParametroRapporto": "4-Chloroaniline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332953, - "CodiceParametro": null, - "CodiceCas": "615-05-04", - "ParametroRapporto": "4-methoxy-m-phenylenediamine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332937, - "CodiceParametro": null, - "CodiceCas": "101-77-9", - "ParametroRapporto": "4,4'-methylenedianiline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "MDA", - "CommentoFisso": "\nIn case of polyurethane materials are used, e.g. PU foams and coatings and in prints, it cannot be ruled out that certain amines, e.g. 4,4'-methylene-dianiline (MDA, CAS number 101-77-9) are released from the PU component and not from a banned azo colorant.\r\nIn case of pigment prints care has to be taken that 4,4'-methylene-dianiline is not released from a source of banned azo colorants but from e.g. a chemical fixing agent.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332946, - "CodiceParametro": null, - "CodiceCas": "91-94-1", - "ParametroRapporto": "3,3'-Dichlorobenzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332949, - "CodiceParametro": null, - "CodiceCas": "119-90-4", - "ParametroRapporto": "3,3'-Dimethoxybenzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332960, - "CodiceParametro": null, - "CodiceCas": "119-93-7", - "ParametroRapporto": "3,3'-Dimethylbenzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332950, - "CodiceParametro": null, - "CodiceCas": "838-88-0", - "ParametroRapporto": "4,4'-methylenedi-o-toluidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332957, - "CodiceParametro": null, - "CodiceCas": "120-71-8", - "ParametroRapporto": "p-cresidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332938, - "CodiceParametro": null, - "CodiceCas": "101-14-4", - "ParametroRapporto": "4-4'-Methylene-bis-(2-chloroaniline)", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332941, - "CodiceParametro": null, - "CodiceCas": "101-80-4", - "ParametroRapporto": "4-4'-Oxydianiline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332942, - "CodiceParametro": null, - "CodiceCas": "139-65-1", - "ParametroRapporto": "4-4'-Thiodianiline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332955, - "CodiceParametro": null, - "CodiceCas": "95-53-4", - "ParametroRapporto": "o-Toluidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332954, - "CodiceParametro": null, - "CodiceCas": "95-80-7", - "ParametroRapporto": "4-methyl-m-phenylenediamine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "TDA", - "CommentoFisso": "In case of polyurethane materials are used, e.g. PU foams and coatings and in prints, it cannot be ruled out that certain amines, e.g. 2,4-toluen-diamine (TDA, CAS 95-80-7) are released from the PU component and not from a banned azo colorant.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332959, - "CodiceParametro": null, - "CodiceCas": "137-17-7", - "ParametroRapporto": "2,4,5-Trimethylaniline ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332947, - "CodiceParametro": null, - "CodiceCas": "90-04-0", - "ParametroRapporto": "o-anisidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332945, - "CodiceParametro": null, - "CodiceCas": "60-09-3", - "ParametroRapporto": "4-Aminoazobenzene", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332944, - "CodiceParametro": null, - "CodiceCas": "95-68-1", - "ParametroRapporto": "2,4- Xylidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332939, - "CodiceParametro": null, - "CodiceCas": "87-62-7", - "ParametroRapporto": "2,6-Xylidine ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:23+02:00", - "FineAnalisi": "2025-05-13T17:13:27+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28332966, - "CodiceParametro": null, - "CodiceCas": "84-74-2", - "ParametroRapporto": "Dibutyl Phthalate (DBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:25+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332967, - "CodiceParametro": null, - "CodiceCas": "85-68-7", - "ParametroRapporto": "Butyl Benzil Phthalate (BBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:25+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332962, - "CodiceParametro": null, - "CodiceCas": "117-81-7", - "ParametroRapporto": "Bis-2-Etylhexyl Phthalate (DEHP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:25+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332964, - "CodiceParametro": null, - "CodiceCas": "117-84-0", - "ParametroRapporto": "Di-n-octyll Phthalate (DnOP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:25+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332969, - "CodiceParametro": null, - "CodiceCas": "68515-49-1", - "ParametroRapporto": "Di-iso-decil Phthalate (DIDP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:25+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332968, - "CodiceParametro": null, - "CodiceCas": "68515-48-0", - "ParametroRapporto": "Di-iso-nonyl Phthalate (DINP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:25+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332963, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Sum of all Phthalates", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": null, - "LimiteQuantificazione": null, - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:25+02:00", - "FineAnalisi": "2025-05-12T10:33:17+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332970, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Dioctyl tin (DOT)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of Organotin Compounds in footwear materials\r\n- Test Method:\r\nISO/TS 16179: 2012", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,2", - "LimiteQuantificazione": "0,2", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:24+02:00", - "FineAnalisi": "2025-05-13T12:43:52+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16179_Organotin compounds (DOT)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28332972, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Dimethylfumarate (DMFu)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Test method to quantitatively determine Dimethylfumarate (DMFu) in footwear materials\r\n- Test Method:\r\nISO 16186: 2021", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,05", - "LimiteQuantificazione": "0,05", - "LimitiDiLegge": "<=0,1", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:25+02:00", - "FineAnalisi": "2025-05-12T10:07:19+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16186_DMFu_Da caricare su 2 MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=0,1" - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27925360, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27925361, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27925362, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27925363, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27925364, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27925365, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27925366, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27925367, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27925368, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27925369, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27925373, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27925374, - "Titolo": "Tested Component:", - "Valore": "MIX OF GREEN LATERAL BAND AND GREEN UPPER BAND", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27925375, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27925376, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27925377, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27925378, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27925379, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27925392, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27925393, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27925403, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27925404, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27925405, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27925406, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27925407, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27925408, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27925412, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27925413, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - }, - { - "IdCampioneDatiRapporto": 651943, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed /\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": null, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-14T00:00:00+02:00", - "CodiceCampione": "2523026.08", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28333249, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Chromium [Cr VI]", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Chemical determination of chromium (VI) content in leather - Part 2: Chromatographic method\r\n-Test Method:\r\nISO 17075-2: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Inorg", - "Reparto": "Analytical_Inorganic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "3,0", - "LimiteQuantificazione": "3,0", - "LimitiDiLegge": "<=3", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "CrVI", - "CommentoFisso": "The official method establishes the quantification limit for Chromium VI at 3 mg / kg. At this concentration, the uncertainty of the method was estimated to be 50%.\r\nFor this reason, any number below 3 mg/kg could be affected by an uncertainty equal to or greater than that estimated at the quantification limit declared by the method.\r\nThe laboratory has performed the calculation of the recovery, as required by the method, and makes available the result if required.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:31+02:00", - "FineAnalisi": "2025-05-14T12:29:29+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17075-2_Cr VI_Da caricare su singolo componente_Prezzo compreso", - "LimitiDiLeggeStampa": "<=3" - }, - { - "IdAnalisiDatoRapporto": 28333250, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Volatile Matter", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "%", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of volatile matter\r\n- Test Method:\r\nISO 4684: 2005", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Inorg", - "Reparto": "Analytical_Inorganic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "9,7", - "RisultatoPositivo": true, - "MinimoRilevabile": "0,5", - "LimiteQuantificazione": "0,5", - "LimitiDiLegge": null, - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "\u00b10,3", - "IncertezzaStampaNumerica": 0.3, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "4684", - "CommentoFisso": "The execution of the test is needed to express some chemical tests. This parameter is not limited by legislations and Pass or Fail is indicated only when a requirement is showed in Customer's documents (ref to Requirements section Denomination).", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:32+02:00", - "FineAnalisi": "2025-05-13T09:58:58+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "9,7", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17075-2_Cr VI_Da caricare su singolo componente_Prezzo compreso", - "LimitiDiLeggeStampa": null - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27925623, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27925624, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27925625, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27925626, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27925627, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27925628, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27925629, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27925630, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27925631, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27925632, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27925636, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27925637, - "Titolo": "Tested Component:", - "Valore": "GREEN TOE CAP", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27925638, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27925639, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27925640, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27925641, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27925642, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27925655, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27925656, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27925666, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27925667, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27925668, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27925669, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27925670, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27925671, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27925675, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27925676, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - }, - { - "IdCampioneDatiRapporto": 651945, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed /\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": null, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-13T00:00:00+02:00", - "CodiceCampione": "2523026.09", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28333072, - "CodiceParametro": null, - "CodiceCas": "84-74-2", - "ParametroRapporto": "Dibutyl Phthalate (DBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:33+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333073, - "CodiceParametro": null, - "CodiceCas": "85-68-7", - "ParametroRapporto": "Butyl Benzil Phthalate (BBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:33+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333068, - "CodiceParametro": null, - "CodiceCas": "117-81-7", - "ParametroRapporto": "Bis-2-Etylhexyl Phthalate (DEHP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:33+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333070, - "CodiceParametro": null, - "CodiceCas": "117-84-0", - "ParametroRapporto": "Di-n-octyll Phthalate (DnOP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:33+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333075, - "CodiceParametro": null, - "CodiceCas": "68515-49-1", - "ParametroRapporto": "Di-iso-decil Phthalate (DIDP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:33+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333074, - "CodiceParametro": null, - "CodiceCas": "68515-48-0", - "ParametroRapporto": "Di-iso-nonyl Phthalate (DINP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:33+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333069, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Sum of all Phthalates", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": null, - "LimiteQuantificazione": null, - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:33+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333076, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Dioctyl tin (DOT)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of Organotin Compounds in footwear materials\r\n- Test Method:\r\nISO/TS 16179: 2012", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,2", - "LimiteQuantificazione": "0,2", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:32+02:00", - "FineAnalisi": "2025-05-13T10:36:34+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16179_Organotin compounds (DOT)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27925736, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27925737, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27925738, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27925739, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27925740, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27925741, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27925742, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27925743, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27925744, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27925745, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27925749, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27925750, - "Titolo": "Tested Component:", - "Valore": "MIX OF GREEN EYELET AND PLASTIC END OF LACES", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27925751, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27925752, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27925753, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27925754, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27925755, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27925768, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27925769, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27925779, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27925780, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27925781, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27925782, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27925783, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27925784, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27925788, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27925789, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - }, - { - "IdCampioneDatiRapporto": 651946, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed /\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": null, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-13T00:00:00+02:00", - "CodiceCampione": "2523026.10", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28333099, - "CodiceParametro": null, - "CodiceCas": "92-67-1", - "ParametroRapporto": "4-Aminobiphenyl", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "(1)", - "CommentoFisso": "If the use of this analytical method has detected 4-aminodiphenyl and/or 2-naphtylamine, according to the current state of knowledge it cannot be unequivocally confirmed without additional information that azo colorants which release amines were used.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333081, - "CodiceParametro": null, - "CodiceCas": "92-87-5", - "ParametroRapporto": "Benzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333084, - "CodiceParametro": null, - "CodiceCas": "95-69-2", - "ParametroRapporto": "4-Chloro-o-toluidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333089, - "CodiceParametro": null, - "CodiceCas": "91-59-8", - "ParametroRapporto": "2-Naphthylamine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "(1)", - "CommentoFisso": "If the use of this analytical method has detected 4-aminodiphenyl and/or 2-naphtylamine, according to the current state of knowledge it cannot be unequivocally confirmed without additional information that azo colorants which release amines were used.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333093, - "CodiceParametro": null, - "CodiceCas": "97-56-3", - "ParametroRapporto": "o-Aminoazotoluene ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333092, - "CodiceParametro": null, - "CodiceCas": "99-55-8", - "ParametroRapporto": "5-nitro-o-toluidine ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333097, - "CodiceParametro": null, - "CodiceCas": "106-47-8", - "ParametroRapporto": "4-Chloroaniline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333094, - "CodiceParametro": null, - "CodiceCas": "615-05-04", - "ParametroRapporto": "4-methoxy-m-phenylenediamine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333078, - "CodiceParametro": null, - "CodiceCas": "101-77-9", - "ParametroRapporto": "4,4'-methylenedianiline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "MDA", - "CommentoFisso": "\nIn case of polyurethane materials are used, e.g. PU foams and coatings and in prints, it cannot be ruled out that certain amines, e.g. 4,4'-methylene-dianiline (MDA, CAS number 101-77-9) are released from the PU component and not from a banned azo colorant.\r\nIn case of pigment prints care has to be taken that 4,4'-methylene-dianiline is not released from a source of banned azo colorants but from e.g. a chemical fixing agent.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333087, - "CodiceParametro": null, - "CodiceCas": "91-94-1", - "ParametroRapporto": "3,3'-Dichlorobenzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333090, - "CodiceParametro": null, - "CodiceCas": "119-90-4", - "ParametroRapporto": "3,3'-Dimethoxybenzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333101, - "CodiceParametro": null, - "CodiceCas": "119-93-7", - "ParametroRapporto": "3,3'-Dimethylbenzidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333091, - "CodiceParametro": null, - "CodiceCas": "838-88-0", - "ParametroRapporto": "4,4'-methylenedi-o-toluidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333098, - "CodiceParametro": null, - "CodiceCas": "120-71-8", - "ParametroRapporto": "p-cresidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333079, - "CodiceParametro": null, - "CodiceCas": "101-14-4", - "ParametroRapporto": "4-4'-Methylene-bis-(2-chloroaniline)", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333082, - "CodiceParametro": null, - "CodiceCas": "101-80-4", - "ParametroRapporto": "4-4'-Oxydianiline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333083, - "CodiceParametro": null, - "CodiceCas": "139-65-1", - "ParametroRapporto": "4-4'-Thiodianiline", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333096, - "CodiceParametro": null, - "CodiceCas": "95-53-4", - "ParametroRapporto": "o-Toluidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333095, - "CodiceParametro": null, - "CodiceCas": "95-80-7", - "ParametroRapporto": "4-methyl-m-phenylenediamine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "TDA", - "CommentoFisso": "In case of polyurethane materials are used, e.g. PU foams and coatings and in prints, it cannot be ruled out that certain amines, e.g. 2,4-toluen-diamine (TDA, CAS 95-80-7) are released from the PU component and not from a banned azo colorant.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333100, - "CodiceParametro": null, - "CodiceCas": "137-17-7", - "ParametroRapporto": "2,4,5-Trimethylaniline ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333088, - "CodiceParametro": null, - "CodiceCas": "90-04-0", - "ParametroRapporto": "o-anisidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333086, - "CodiceParametro": null, - "CodiceCas": "60-09-3", - "ParametroRapporto": "4-Aminoazobenzene", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333085, - "CodiceParametro": null, - "CodiceCas": "95-68-1", - "ParametroRapporto": "2,4- Xylidine", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333080, - "CodiceParametro": null, - "CodiceCas": "87-62-7", - "ParametroRapporto": "2,6-Xylidine ", - "CodiceGruppo": "0022...", - "GruppoRapporto": "Aromatic amines derived from azodyes on fabric", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Textiles - Methods for determination of certain aromatic amines derived from azo colorants \r\nPart 1: Detection of the use of certain Azo colorants accessible with and without extracting the fibres\r\n- Test Method: \r\nUNI EN ISO 14362-1: 2017", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:34+02:00", - "FineAnalisi": "2025-05-13T17:13:28+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 14362-1_Azo (tessile)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27925790, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27925791, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27925792, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27925793, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27925794, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27925795, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27925796, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27925797, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27925798, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27925799, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27925803, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27925804, - "Titolo": "Tested Component:", - "Valore": "MIX OF GREEN LOOP OF LACES AND BACK LITLLE FLAG LABEL", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27925805, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27925806, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27925807, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27925808, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27925809, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27925822, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27925823, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27925833, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27925834, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27925835, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27925836, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27925837, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27925838, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27925842, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27925843, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - }, - { - "IdCampioneDatiRapporto": 651947, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed /\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": null, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-13T00:00:00+02:00", - "CodiceCampione": "2523026.11", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28333118, - "CodiceParametro": null, - "CodiceCas": "92-67-1", - "ParametroRapporto": "4-Aminobiphenyl", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "(1)", - "CommentoFisso": "If the use of this analytical method has detected 4-aminodiphenyl and/or 2-naphtylamine, according to the current state of knowledge it cannot be unequivocally confirmed without additional information that azo colorants which release amines were used.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333113, - "CodiceParametro": null, - "CodiceCas": "92-87-5", - "ParametroRapporto": "Benzidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333112, - "CodiceParametro": null, - "CodiceCas": "95-69-2", - "ParametroRapporto": "4-Chloro-o-toluidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333134, - "CodiceParametro": null, - "CodiceCas": "91-59-8", - "ParametroRapporto": "2-Naphthylamine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "(1)", - "CommentoFisso": "If the use of this analytical method has detected 4-aminodiphenyl and/or 2-naphtylamine, according to the current state of knowledge it cannot be unequivocally confirmed without additional information that azo colorants which release amines were used.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333114, - "CodiceParametro": null, - "CodiceCas": "97-56-3", - "ParametroRapporto": "o-Aminoazotoluene ", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333132, - "CodiceParametro": null, - "CodiceCas": "99-55-8", - "ParametroRapporto": "5-nitro-o-toluidine ", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333116, - "CodiceParametro": null, - "CodiceCas": "106-47-8", - "ParametroRapporto": "4-Chloroaniline", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333111, - "CodiceParametro": null, - "CodiceCas": "615-05-04", - "ParametroRapporto": "4-methoxy-m-phenylenediamine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333121, - "CodiceParametro": null, - "CodiceCas": "101-77-9", - "ParametroRapporto": "4,4'-methylenedianiline", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "MDA", - "CommentoFisso": "\nIn case of polyurethane materials are used, e.g. PU foams and coatings and in prints, it cannot be ruled out that certain amines, e.g. 4,4'-methylene-dianiline (MDA, CAS number 101-77-9) are released from the PU component and not from a banned azo colorant.\r\nIn case of pigment prints care has to be taken that 4,4'-methylene-dianiline is not released from a source of banned azo colorants but from e.g. a chemical fixing agent.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333129, - "CodiceParametro": null, - "CodiceCas": "91-94-1", - "ParametroRapporto": "3,3'-Dichlorobenzidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333127, - "CodiceParametro": null, - "CodiceCas": "119-90-4", - "ParametroRapporto": "3,3'-Dimethoxybenzidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333120, - "CodiceParametro": null, - "CodiceCas": "119-93-7", - "ParametroRapporto": "3,3'-Dimethylbenzidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333128, - "CodiceParametro": null, - "CodiceCas": "838-88-0", - "ParametroRapporto": "4,4'-methylenedi-o-toluidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333117, - "CodiceParametro": null, - "CodiceCas": "120-71-8", - "ParametroRapporto": "p-cresidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333123, - "CodiceParametro": null, - "CodiceCas": "101-14-4", - "ParametroRapporto": "4-4'-Methylene-bis-(2-chloroaniline)", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333124, - "CodiceParametro": null, - "CodiceCas": "101-80-4", - "ParametroRapporto": "4-4'-Oxydianiline", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333125, - "CodiceParametro": null, - "CodiceCas": "139-65-1", - "ParametroRapporto": "4-4'-Thiodianiline", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333115, - "CodiceParametro": null, - "CodiceCas": "95-53-4", - "ParametroRapporto": "o-Toluidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333130, - "CodiceParametro": null, - "CodiceCas": "95-80-7", - "ParametroRapporto": "4-methyl-m-phenylenediamine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": "TDA", - "CommentoFisso": "In case of polyurethane materials are used, e.g. PU foams and coatings and in prints, it cannot be ruled out that certain amines, e.g. 2,4-toluen-diamine (TDA, CAS 95-80-7) are released from the PU component and not from a banned azo colorant.", - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333110, - "CodiceParametro": null, - "CodiceCas": "137-17-7", - "ParametroRapporto": "2,4,5-Trimethylaniline ", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333133, - "CodiceParametro": null, - "CodiceCas": "90-04-0", - "ParametroRapporto": "o-anisidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333126, - "CodiceParametro": null, - "CodiceCas": "60-09-3", - "ParametroRapporto": "4-Aminoazobenzene", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333119, - "CodiceParametro": null, - "CodiceCas": "95-68-1", - "ParametroRapporto": "2,4- Xylidine", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333131, - "CodiceParametro": null, - "CodiceCas": "87-62-7", - "ParametroRapporto": "2,6-Xylidine ", - "CodiceGruppo": "0022", - "GruppoRapporto": "Aromatic amines derived from azodyes on leather", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of certain AZO colorants in dyed leathers.\r\nPart 1: Determination of certain aromatic amines derived from azo colorants \r\n- Test Method:\r\nISO 17234-1: 2024", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "5", - "LimiteQuantificazione": "5", - "LimitiDiLegge": "<=30", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-13T17:04:36+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 17234-1_Azo (pelle)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=30" - }, - { - "IdAnalisiDatoRapporto": 28333171, - "CodiceParametro": null, - "CodiceCas": "84-74-2", - "ParametroRapporto": "Dibutyl Phthalate (DBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:36+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333172, - "CodiceParametro": null, - "CodiceCas": "85-68-7", - "ParametroRapporto": "Butyl Benzil Phthalate (BBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:36+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333167, - "CodiceParametro": null, - "CodiceCas": "117-81-7", - "ParametroRapporto": "Bis-2-Etylhexyl Phthalate (DEHP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:36+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333169, - "CodiceParametro": null, - "CodiceCas": "117-84-0", - "ParametroRapporto": "Di-n-octyll Phthalate (DnOP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:36+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333174, - "CodiceParametro": null, - "CodiceCas": "68515-49-1", - "ParametroRapporto": "Di-iso-decil Phthalate (DIDP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:36+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333173, - "CodiceParametro": null, - "CodiceCas": "68515-48-0", - "ParametroRapporto": "Di-iso-nonyl Phthalate (DINP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:36+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333168, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Sum of all Phthalates", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": null, - "LimiteQuantificazione": null, - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:36+02:00", - "FineAnalisi": "2025-05-12T10:33:18+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su MIX (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333175, - "CodiceParametro": null, - "CodiceCas": "NA", - "ParametroRapporto": "Dioctyl tin (DOT)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determination of Organotin Compounds in footwear materials\r\n- Test Method:\r\nISO/TS 16179: 2012", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,2", - "LimiteQuantificazione": "0,2", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:35+02:00", - "FineAnalisi": "2025-05-13T10:36:35+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16179_Organotin compounds (DOT)_Da caricare su MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28333177, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Dimethylfumarate (DMFu)", - "CodiceGruppo": null, - "GruppoRapporto": null, - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Test method to quantitatively determine Dimethylfumarate (DMFu) in footwear materials\r\n- Test Method:\r\nISO 16186: 2021", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "0,05", - "LimiteQuantificazione": "0,05", - "LimitiDiLegge": "<=0,1", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": true, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:35+02:00", - "FineAnalisi": "2025-05-12T10:07:20+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "ISO 16186_DMFu_Da caricare su 2 MIX_Prezzo compreso", - "LimitiDiLeggeStampa": "<=0,1" - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27925844, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27925845, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27925846, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27925847, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27925848, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27925849, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27925850, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27925851, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27925852, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27925853, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27925857, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27925858, - "Titolo": "Tested Component:", - "Valore": "MIX OF INSOLE AND LINING", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27925859, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27925860, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27925861, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27925862, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27925863, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27925876, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27925877, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27925887, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27925888, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27925889, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27925890, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27925891, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27925892, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27925896, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27925897, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - }, - { - "IdCampioneDatiRapporto": 652180, - "DataAccettazione": "2025-05-06T00:00:00+02:00", - "DataCampione": "2025-05-06T00:00:00+02:00", - "NotaEmendamento": null, - "LegendaStampeCompagnia": null, - "LegendaAccreditamentoCompagnia": null, - "Riferimento": "Analyses purchased by Moncler Compliance_CB\r\nSeason 20251\r\nSample Code: K109B4M00140M6019\r\nSample Description TRAILGRIP LITE2\r\nColour Code: 80T\r\nStyle Code: K109B4M00140M6019\r\nStyle Description: TRAILGRIP LITE2\r\nCDC FP-ACC\r\nComposition Claimed /\r\nCollection: P\r\nRequirements: According to Turkey's customs regulations\r\nCategory: Adult\r\nApplication: Footwear\r\nType of Material: Shoe\r\nVendor: STELLA INTL TRADING (M.C.O.) LTD\r\nMONCLER\r\nRequested Tests: Turkey Shoes/Bags Package\r\nDelivery Note: NOT PROVIDED\r\nSampling: done by the client \r\nSample preparation for chemical tests: the leather sample is ground as requested in method UNI EN ISO 4044:2017 (when required in the test method).", - "NoteRapporto": null, - "GiudizioRapporto": null, - "GiudizioCertificato": null, - "LegendaStampeCompagniaCampione": null, - "LegendaAccreditamentoCompagniaCampione": null, - "NoteSegreteria": null, - "StatoCampione": "StampatoRapporto", - "StatoCampioneWeb": "Stampato Rapporto", - "DataInizioAnalisiCampione": "2025-05-07T00:00:00+02:00", - "DataFineAnalisiCampione": "2025-05-14T00:00:00+02:00", - "CodiceRapportoPrecedente": null, - "VersioneRapportoPrecedente": null, - "DataRapportoPrecedente": null, - "CodicePrimoRapporto": "2523026", - "DataPrimoRapporto": "2025-05-14T14:05:30+02:00", - "DataStampa": "2025-05-14T00:00:00+02:00", - "RiferimentoFisso": "", - "EsitoGiudizioLMR": null, - "EsitoGiudizioImpiego": null, - "StampaGiudizioLMR": false, - "StampaGiudizioImpieghi": false, - "CampioneBiologico": false, - "RisultatiPositivi": true, - "RisultatiIrregolari": false, - "Matrice": "MONCLER_Footwear_FINISHED PRODUCT_TURKEY PACKAGE + Turkey's customs regulations + Pack March 2025_ENG", - "Sottomatrice": null, - "DescrizioneMatrice": null, - "MacroMatrice": "MONCLER (@Fatturazione)", - "CodiceRapporto": "2523026", - "VersioneRapporto": 0, - "CodiceAccettazione": "2523026", - "DataRapporto": "2025-05-14T00:00:00+02:00", - "NominativoResponsabile": "COMPLIANCE +Gallin+Zavag+Costanzi (SCARPE E BORSE)", - "PrezzoCampione": null, - "DataModificaParcheggio": null, - "Scadenza": "2025-05-13T00:00:00+02:00", - "CodiceFattura": "RN25004873", - "DataFattura": "2025-05-29T00:00:00+02:00", - "BloccoInvio": false, - "DataValidazione": "2025-05-12T00:00:00+02:00", - "CodiceCampione": "2523026.12", - "OraCampione": "1900-01-01T17:43:17+01:00", - "AnalisiDatiRapporto": [ - { - "IdAnalisiDatoRapporto": 28343776, - "CodiceParametro": null, - "CodiceCas": "84-74-2", - "ParametroRapporto": "Dibutyl Phthalate (DBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-12T10:33:19+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28343777, - "CodiceParametro": null, - "CodiceCas": "85-68-7", - "ParametroRapporto": "Butyl Benzil Phthalate (BBP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-12T10:33:19+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28343775, - "CodiceParametro": null, - "CodiceCas": "117-81-7", - "ParametroRapporto": "Bis-2-Etylhexyl Phthalate (DEHP)", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-12T10:33:19+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28343781, - "CodiceParametro": null, - "CodiceCas": "117-84-0", - "ParametroRapporto": "Di-n-octyll Phthalate (DnOP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "10", - "LimiteQuantificazione": "10", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-12T10:33:19+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28343779, - "CodiceParametro": null, - "CodiceCas": "68515-49-1", - "ParametroRapporto": "Di-iso-decil Phthalate (DIDP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-12T10:33:19+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28343778, - "CodiceParametro": null, - "CodiceCas": "68515-48-0", - "ParametroRapporto": "Di-iso-nonyl Phthalate (DINP) ", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": "100", - "LimiteQuantificazione": "100", - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-12T10:33:19+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - }, - { - "IdAnalisiDatoRapporto": 28343780, - "CodiceParametro": null, - "CodiceCas": null, - "ParametroRapporto": "Sum of all Phthalates", - "CodiceGruppo": "0036abd", - "GruppoRapporto": "Phthalates (*)", - "UnitaMisuraRapporto": "mg/kg", - "LegendaUnitaMisura": null, - "MetodoRapporto": "Determining Phthalates\r\n- Test Method:\r\nCPSC-CH-C1001-09.4: 2018", - "NotaIncertezzaMetodo": null, - "CodiceReparto": "Chim_Org", - "Reparto": "Analytical_Organic", - "NotaIncertezzaReparto": null, - "RisultatoStampa": "< L.O.Q.", - "RisultatoPositivo": false, - "MinimoRilevabile": null, - "LimiteQuantificazione": null, - "LimitiDiLegge": "<=1000", - "LimiteMinimo": null, - "LimitiCliente": null, - "CodiceDecretoLegge": null, - "DecretoLegge": null, - "IncertezzaStampaTestuale": "", - "IncertezzaStampaNumerica": 0, - "IncertezzaStampaTipo": "Nessuno", - "CodiceCommentoFisso": null, - "CommentoFisso": null, - "CodiceCommento": null, - "Commento": null, - "Accreditato": false, - "AccreditatoFlessibile": false, - "Esito": "Pass", - "TipoEsito": "Regolare", - "Subappalto": false, - "CodiceStabilimento": "CT", - "LegendaStabilimento": null, - "LegendaStabilimentoAccreditati": null, - "AccreditamentoStabilimento": "01123", - "InizioAnalisi": "2025-05-09T14:54:37+02:00", - "FineAnalisi": "2025-05-12T10:33:19+02:00", - "StampaInRapporto": true, - "RisultatoDescrittivo": null, - "IncertezzaManuale": null, - "Risultato": "N.R.", - "CodiceMacrogruppo": null, - "Macrogruppo": "CPSC C1001-09_Phthalates_Da caricare su singolo componente (fodera)_Prezzo compreso", - "LimitiDiLeggeStampa": "<=1000" - } - ], - "CustomFieldsDatiRapporto": [ - { - "IdCustomFieldDatoRapporto": 27938052, - "Titolo": "Fornitore:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 142 - }, - { - "IdCustomFieldDatoRapporto": 27938053, - "Titolo": "Tipologia di Trattamento Superficiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 146 - }, - { - "IdCustomFieldDatoRapporto": 27938054, - "Titolo": "Tipologia di concia: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 147 - }, - { - "IdCustomFieldDatoRapporto": 27938055, - "Titolo": "Destinazione d'uso: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 150 - }, - { - "IdCustomFieldDatoRapporto": 27938056, - "Titolo": "Tipologia di Materiale:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 156 - }, - { - "IdCustomFieldDatoRapporto": 27938057, - "Titolo": "Categoria:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 161 - }, - { - "IdCustomFieldDatoRapporto": 27938058, - "Titolo": "Campionamento:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 163 - }, - { - "IdCustomFieldDatoRapporto": 27938059, - "Titolo": "Condizionamento prima e durante il Test: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 165 - }, - { - "IdCustomFieldDatoRapporto": 27938060, - "Titolo": "Note:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 166 - }, - { - "IdCustomFieldDatoRapporto": 27938061, - "Titolo": "Capitolato di riferimento", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 167 - }, - { - "IdCustomFieldDatoRapporto": 27938065, - "Titolo": "Preparazione del campione ai test chimici: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 181 - }, - { - "IdCustomFieldDatoRapporto": 27938066, - "Titolo": "Tested Component:", - "Valore": "N\u00b0 38 INNER LABEL", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 189 - }, - { - "IdCustomFieldDatoRapporto": 27938067, - "Titolo": "DDT N. ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 193 - }, - { - "IdCustomFieldDatoRapporto": 27938068, - "Titolo": "Fabbricante:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 194 - }, - { - "IdCustomFieldDatoRapporto": 27938069, - "Titolo": "Composition Claimed", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 207 - }, - { - "IdCustomFieldDatoRapporto": 27938070, - "Titolo": "Sample Description ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 210 - }, - { - "IdCustomFieldDatoRapporto": 27938071, - "Titolo": "Season", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 214 - }, - { - "IdCustomFieldDatoRapporto": 27938084, - "Titolo": "Style Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 263 - }, - { - "IdCustomFieldDatoRapporto": 27938085, - "Titolo": "Color Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 264 - }, - { - "IdCustomFieldDatoRapporto": 27938095, - "Titolo": "Sample Code:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 467 - }, - { - "IdCustomFieldDatoRapporto": 27938096, - "Titolo": "Style Description:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 468 - }, - { - "IdCustomFieldDatoRapporto": 27938097, - "Titolo": "Collezione:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 543 - }, - { - "IdCustomFieldDatoRapporto": 27938098, - "Titolo": "Additional Info:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 555 - }, - { - "IdCustomFieldDatoRapporto": 27938099, - "Titolo": "Final Customer: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 595 - }, - { - "IdCustomFieldDatoRapporto": 27938100, - "Titolo": "Analisi Richieste:", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 748 - }, - { - "IdCustomFieldDatoRapporto": 27938104, - "Titolo": "CDC", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1014 - }, - { - "IdCustomFieldDatoRapporto": 27938105, - "Titolo": "MONCLER_Analisi Commissionate da: ", - "Valore": "", - "CodiceAnagrafica": null, - "FornitoDaCommittente": 0, - "ScostamentoDaCondizioni": 0, - "CustomField": 1083 - } - ] - } - ] -} \ No newline at end of file diff --git a/public/userarea/remove_column_mapping.php b/public/userarea/remove_column_mapping.php deleted file mode 100644 index 97316a96..00000000 --- a/public/userarea/remove_column_mapping.php +++ /dev/null @@ -1,62 +0,0 @@ -getConnection(); - -$data = json_decode(file_get_contents("php://input"), true); - -if (!isset($data['template_id'], $data['excel_column'], $data['mysql_column'], $data['tablename'])) { - echo json_encode(["success" => false, "message" => "Missing required fields"]); - exit; -} - -// Rimuove l'associazione -$stmtDelete = $pdo->prepare(" - DELETE FROM excel_column_mappings - WHERE template_id = ? AND excel_column = ? AND mysql_column = ? AND tablename = ? -"); -$result = $stmtDelete->execute([ - $data['template_id'], - $data['excel_column'], - $data['mysql_column'], - $data['tablename'] -]); - -if (!$result) { - echo json_encode(["success" => false, "message" => "Failed to delete mapping"]); - exit; -} - -// Dopo la rimozione, aggiorna la lista delle colonne disponibili -$stmtColumns = $pdo->prepare("SHOW COLUMNS FROM " . $data['tablename']); -$stmtColumns->execute(); -$all_mysql_columns = array_column($stmtColumns->fetchAll(PDO::FETCH_ASSOC), 'Field'); - -$stmtHeader = $pdo->prepare("SELECT headerexcel FROM excel_column_mappings WHERE template_id = ? LIMIT 1"); -$stmtHeader->execute([$data['template_id']]); -$headerRow = $stmtHeader->fetch(PDO::FETCH_ASSOC); -$xls_headers = isset($headerRow['headerexcel']) ? explode(",", $headerRow['headerexcel']) : []; - -// Ricalcola le colonne non associate -$stmtMappings = $pdo->prepare("SELECT excel_column, mysql_column FROM excel_column_mappings WHERE template_id = ?"); -$stmtMappings->execute([$data['template_id']]); -$existingMappings = $stmtMappings->fetchAll(PDO::FETCH_ASSOC); - -$mapped_xls_columns = array_column($existingMappings, 'excel_column'); -$mapped_mysql_columns = array_column($existingMappings, 'mysql_column'); - -$remaining_xls_columns = array_diff($xls_headers, $mapped_xls_columns); -$remaining_mysql_columns = array_diff($all_mysql_columns, $mapped_mysql_columns); - -echo json_encode([ - "success" => true, - "remaining_xls_columns" => array_values($remaining_xls_columns), - "remaining_mysql_columns" => array_values($remaining_mysql_columns) -]); -exit; diff --git a/public/userarea/renumber_parts.php b/public/userarea/renumber_parts.php deleted file mode 100644 index e32f80cf..00000000 --- a/public/userarea/renumber_parts.php +++ /dev/null @@ -1,63 +0,0 @@ -getConnection(); - -$data = json_decode(file_get_contents('php://input'), true); - -$iddatadb = $data['iddatadb'] ?? null; -$parts = $data['parts'] ?? []; - -if (!$iddatadb || empty($parts)) { - echo json_encode(['success' => false, 'message' => 'Dati mancanti']); - exit; -} - -try { - $pdo->beginTransaction(); - - // Elimina tutte le parti esistenti per l'iddatadb per evitare conflitti di unicità - $stmt = $pdo->prepare("DELETE FROM identification_parts WHERE iddatadb = :iddatadb"); - $stmt->execute([':iddatadb' => $iddatadb]); - - // Prepara l'inserimento delle nuove parti - $stmt = $pdo->prepare(" - INSERT INTO identification_parts - (iddatadb, part_number, part_description, mix, created_at, updated_at) - VALUES (:iddatadb, :part_number, :part_description, :mix, NOW(), NOW()) - "); - - $part_ids = []; - foreach ($parts as $part) { - $partNumber = $part['part_number'] ?? null; - $partDescription = $part['part_description'] ?? ''; - $mix = $part['mix'] ?? 'N'; - - if (!$partNumber || !$partDescription) { - throw new PDOException("Numero parte o descrizione mancante per parte: " . json_encode($part)); - } - - $stmt->execute([ - ':iddatadb' => $iddatadb, - ':part_number' => $partNumber, - ':part_description' => $partDescription, - ':mix' => $mix - ]); - $part_ids[] = $pdo->lastInsertId(); - } - - $pdo->commit(); - echo json_encode([ - 'success' => true, - 'part_ids' => $part_ids, - 'message' => 'Parti rinumerate con successo' - ]); -} catch (PDOException $e) { - $pdo->rollBack(); - echo json_encode([ - 'success' => false, - 'message' => 'Errore nel salvataggio: ' . $e->getMessage() - ]); -} diff --git a/public/userarea/renumber_parts_quotation.php b/public/userarea/renumber_parts_quotation.php deleted file mode 100644 index 3c455cb3..00000000 --- a/public/userarea/renumber_parts_quotation.php +++ /dev/null @@ -1,63 +0,0 @@ -getConnection(); - -$data = json_decode(file_get_contents('php://input'), true); - -$idquotations = $data['idquotations'] ?? null; -$parts = $data['parts'] ?? []; - -if (!$idquotations || empty($parts)) { - echo json_encode(['success' => false, 'message' => 'Dati mancanti']); - exit; -} - -try { - $pdo->beginTransaction(); - - // Elimina tutte le parti esistenti per idquotations - $stmt = $pdo->prepare("DELETE FROM identification_parts WHERE idquotations = :idquotations"); - $stmt->execute([':idquotations' => $idquotations]); - - // Prepara l'inserimento delle nuove parti - $stmt = $pdo->prepare(" - INSERT INTO identification_parts - (idquotations, part_number, part_description, mix, created_at, updated_at) - VALUES (:idquotations, :part_number, :part_description, :mix, NOW(), NOW()) - "); - - $part_ids = []; - foreach ($parts as $part) { - $partNumber = $part['part_number'] ?? null; - $partDescription = $part['part_description'] ?? ''; - $mix = $part['mix'] ?? 'N'; - - if (!$partNumber || !$partDescription) { - throw new PDOException("Numero parte o descrizione mancante per parte: " . json_encode($part)); - } - - $stmt->execute([ - ':idquotations' => $idquotations, - ':part_number' => $partNumber, - ':part_description' => $partDescription, - ':mix' => $mix - ]); - $part_ids[] = $pdo->lastInsertId(); - } - - $pdo->commit(); - echo json_encode([ - 'success' => true, - 'part_ids' => $part_ids, - 'message' => 'Parti rinumerate con successo' - ]); -} catch (PDOException $e) { - $pdo->rollBack(); - echo json_encode([ - 'success' => false, - 'message' => 'Errore nel salvataggio: ' . $e->getMessage() - ]); -} diff --git a/public/userarea/routines/burberry.php b/public/userarea/routines/burberry.php deleted file mode 100644 index 7e866e01..00000000 --- a/public/userarea/routines/burberry.php +++ /dev/null @@ -1,71 +0,0 @@ - &$row) { - if (!isset($row['data']) || !is_array($row['data'])) { - error_log("Routine burberry: invalid row structure at index {$rowIndex}."); - continue; - } - - $valueS = trim((string)($row['data'][$columnSIndex] ?? '')); - $valueT = trim((string)($row['data'][$columnTIndex] ?? '')); - - /* - * Merge values, ignoring empty values. - */ - $mergedValues = []; - - if ($valueS !== '') { - $mergedValues[] = $valueS; - } - - if ($valueT !== '') { - $mergedValues[] = $valueT; - } - - /* - * Save final value into column S. - */ - $row['data'][$targetColumnIndex] = implode(' ', $mergedValues); - - error_log( - "Routine burberry: row " . - ($row['excelrow'] ?? $rowIndex) . - " generated value in column S: " . - $row['data'][$targetColumnIndex] - ); - } - - unset($row); - - error_log("Routine burberry completed."); -} diff --git a/public/userarea/routines/fendi.php b/public/userarea/routines/fendi.php deleted file mode 100644 index e744ce20..00000000 --- a/public/userarea/routines/fendi.php +++ /dev/null @@ -1,67 +0,0 @@ - &$row) { - if (!isset($row['data']) || !is_array($row['data'])) { - error_log("Routine merge T+U: invalid row structure at index {$rowIndex}."); - continue; - } - - $valueT = trim((string)($row['data'][$firstColumnIndex] ?? '')); - $valueU = trim((string)($row['data'][$secondColumnIndex] ?? '')); - - /* - * Merge values, ignoring empty values. - */ - $mergedValues = []; - - if ($valueT !== '') { - $mergedValues[] = $valueT; - } - - if ($valueU !== '') { - $mergedValues[] = $valueU; - } - - /* - * Save final value into column T. - */ - $row['data'][$targetColumnIndex] = implode(' ', $mergedValues); - - error_log( - "Routine merge T+U: row " . - ($row['excelrow'] ?? $rowIndex) . - " generated value in column T: " . - $row['data'][$targetColumnIndex] - ); - } - - unset($row); - - error_log("Routine merge T+U completed."); -} diff --git a/public/userarea/routines/moncler.php b/public/userarea/routines/moncler.php deleted file mode 100644 index 1ae9da0e..00000000 --- a/public/userarea/routines/moncler.php +++ /dev/null @@ -1,217 +0,0 @@ - $row['data'], - 'excelrow' => [($row['excelrow'] ?? '')], - 'style_codes' => [], - 'style_descriptions' => [] - ]; - } else { - $grouped_data[$key]['excelrow'][] = ($row['excelrow'] ?? ''); - } - - // Split STYLE CODE + STYLE DESCRIPTION - $action2_value = trim((string)($row['data'][$action2_index] ?? '')); - - if ($action2_value !== '') { - $parts = explode(' - ', $action2_value, 2); - $style_code = trim((string)($parts[0] ?? '')); - $style_description = trim((string)($parts[1] ?? '')); - - if ($style_code !== '') { - $grouped_data[$key]['style_codes'][] = $style_code; - } - if ($style_description !== '') { - $grouped_data[$key]['style_descriptions'][] = $style_description; - } - } else { - error_log("Valore vuoto in action2 per excelrow " . ($row['excelrow'] ?? 'N/A')); - } - } - - $new_excel_data = []; - - foreach ($grouped_data as $key => $group) { - $row_data = $group['data']; - - // Update STYLE CODE and STYLE DESCRIPTION with aggregated unique values - $row_data[$action3_index] = implode(' - ', array_unique($group['style_codes'])); - $row_data[$action4_index] = implode(' - ', array_unique($group['style_descriptions'])); - - // Concatenate excelrow values with "+" - $excelrow_clean = array_filter($group['excelrow'], function ($value) { - return $value !== null && $value !== ''; - }); - - $excelrow_value = count($excelrow_clean) > 1 - ? implode('+', $excelrow_clean) - : (reset($excelrow_clean) ?: ''); - - $new_excel_data[] = [ - 'data' => $row_data, - 'excelrow' => $excelrow_value - ]; - } - - $excelData = $new_excel_data; - $part1_applied = true; - - error_log("Routine part 1 completata - Righe aggregate: " . count($new_excel_data)); - error_log("Excelrow aggregati part 1: " . print_r(array_column($new_excel_data, 'excelrow'), true)); - } - - /** - * PART 2 - * Merge package-related columns into PACKAGE - * Always applied if PACKAGE exists - */ - foreach ($excelData as $index => $row) { - if (!isset($row['data']) || !is_array($row['data'])) { - error_log("Riga non valida nella part 2, manca 'data' all'indice $index"); - continue; - } - - $package_values = []; - - $value_package = trim((string)($row['data'][$package_index] ?? '')); - $value_other_test = $other_test_index !== false ? trim((string)($row['data'][$other_test_index] ?? '')) : ''; - $value_only_colorfastness = $only_colorfastness_index !== false ? trim((string)($row['data'][$only_colorfastness_index] ?? '')) : ''; - $value_only_chemical = $only_chemical_index !== false ? trim((string)($row['data'][$only_chemical_index] ?? '')) : ''; - - if ($value_package !== '') { - $package_values[] = $value_package; - } - if ($value_other_test !== '') { - $package_values[] = $value_other_test; - } - if ($value_only_colorfastness !== '') { - $package_values[] = $value_only_colorfastness; - } - if ($value_only_chemical !== '') { - $package_values[] = $value_only_chemical; - } - - $package_values = array_unique($package_values); - - $excelData[$index]['data'][$package_index] = implode(' - ', $package_values); - } - - error_log("Routine part 2 completata - Merge package applicato su " . count($excelData) . " righe"); - - if (!$part1_applied) { - error_log("Warning finale: routine part 1 non applicata, routine part 2 applicata correttamente"); - } - - error_log("Routine Moncler completata con successo"); - } catch (Exception $e) { - error_log("Eccezione nella routine Moncler: " . $e->getMessage()); - throw $e; - } -} diff --git a/public/userarea/routines/moncler_new_routine.php b/public/userarea/routines/moncler_new_routine.php deleted file mode 100644 index 7d854183..00000000 --- a/public/userarea/routines/moncler_new_routine.php +++ /dev/null @@ -1,327 +0,0 @@ - $row) { - if (!isset($row['data']) || !is_array($row['data'])) { - error_log("Riga non valida nello step 0, manca 'data' all'indice $index"); - continue; - } - - $combinedValue = trim((string)($row['data'][$action2_index] ?? '')); - $currentStyleCode = trim((string)($row['data'][$action3_index] ?? '')); - $currentStyleDescription = trim((string)($row['data'][$action4_index] ?? '')); - - if ($combinedValue === '') { - continue; - } - - [$parsedStyleCode, $parsedStyleDescription] = $splitStyleCombined($combinedValue); - - $styleCodeValues = $splitJoinedValues($currentStyleCode); - $styleDescriptionValues = $splitJoinedValues($currentStyleDescription); - - if ($parsedStyleCode !== '' && !in_array($parsedStyleCode, $styleCodeValues, true)) { - $styleCodeValues[] = $parsedStyleCode; - } - - if ($parsedStyleDescription !== '' && !in_array($parsedStyleDescription, $styleDescriptionValues, true)) { - $styleDescriptionValues[] = $parsedStyleDescription; - } - - $excelData[$index]['data'][$action3_index] = $joinUniqueValues($styleCodeValues); - $excelData[$index]['data'][$action4_index] = $joinUniqueValues($styleDescriptionValues); - - error_log( - "Step 0 - excelrow " . ($row['excelrow'] ?? 'N/A') . - " | combined: '" . $combinedValue . "'" . - " | style_code_result: '" . $excelData[$index]['data'][$action3_index] . "'" . - " | style_description_result: '" . $excelData[$index]['data'][$action4_index] . "'" - ); - } - - $step0_applied = true; - error_log("Routine step 0 completato - Normalizzazione style applicata su " . count($excelData) . " righe"); - } - - /** - * STEP 1 - * Aggregate rows by action1 using normalized STYLE CODE and STYLE DESCRIPTION - * If it fails, continue with STEP 2 only - */ - $step1_applied = false; - - if ($action1_index === false || $action3_index === false || $action4_index === false) { - error_log( - "Unable to apply routine step 1. Package merge logic has been applied only. " . - "Missing columns - action1: '$action1' (index: " . var_export($action1_index, true) . ")" . - ", action3: '$action3' (index: " . var_export($action3_index, true) . ")" . - ", action4: '$action4' (index: " . var_export($action4_index, true) . ")" - ); - } else { - $grouped_data = []; - - foreach ($excelData as $row) { - if (!isset($row['data']) || !is_array($row['data'])) { - error_log("Riga non valida, manca 'data' per excelrow " . ($row['excelrow'] ?? 'N/A')); - continue; - } - - $key = $row['data'][$action1_index] ?? ''; - $key = trim((string)$key); - $key = $key === '' ? '_empty_' : $key; - - if (!isset($grouped_data[$key])) { - $grouped_data[$key] = [ - 'data' => $row['data'], - 'excelrow' => [($row['excelrow'] ?? '')], - 'style_codes' => [], - 'style_descriptions' => [] - ]; - } else { - $grouped_data[$key]['excelrow'][] = ($row['excelrow'] ?? ''); - } - - // Collect normalized STYLE CODE values - $styleCodeValues = $splitJoinedValues($row['data'][$action3_index] ?? ''); - foreach ($styleCodeValues as $styleCodeValue) { - if (!in_array($styleCodeValue, $grouped_data[$key]['style_codes'], true)) { - $grouped_data[$key]['style_codes'][] = $styleCodeValue; - } - } - - // Collect normalized STYLE DESCRIPTION values - $styleDescriptionValues = $splitJoinedValues($row['data'][$action4_index] ?? ''); - foreach ($styleDescriptionValues as $styleDescriptionValue) { - if (!in_array($styleDescriptionValue, $grouped_data[$key]['style_descriptions'], true)) { - $grouped_data[$key]['style_descriptions'][] = $styleDescriptionValue; - } - } - } - - $new_excel_data = []; - - foreach ($grouped_data as $key => $group) { - $row_data = $group['data']; - - // Update STYLE CODE and STYLE DESCRIPTION with aggregated unique values - $row_data[$action3_index] = $joinUniqueValues($group['style_codes']); - $row_data[$action4_index] = $joinUniqueValues($group['style_descriptions']); - - // Concatenate excelrow values with "+" - $excelrow_clean = array_filter($group['excelrow'], function ($value) { - return $value !== null && $value !== ''; - }); - - $excelrow_value = count($excelrow_clean) > 1 - ? implode('+', $excelrow_clean) - : (reset($excelrow_clean) ?: ''); - - $new_excel_data[] = [ - 'data' => $row_data, - 'excelrow' => $excelrow_value - ]; - } - - $excelData = $new_excel_data; - $step1_applied = true; - - error_log("Routine step 1 completato - Righe aggregate: " . count($new_excel_data)); - error_log("Excelrow aggregati step 1: " . print_r(array_column($new_excel_data, 'excelrow'), true)); - } - - /** - * STEP 2 - * Merge package-related columns into PACKAGE - * Always applied if PACKAGE exists - */ - foreach ($excelData as $index => $row) { - if (!isset($row['data']) || !is_array($row['data'])) { - error_log("Riga non valida nello step 2, manca 'data' all'indice $index"); - continue; - } - - $package_values = []; - - $value_package = trim((string)($row['data'][$package_index] ?? '')); - $value_other_test = $other_test_index !== false ? trim((string)($row['data'][$other_test_index] ?? '')) : ''; - $value_only_colorfastness = $only_colorfastness_index !== false ? trim((string)($row['data'][$only_colorfastness_index] ?? '')) : ''; - $value_only_chemical = $only_chemical_index !== false ? trim((string)($row['data'][$only_chemical_index] ?? '')) : ''; - - if ($value_package !== '') { - $package_values[] = $value_package; - } - if ($value_other_test !== '') { - $package_values[] = $value_other_test; - } - if ($value_only_colorfastness !== '') { - $package_values[] = $value_only_colorfastness; - } - if ($value_only_chemical !== '') { - $package_values[] = $value_only_chemical; - } - - $package_values = array_unique($package_values); - - $excelData[$index]['data'][$package_index] = implode(' - ', $package_values); - } - - error_log("Routine step 2 completato - Merge package applicato su " . count($excelData) . " righe"); - - if (!$step0_applied) { - error_log("Warning finale: routine step 0 non applicata"); - } - - if (!$step1_applied) { - error_log("Warning finale: routine step 1 non applicata, routine step 2 applicata correttamente"); - } - - error_log("Routine Moncler completata con successo"); - } catch (Exception $e) { - error_log("Eccezione nella routine Moncler: " . $e->getMessage()); - throw $e; - } -} diff --git a/public/userarea/routines/moncler_supplier_fabric.php b/public/userarea/routines/moncler_supplier_fabric.php deleted file mode 100644 index eeda6470..00000000 --- a/public/userarea/routines/moncler_supplier_fabric.php +++ /dev/null @@ -1,212 +0,0 @@ - $row) { - if (!isset($row['data']) || !is_array($row['data'])) { - error_log("Riga non valida, manca 'data' all'indice $index"); - continue; - } - - // 1. PARTE MONCLER + PARTE FORNITORE -> PARTE MONCLER - $parte_values = []; - - $value_parte_moncler = trim((string)($row['data'][$parte_moncler_index] ?? '')); - $value_parte_fornitore = $parte_fornitore_index !== false ? trim((string)($row['data'][$parte_fornitore_index] ?? '')) : ''; - - if ($value_parte_moncler !== '') { - $parte_values[] = $value_parte_moncler; - } - if ($value_parte_fornitore !== '') { - $parte_values[] = $value_parte_fornitore; - } - - $parte_values = array_unique($parte_values); - $excelData[$index]['data'][$parte_moncler_index] = implode(' - ', $parte_values); - - // 2. DESCRIZIONE PARTE MONCLER + DESCRIZIONE PARTE FORNITORE -> DESCRIZIONE PARTE MONCLER - $descr_values = []; - - $value_descr_moncler = trim((string)($row['data'][$descr_parte_moncler_index] ?? '')); - $value_descr_fornitore = $descr_parte_fornitore_index !== false ? trim((string)($row['data'][$descr_parte_fornitore_index] ?? '')) : ''; - - if ($value_descr_moncler !== '') { - $descr_values[] = $value_descr_moncler; - } - if ($value_descr_fornitore !== '') { - $descr_values[] = $value_descr_fornitore; - } - - $descr_values = array_unique($descr_values); - $excelData[$index]['data'][$descr_parte_moncler_index] = implode(' - ', $descr_values); - - // 3. COLORE MONCLER + COLORE FORNITORE -> COLORE MONCLER - $colore_values = []; - - $value_colore_moncler = trim((string)($row['data'][$colore_moncler_index] ?? '')); - $value_colore_fornitore = $colore_fornitore_index !== false ? trim((string)($row['data'][$colore_fornitore_index] ?? '')) : ''; - - if ($value_colore_moncler !== '') { - $colore_values[] = $value_colore_moncler; - } - if ($value_colore_fornitore !== '') { - $colore_values[] = $value_colore_fornitore; - } - - $colore_values = array_unique($colore_values); - $excelData[$index]['data'][$colore_moncler_index] = implode(' - ', $colore_values); - - // 4. COMPOSIZIONE TESSILE + COMPOSIZIONE TOTALE -> COMPOSIZIONE TESSILE - $composizione_values = []; - - $value_composizione_tessile = trim((string)($row['data'][$composizione_tessile_index] ?? '')); - $value_composizione_totale = $composizione_totale_index !== false ? trim((string)($row['data'][$composizione_totale_index] ?? '')) : ''; - - if ($value_composizione_tessile !== '') { - $composizione_values[] = $value_composizione_tessile; - } - if ($value_composizione_totale !== '') { - $composizione_values[] = $value_composizione_totale; - } - - $composizione_values = array_unique($composizione_values); - $excelData[$index]['data'][$composizione_tessile_index] = implode(' - ', $composizione_values); - - // 5. PACCHETTI TEST + TEST ADDIZIONALI -> PACCHETTI TEST - $pacchetti_values = []; - - $value_pacchetti_test = trim((string)($row['data'][$pacchetti_test_index] ?? '')); - $value_test_addizionali = $test_addizionali_index !== false ? trim((string)($row['data'][$test_addizionali_index] ?? '')) : ''; - - if ($value_pacchetti_test !== '') { - $pacchetti_values[] = $value_pacchetti_test; - } - if ($value_test_addizionali !== '') { - $pacchetti_values[] = $value_test_addizionali; - } - - $pacchetti_values = array_unique($pacchetti_values); - $excelData[$index]['data'][$pacchetti_test_index] = implode(' - ', $pacchetti_values); - } - - error_log("Nuova routine completata con successo. Righe elaborate: " . count($excelData)); - } catch (Exception $e) { - error_log("Eccezione nella nuova routine: " . $e->getMessage()); - throw $e; - } -} diff --git a/public/userarea/routines/paulshark.php b/public/userarea/routines/paulshark.php deleted file mode 100644 index 6ee05c9e..00000000 --- a/public/userarea/routines/paulshark.php +++ /dev/null @@ -1,76 +0,0 @@ - &$row) { - if (!isset($row['data']) || !is_array($row['data'])) { - error_log("Routine paulshark: invalid row structure at index {$rowIndex}."); - continue; - } - - $valueD = trim((string)($row['data'][$columnDIndex] ?? '')); - $valueE = trim((string)($row['data'][$columnEIndex] ?? '')); - $valueJ = trim((string)($row['data'][$columnJIndex] ?? '')); - - /* - * Merge values, ignoring empty values. - */ - $mergedValues = []; - - if ($valueD !== '') { - $mergedValues[] = $valueD; - } - - if ($valueE !== '') { - $mergedValues[] = $valueE; - } - - if ($valueJ !== '') { - $mergedValues[] = $valueJ; - } - - /* - * Save final value into column D. - */ - $row['data'][$targetColumnIndex] = implode(' ', $mergedValues); - - error_log( - "Routine paulshark: row " . - ($row['excelrow'] ?? $rowIndex) . - " generated value in column D: " . - $row['data'][$targetColumnIndex] - ); - } - - unset($row); - - error_log("Routine paulshark completed."); -} diff --git a/public/userarea/routines/richemont_pelletteria.php b/public/userarea/routines/richemont_pelletteria.php deleted file mode 100644 index d496aa71..00000000 --- a/public/userarea/routines/richemont_pelletteria.php +++ /dev/null @@ -1,71 +0,0 @@ - &$row) { - if (!isset($row['data']) || !is_array($row['data'])) { - error_log("Routine Richemont Pelletteria: invalid row structure at index {$rowIndex}."); - continue; - } - - $valueD = trim((string)($row['data'][$columnDIndex] ?? '')); - $valueE = trim((string)($row['data'][$columnEIndex] ?? '')); - - /* - * Merge values, ignoring empty values. - */ - $mergedValues = []; - - if ($valueD !== '') { - $mergedValues[] = $valueD; - } - - if ($valueE !== '') { - $mergedValues[] = $valueE; - } - - /* - * Save final value into column D. - */ - $row['data'][$targetColumnIndex] = implode(' ', $mergedValues); - - error_log( - "Routine Richemont Pelletteria: row " . - ($row['excelrow'] ?? $rowIndex) . - " generated value in column D: " . - $row['data'][$targetColumnIndex] - ); - } - - unset($row); - - error_log("Routine Richemont Pelletteria completed."); -} diff --git a/public/userarea/routines/valentino_compliance.php b/public/userarea/routines/valentino_compliance.php deleted file mode 100644 index 5bbc2199..00000000 --- a/public/userarea/routines/valentino_compliance.php +++ /dev/null @@ -1,114 +0,0 @@ - &$row) { - if (!isset($row['data']) || !is_array($row['data'])) { - error_log("Routine field_id 347: invalid row structure at index {$rowIndex}."); - continue; - } - - $selectedValues = []; - - /* - * Check columns from P to AT. - * If the cell contains x, take the related column header. - */ - for ($columnIndex = $startColumnIndex; $columnIndex <= $endColumnIndex; $columnIndex++) { - $cellValue = strtolower(trim((string)($row['data'][$columnIndex] ?? ''))); - - if ($cellValue === 'x') { - $headerTitle = trim((string)($headers[$columnIndex] ?? '')); - - if ($headerTitle !== '') { - $selectedValues[] = $headerTitle; - } - } - } - - /* - * Add free text from column AU. - */ - $extraText = ''; - - if (isset($row['data'][$extraColumnIndex])) { - $extraText = trim((string)$row['data'][$extraColumnIndex]); - } elseif (isset($row['data']['AU'])) { - $extraText = trim((string)$row['data']['AU']); - } - - error_log( - "Routine field_id 347: row " . - ($row['excelrow'] ?? $rowIndex) . - " AU index {$extraColumnIndex} value: " . - print_r($row['data'][$extraColumnIndex] ?? null, true) . - " | AU key value: " . - print_r($row['data']['AU'] ?? null, true) - ); - - if ($extraText !== '') { - $selectedValues[] = $extraText; - } - - /* - * Remove empty and duplicate values. - */ - $selectedValues = array_values(array_unique(array_filter($selectedValues, function ($value) { - return trim((string)$value) !== ''; - }))); - - /* - * Save final value into column P. - * Column P must be mapped to field_id 347 in the template mapping. - */ - $row['data'][$targetColumnIndex] = implode(', ', $selectedValues); - - error_log( - "Routine field_id 347: row " . - ($row['excelrow'] ?? $rowIndex) . - " generated value: " . - $row['data'][$targetColumnIndex] - ); - } - - unset($row); - - error_log("Routine field_id 347 completed."); -} diff --git a/public/userarea/saveAll.js b/public/userarea/saveAll.js deleted file mode 100644 index 28fb5159..00000000 --- a/public/userarea/saveAll.js +++ /dev/null @@ -1,130 +0,0 @@ -/** - * saveAll.js — Save All functionality using gridData - */ -(function() { - 'use strict'; - - let saveAllRunning = false; - - function isBusy() { - return saveAllRunning || window.batchRunning; - } - - // ── Save single row ────────────────────────────────────────────────── - $(document).on('click', '.save-btn', async function() { - const btn = this; - const rowIndex = parseInt(btn.dataset.row); - const row = window.gridData?.[rowIndex]; - if (!row) return; - - const origHtml = btn.innerHTML; - btn.innerHTML = ''; - btn.disabled = true; - - try { - const formData = window.buildSavePayload(rowIndex); - const resp = await fetch('save_edited_row.php', { method: 'POST', body: formData }); - const result = await resp.json(); - - if (result.success) { - row._dirty = false; - if (window.gridRenderer?.clearDirty) window.gridRenderer.clearDirty(rowIndex); - // Flash success on row without re-rendering (preserves Select2 state) - const gridRow = document.querySelector(`.grid-row[data-id="${row.iddatadb}"]`); - if (gridRow) { - gridRow.classList.remove('row-dirty'); - gridRow.querySelectorAll('.grid-cell').forEach(cell => { - cell.classList.remove('cell-changed'); - cell.classList.add('flash-success'); - }); - setTimeout(() => gridRow.querySelectorAll('.flash-success').forEach(c => c.classList.remove('flash-success')), 500); - } - const toastEl = document.getElementById('saveSuccessToast'); - if (toastEl) bootstrap.Toast.getOrCreateInstance(toastEl).show(); - } else { - alert('Errore: ' + result.message); - } - } catch (e) { - alert('Errore: ' + e.message); - } finally { - btn.innerHTML = origHtml; - btn.disabled = false; - } - }); - - // ── Save All ───────────────────────────────────────────────────────── - $(document).on('click', '.save-all-btn', function(e) { - e.preventDefault(); - if (isBusy()) return; - const modalEl = document.getElementById('saveAllConfirmModal'); - if (!modalEl) return; - new bootstrap.Modal(modalEl, { keyboard: false }).show(); - }); - - $(document).on('click', '#saveAllConfirmBtn', async function() { - const confirmModal = bootstrap.Modal.getInstance(document.getElementById('saveAllConfirmModal')); - if (confirmModal) confirmModal.hide(); - saveAllRunning = true; - - const bar = document.getElementById('batchExportBar'); - const statusEl = document.getElementById('batchExportStatus'); - const cancelBtn = document.getElementById('exportBatchCancelBtn'); - if (bar) bar.style.display = ''; - if (cancelBtn) cancelBtn.style.display = 'none'; - if (statusEl) statusEl.textContent = 'Saving...'; - - const data = window.gridData || []; - const dirtyRows = data.map((r, i) => r._dirty ? i : -1).filter(i => i >= 0); - - if (dirtyRows.length === 0) { - saveAllRunning = false; - if (bar) bar.style.display = 'none'; - const msgEl = document.getElementById('saveAllResultMessage'); - if (msgEl) msgEl.textContent = 'No changes to save.'; - new bootstrap.Modal(document.getElementById('saveAllResultModal')).show(); - return; - } - - let success = 0, fail = 0; - - for (const idx of dirtyRows) { - if (statusEl) statusEl.textContent = `Saving ${success + fail + 1} / ${dirtyRows.length}...`; - try { - const formData = window.buildSavePayload(idx); - const resp = await fetch('save_edited_row.php', { method: 'POST', body: formData }); - const result = await resp.json(); - if (result.success) { - data[idx]._dirty = false; - if (window.gridRenderer?.clearDirty) window.gridRenderer.clearDirty(idx); - success++; - } else { - fail++; - } - } catch (e) { - fail++; - } - } - - saveAllRunning = false; - if (bar) bar.style.display = 'none'; - - const gr = window.gridRenderer; - if (gr) gr.renderVisibleRows(); - - const msg = `Saved: ${success}` + (fail > 0 ? `, Errors: ${fail}` : ''); - const msgEl = document.getElementById('saveAllResultMessage'); - if (msgEl) msgEl.textContent = msg; - new bootstrap.Modal(document.getElementById('saveAllResultModal')).show(); - }); - - // ── beforeunload ───────────────────────────────────────────────────── - window.addEventListener('beforeunload', function(e) { - if (window.gridData && window.gridData.some(r => r._dirty)) { - e.preventDefault(); - e.returnValue = ''; - } - }); - - // Public - window.saveAllRunning = () => saveAllRunning; -})(); diff --git a/public/userarea/save_annotated_photo.php b/public/userarea/save_annotated_photo.php deleted file mode 100644 index 2f277ba6..00000000 --- a/public/userarea/save_annotated_photo.php +++ /dev/null @@ -1,76 +0,0 @@ - false, 'message' => 'Dati mancanti']); - exit; -} - -if (!preg_match('/^[a-zA-Z0-9_-]+\.(png|jpg|jpeg)$/', $filename)) { - echo json_encode(['success' => false, 'message' => 'Nome file non valido']); - exit; -} - -if (!is_numeric($iddatadb)) { - echo json_encode(['success' => false, 'message' => 'ID non valido']); - exit; -} - -$allowedTypes = ['image/png', 'image/jpeg']; -if (!in_array($file['type'], $allowedTypes)) { - echo json_encode(['success' => false, 'message' => 'Formato file non supportato']); - exit; -} - -try { - $dbHandler = DBHandlerSelect::getInstance(); - $pdo = $dbHandler->getConnection(); - $stmt = $pdo->prepare("SELECT iddatadb FROM datadb WHERE iddatadb = :iddatadb"); - $stmt->execute([':iddatadb' => $iddatadb]); - if (!$stmt->fetch()) { - echo json_encode(['success' => false, 'message' => 'iddatadb non valido']); - exit; - } - - $dirPath = '../photostrf/annotated'; - if (!file_exists($dirPath)) { - mkdir($dirPath, 0755, true); - } - - $filePath = $dirPath . '/' . $filename; - if (file_exists($filePath)) { - echo json_encode(['success' => false, 'message' => 'File già esistente']); - exit; - } - - if (!move_uploaded_file($file['tmp_name'], $filePath)) { - echo json_encode(['success' => false, 'message' => 'Errore nel salvataggio del file']); - exit; - } - - $stmt = $pdo->prepare(" - INSERT INTO datadb_photos (iddatadb, file_path, file_name, uploaded_at, uploaded_by) - VALUES (:iddatadb, :file_path, :file_name, NOW(), :uploaded_by) - "); - $stmt->execute([ - ':iddatadb' => $iddatadb, - ':file_path' => $filePath, - ':file_name' => $filename, - ':uploaded_by' => $iduserlogin - ]); - - echo json_encode([ - 'success' => true, - 'file_path' => $filePath, - 'message' => 'Foto salvata con successo e registrata nel DB' - ]); -} catch (Exception $e) { - echo json_encode(['success' => false, 'message' => 'Errore: ' . $e->getMessage()]); -} diff --git a/public/userarea/save_annotated_photo_quotation.php b/public/userarea/save_annotated_photo_quotation.php deleted file mode 100644 index 0abb2188..00000000 --- a/public/userarea/save_annotated_photo_quotation.php +++ /dev/null @@ -1,76 +0,0 @@ - false, 'message' => 'Dati mancanti o utente non autenticato']); - exit; -} - -if (!preg_match('/^[a-zA-Z0-9_-]+\.(png|jpg|jpeg)$/', $filename)) { - echo json_encode(['success' => false, 'message' => 'Nome file non valido']); - exit; -} - -if (!is_numeric($idquotations)) { - echo json_encode(['success' => false, 'message' => 'ID non valido']); - exit; -} - -$allowedTypes = ['image/png', 'image/jpeg']; -if (!in_array($file['type'], $allowedTypes)) { - echo json_encode(['success' => false, 'message' => 'Formato file non supportato']); - exit; -} - -try { - $dbHandler = DBHandlerSelect::getInstance(); - $pdo = $dbHandler->getConnection(); - $stmt = $pdo->prepare("SELECT id FROM quotations WHERE id = :idquotations"); - $stmt->execute([':idquotations' => $idquotations]); - if (!$stmt->fetch()) { - echo json_encode(['success' => false, 'message' => 'idquotations non valido']); - exit; - } - - $dirPath = '../photostrf/annotated'; - if (!file_exists($dirPath)) { - mkdir($dirPath, 0755, true); - } - - $filePath = $dirPath . '/' . $filename; - if (file_exists($filePath)) { - echo json_encode(['success' => false, 'message' => 'File già esistente']); - exit; - } - - if (!move_uploaded_file($file['tmp_name'], $filePath)) { - echo json_encode(['success' => false, 'message' => 'Errore nel salvataggio del file']); - exit; - } - - $stmt = $pdo->prepare(" - INSERT INTO datadb_photos (idquotations, file_path, file_name, uploaded_at, uploaded_by) - VALUES (:idquotations, :file_path, :file_name, NOW(), :uploaded_by) - "); - $stmt->execute([ - ':idquotations' => $idquotations, - ':file_path' => $filePath, - ':file_name' => $filename, - ':uploaded_by' => $iduserlogin - ]); - - echo json_encode([ - 'success' => true, - 'file_path' => $filePath, - 'message' => 'Foto salvata con successo e registrata nel DB' - ]); -} catch (Exception $e) { - echo json_encode(['success' => false, 'message' => 'Errore: ' . $e->getMessage()]); -} diff --git a/public/userarea/save_column_mapping.php b/public/userarea/save_column_mapping.php deleted file mode 100644 index 6b826d8f..00000000 --- a/public/userarea/save_column_mapping.php +++ /dev/null @@ -1,412 +0,0 @@ -getConnection(); -$stmt = $pdo->prepare("SELECT name, header_row, start_column, target_table, sample_xlsx, idclient, clientname, idschema, schemaname, schemajson FROM excel_templates WHERE id = ?"); -$stmt->execute([$id]); -$template = $stmt->fetch(PDO::FETCH_ASSOC); - -if (!$template) { - die("Template not found"); -} - -$clientName = $template['clientname'] ?: ''; -$schemaName = $template['schemaname'] ?: ''; -$schemajson = $template['schemajson'] ? json_decode($template['schemajson'], true) : []; -$isSchemajsonEmpty = empty(trim($template['schemajson'])); - -// Recupera i campi dalla tabella template_mapping -$stmt = $pdo->prepare("SELECT id, field_id, excel_column, is_manual, manual_default, data_type, is_required, default_value, has_list, length, decimals, min_value, max_value, default_curr_date, tablename, field_label FROM template_mapping WHERE template_id = ?"); -$stmt->execute([$id]); -$mappings = $stmt->fetchAll(PDO::FETCH_ASSOC); -?> - - - - - - - - - - Configure Template <?= htmlspecialchars($template['name'], ENT_QUOTES, 'UTF-8'); ?> - - - - -
              - - -
              -
              - - -
              -
              -
              -
              -
              Configure Template:
              -

              - Client: | - Schema: | - Header Row: | - Start Column: -

              -
              -
              -
              -
              -
              - - - - - ✅ Current file: - - No file uploaded yet. - - -
              - -
              -
              -
              -
              Schema Fields Configuration
              - -
              - - - - - - - - - - - - - - - - - - - - - - - -
              TitleIDTypeMappingDefault ValueAction
              - - - - - - - - -
              -
              -
              - -
              -
              Current Configurations
              -
                -
                - - -
                -
                -
                -
                -
                - - -
                - - - - - - \ No newline at end of file diff --git a/public/userarea/save_edited_data.php b/public/userarea/save_edited_data.php deleted file mode 100644 index 1b0e2de8..00000000 --- a/public/userarea/save_edited_data.php +++ /dev/null @@ -1,47 +0,0 @@ - false, 'message' => '']; - -try { - if ($_SERVER['REQUEST_METHOD'] !== 'POST' || !isset($_POST['iddatadb'])) { - throw new Exception('Richiesta non valida'); - } - - $iddatadb = intval($_POST['iddatadb']); - $db = DBHandlerSelect::getInstance(); - $pdo = $db->getConnection(); - - // Campi non modificabili - $excludeFields = ['importdate', 'status', 'user_id', 'filename_import', 'importreferencecode', 'limscode']; - - // Prepara i dati da aggiornare - $updates = []; - $values = []; - foreach ($_POST as $key => $value) { - if ($key !== 'iddatadb' && !in_array($key, $excludeFields)) { - $updates[] = "$key = ?"; - $values[] = $value; - } - } - $values[] = $iddatadb; - - if (empty($updates)) { - throw new Exception('Nessun dato da aggiornare'); - } - - $sql = "UPDATE datadb SET " . implode(', ', $updates) . " WHERE iddatadb = ?"; - $stmt = $pdo->prepare($sql); - $stmt->execute($values); - - $response['success'] = true; - $response['message'] = 'Riga aggiornata con successo'; -} catch (Exception $e) { - $response['message'] = $e->getMessage(); - error_log("Errore in save_edited_row.php: " . $e->getMessage()); -} - -echo json_encode($response); -exit; diff --git a/public/userarea/save_edited_row.php b/public/userarea/save_edited_row.php deleted file mode 100644 index abc7f052..00000000 --- a/public/userarea/save_edited_row.php +++ /dev/null @@ -1,223 +0,0 @@ - false, 'message' => '']; - -try { - if ($_SERVER['REQUEST_METHOD'] !== 'POST' || !isset($_POST['iddatadb'])) { - throw new Exception('Richiesta non valida'); - } - - $iddatadb = intval($_POST['iddatadb']); - $idclient = isset($_POST['idclient']) ? (is_numeric($_POST['idclient']) ? intval($_POST['idclient']) : null) : null; - $clienteFornitoreId = isset($_POST['cliente_fornitore_id']) ? (is_numeric($_POST['cliente_fornitore_id']) ? intval($_POST['cliente_fornitore_id']) : null) : null; - $testedComponent = isset($_POST['tested_component']) ? trim((string)$_POST['tested_component']) : null; - $db = DBHandlerSelect::getInstance(); - $pdo = $db->getConnection(); - - // ---------------- FIXED FIELDS (template_fixed_mapping) ---------------- - - // ALIAS: fixed_field_key "logico" -> colonna reale su datadb - // (NON tocchiamo MySQL, gestiamo solo qui la traduzione) - $fixedAliasMap = [ - 'ClienteResponsabile' => 'cliente_responsabile_id', - 'ClienteFornitore' => 'cliente_fornitore_id', - 'ClienteAnalisi' => 'clienteAnalisi', - 'MoltiplicatorePrezzo' => 'moltiplicatore_prezzo_id', - 'AnagraficaCertestObject' => 'anagrafica_certest_object_id', - 'AnagraficaCertestService' => 'anagrafica_certest_service_id', - 'ConsegnaRichiesta' => 'consegna_richiesta', - ]; - - // 1) Recupera templateid dalla riga datadb (serve per sapere quali fixed_field_key sono permessi) - $stmtTpl = $pdo->prepare("SELECT templateid FROM datadb WHERE iddatadb = ?"); - $stmtTpl->execute([$iddatadb]); - $tplRow = $stmtTpl->fetch(PDO::FETCH_ASSOC); - - $templateId = isset($tplRow['templateid']) ? (int)$tplRow['templateid'] : 0; - if ($templateId <= 0) { - throw new Exception("Template non trovato per iddatadb=$iddatadb"); - } - - // 2) Recupera elenco fixed fields visibili per quel template - $fxStmt = $pdo->prepare(" - SELECT fixed_field_key, data_type, is_required, default_value - FROM template_fixed_mapping - WHERE template_id = ? AND is_visible_import = 1 - "); - $fxStmt->execute([$templateId]); - $fixedList = $fxStmt->fetchAll(PDO::FETCH_ASSOC); - - // 3) Crea whitelist LOGICA: fixed_field_key => metadata - $fixedWhitelist = []; - foreach ($fixedList as $fx) { - $k = (string)$fx['fixed_field_key']; - - // sicurezza: key ammessa solo se "safe" - if (!preg_match('/^[a-zA-Z0-9_]+$/', $k)) { - continue; - } - - $fixedWhitelist[$k] = [ - 'data_type' => (string)$fx['data_type'], // INT | DATE - 'is_required' => (int)$fx['is_required'], - 'default_value' => $fx['default_value'] ?? null - ]; - } - - // 3b) Crea whitelist REALE: colonna datadb reale => metadata - $realWhitelist = []; - foreach ($fixedWhitelist as $logicalKey => $meta) { - $realCol = $fixedAliasMap[$logicalKey] ?? $logicalKey; - - // sicurezza: anche la colonna reale deve essere "safe" - if (!preg_match('/^[a-zA-Z0-9_]+$/', $realCol)) { - continue; - } - - $realWhitelist[$realCol] = $meta; - } - - // ---------------- DETAILS (import_data_details) ---------------- - $data = $_POST; - $details = []; - - // 1. Estrarre i dettagli da POST - foreach ($data as $key => $value) { - if (preg_match('/^details(\d+)field_value$/', $key, $matches)) { - $id = $matches[1]; - $details[$id] = $value; - } - } - - // 2. Recupera i valori esistenti da import_data_details - $stmt = $pdo->prepare("SELECT mapping_id, field_value FROM import_data_details WHERE id = ?"); - $stmt->execute([$iddatadb]); - $currentValues = []; - while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { - $currentValues[$row['mapping_id']] = $row['field_value']; - } - - // 3. Confronta i valori nuovi con quelli esistenti - $changed = []; - foreach ($details as $id => $newValue) { - $oldValue = $currentValues[$id] ?? null; - if ($oldValue !== $newValue) { - $changed[$id] = [ - 'old' => $oldValue, - 'new' => $newValue - ]; - } - } - - // 4. Aggiorna i dettagli se ci sono modifiche - if (!empty($changed)) { - $updateStmt = $pdo->prepare(" - UPDATE import_data_details - SET field_value = :newValue - WHERE id = :iddatadb AND mapping_id = :mappingId - "); - - foreach ($changed as $mappingId => $values) { - $updateStmt->execute([ - ':newValue' => $values['new'], - ':iddatadb' => $iddatadb, - ':mappingId' => $mappingId - ]); - } - } - - // ---------------- UPDATE datadb: idclient + FIXED FIELDS ---------------- - $setParts = []; - $params = []; - - // 5a) idclient (se presente) - if (isset($idclient)) { - $setParts[] = "idclient = ?"; - $params[] = $idclient; - } - - // 5a2) cliente_fornitore_id (se presente) - if (isset($clienteFornitoreId)) { - $setParts[] = "cliente_fornitore_id = ?"; - $params[] = $clienteFornitoreId; - } - // 5a3) tested_component (se presente) - if (isset($testedComponent)) { - $setParts[] = "tested_component = ?"; - $params[] = ($testedComponent === '') ? null : $testedComponent; - } - // 5b) fixed fields dal POST - // QUI è il punto chiave: accettiamo SOLO colonne reali (realWhitelist), - // ma se dal JS arrivassero ancora key logiche, funzionerebbe uguale - // perché sotto controlliamo anche l'alias. - foreach ($realWhitelist as $realCol => $meta) { - - $postKeyToRead = null; - - // Caso 1: POST contiene già la colonna reale - if (array_key_exists($realCol, $_POST)) { - $postKeyToRead = $realCol; - } else { - // Caso 2: POST contiene la key logica -> troviamo quale logica mappa su questa colonna reale - // (fallback, utile se non hai ancora aggiornato il JS) - foreach ($fixedAliasMap as $logical => $mappedReal) { - if ($mappedReal === $realCol && array_key_exists($logical, $_POST)) { - $postKeyToRead = $logical; - break; - } - } - } - - if ($postKeyToRead === null) { - continue; // non inviato - } - - $val = $_POST[$postKeyToRead]; - - // Normalizzazione per tipo - if ($meta['data_type'] === 'DATE') { - $val = trim((string)$val); - $val = ($val === '') ? null : $val; // atteso formato Y-m-d - } else { // INT - $val = trim((string)$val); - $val = ($val === '') ? null : (int)$val; - } - - $setParts[] = "`$realCol` = ?"; - $params[] = $val; - } - - // esegui update solo se c'è qualcosa da aggiornare - if (!empty($setParts)) { - $params[] = $iddatadb; - - $sqlUpd = "UPDATE datadb SET " . implode(", ", $setParts) . " WHERE iddatadb = ?"; - $updStmt = $pdo->prepare($sqlUpd); - $updStmt->execute($params); - } - - // Messaggio risposta (mantengo la tua logica ma includo fixed) - if (!empty($setParts) && !empty($changed)) { - $response['message'] = "Updated details and datadb fields successfully"; - } elseif (!empty($setParts)) { - $response['message'] = "Updated datadb fields successfully"; - } elseif (!empty($changed)) { - $response['message'] = "Updated details successfully"; - } else { - $response['message'] = "No changes found"; - } - - $response['success'] = true; - $response['changed'] = $changed; // Debug / optional - -} catch (Exception $e) { - $response['success'] = false; - $response['message'] = $e->getMessage(); - error_log("Errore in save_edited_row.php: " . $e->getMessage()); -} - -echo json_encode($response); -exit; diff --git a/public/userarea/save_mapping_json.php b/public/userarea/save_mapping_json.php deleted file mode 100644 index d907c78f..00000000 --- a/public/userarea/save_mapping_json.php +++ /dev/null @@ -1,130 +0,0 @@ -getConnection(); - -$data = json_decode(file_get_contents("php://input"), true); - -if (!$data || !isset($data['id'])) { - echo json_encode(["success" => false, "message" => "Invalid or missing ID"]); - exit; -} - -$mappingId = (int)$data['id']; -$mappingType = $data['mapping_type'] ?? ''; - -$excelColumn = $data['excel_column'] ?? null; -$jsonNode = $data['json_node'] ?? null; -$manualDefault = $data['manual_default'] ?? null; - -$autoValue = $data['auto_value'] ?? 'none'; -$tablename = $data['tablename'] ?? ''; - -try { - // Normalize mapping type - $allowedTypes = ['', 'xls', 'json', 'manual', 'auto']; - if (!in_array($mappingType, $allowedTypes, true)) { - echo json_encode(["success" => false, "message" => "Invalid mapping_type"]); - exit; - } - - // Normalize auto_value - $allowedAuto = ['none', 'import_date', 'import_time', 'export_date', 'export_time']; - if (!in_array($autoValue, $allowedAuto, true)) { - $autoValue = 'none'; - } - - // Decide what to persist based on mapping_type - $isManual = 0; - $excelToSave = null; - $jsonNodeToSave = null; - $manualToSave = null; - $autoToSave = 'none'; - - if ($mappingType === 'xls') { - - $isManual = 0; - $excelToSave = $excelColumn ?: null; - $jsonNodeToSave = null; - $manualToSave = null; - $autoToSave = 'none'; - } elseif ($mappingType === 'json') { - - $isManual = 0; - $excelToSave = null; - $jsonNodeToSave = $jsonNode ?: null; - $manualToSave = null; - $autoToSave = 'none'; - } elseif ($mappingType === 'manual') { - - $isManual = 1; - $excelToSave = null; - $jsonNodeToSave = null; - $manualToSave = $manualDefault; - $autoToSave = 'none'; - } elseif ($mappingType === 'auto') { - - $isManual = 0; - $excelToSave = null; - $jsonNodeToSave = null; - $manualToSave = null; - $autoToSave = $autoValue ?: 'none'; - } else { - - // Reset mapping - $isManual = 0; - $excelToSave = null; - $jsonNodeToSave = null; - $manualToSave = null; - $autoToSave = 'none'; - } - - $stmt = $pdo->prepare(" - UPDATE template_mapping - SET - is_manual = ?, - excel_column = ?, - json_node = ?, - manual_default = ?, - auto_value = ? - WHERE id = ? - "); - - $result = $stmt->execute([ - $isManual, - $excelToSave, - $jsonNodeToSave, - $manualToSave, - $autoToSave, - $mappingId - ]); - - if (!$result) { - echo json_encode(["success" => false, "message" => "Database update failed"]); - exit; - } - - echo json_encode([ - "success" => true, - "message" => "Mapping updated successfully", - "saved" => [ - "id" => $mappingId, - "mapping_type" => $mappingType, - "is_manual" => $isManual, - "excel_column" => $excelToSave, - "json_node" => $jsonNodeToSave, - "manual_default" => $manualToSave, - "auto_value" => $autoToSave - ] - ]); -} catch (Throwable $e) { - echo json_encode(["success" => false, "message" => "Error: " . $e->getMessage()]); -} - -exit; diff --git a/public/userarea/save_matrice.php b/public/userarea/save_matrice.php deleted file mode 100644 index e569e40f..00000000 --- a/public/userarea/save_matrice.php +++ /dev/null @@ -1,39 +0,0 @@ -getConnection(); - -$data = json_decode(file_get_contents('php://input'), true); - -$iddatadb = $data['iddatadb'] ?? null; -$parts = $data['parts'] ?? []; - -if (!$iddatadb || empty($parts)) { - echo json_encode(['success' => false, 'message' => 'Dati mancanti']); - exit; -} - -$part = $parts[0]; -$partId = $part['id'] ?? null; -$idmatrice = $part['idmatrice'] ?? null; - -if (!$partId) { - echo json_encode(['success' => false, 'message' => 'ID parte mancante']); - exit; -} - -try { - $stmt = $pdo->prepare("UPDATE identification_parts - SET idmatrice = :idmatrice, - updated_at = NOW() - WHERE id = :id"); - $stmt->execute([ - ':id' => $partId, - ':idmatrice' => $idmatrice // Può essere NULL - ]); - echo json_encode(['success' => true, 'message' => 'Matrice aggiornata con successo']); -} catch (PDOException $e) { - echo json_encode(['success' => false, 'message' => 'Errore nel salvataggio della matrice: ' . $e->getMessage()]); -} diff --git a/public/userarea/save_part_analysis.php b/public/userarea/save_part_analysis.php deleted file mode 100644 index 8be48a1d..00000000 --- a/public/userarea/save_part_analysis.php +++ /dev/null @@ -1,90 +0,0 @@ - false, 'message' => 'Method not allowed']); - exit; - } - - $partId = isset($_POST['part_id']) ? (int)$_POST['part_id'] : 0; - $iddatadb = isset($_POST['iddatadb']) ? (int)$_POST['iddatadb'] : 0; - $idmatrice = isset($_POST['idmatrice']) ? (int)$_POST['idmatrice'] : 0; - $analysisRecordkey = trim($_POST['analysis_recordkey'] ?? ''); - $analysisName = trim($_POST['analysis_name'] ?? ''); - $analysisMethod = trim($_POST['analysis_method'] ?? ''); - $analysisLevel = isset($_POST['analysis_level']) && $_POST['analysis_level'] !== '' ? (int)$_POST['analysis_level'] : null; - $isWebSelectable = isset($_POST['is_web_selectable']) ? (int)$_POST['is_web_selectable'] : 0; - $isAccredited = isset($_POST['is_accredited']) ? (int)$_POST['is_accredited'] : 0; - - if ($partId <= 0 || $analysisRecordkey === '') { - http_response_code(400); - echo json_encode(['success' => false, 'message' => 'Missing required data']); - exit; - } - - $db = DBHandlerSelect::getInstance(); - $pdo = $db->getConnection(); - - $stmt = $pdo->prepare(" - INSERT INTO identification_parts_analyses ( - part_id, - iddatadb, - idmatrice, - analysis_recordkey, - analysis_name, - analysis_method, - analysis_level, - is_web_selectable, - is_accredited - ) VALUES ( - :part_id, - :iddatadb, - :idmatrice, - :analysis_recordkey, - :analysis_name, - :analysis_method, - :analysis_level, - :is_web_selectable, - :is_accredited - ) - ON DUPLICATE KEY UPDATE - analysis_name = VALUES(analysis_name), - analysis_method = VALUES(analysis_method), - analysis_level = VALUES(analysis_level), - is_web_selectable = VALUES(is_web_selectable), - is_accredited = VALUES(is_accredited), - iddatadb = VALUES(iddatadb), - idmatrice = VALUES(idmatrice), - updated_at = CURRENT_TIMESTAMP - "); - - $stmt->execute([ - ':part_id' => $partId, - ':iddatadb' => $iddatadb ?: null, - ':idmatrice' => $idmatrice ?: null, - ':analysis_recordkey' => $analysisRecordkey, - ':analysis_name' => $analysisName ?: null, - ':analysis_method' => $analysisMethod ?: null, - ':analysis_level' => $analysisLevel, - ':is_web_selectable' => $isWebSelectable, - ':is_accredited' => $isAccredited, - ]); - - echo json_encode([ - 'success' => true, - 'message' => 'Association saved' - ]); -} catch (Throwable $e) { - http_response_code(500); - echo json_encode([ - 'success' => false, - 'message' => $e->getMessage() - ]); -} diff --git a/public/userarea/save_parts.php b/public/userarea/save_parts.php deleted file mode 100644 index 221b0fac..00000000 --- a/public/userarea/save_parts.php +++ /dev/null @@ -1,167 +0,0 @@ -getConnection(); -$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - -$data = json_decode(file_get_contents('php://input'), true); - -$iddatadb = $data['iddatadb'] ?? null; -$parts = $data['parts'] ?? []; - -if (!$iddatadb || empty($parts)) { - echo json_encode(['success' => false, 'message' => 'Dati mancanti']); - exit; -} - -try { - $pdo->beginTransaction(); - $results = []; - - // Custom fields statements (child table) - $stmtUpsertCF = $pdo->prepare(" - INSERT INTO identification_parts_customfields (part_id, field_id, value_id, value_text) - VALUES (:part_id, :field_id, :value_id, :value_text) - ON DUPLICATE KEY UPDATE - value_id = VALUES(value_id), - value_text = VALUES(value_text), - updated_at = NOW() - "); - - $stmtDeleteCF = $pdo->prepare(" - DELETE FROM identification_parts_customfields - WHERE part_id = :part_id AND field_id = :field_id - "); - - foreach ($parts as $part) { - $partId = $part['id'] ?? null; - $partNumber = $part['part_number'] ?? null; - $partDescription = $part['part_description'] ?? ''; - $mix = $part['mix'] ?? 'N'; - $idmatrice = $part['idmatrice'] ?? null; - $note = $part['note'] ?? null; - $dateexpiry = $part['dateexpiry'] ?? null; - - // Extra field (0/1) - $extraFieldId = $part['extra_field_id'] ?? null; - $extraValueId = $part['extra_value_id'] ?? null; - $extraValueText = $part['extra_value_text'] ?? null; - - // Normalizza vuoti - if ($extraFieldId !== null && $extraFieldId !== '') $extraFieldId = (int)$extraFieldId; - else $extraFieldId = null; - if ($extraValueId !== null && $extraValueId !== '') $extraValueId = (int)$extraValueId; - else $extraValueId = null; - if ($extraValueText !== null) { - $extraValueText = trim((string)$extraValueText); - if ($extraValueText === '') $extraValueText = null; - } - - if ($partId) { - // UPDATE se la parte esiste (sempre) - $stmt = $pdo->prepare("UPDATE identification_parts - SET part_number = :part_number, - part_description = :part_description, - mix = :mix, - idmatrice = :idmatrice, - note = :note, - dateexpiry = :dateexpiry, - updated_at = NOW() - WHERE id = :id"); - $stmt->execute([ - ':id' => $partId, - ':part_number' => $partNumber, - ':part_description' => $partDescription, - ':mix' => $mix, - ':idmatrice' => $idmatrice, - ':note' => $note, - ':dateexpiry' => $dateexpiry, - ]); - - // Save extra custom field (if provided) - if ($extraFieldId !== null) { - if ($extraValueId === null && $extraValueText === null) { - $stmtDeleteCF->execute([ - ':part_id' => $partId, - ':field_id' => $extraFieldId, - ]); - } else { - $stmtUpsertCF->execute([ - ':part_id' => $partId, - ':field_id' => $extraFieldId, - ':value_id' => $extraValueId, - ':value_text' => $extraValueText, - ]); - } - } - - $cf_row = null; - if ($extraFieldId !== null) { - $chk = $pdo->prepare("SELECT id, value_id, value_text FROM identification_parts_customfields WHERE part_id = ? AND field_id = ?"); - $chk->execute([$partId, $extraFieldId]); - $cf_row = $chk->fetch(PDO::FETCH_ASSOC); - } - - $results[] = [ - 'part_id' => $partId, - 'part_number' => $partNumber, - 'message' => 'Parte aggiornata con successo', - 'cf_row' => $cf_row - ]; - } else if ($partDescription || $note || $dateexpiry) { - // INSERT per nuova parte (solo se ha contenuto) - $stmt = $pdo->prepare("INSERT INTO identification_parts - (iddatadb, part_number, part_description, mix, idmatrice, note, dateexpiry, created_at, updated_at) - VALUES (:iddatadb, :part_number, :part_description, :mix, :idmatrice, :note, :dateexpiry, NOW(), NOW())"); - $stmt->execute([ - ':iddatadb' => $iddatadb, - ':part_number' => $partNumber, - ':part_description' => $partDescription, - ':mix' => $mix, - ':idmatrice' => $idmatrice, - ':note' => $note, - ':dateexpiry' => $dateexpiry, - ]); - $newId = (int)$pdo->lastInsertId(); - - if ($extraFieldId !== null) { - if ($extraValueId === null && $extraValueText === null) { - $stmtDeleteCF->execute([ - ':part_id' => $newId, - ':field_id' => $extraFieldId, - ]); - } else { - $stmtUpsertCF->execute([ - ':part_id' => $newId, - ':field_id' => $extraFieldId, - ':value_id' => $extraValueId, - ':value_text' => $extraValueText, - ]); - } - } - - $results[] = [ - 'part_id' => $newId, - 'part_number' => $partNumber, - 'message' => 'Parte salvata con successo' - ]; - } - } - - $pdo->commit(); - echo json_encode([ - 'success' => true, - 'results' => $results, - 'debug_last' => [ - 'extra_field_id' => $extraFieldId ?? null, - 'extra_value_id' => $extraValueId ?? null, - 'extra_value_text' => $extraValueText ?? null, - 'part_id' => $partId ?? ($newId ?? null), - ] - ]); -} catch (PDOException $e) { - $pdo->rollBack(); - echo json_encode(['success' => false, 'message' => 'Errore nel salvataggio: ' . $e->getMessage()]); -} diff --git a/public/userarea/save_parts_photo_iddatadb.php b/public/userarea/save_parts_photo_iddatadb.php deleted file mode 100644 index afa69d3a..00000000 --- a/public/userarea/save_parts_photo_iddatadb.php +++ /dev/null @@ -1,48 +0,0 @@ -getConnection(); - -$data = json_decode(file_get_contents('php://input'), true); - -$iddatadb = $data['iddatadb'] ?? null; -$partIds = $data['partIds'] ?? []; -$photoList = $data['photoList'] ?? null; - -if ($iddatadb) { - if (count($partIds) != 0) { - $idList = array_values(array_map('intval', $partIds)); - $placeholders = []; - $parameters = [':iddatadb' => $iddatadb]; - - foreach ($idList as $index => $id) { - $paramName = ":id{$index}"; - $placeholders[] = $paramName; - $parameters[$paramName] = $id; - } - - $sql = 'UPDATE identification_parts SET iddatadb = :iddatadb WHERE id IN (' . implode(',', $placeholders) . ')'; - $stmt = $pdo->prepare($sql); - $stmt->execute($parameters); - } - - if (count($photoList) != 0) { - $placeholders = []; - $parameters = [':iddatadb' => $iddatadb]; - - foreach ($photoList as $index => $photo) { - $paramName = ":photo{$index}"; - $placeholders[] = $paramName; - $parameters[$paramName] = $photo; - } - - $stmt = $pdo->prepare('UPDATE datadb_photos SET iddatadb = :iddatadb WHERE file_path IN (' . implode(',', $placeholders) . ')'); - $stmt->execute($parameters); - } - - echo json_encode(['success' => true, 'message' => '']); -} else { - echo json_encode(['success' => false, 'message' => 'Dati mancanti']); -} diff --git a/public/userarea/save_parts_quotation.php b/public/userarea/save_parts_quotation.php deleted file mode 100644 index 2445f701..00000000 --- a/public/userarea/save_parts_quotation.php +++ /dev/null @@ -1,60 +0,0 @@ -getConnection(); - -$data = json_decode(file_get_contents('php://input'), true); - -$idquotations = $data['idquotations'] ?? null; -$parts = $data['parts'] ?? []; - -if (!$idquotations || empty($parts)) { - echo json_encode(['success' => false, 'message' => 'Dati mancanti']); - exit; -} - -$part = $parts[0]; -$partId = $part['id'] ?? null; -$partNumber = $part['part_number'] ?? null; -$partDescription = $part['part_description'] ?? ''; -$mix = $part['mix'] ?? 'N'; - -if ($partDescription) { - try { - if ($partId) { - // UPDATE se esiste già la parte - $stmt = $pdo->prepare("UPDATE identification_parts - SET part_number = :part_number, - part_description = :part_description, - mix = :mix, - updated_at = NOW() - WHERE id = :id"); - $stmt->execute([ - ':id' => $partId, - ':part_number' => $partNumber, - ':part_description' => $partDescription, - ':mix' => $mix - ]); - echo json_encode(['success' => true, 'part_id' => $partId, 'part_number' => $partNumber, 'message' => 'Parte aggiornata con successo']); - } else { - // INSERT se è nuova - $stmt = $pdo->prepare("INSERT INTO identification_parts - (idquotations, part_number, part_description, mix, created_at, updated_at) - VALUES (:idquotations, :part_number, :part_description, :mix, NOW(), NOW())"); - $stmt->execute([ - ':idquotations' => $idquotations, - ':part_number' => $partNumber, - ':part_description' => $partDescription, - ':mix' => $mix - ]); - $newId = $pdo->lastInsertId(); - echo json_encode(['success' => true, 'part_id' => $newId, 'part_number' => $partNumber, 'message' => 'Parte salvata con successo']); - } - } catch (PDOException $e) { - echo json_encode(['success' => false, 'message' => 'Errore nel salvataggio: ' . $e->getMessage()]); - } -} else { - echo json_encode(['success' => false, 'message' => 'Descrizione mancante']); -} diff --git a/public/userarea/schemi_base_response.json b/public/userarea/schemi_base_response.json deleted file mode 100644 index 4e39ea75..00000000 --- a/public/userarea/schemi_base_response.json +++ /dev/null @@ -1,905 +0,0 @@ -{ - "@odata.context": "https:\/\/bvcpsitaly-elims.com\/limsapi\/api\/odata\/$metadata#SchemaCustomField", - "value": [ - { - "IdSchemaCustomFields": 41, - "ConteggioClienti": 0, - "Nome": "Labostudio", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 42, - "ConteggioClienti": 0, - "Nome": "Schema 1", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 43, - "ConteggioClienti": 0, - "Nome": "Schema1", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 44, - "ConteggioClienti": 0, - "Nome": "Cuoio\/Pelle Standard \/ Leather", - "Descrizione": "Schema per tutti i campioni in cuoio\/pelle per i quali non \u00e8 specificato un destinatario.\r\n" - }, - { - "IdSchemaCustomFields": 45, - "ConteggioClienti": 0, - "Nome": "Borse", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 46, - "ConteggioClienti": 0, - "Nome": "Borse Burberry", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 47, - "ConteggioClienti": 0, - "Nome": "pelle calzatura", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 48, - "ConteggioClienti": 0, - "Nome": "Standard \/ Generico", - "Descrizione": "\r\n" - }, - { - "IdSchemaCustomFields": 49, - "ConteggioClienti": 0, - "Nome": "Accessori Metallici \/ Metallic Accessories", - "Descrizione": "Schema per tutti gli Accessori Metallici\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 50, - "ConteggioClienti": 0, - "Nome": "Tessile \/ Textiles", - "Descrizione": "Schema per tutti i Tessuti\r\n" - }, - { - "IdSchemaCustomFields": 52, - "ConteggioClienti": 0, - "Nome": "Brasport", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 54, - "ConteggioClienti": 0, - "Nome": "Chanel Calzatura", - "Descrizione": "\r\n" - }, - { - "IdSchemaCustomFields": 55, - "ConteggioClienti": 0, - "Nome": "Burberry", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 57, - "ConteggioClienti": 0, - "Nome": "Z_Ralph Lauren - Tessile", - "Descrizione": "Schema per tutti i campioni in tessuto per Ralph Lauren.\r\n\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 58, - "ConteggioClienti": 0, - "Nome": "LIU JO", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 59, - "ConteggioClienti": 0, - "Nome": "Migrazione tra Componenti", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 60, - "ConteggioClienti": 0, - "Nome": "Prova Outsourcing", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 61, - "ConteggioClienti": 0, - "Nome": "Marc Jacobs", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 62, - "ConteggioClienti": 0, - "Nome": "A. TESTONI", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 63, - "ConteggioClienti": 0, - "Nome": "Chanel CHINA PROJECT", - "Descrizione": "\r\n" - }, - { - "IdSchemaCustomFields": 66, - "ConteggioClienti": 0, - "Nome": "GUESS", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 68, - "ConteggioClienti": 0, - "Nome": "Valentino", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 69, - "ConteggioClienti": 0, - "Nome": "DESIGUAL", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 70, - "ConteggioClienti": 0, - "Nome": "FENDI PELLETTERIA", - "Descrizione": "Solo per FENDI Pelletteria_INGLESE\r\n" - }, - { - "IdSchemaCustomFields": 71, - "ConteggioClienti": 0, - "Nome": "Z_Cuoio\/Pelle Standard ACCREDIA", - "Descrizione": "Schema per tutti i campioni in cuoio\/pelle per i quali non \u00e8 specificato un destinatario.\r\n" - }, - { - "IdSchemaCustomFields": 72, - "ConteggioClienti": 0, - "Nome": "Z_BALLY", - "Descrizione": "sia per calzatura che pelletteria. Aggiunto campo TEST DESCRIPTION, compreso nella fatturazione per le divisioni pelletteria.\r\n\r\n" - }, - { - "IdSchemaCustomFields": 73, - "ConteggioClienti": 0, - "Nome": "Z_Ralph Lauren - Leather", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 74, - "ConteggioClienti": 0, - "Nome": "Z_Ralph Lauren - Fabric", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 76, - "ConteggioClienti": 0, - "Nome": "NORDSTROM", - "Descrizione": "\r\n" - }, - { - "IdSchemaCustomFields": 77, - "ConteggioClienti": 0, - "Nome": "ONWARD LUXURY GROUP", - "Descrizione": "\r\n" - }, - { - "IdSchemaCustomFields": 78, - "ConteggioClienti": 0, - "Nome": "P&G SRL_Progetto Durability", - "Descrizione": "\r\n" - }, - { - "IdSchemaCustomFields": 79, - "ConteggioClienti": 0, - "Nome": "Bally qualsiasi divisione", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 80, - "ConteggioClienti": 0, - "Nome": "FENDI CALZATURA", - "Descrizione": "\r\n" - }, - { - "IdSchemaCustomFields": 81, - "ConteggioClienti": 0, - "Nome": "LouBoutin", - "Descrizione": "\r\n" - }, - { - "IdSchemaCustomFields": 82, - "ConteggioClienti": 0, - "Nome": "MONCLER Brand", - "Descrizione": "Da utilizzare solo per il Brand Diretto\r\nGR 19\/03\/2024" - }, - { - "IdSchemaCustomFields": 83, - "ConteggioClienti": 0, - "Nome": "JIMMY CHOO", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 84, - "ConteggioClienti": 0, - "Nome": "Yves Saint Laurent", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 85, - "ConteggioClienti": 0, - "Nome": "BENETTON", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 86, - "ConteggioClienti": 0, - "Nome": "UPLOAD REPORT", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 87, - "ConteggioClienti": 0, - "Nome": "Hermes Calzatura", - "Descrizione": "\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 88, - "ConteggioClienti": 0, - "Nome": "C&A", - "Descrizione": "Schema per fornitori e C&A diretto\r\n" - }, - { - "IdSchemaCustomFields": 89, - "ConteggioClienti": 0, - "Nome": "AMERICAN EAGLE", - "Descrizione": "Schema per American Eagle\/Todd snyder\r\n\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 91, - "ConteggioClienti": 0, - "Nome": "Ferragamo", - "Descrizione": "\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 93, - "ConteggioClienti": 0, - "Nome": "Z_Alexander McQueen", - "Descrizione": "\r\n\r\n" - }, - { - "IdSchemaCustomFields": 95, - "ConteggioClienti": 0, - "Nome": "Balenciaga Pelletteria", - "Descrizione": "\r\n" - }, - { - "IdSchemaCustomFields": 96, - "ConteggioClienti": 0, - "Nome": "DUNHILL", - "Descrizione": "SCHEMA DUNHILL tutti i tipi di campioni\r\n" - }, - { - "IdSchemaCustomFields": 97, - "ConteggioClienti": 0, - "Nome": "PRELIEVI ACQUE", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 98, - "ConteggioClienti": 0, - "Nome": "LouBoutin_Tossicologico", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 99, - "ConteggioClienti": 0, - "Nome": "ROBAN'S ", - "Descrizione": "tutte le divisioni\r\n\r\n" - }, - { - "IdSchemaCustomFields": 100, - "ConteggioClienti": 0, - "Nome": "PROGETTO LUGGAGE", - "Descrizione": "Progetto Luggage Hermes\r\n\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 102, - "ConteggioClienti": 0, - "Nome": "Balmain", - "Descrizione": "Schema per tutti i campioni Balmain" - }, - { - "IdSchemaCustomFields": 103, - "ConteggioClienti": 0, - "Nome": "ZDHC", - "Descrizione": "Schema di Riferimento ZDHC Wastewaters" - }, - { - "IdSchemaCustomFields": 104, - "ConteggioClienti": 0, - "Nome": "GUCCI CDC 4172", - "Descrizione": "\r\n" - }, - { - "IdSchemaCustomFields": 105, - "ConteggioClienti": 0, - "Nome": "Z_ASOS", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 106, - "ConteggioClienti": 0, - "Nome": "Z_BOUX AVENUE", - "Descrizione": "28\/09 no indicazioni su esigenze di fatturazione (detto da Frosini)\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 107, - "ConteggioClienti": 0, - "Nome": "BONPOINT", - "Descrizione": "05\/10 creazione\r\n\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 108, - "ConteggioClienti": 0, - "Nome": "Canada Goose", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 109, - "ConteggioClienti": 0, - "Nome": "DIESEL", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 110, - "ConteggioClienti": 0, - "Nome": "AQC_Leather", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 111, - "ConteggioClienti": 0, - "Nome": "BEAUMANOIR (CC-Mor-Bon-Breal)", - "Descrizione": "04\/02\/21_ AGGIORNATO 05\/08\r\n" - }, - { - "IdSchemaCustomFields": 112, - "ConteggioClienti": 0, - "Nome": "BooHoo", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 114, - "ConteggioClienti": 0, - "Nome": "Golden Goose", - "Descrizione": "Golden goose\r\n" - }, - { - "IdSchemaCustomFields": 115, - "ConteggioClienti": 0, - "Nome": "Z_ZLABEL", - "Descrizione": "Schema per ZLABEL" - }, - { - "IdSchemaCustomFields": 116, - "ConteggioClienti": 0, - "Nome": "Zadig & Voltaire", - "Descrizione": "Schema per Zadig & Voltaire" - }, - { - "IdSchemaCustomFields": 117, - "ConteggioClienti": 0, - "Nome": "Gemo", - "Descrizione": "Schema solo per Gemo\r\n\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 118, - "ConteggioClienti": 0, - "Nome": "PROMOD", - "Descrizione": "CHF 06\/08\r\n\r\n\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 119, - "ConteggioClienti": 0, - "Nome": "LA HALLE (BEAUMANOIR)", - "Descrizione": "13\/08\/2021 CHF\r\n\r\n" - }, - { - "IdSchemaCustomFields": 120, - "ConteggioClienti": 0, - "Nome": "LA REDOUTE", - "Descrizione": "14\/09\/2021 AD\r\n\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 121, - "ConteggioClienti": 0, - "Nome": "TOD'S", - "Descrizione": "Schema per materiale gb18401 e GB20400\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 122, - "ConteggioClienti": 0, - "Nome": "ASOS rev 1", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 123, - "ConteggioClienti": 0, - "Nome": "Monoprix", - "Descrizione": "Schema per Monoprix\r\n\r\n" - }, - { - "IdSchemaCustomFields": 124, - "ConteggioClienti": 0, - "Nome": "DIOR Ita", - "Descrizione": "CHF 21\/03\r\n" - }, - { - "IdSchemaCustomFields": 125, - "ConteggioClienti": 0, - "Nome": "GEOX - Raw Material", - "Descrizione": "SCHEMA DA USARE SOLO PER GEOX - SOLO PER LE SUOLE E MATERIALI DENOMINATI RPU \/ RAW MATERIAL" - }, - { - "IdSchemaCustomFields": 126, - "ConteggioClienti": 0, - "Nome": "CAMAIEU", - "Descrizione": "SCHEMA DA USARE SOLO PER CAMAIEU\r\n" - }, - { - "IdSchemaCustomFields": 127, - "ConteggioClienti": 0, - "Nome": "Z_Golden Goose FTW", - "Descrizione": "Golden goose\r\n" - }, - { - "IdSchemaCustomFields": 128, - "ConteggioClienti": 0, - "Nome": "STEVE MADDEN - FOOTWEAR", - "Descrizione": "DA UTILIZZARE SOLO PER DESTINAZIONE D'USO CALZATURA\r\n" - }, - { - "IdSchemaCustomFields": 129, - "ConteggioClienti": 0, - "Nome": "Z_Carhartt", - "Descrizione": "SCHEMA DA UTILIZZARE SOLO PER RICHIESTE UFFICIALI CARHARTT\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 131, - "ConteggioClienti": 0, - "Nome": "DAMART", - "Descrizione": "\r\n\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 132, - "ConteggioClienti": 0, - "Nome": "Gruppo OTB", - "Descrizione": "Schema per Staff International, Diesel e Brave kid\r\n\r\n\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 133, - "ConteggioClienti": 0, - "Nome": "FERRARI", - "Descrizione": "Schema da usare per Ferrari e fornitori\r\n\r\n" - }, - { - "IdSchemaCustomFields": 134, - "ConteggioClienti": 0, - "Nome": "GAP - ABBIGLIAMENTO", - "Descrizione": "Schema GAP da utilizzare solo per destinazione abbigliamento\r\n" - }, - { - "IdSchemaCustomFields": 135, - "ConteggioClienti": 0, - "Nome": "GAP - CALZATURA", - "Descrizione": "Schema GAP da utilizzare solo per destinazione calzatura\r\n\r\n" - }, - { - "IdSchemaCustomFields": 136, - "ConteggioClienti": 0, - "Nome": "SALLING GROUP", - "Descrizione": "Schema per Salling Group\r\n\r\n\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 137, - "ConteggioClienti": 0, - "Nome": "SOFT SURROUNDINGS", - "Descrizione": "Schema da utilizzare per Soft Surroundings\r\n\r\n" - }, - { - "IdSchemaCustomFields": 138, - "ConteggioClienti": 0, - "Nome": "E-LIMS - Cuoio\/Pelle Standard \/ Leather", - "Descrizione": "Schema da utilizzare solo per accettazioni online\r\n" - }, - { - "IdSchemaCustomFields": 139, - "ConteggioClienti": 0, - "Nome": "Z_ZALANDO", - "Descrizione": "Schema per ZALANDO ------ (NON per ZLABEL che ha il suo)\r\n" - }, - { - "IdSchemaCustomFields": 140, - "ConteggioClienti": 0, - "Nome": "LVMH", - "Descrizione": "gennaio 2023\r\n" - }, - { - "IdSchemaCustomFields": 141, - "ConteggioClienti": 0, - "Nome": "Valentino - eLims", - "Descrizione": "SCHEMA DA UTILIZZARE SOLO PER L'ACCETTAZIONE ONLINE DI VALENTINO" - }, - { - "IdSchemaCustomFields": 142, - "ConteggioClienti": 0, - "Nome": "FENDI PELLETTERIA COMPLIANCE", - "Descrizione": "Solo per FENDI Pelletteria_INGLESE 04\/05\/2023\r\n" - }, - { - "IdSchemaCustomFields": 143, - "ConteggioClienti": 0, - "Nome": "TAPESTRY", - "Descrizione": "04\/05\/2023, agg secondo procedura 08\/11\/23\r\n" - }, - { - "IdSchemaCustomFields": 144, - "ConteggioClienti": 0, - "Nome": "ALEXANDER MC QUEEN", - "Descrizione": "ALEXANDER MC QUEEN 15\/05\/2023\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 145, - "ConteggioClienti": 0, - "Nome": "Hermes_Chimici_Parigi", - "Descrizione": "\r\n" - }, - { - "IdSchemaCustomFields": 146, - "ConteggioClienti": 0, - "Nome": "CELINE ABBIGLIAMENTO_Progetto Speciale", - "Descrizione": "IO 202 CELINE ABBIGLIAMENTO_06\/06\/203_CHF\r\n\r\n" - }, - { - "IdSchemaCustomFields": 147, - "ConteggioClienti": 0, - "Nome": "GEOX - Prodotto Finito", - "Descrizione": "SCHEMA DA USARE SOLO PER GEOX - SOLO PER PRODOTTO FINITO" - }, - { - "IdSchemaCustomFields": 149, - "ConteggioClienti": 0, - "Nome": "Hermes\/IDO", - "Descrizione": "creato il 05\/07\/2023 CHF\r\n" - }, - { - "IdSchemaCustomFields": 150, - "ConteggioClienti": 0, - "Nome": "Tessile \/ Textiles PER CLIENTI CON OBLO", - "Descrizione": "Schema per tutti i Tessuti QUANDO IL CLIENTE NECESSITA DI NR OBLO\r\n\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 151, - "ConteggioClienti": 0, - "Nome": "J JIll", - "Descrizione": "Schema per cliente J JIll, necessario riportare la recommended fiber content in schema verde\r\n\r\n\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 152, - "ConteggioClienti": 0, - "Nome": "AUCHAN - TAPE A L'OEIL", - "Descrizione": "Schema AUCHAN da utilizzare solo per la divisione TAPE A L'OEIL SA, successivamente se uguale da usare anche per le altre divisioni ed uniformarlo come generico" - }, - { - "IdSchemaCustomFields": 153, - "ConteggioClienti": 0, - "Nome": "ALL SAINTS - BUSCEMI", - "Descrizione": "SCHE DA USARE SOLO PER ALL SAINTS E BUSCEMI\r\n\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 154, - "ConteggioClienti": 0, - "Nome": "CELINE - LVMH", - "Descrizione": "Schema con aggiunta campi LVMH per estrazioni\r\nAD-29\/03\/2024" - }, - { - "IdSchemaCustomFields": 155, - "ConteggioClienti": 0, - "Nome": "SeyMeChamLou", - "Descrizione": "DA USARE SOLO PER SEYMECHAMLOU (LOUBOUTIN)\r\n" - }, - { - "IdSchemaCustomFields": 156, - "ConteggioClienti": 0, - "Nome": "PRADA", - "Descrizione": "PER ADESSO DA USARE PER ABBIGLIAMENTO E CALZATURA\r\n\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 157, - "ConteggioClienti": 0, - "Nome": "Hermes_HCP", - "Descrizione": "Schema per unicamente HCP" - }, - { - "IdSchemaCustomFields": 158, - "ConteggioClienti": 0, - "Nome": "STONE ISLAND", - "Descrizione": "Schema per tutti i campioni in cuoio\/pelle per i quali non \u00e8 specificato un destinatario.\r\n" - }, - { - "IdSchemaCustomFields": 159, - "ConteggioClienti": 0, - "Nome": "Chanel_Pierre Damien", - "Descrizione": "Schema da usare per Campioni ricevuti da Pierre-Damien Verine e suo staff CHANEL.\r\n" - }, - { - "IdSchemaCustomFields": 160, - "ConteggioClienti": 0, - "Nome": "Z_ACNE", - "Descrizione": "\r\n.\r\n" - }, - { - "IdSchemaCustomFields": 161, - "ConteggioClienti": 0, - "Nome": "OBERALP GROUP", - "Descrizione": "Schema da usare solo per Oberalp Group\r\n" - }, - { - "IdSchemaCustomFields": 162, - "ConteggioClienti": 0, - "Nome": "Club Monaco", - "Descrizione": "da usare solo per Club Monaco GR 20\/02\/2024" - }, - { - "IdSchemaCustomFields": 163, - "ConteggioClienti": 0, - "Nome": "Devred", - "Descrizione": "Schema creato per cliente DEVRED\r\nGR 18\/03\/2024 aggiornato il 23\/04\/2026\r\n\r\n" - }, - { - "IdSchemaCustomFields": 164, - "ConteggioClienti": 0, - "Nome": "MONCLER Supplier", - "Descrizione": "Da utilizzare per fornitori Moncler \r\nGR 19\/03\/2024" - }, - { - "IdSchemaCustomFields": 165, - "ConteggioClienti": 0, - "Nome": "Kering Sunglasses", - "Descrizione": "Schema per tutti i campioni di qualsiasi matrice escluso cuoio\/pelle\r\n\r\n" - }, - { - "IdSchemaCustomFields": 166, - "ConteggioClienti": 0, - "Nome": "Giorgio Armani", - "Descrizione": "\r\n\r\n" - }, - { - "IdSchemaCustomFields": 167, - "ConteggioClienti": 0, - "Nome": "Chanel USA", - "Descrizione": "\r\n" - }, - { - "IdSchemaCustomFields": 168, - "ConteggioClienti": 0, - "Nome": "Staff Calzatura", - "Descrizione": "Schema per tutti i campioni di qualsiasi matrice escluso cuoio\/pelle\r\n\r\n" - }, - { - "IdSchemaCustomFields": 169, - "ConteggioClienti": 0, - "Nome": "P&G SRL", - "Descrizione": "\r\n" - }, - { - "IdSchemaCustomFields": 170, - "ConteggioClienti": 0, - "Nome": "INCOM", - "Descrizione": "Schema da utilizzare per INCOM" - }, - { - "IdSchemaCustomFields": 171, - "ConteggioClienti": 0, - "Nome": "RIVER ISLAND", - "Descrizione": "SCHEDA DA USARE SOLO PER RIVER ISLAND - NO CALZATURA\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 172, - "ConteggioClienti": 0, - "Nome": "Longchamp", - "Descrizione": "Schema per tutti i campioni con RIchiesta Longchamp ufficiale\r\n" - }, - { - "IdSchemaCustomFields": 173, - "ConteggioClienti": 0, - "Nome": "Bottega Veneta", - "Descrizione": "Schema per tutti i campioni di Bottega Veneta di Stella" - }, - { - "IdSchemaCustomFields": 174, - "ConteggioClienti": 0, - "Nome": "Mint Velvet", - "Descrizione": "Schema per tutti i campioni di Mint Velvel con richiesta ufficiale.\r\n\r\n" - }, - { - "IdSchemaCustomFields": 176, - "ConteggioClienti": 0, - "Nome": "RIVER ISLAND FOOTWEAR", - "Descrizione": "SCHEDA DA USARE SOLO PER RIVER ISLAND - USARE SOLO PER\r\n CALZATURA\r\n" - }, - { - "IdSchemaCustomFields": 177, - "ConteggioClienti": 0, - "Nome": "Phoebe philo ACC", - "Descrizione": "(scarpe, borse, cinture, occhiali, gioielleria)\r\n" - }, - { - "IdSchemaCustomFields": 178, - "ConteggioClienti": 0, - "Nome": "New Guards Group", - "Descrizione": "\r\n" - }, - { - "IdSchemaCustomFields": 179, - "ConteggioClienti": 0, - "Nome": "Giorgio Armani Operation", - "Descrizione": "\r\n\r\n" - }, - { - "IdSchemaCustomFields": 180, - "ConteggioClienti": 0, - "Nome": "Chloe'", - "Descrizione": "\r\n" - }, - { - "IdSchemaCustomFields": 181, - "ConteggioClienti": 0, - "Nome": "LVMH non diretti", - "Descrizione": "utilizzato ogni qualvolta siano caricati pacchetti \/ prove singole che non rientrano nel programma LVMH \r\n" - }, - { - "IdSchemaCustomFields": 182, - "ConteggioClienti": 0, - "Nome": "Ralph Lauren - All testing V.10", - "Descrizione": "AGGIORNAMENTO AL 16\/03\/2026 per estrazione fatturazione" - }, - { - "IdSchemaCustomFields": 183, - "ConteggioClienti": 0, - "Nome": "TWINSET", - "Descrizione": "Schema da usare per Twinset - come da mail di EP del 20\/05\/2025\r\n\r\n" - }, - { - "IdSchemaCustomFields": 184, - "ConteggioClienti": 0, - "Nome": "ACNE STUDIOS rev 01", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 185, - "ConteggioClienti": 0, - "Nome": "Brunello cucinelli", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 186, - "ConteggioClienti": 0, - "Nome": "TWINSET", - "Descrizione": "Schema per tutti i campioni di qualsiasi matrice escluso cuoio\/pelle\r\n\r\n" - }, - { - "IdSchemaCustomFields": 187, - "ConteggioClienti": 0, - "Nome": "LORO PIANA", - "Descrizione": "Schema per tutti i campioni Loro Piana\r\n" - }, - { - "IdSchemaCustomFields": 188, - "ConteggioClienti": 0, - "Nome": "LEMAIRE", - "Descrizione": "Schema per tutti i campioni in cuoio\/pelle per i quali non \u00e8 specificato un destinatario.\r\n" - }, - { - "IdSchemaCustomFields": 189, - "ConteggioClienti": 0, - "Nome": "TEST_IT_SCHEMA", - "Descrizione": "Test per IT" - }, - { - "IdSchemaCustomFields": 190, - "ConteggioClienti": 0, - "Nome": "LBS Interscambio", - "Descrizione": "Schema per tutti i campioni interscambio LBS\r\n" - }, - { - "IdSchemaCustomFields": 191, - "ConteggioClienti": 0, - "Nome": "KIABI", - "Descrizione": "Schema per il cliente Kiabi\r\n" - }, - { - "IdSchemaCustomFields": 192, - "ConteggioClienti": 0, - "Nome": "INDITEX", - "Descrizione": "Schema da usare solo per richieste INDITEX" - }, - { - "IdSchemaCustomFields": 193, - "ConteggioClienti": 0, - "Nome": "AQC_Other materials", - "Descrizione": null - }, - { - "IdSchemaCustomFields": 194, - "ConteggioClienti": 0, - "Nome": "Hermes ADM & Silk", - "Descrizione": "SCHEMA DA USARE SOLO PER LA DIVISIONE ADM & SILK\r\n\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 195, - "ConteggioClienti": 0, - "Nome": "Chloe'_APPAREL", - "Descrizione": "Schema aggiornato il 18\/12\/25 secondo modulo excel x codifica Elims\r\nGR" - }, - { - "IdSchemaCustomFields": 196, - "ConteggioClienti": 0, - "Nome": "DUNHILL_DRAFT NON USARE", - "Descrizione": "SCHEMA DUNHILL NON USARE STUDIO NUOVA PROCEDURA NOVEMBRE 2025\r\n\r\n" - }, - { - "IdSchemaCustomFields": 197, - "ConteggioClienti": 0, - "Nome": "BERLUTI - LVMH", - "Descrizione": "Creato per accettazione Elims\r\n" - }, - { - "IdSchemaCustomFields": 198, - "ConteggioClienti": 0, - "Nome": "PIAGET (gruppo Cartier)", - "Descrizione": "Schema per tutti i campioni PIAGET (gruppo Cartier)\r\n\r\n" - }, - { - "IdSchemaCustomFields": 199, - "ConteggioClienti": 0, - "Nome": "HERMES PAP FEMME", - "Descrizione": "Schema per tutti i campioni di HERMES PAP FEMME \r\n15\/01\/2025\r\n\r\n\r\n" - }, - { - "IdSchemaCustomFields": 200, - "ConteggioClienti": 0, - "Nome": "CARHARTT ( provvisiorio in revisione)", - "Descrizione": "Schema per tutti i campioni CARHARTT provvissorio\r\n\r\n" - }, - { - "IdSchemaCustomFields": 201, - "ConteggioClienti": 0, - "Nome": "ROSSIMODA", - "Descrizione": "Per tutti i campioni di ROSSIMODA\r\n\r\n" - }, - { - "IdSchemaCustomFields": 202, - "ConteggioClienti": 0, - "Nome": "LIMS-CIM - MAX MARA", - "Descrizione": "Schema per MAX MARA scambio dati Database" - }, - { - "IdSchemaCustomFields": 203, - "ConteggioClienti": 0, - "Nome": "Vince", - "Descrizione": "Schema per tutti i campioni di VINCE\r\n\r\n" - }, - { - "IdSchemaCustomFields": 204, - "ConteggioClienti": 0, - "Nome": "Max Mara", - "Descrizione": "Schema da usare per Max Mara\r\n" - }, - { - "IdSchemaCustomFields": 205, - "ConteggioClienti": 0, - "Nome": "Chanel Flammability", - "Descrizione": "Schema per Chanel Flammability\r\n" - } - ] -} \ No newline at end of file diff --git a/public/userarea/schemi_custom_fields_response.json b/public/userarea/schemi_custom_fields_response.json deleted file mode 100644 index eb7df7fd..00000000 --- a/public/userarea/schemi_custom_fields_response.json +++ /dev/null @@ -1 +0,0 @@ -{"@odata.context":"https:\/\/93.43.5.102\/limsapi\/api\/odata\/$metadata#UnitaMisura","value":[{"IdUnitaMisura":563,"NomeUnitaMisura":null},{"IdUnitaMisura":564,"NomeUnitaMisura":null},{"IdUnitaMisura":567,"NomeUnitaMisura":null},{"IdUnitaMisura":565,"NomeUnitaMisura":null},{"IdUnitaMisura":566,"NomeUnitaMisura":null},{"IdUnitaMisura":568,"NomeUnitaMisura":null},{"IdUnitaMisura":569,"NomeUnitaMisura":null},{"IdUnitaMisura":570,"NomeUnitaMisura":null},{"IdUnitaMisura":571,"NomeUnitaMisura":null},{"IdUnitaMisura":572,"NomeUnitaMisura":null},{"IdUnitaMisura":573,"NomeUnitaMisura":null},{"IdUnitaMisura":574,"NomeUnitaMisura":null},{"IdUnitaMisura":575,"NomeUnitaMisura":null},{"IdUnitaMisura":576,"NomeUnitaMisura":null},{"IdUnitaMisura":577,"NomeUnitaMisura":null},{"IdUnitaMisura":579,"NomeUnitaMisura":null},{"IdUnitaMisura":580,"NomeUnitaMisura":null},{"IdUnitaMisura":581,"NomeUnitaMisura":null},{"IdUnitaMisura":582,"NomeUnitaMisura":null},{"IdUnitaMisura":583,"NomeUnitaMisura":null},{"IdUnitaMisura":584,"NomeUnitaMisura":null},{"IdUnitaMisura":585,"NomeUnitaMisura":null},{"IdUnitaMisura":586,"NomeUnitaMisura":null},{"IdUnitaMisura":587,"NomeUnitaMisura":null},{"IdUnitaMisura":588,"NomeUnitaMisura":null},{"IdUnitaMisura":592,"NomeUnitaMisura":null},{"IdUnitaMisura":593,"NomeUnitaMisura":null},{"IdUnitaMisura":595,"NomeUnitaMisura":null},{"IdUnitaMisura":597,"NomeUnitaMisura":null},{"IdUnitaMisura":598,"NomeUnitaMisura":null},{"IdUnitaMisura":599,"NomeUnitaMisura":null},{"IdUnitaMisura":600,"NomeUnitaMisura":null},{"IdUnitaMisura":601,"NomeUnitaMisura":null},{"IdUnitaMisura":604,"NomeUnitaMisura":null},{"IdUnitaMisura":607,"NomeUnitaMisura":null},{"IdUnitaMisura":608,"NomeUnitaMisura":null},{"IdUnitaMisura":609,"NomeUnitaMisura":null},{"IdUnitaMisura":610,"NomeUnitaMisura":null},{"IdUnitaMisura":611,"NomeUnitaMisura":null},{"IdUnitaMisura":616,"NomeUnitaMisura":null},{"IdUnitaMisura":617,"NomeUnitaMisura":null},{"IdUnitaMisura":621,"NomeUnitaMisura":null},{"IdUnitaMisura":622,"NomeUnitaMisura":null},{"IdUnitaMisura":623,"NomeUnitaMisura":null},{"IdUnitaMisura":624,"NomeUnitaMisura":null},{"IdUnitaMisura":625,"NomeUnitaMisura":null},{"IdUnitaMisura":626,"NomeUnitaMisura":null},{"IdUnitaMisura":627,"NomeUnitaMisura":null},{"IdUnitaMisura":629,"NomeUnitaMisura":null},{"IdUnitaMisura":630,"NomeUnitaMisura":null},{"IdUnitaMisura":631,"NomeUnitaMisura":null},{"IdUnitaMisura":632,"NomeUnitaMisura":null},{"IdUnitaMisura":633,"NomeUnitaMisura":null},{"IdUnitaMisura":636,"NomeUnitaMisura":null},{"IdUnitaMisura":637,"NomeUnitaMisura":null},{"IdUnitaMisura":638,"NomeUnitaMisura":null},{"IdUnitaMisura":639,"NomeUnitaMisura":null},{"IdUnitaMisura":640,"NomeUnitaMisura":null},{"IdUnitaMisura":641,"NomeUnitaMisura":null},{"IdUnitaMisura":645,"NomeUnitaMisura":null},{"IdUnitaMisura":647,"NomeUnitaMisura":null},{"IdUnitaMisura":651,"NomeUnitaMisura":null},{"IdUnitaMisura":655,"NomeUnitaMisura":null},{"IdUnitaMisura":656,"NomeUnitaMisura":null},{"IdUnitaMisura":658,"NomeUnitaMisura":null},{"IdUnitaMisura":659,"NomeUnitaMisura":null},{"IdUnitaMisura":661,"NomeUnitaMisura":null},{"IdUnitaMisura":662,"NomeUnitaMisura":null},{"IdUnitaMisura":664,"NomeUnitaMisura":null},{"IdUnitaMisura":667,"NomeUnitaMisura":null},{"IdUnitaMisura":671,"NomeUnitaMisura":null},{"IdUnitaMisura":673,"NomeUnitaMisura":null},{"IdUnitaMisura":675,"NomeUnitaMisura":null},{"IdUnitaMisura":676,"NomeUnitaMisura":null},{"IdUnitaMisura":677,"NomeUnitaMisura":null},{"IdUnitaMisura":678,"NomeUnitaMisura":null},{"IdUnitaMisura":679,"NomeUnitaMisura":null},{"IdUnitaMisura":680,"NomeUnitaMisura":null},{"IdUnitaMisura":681,"NomeUnitaMisura":null},{"IdUnitaMisura":682,"NomeUnitaMisura":null},{"IdUnitaMisura":683,"NomeUnitaMisura":null},{"IdUnitaMisura":684,"NomeUnitaMisura":null},{"IdUnitaMisura":685,"NomeUnitaMisura":null},{"IdUnitaMisura":686,"NomeUnitaMisura":null},{"IdUnitaMisura":687,"NomeUnitaMisura":null},{"IdUnitaMisura":688,"NomeUnitaMisura":null},{"IdUnitaMisura":690,"NomeUnitaMisura":null},{"IdUnitaMisura":695,"NomeUnitaMisura":null},{"IdUnitaMisura":696,"NomeUnitaMisura":null},{"IdUnitaMisura":697,"NomeUnitaMisura":null},{"IdUnitaMisura":698,"NomeUnitaMisura":null},{"IdUnitaMisura":699,"NomeUnitaMisura":null},{"IdUnitaMisura":700,"NomeUnitaMisura":null},{"IdUnitaMisura":703,"NomeUnitaMisura":null},{"IdUnitaMisura":704,"NomeUnitaMisura":null},{"IdUnitaMisura":705,"NomeUnitaMisura":null},{"IdUnitaMisura":706,"NomeUnitaMisura":null},{"IdUnitaMisura":707,"NomeUnitaMisura":null},{"IdUnitaMisura":709,"NomeUnitaMisura":null},{"IdUnitaMisura":712,"NomeUnitaMisura":null},{"IdUnitaMisura":713,"NomeUnitaMisura":null},{"IdUnitaMisura":714,"NomeUnitaMisura":null},{"IdUnitaMisura":716,"NomeUnitaMisura":null},{"IdUnitaMisura":720,"NomeUnitaMisura":null},{"IdUnitaMisura":721,"NomeUnitaMisura":null},{"IdUnitaMisura":722,"NomeUnitaMisura":null},{"IdUnitaMisura":578,"NomeUnitaMisura":null},{"IdUnitaMisura":620,"NomeUnitaMisura":null},{"IdUnitaMisura":628,"NomeUnitaMisura":null},{"IdUnitaMisura":644,"NomeUnitaMisura":null},{"IdUnitaMisura":646,"NomeUnitaMisura":null},{"IdUnitaMisura":648,"NomeUnitaMisura":null},{"IdUnitaMisura":649,"NomeUnitaMisura":null},{"IdUnitaMisura":652,"NomeUnitaMisura":null},{"IdUnitaMisura":657,"NomeUnitaMisura":null},{"IdUnitaMisura":663,"NomeUnitaMisura":null},{"IdUnitaMisura":701,"NomeUnitaMisura":null},{"IdUnitaMisura":702,"NomeUnitaMisura":null},{"IdUnitaMisura":708,"NomeUnitaMisura":null},{"IdUnitaMisura":710,"NomeUnitaMisura":null},{"IdUnitaMisura":715,"NomeUnitaMisura":null},{"IdUnitaMisura":723,"NomeUnitaMisura":null},{"IdUnitaMisura":724,"NomeUnitaMisura":null},{"IdUnitaMisura":725,"NomeUnitaMisura":null},{"IdUnitaMisura":726,"NomeUnitaMisura":null},{"IdUnitaMisura":727,"NomeUnitaMisura":null},{"IdUnitaMisura":728,"NomeUnitaMisura":null},{"IdUnitaMisura":729,"NomeUnitaMisura":null},{"IdUnitaMisura":730,"NomeUnitaMisura":null},{"IdUnitaMisura":731,"NomeUnitaMisura":null},{"IdUnitaMisura":741,"NomeUnitaMisura":null},{"IdUnitaMisura":742,"NomeUnitaMisura":null},{"IdUnitaMisura":743,"NomeUnitaMisura":null},{"IdUnitaMisura":744,"NomeUnitaMisura":null},{"IdUnitaMisura":745,"NomeUnitaMisura":null},{"IdUnitaMisura":747,"NomeUnitaMisura":null},{"IdUnitaMisura":748,"NomeUnitaMisura":null},{"IdUnitaMisura":749,"NomeUnitaMisura":null},{"IdUnitaMisura":750,"NomeUnitaMisura":null},{"IdUnitaMisura":751,"NomeUnitaMisura":null},{"IdUnitaMisura":752,"NomeUnitaMisura":null},{"IdUnitaMisura":753,"NomeUnitaMisura":null},{"IdUnitaMisura":754,"NomeUnitaMisura":null},{"IdUnitaMisura":755,"NomeUnitaMisura":null},{"IdUnitaMisura":756,"NomeUnitaMisura":null},{"IdUnitaMisura":757,"NomeUnitaMisura":null},{"IdUnitaMisura":758,"NomeUnitaMisura":null},{"IdUnitaMisura":759,"NomeUnitaMisura":null},{"IdUnitaMisura":760,"NomeUnitaMisura":null},{"IdUnitaMisura":761,"NomeUnitaMisura":null},{"IdUnitaMisura":762,"NomeUnitaMisura":null},{"IdUnitaMisura":763,"NomeUnitaMisura":null},{"IdUnitaMisura":764,"NomeUnitaMisura":null},{"IdUnitaMisura":765,"NomeUnitaMisura":null},{"IdUnitaMisura":766,"NomeUnitaMisura":null},{"IdUnitaMisura":767,"NomeUnitaMisura":null},{"IdUnitaMisura":768,"NomeUnitaMisura":null},{"IdUnitaMisura":769,"NomeUnitaMisura":null},{"IdUnitaMisura":770,"NomeUnitaMisura":null},{"IdUnitaMisura":771,"NomeUnitaMisura":null},{"IdUnitaMisura":772,"NomeUnitaMisura":null},{"IdUnitaMisura":773,"NomeUnitaMisura":null},{"IdUnitaMisura":774,"NomeUnitaMisura":null},{"IdUnitaMisura":775,"NomeUnitaMisura":null},{"IdUnitaMisura":777,"NomeUnitaMisura":null},{"IdUnitaMisura":778,"NomeUnitaMisura":null},{"IdUnitaMisura":779,"NomeUnitaMisura":null},{"IdUnitaMisura":780,"NomeUnitaMisura":null},{"IdUnitaMisura":781,"NomeUnitaMisura":null},{"IdUnitaMisura":782,"NomeUnitaMisura":null},{"IdUnitaMisura":783,"NomeUnitaMisura":null},{"IdUnitaMisura":785,"NomeUnitaMisura":null},{"IdUnitaMisura":787,"NomeUnitaMisura":null},{"IdUnitaMisura":788,"NomeUnitaMisura":null},{"IdUnitaMisura":791,"NomeUnitaMisura":null},{"IdUnitaMisura":792,"NomeUnitaMisura":null},{"IdUnitaMisura":794,"NomeUnitaMisura":null},{"IdUnitaMisura":795,"NomeUnitaMisura":null},{"IdUnitaMisura":796,"NomeUnitaMisura":null},{"IdUnitaMisura":797,"NomeUnitaMisura":null},{"IdUnitaMisura":798,"NomeUnitaMisura":null},{"IdUnitaMisura":799,"NomeUnitaMisura":null},{"IdUnitaMisura":800,"NomeUnitaMisura":null},{"IdUnitaMisura":801,"NomeUnitaMisura":null},{"IdUnitaMisura":805,"NomeUnitaMisura":null},{"IdUnitaMisura":806,"NomeUnitaMisura":null},{"IdUnitaMisura":807,"NomeUnitaMisura":null},{"IdUnitaMisura":810,"NomeUnitaMisura":null},{"IdUnitaMisura":811,"NomeUnitaMisura":null},{"IdUnitaMisura":812,"NomeUnitaMisura":null},{"IdUnitaMisura":813,"NomeUnitaMisura":null},{"IdUnitaMisura":814,"NomeUnitaMisura":null},{"IdUnitaMisura":591,"NomeUnitaMisura":null},{"IdUnitaMisura":594,"NomeUnitaMisura":null},{"IdUnitaMisura":596,"NomeUnitaMisura":null},{"IdUnitaMisura":602,"NomeUnitaMisura":null},{"IdUnitaMisura":603,"NomeUnitaMisura":null},{"IdUnitaMisura":606,"NomeUnitaMisura":null},{"IdUnitaMisura":634,"NomeUnitaMisura":null},{"IdUnitaMisura":643,"NomeUnitaMisura":null},{"IdUnitaMisura":650,"NomeUnitaMisura":null},{"IdUnitaMisura":654,"NomeUnitaMisura":null},{"IdUnitaMisura":689,"NomeUnitaMisura":null},{"IdUnitaMisura":746,"NomeUnitaMisura":null},{"IdUnitaMisura":784,"NomeUnitaMisura":null},{"IdUnitaMisura":793,"NomeUnitaMisura":null},{"IdUnitaMisura":815,"NomeUnitaMisura":null},{"IdUnitaMisura":590,"NomeUnitaMisura":null},{"IdUnitaMisura":605,"NomeUnitaMisura":null},{"IdUnitaMisura":665,"NomeUnitaMisura":null},{"IdUnitaMisura":786,"NomeUnitaMisura":null},{"IdUnitaMisura":612,"NomeUnitaMisura":null},{"IdUnitaMisura":614,"NomeUnitaMisura":null},{"IdUnitaMisura":635,"NomeUnitaMisura":null},{"IdUnitaMisura":666,"NomeUnitaMisura":null},{"IdUnitaMisura":719,"NomeUnitaMisura":null},{"IdUnitaMisura":613,"NomeUnitaMisura":null},{"IdUnitaMisura":642,"NomeUnitaMisura":null},{"IdUnitaMisura":660,"NomeUnitaMisura":null},{"IdUnitaMisura":668,"NomeUnitaMisura":null},{"IdUnitaMisura":669,"NomeUnitaMisura":null},{"IdUnitaMisura":718,"NomeUnitaMisura":null},{"IdUnitaMisura":776,"NomeUnitaMisura":null},{"IdUnitaMisura":789,"NomeUnitaMisura":null},{"IdUnitaMisura":790,"NomeUnitaMisura":null},{"IdUnitaMisura":653,"NomeUnitaMisura":null},{"IdUnitaMisura":717,"NomeUnitaMisura":null}]} \ No newline at end of file diff --git a/public/userarea/schemi_liberi.html b/public/userarea/schemi_liberi.html deleted file mode 100644 index 576e502a..00000000 --- a/public/userarea/schemi_liberi.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - Schemi Liberi - - - -

                Elenco Schemi Liberi

                -
                - - - - diff --git a/public/userarea/schemi_liberi.php b/public/userarea/schemi_liberi.php deleted file mode 100644 index abd7da30..00000000 --- a/public/userarea/schemi_liberi.php +++ /dev/null @@ -1,123 +0,0 @@ - 'WebApiUser', - 'Password' => 'webapiuser01' -]; - -// Autenticazione → ottieni token -$ch = curl_init("$base_url/api/authentication/authenticate"); -curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); -curl_setopt($ch, CURLOPT_POST, true); -curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($credentials)); -curl_setopt($ch, CURLOPT_HTTPHEADER, [ - 'Content-Type: application/json', - 'Accept: application/json' -]); -curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); -curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); -curl_setopt($ch, CURLOPT_VERBOSE, true); -$log = fopen('curl_auth_debug.log', 'w'); -curl_setopt($ch, CURLOPT_STDERR, $log); - -$response = curl_exec($ch); -$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); -$curl_error = curl_error($ch); -fclose($log); -curl_close($ch); - -// Verifica la risposta -if ($response === false || $http_code != 200) { - http_response_code($http_code ? $http_code : 500); - echo json_encode([ - 'error' => 'Errore nella richiesta di autenticazione', - 'http_code' => $http_code, - 'curl_error' => $curl_error, - 'raw_response' => substr($response, 0, 1000) - ]); - exit; -} - -// Decodifica la risposta JSON -$token_data = json_decode($response, true); - -// Gestisci sia il caso in cui la risposta è una stringa (token diretto) sia un oggetto con chiave 'token' -$token = null; -if (is_array($token_data) && isset($token_data['token'])) { - $token = $token_data['token']; -} elseif (is_string($token_data) && !empty($token_data)) { - $token = trim($token_data, '"'); -} elseif (is_string($response) && !empty($response)) { - $token = trim($response, '"'); -} - -if (empty($token)) { - http_response_code(401); - echo json_encode([ - 'error' => 'Token non ricevuto', - 'http_code' => $http_code, - 'curl_error' => $curl_error, - 'raw_response' => substr($response, 0, 1000) - ]); - exit; -} - -// Chiamata GET per recuperare gli schemi con IdCliente = 0 -$cliente_id = 0; // Definiamo l'ID cliente -$endpoint = "$base_url/api/odata/Cliente($cliente_id)?\$expand=SchemiAbilitati"; // Nota: usiamo \$ per escape in PHP -$ch = curl_init($endpoint); -curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); -curl_setopt($ch, CURLOPT_HTTPHEADER, [ - "Authorization: Bearer $token", - "Accept: application/json" -]); -curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); -curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); -curl_setopt($ch, CURLOPT_VERBOSE, true); -$log = fopen('curl_schemi_liberi_debug.log', 'w'); -curl_setopt($ch, CURLOPT_STDERR, $log); - -$schemi_response = curl_exec($ch); -$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); -$curl_error = curl_error($ch); -fclose($log); -curl_close($ch); - -// Gestisci la risposta -if ($schemi_response === false) { - http_response_code(500); - echo json_encode([ - 'error' => 'Errore nella richiesta cURL', - 'curl_error' => $curl_error - ]); - exit; -} - -if ($http_code === 200) { - $schemi_data = json_decode($schemi_response, true); - if (json_last_error() === JSON_ERROR_NONE) { - echo json_encode($schemi_data); - } else { - http_response_code(500); - echo json_encode([ - 'error' => 'Risposta non JSON valida', - 'http_code' => $http_code, - 'response' => substr($schemi_response, 0, 1000) - ]); - } -} else { - $schemi_data = json_decode($schemi_response, true); - if (json_last_error() === JSON_ERROR_NONE) { - echo json_encode($schemi_data); - } else { - http_response_code($http_code); - echo json_encode([ - 'error' => 'Errore nel recupero schemi', - 'http_code' => $http_code, - 'curl_error' => $curl_error, - 'response' => substr($schemi_response, 0, 1000) - ]); - } -} diff --git a/public/userarea/schemi_response.json b/public/userarea/schemi_response.json deleted file mode 100644 index d687e895..00000000 --- a/public/userarea/schemi_response.json +++ /dev/null @@ -1 +0,0 @@ -{"@odata.context":"https:\/\/93.43.5.102\/limsapi\/api\/odata\/$metadata#SchemaCustomField","value":[{"IdSchemaCustomFields":41,"Nome":"Labostudio","Descrizione":null},{"IdSchemaCustomFields":42,"Nome":"Schema 1","Descrizione":null},{"IdSchemaCustomFields":43,"Nome":"Schema1","Descrizione":null},{"IdSchemaCustomFields":44,"Nome":"Cuoio\/Pelle Standard \/ Leather","Descrizione":"Schema per tutti i campioni in cuoio\/pelle per i quali non \u00e8 specificato un destinatario.\r\n"},{"IdSchemaCustomFields":45,"Nome":"Borse","Descrizione":null},{"IdSchemaCustomFields":46,"Nome":"Borse Burberry","Descrizione":null},{"IdSchemaCustomFields":47,"Nome":"pelle calzatura","Descrizione":null},{"IdSchemaCustomFields":48,"Nome":"Standard Generico \/ Generic Standard","Descrizione":"Schema per tutti i campioni di qualsiasi matrice escluso cuoio\/pelle\r\n\r\n"},{"IdSchemaCustomFields":49,"Nome":"Accessori Metallici \/ Metallic Accessories","Descrizione":"Schema per tutti gli Accessori Metallici\r\n\r\n\r\n"},{"IdSchemaCustomFields":50,"Nome":"Tessile \/ Textiles","Descrizione":"Schema per tutti i Tessuti\r\n"},{"IdSchemaCustomFields":183,"Nome":"TWINSET","Descrizione":"Schema da usare per Twinset - come da mail di EP del 20\/05\/2025\r\n\r\n"},{"IdSchemaCustomFields":186,"Nome":"TWINSET","Descrizione":"Schema per tutti i campioni di qualsiasi matrice escluso cuoio\/pelle\r\n\r\n"}]} \ No newline at end of file diff --git a/public/userarea/search_clienti.php b/public/userarea/search_clienti.php deleted file mode 100644 index 5f008847..00000000 --- a/public/userarea/search_clienti.php +++ /dev/null @@ -1,118 +0,0 @@ - 'Unauthorized']); - exit; -} - -require_once __DIR__ . '/class/VisualLimsApiClient.class.php'; - -header('Content-Type: application/json'); -ini_set('display_errors', '0'); -error_reporting(E_ALL); - -$q = mb_strtolower(trim($_GET['q'] ?? '')); -$limit = max(1, min(50, intval($_GET['limit'] ?? 20))); -$id = isset($_GET['id']) ? intval($_GET['id']) : null; - -function formatClientLabel(array $client): string -{ - $name = trim($client['Nominativo'] ?? ''); - $id = trim((string)($client['IdCliente'] ?? '')); - $code = trim((string)($client['CodiceCliente'] ?? '')); - - $parts = explode('_', $code); - $suffix = trim($parts[1] ?? ''); - - if ($suffix === '' && $code !== '') { - $suffix = substr($code, 0, 1); - } - - if ($suffix === '') { - $suffix = '--'; - } - - return $name . ' - ' . $suffix . ' (ID: ' . $id . ')'; -} - -try { - // Load from cache or API - $cacheFile = __DIR__ . '/cache/clienti.json'; - - if (file_exists($cacheFile) && (time() - filemtime($cacheFile) < 3600)) { - $data = json_decode(file_get_contents($cacheFile), true); - } else { - $api = VisualLimsApiClient::getInstance(); - - $params = [ - '$select' => 'IdCliente,Nominativo,CodiceCliente', - '$orderby' => 'Nominativo asc' - ]; - - $data = $api->get("Cliente?" . http_build_query($params)); - - if (!is_dir(__DIR__ . '/cache')) { - mkdir(__DIR__ . '/cache', 0777, true); - } - - file_put_contents($cacheFile, json_encode($data)); - } - - $clients = $data['value'] ?? []; - - // If requesting by specific ID, used for loading selected value - if ($id !== null) { - foreach ($clients as $c) { - if ((int)$c['IdCliente'] === $id) { - echo json_encode([ - 'results' => [[ - 'id' => $c['IdCliente'], - 'text' => formatClientLabel($c), - 'IdCliente' => $c['IdCliente'], - 'Nominativo' => trim($c['Nominativo'] ?? ''), - 'CodiceCliente' => trim($c['CodiceCliente'] ?? '') - ]] - ]); - exit; - } - } - - echo json_encode(['results' => []]); - exit; - } - - // Search by query - $results = []; - - foreach ($clients as $c) { - $name = trim($c['Nominativo'] ?? ''); - $code = trim($c['CodiceCliente'] ?? ''); - - if ( - $q === '' || - mb_strpos(mb_strtolower($name), $q) !== false || - mb_strpos(mb_strtolower($code), $q) !== false - ) { - $results[] = [ - 'id' => $c['IdCliente'], - 'text' => formatClientLabel($c), - 'IdCliente' => $c['IdCliente'], - 'Nominativo' => $name, - 'CodiceCliente' => $code - ]; - - if (count($results) >= $limit) { - break; - } - } - } - - echo json_encode(['results' => $results]); -} catch (Exception $e) { - http_response_code(500); - echo json_encode(['error' => $e->getMessage()]); -} diff --git a/public/userarea/search_customfield_values.php b/public/userarea/search_customfield_values.php deleted file mode 100644 index 6e4205a9..00000000 --- a/public/userarea/search_customfield_values.php +++ /dev/null @@ -1,71 +0,0 @@ - 'Unauthorized']); - exit; -} - -require_once __DIR__ . '/class/VisualLimsApiClient.class.php'; - -header('Content-Type: application/json'); -ini_set('display_errors', '0'); -error_reporting(E_ALL); - -$fieldId = intval($_GET['field_id'] ?? 0); -$q = mb_strtolower(trim($_GET['q'] ?? '')); -$id = isset($_GET['id']) ? intval($_GET['id']) : null; -$rawLimit = intval($_GET['limit'] ?? 20); -$limit = $rawLimit <= 0 ? 0 : max(1, min(500, $rawLimit)); - -if (!$fieldId) { - echo json_encode(['results' => []]); - exit; -} - -try { - $cacheDir = __DIR__ . '/cache'; - $cacheFile = $cacheDir . '/customfield_' . $fieldId . '.json'; - - if (file_exists($cacheFile) && (time() - filemtime($cacheFile) < 3600)) { - $values = json_decode(file_get_contents($cacheFile), true); - } else { - $api = VisualLimsApiClient::getInstance(); - $data = $api->get("CustomField($fieldId)?\$expand=CustomFieldsValues"); - $values = $data['CustomFieldsValues'] ?? []; - if (!is_dir($cacheDir)) mkdir($cacheDir, 0777, true); - file_put_contents($cacheFile, json_encode($values)); - } - - // Lookup by ID - if ($id !== null) { - foreach ($values as $v) { - if ((int)($v['IdCustomFieldsValue'] ?? 0) === $id) { - echo json_encode(['results' => [['id' => $v['IdCustomFieldsValue'], 'text' => $v['Valore'] ?? '']]]); - exit; - } - } - echo json_encode(['results' => []]); - exit; - } - - // Search by query - $results = []; - foreach ($values as $v) { - $text = $v['Valore'] ?? ''; - if ($q === '' || mb_strpos(mb_strtolower($text), $q) !== false) { - $results[] = ['id' => $v['IdCustomFieldsValue'], 'text' => $text]; - if ($limit > 0 && count($results) >= $limit) break; - } - } - - // Sort alphabetically - usort($results, fn($a, $b) => strcasecmp($a['text'], $b['text'])); - - echo json_encode(['results' => $results]); -} catch (Exception $e) { - http_response_code(500); - echo json_encode(['error' => $e->getMessage()]); -} diff --git a/public/userarea/search_matrici.php b/public/userarea/search_matrici.php deleted file mode 100644 index eb75d918..00000000 --- a/public/userarea/search_matrici.php +++ /dev/null @@ -1,73 +0,0 @@ - 'Unauthorized']); exit; } - -header('Content-Type: application/json'); -ini_set('display_errors', '0'); - -$q = mb_strtolower(trim($_GET['q'] ?? '')); -$id = isset($_GET['id']) ? intval($_GET['id']) : null; -$limit = max(1, min(50, intval($_GET['limit'] ?? 20))); -$macro = trim($_GET['macro'] ?? ''); - -$cacheFile = __DIR__ . '/cache/matrici.json'; - -if (!file_exists($cacheFile)) { - // Trigger cache creation - require_once dirname(__DIR__, 2) . '/vendor/autoload.php'; - require_once __DIR__ . '/class/VisualLimsApiClient.class.php'; - $api = VisualLimsApiClient::getInstance(); - $data = $api->get('Matrice'); - $matrici = []; - foreach (($data['value'] ?? []) as $item) { - $nome = $item['NomeMatrice'] ?? ''; - if ($nome !== '' && substr($nome, 0, 1) !== '*') { - $matrici[] = ['IdMatrice' => $item['IdMatrice'], 'NomeMatrice' => $nome, 'MacroMatrice' => $item['MacroMatrice'] ?? null]; - } - } - usort($matrici, fn($a, $b) => strcasecmp($a['NomeMatrice'], $b['NomeMatrice'])); - if (!is_dir(__DIR__ . '/cache')) mkdir(__DIR__ . '/cache', 0777, true); - file_put_contents($cacheFile, json_encode(['success' => true, 'value' => $matrici])); -} else { - $cached = json_decode(file_get_contents($cacheFile), true); - $matrici = $cached['value'] ?? []; -} - -// Lookup by ID -if ($id !== null) { - foreach ($matrici as $m) { - if ((int)$m['IdMatrice'] === $id) { - echo json_encode(['results' => [['id' => $m['IdMatrice'], 'text' => $m['NomeMatrice']]]]); - exit; - } - } - echo json_encode(['results' => []]); - exit; -} - -// Return unique MacroMatrice list -if (isset($_GET['macro_list'])) { - $macros = []; - foreach ($matrici as $m) { - $mv = $m['MacroMatrice'] ?? ''; - if ($mv !== '' && !in_array($mv, $macros, true)) $macros[] = $mv; - } - sort($macros); - echo json_encode(['success' => true, 'value' => $macros]); - exit; -} - -// Search (with optional MacroMatrice filter) -$results = []; -foreach ($matrici as $m) { - $nome = $m['NomeMatrice'] ?? ''; - if ($macro !== '' && ($m['MacroMatrice'] ?? '') !== $macro) continue; - if ($q === '' || mb_strpos(mb_strtolower($nome), $q) !== false) { - $results[] = ['id' => $m['IdMatrice'], 'text' => $nome]; - if (count($results) >= $limit) break; - } -} - -echo json_encode(['results' => $results]); diff --git a/public/userarea/search_rapporto_min.php b/public/userarea/search_rapporto_min.php deleted file mode 100644 index 1f8487c4..00000000 --- a/public/userarea/search_rapporto_min.php +++ /dev/null @@ -1,73 +0,0 @@ - "Codice eq '{$codice}'", - 'CodiceRapporto' => "CodiceRapporto eq '{$codice}'", - 'Numero' => "Numero eq '{$codice}'" - ]; - - foreach ($filters as $label => $filter) { - try { - $data = $api->get('Rapporto', [ - '$filter' => $filter, - '$top' => 5, - '$select' => 'IdRapporto,Codice,CodiceRapporto,Numero,Data,Versione,Cliente' - ]); - - $attempts[$label] = [ - 'success' => true, - 'filter' => $filter, - 'records' => isset($data['value']) && is_array($data['value']) ? count($data['value']) : null, - 'data' => $data - ]; - - } catch (Exception $e) { - $attempts[$label] = [ - 'success' => false, - 'filter' => $filter, - 'error' => $e->getMessage() - ]; - } - } - - echo json_encode([ - 'success' => true, - 'input_codice' => $codice, - 'attempts' => $attempts - ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); - -} catch (Exception $e) { - http_response_code(500); - - echo json_encode([ - 'success' => false, - 'error' => $e->getMessage() - ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); -} \ No newline at end of file diff --git a/public/userarea/sendcheck.php b/public/userarea/sendcheck.php deleted file mode 100644 index 285af8bb..00000000 --- a/public/userarea/sendcheck.php +++ /dev/null @@ -1,68 +0,0 @@ -post("CommessaWeb({$commessaId})/InviaCommessa", []); - - $logContentStep1 .= "RESPONSE:\n" . json_encode($sendResult, JSON_PRETTY_PRINT); - $logFileStep1 = $logDir . "commessa_{$commessaId}_send_step1_" . time() . ".txt"; - file_put_contents($logFileStep1, $logContentStep1); - - // 🔹 STEP 2: GET di controllo post-invio - $expand = "CommesseCustomFields(\$expand=CustomField)"; - $commessaAfterSend = $api->get("CommessaWeb(" . $commessaId . ")?\$expand=" . $expand); - - // Log curl-like per GET di controllo - $logContentStep2 = "curl --location --request GET '{$apiBaseUrl}CommessaWeb({$commessaId})?\$expand=CommesseCustomFields(\$expand=CustomField)' \\\n" . - "--header 'Authorization: Bearer ••••••'\n\n" . - "RESPONSE:\n" . json_encode($commessaAfterSend, JSON_PRETTY_PRINT); - $logFileStep2 = $logDir . "commessa_{$commessaId}_get_step2_" . time() . ".txt"; - file_put_contents($logFileStep2, $logContentStep2); - - // 🔹 Output a schermo - echo json_encode([ - "success" => true, - "message" => "Commessa {$commessaId} inviata e verificata", - "sendResult" => $sendResult, - "commessaAfterSend" => $commessaAfterSend, - "logFiles" => [ - "step1_send" => $logFileStep1, - "step2_get" => $logFileStep2 - ] - ]); -} catch (Exception $e) { - error_log("Send/Check Error: " . $e->getMessage() . "\nTrace: " . $e->getTraceAsString()); - - echo json_encode([ - "success" => false, - "message" => "Operation failed: " . $e->getMessage(), - "logFiles" => [ - "step1_send" => $logFileStep1 ?? null, - "step2_get" => $logFileStep2 ?? null - ] - ]); -} diff --git a/public/userarea/test-db.php b/public/userarea/test-db.php deleted file mode 100644 index c75a2cfb..00000000 --- a/public/userarea/test-db.php +++ /dev/null @@ -1,10 +0,0 @@ -getConnection(); - echo "Connessione al database riuscita!"; -} catch (Exception $e) { - echo "Errore: " . $e->getMessage(); -} diff --git a/public/userarea/test_auth.php b/public/userarea/test_auth.php deleted file mode 100644 index aef25fda..00000000 --- a/public/userarea/test_auth.php +++ /dev/null @@ -1,61 +0,0 @@ -safeLoad(); -date_default_timezone_set($_ENV['APP_TIMEZONE'] ?? 'Europe/Rome'); - -header('Content-Type: application/json'); - -try { - // Crea la cartella logsapi se non esiste - $logDir = __DIR__ . '/logsapi'; - if (!is_dir($logDir)) { - mkdir($logDir, 0755, true); - } - - // Istanzia il client API (autenticazione automatica tramite .env) - $api = VisualLimsApiClient::getInstance(); - - // Esegui una chiamata di test per verificare l'autenticazione - $endpoint = 'SchemaCustomField'; - $options = []; // Nessun filtro per il test - $data = $api->get($endpoint, $options); - - // Debug: salva URL usato - $base_url = 'https://93.43.5.102/limsapi/api/odata/'; - $query = http_build_query($options); - $full_url = $base_url . $endpoint . ($query ? '?' . $query : ''); - file_put_contents($logDir . '/last_auth_url.txt', $full_url . PHP_EOL, FILE_APPEND); - - // Nota: getToken() è privato, quindi non possiamo accedervi direttamente - // Supponiamo che l'autenticazione sia avvenuta correttamente se la GET ha successo - $token = null; // Non possiamo accedere al token direttamente - $auth_success = true; // La GET ha successo, quindi l'autenticazione funziona - - // Salva un file di conferma dell'autenticazione - $outputFile = $logDir . '/auth_token.json'; - file_put_contents($outputFile, json_encode(['auth_success' => true, 'token' => 'Not directly accessible (private method)'], JSON_PRETTY_PRINT)); - - // Risposta di successo - echo json_encode([ - 'success' => true, - 'message' => "Autenticazione completata con successo, dettagli salvati in {$outputFile}", - 'auth_success' => $auth_success, - 'schema_data' => $data // Dati di esempio dalla GET - ]); -} catch (Exception $e) { - // Log dell'errore - file_put_contents($logDir . '/auth_error.log', date('Y-m-d H:i:s') . ' - ' . $e->getMessage() . PHP_EOL, FILE_APPEND); - http_response_code(500); - echo json_encode([ - 'success' => false, - 'message' => 'Errore durante l\'autenticazione: ' . $e->getMessage() - ]); -} diff --git a/public/userarea/test_pdf_value.php b/public/userarea/test_pdf_value.php deleted file mode 100644 index 3025c845..00000000 --- a/public/userarea/test_pdf_value.php +++ /dev/null @@ -1,117 +0,0 @@ -get("RapportoFile(" . $idRapportoFile . ")"); - - $pdfBody = null; - $strategyUsed = null; - $debugLog = array(); - - // Strategia A - campo FileContent base64 - if (!empty($entityData['FileContent'])) { - $decoded = base64_decode($entityData['FileContent'], true); - if ($decoded !== false && substr($decoded, 0, 4) === '%PDF') { - $pdfBody = $decoded; - $strategyUsed = 'A: FileContent base64'; - } - } - - // Strategia B - campo Contenuto base64 - if (!$pdfBody && !empty($entityData['Contenuto'])) { - $decoded = base64_decode($entityData['Contenuto'], true); - if ($decoded !== false && substr($decoded, 0, 4) === '%PDF') { - $pdfBody = $decoded; - $strategyUsed = 'B: Contenuto base64'; - } - } - - // Recupera token e baseUrl dalla classe - $token = $api->getToken(); - $baseUrl = rtrim($api->getBaseUrl(), '/'); - - $rawEndpoints = array( - 'C: $value' => $baseUrl . '/api/odata/RapportoFile(' . $idRapportoFile . ')/$value', - 'D: FileContent/$value' => $baseUrl . '/api/odata/RapportoFile(' . $idRapportoFile . ')/FileContent/$value', - 'E: Contenuto/$value' => $baseUrl . '/api/odata/RapportoFile(' . $idRapportoFile . ')/Contenuto/$value', - ); - - foreach ($rawEndpoints as $label => $url) { - if ($pdfBody) break; - - $ch = curl_init($url); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_HTTPHEADER, array( - 'Authorization: Bearer ' . $token, - 'Accept: application/pdf, application/octet-stream, */*', - )); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); - curl_setopt($ch, CURLOPT_TIMEOUT, 30); - - $body = curl_exec($ch); - $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); - $ct = curl_getinfo($ch, CURLINFO_CONTENT_TYPE); - curl_close($ch); - - $debugLog[$label] = array( - 'url' => $url, - 'http_code' => $httpCode, - 'content_type' => $ct, - 'body_start' => substr((string)$body, 0, 300), - ); - - if ($httpCode === 200 && is_string($body) && substr($body, 0, 4) === '%PDF') { - $pdfBody = $body; - $strategyUsed = $label; - } - } - - // RISPOSTA - if ($pdfBody) { - $fileName = isset($entityData['FileName']) ? $entityData['FileName'] : 'rapporto_' . $idRapportoFile . '.pdf'; - header('Content-Type: application/pdf'); - header('Content-Disposition: inline; filename="' . $fileName . '"'); - header('Content-Length: ' . strlen($pdfBody)); - header('Cache-Control: private, max-age=0, must-revalidate'); - echo $pdfBody; - exit; - } - - // Nessuna strategia ha funzionato - header('Content-Type: application/json; charset=utf-8'); - echo json_encode(array( - 'success' => false, - 'message' => 'Nessuna strategia ha restituito un PDF valido.', - 'id_rapporto_file' => $idRapportoFile, - 'entity_fields' => array_keys($entityData ? $entityData : array()), - 'entity_data' => $entityData, - 'strategies_debug' => $debugLog, - ), JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); -} catch (Exception $e) { - http_response_code(500); - header('Content-Type: application/json; charset=utf-8'); - echo json_encode(array( - 'success' => false, - 'error' => $e->getMessage(), - ), JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); -} diff --git a/public/userarea/tolims.php b/public/userarea/tolims.php deleted file mode 100644 index 458a6861..00000000 --- a/public/userarea/tolims.php +++ /dev/null @@ -1,2062 +0,0 @@ -getConnection(); - -// Recupera tutti i mapping dal template, includendo is_visible_import -$stmt = $pdo->prepare("SELECT id, excel_column, data_type, is_required, manual_default, is_manual, field_label, field_id, main_field, is_visible_import, auto_value -FROM template_mapping -WHERE template_id = ?"); -$stmt->execute([$template_id]); -$allMappings = $stmt->fetchAll(PDO::FETCH_ASSOC); - -$timeLabels = [ - 'Sample Arrival Time:', - 'Sample Unlock Time:', - 'Login Time:', - 'Presa in carico, Orario:', -]; - -// Returns the auto value for current session (import) based on mapping.auto_value -function getImportAutoValue(array $mapping): string -{ - $auto = $mapping['auto_value'] ?? 'none'; - - if ($auto === 'import_date') { - return date('Y-m-d'); - } - - if ($auto === 'import_time') { - // HTML expects HH:MM (seconds optional) - return date('H:i'); - } - - return ''; -} - -if (empty($allMappings)) { - header("Location: import_xls.php?id=$template_id&status=error&message=" . urlencode("Nessun mapping trovato per il template")); - exit; -} - -// Trova il campo main_field -$mainFieldMapping = null; -foreach ($allMappings as $mapping) { - if ($mapping['main_field'] == 1 && $mapping['is_visible_import'] == 1) { - $mainFieldMapping = $mapping; - break; - } -} - -// Recupera l'idclient di default dal template (se presente) -$template_stmt = $pdo->prepare("SELECT idclient FROM excel_templates WHERE id = ?"); -$template_stmt->execute([$template_id]); -$template = $template_stmt->fetch(PDO::FETCH_ASSOC); -$default_idclient = $template['idclient'] ?? null; - -// Maps logical fixed_field_key → real datadb column name -$fixedAliasMap = [ - 'ClienteResponsabile' => 'cliente_responsabile_id', - 'ClienteFornitore' => 'cliente_fornitore_id', - 'ClienteAnalisi' => 'clienteAnalisi', - 'MoltiplicatorePrezzo' => 'moltiplicatore_prezzo_id', - 'AnagraficaCertestObject' => 'anagrafica_certest_object_id', - 'AnagraficaCertestService' => 'anagrafica_certest_service_id', - 'ConsegnaRichiesta' => 'consegna_richiesta', -]; - -// Fetch records with status='l' (exported to LIMS) for this template -$userFilter = $show_all_users ? '' : 'AND d.user_id = ?'; -$filters = $_GET['f'] ?? []; -if (!is_array($filters)) $filters = []; - -// Map of filter keys → datadb columns (direct columns) -$directColumnMap = [ - 'commessaweb' => 'd.commessaweb', - 'idclient' => 'd.idclient', - 'importreferencecode' => 'd.importreferencecode', - 'importdate' => 'd.importdate', - 'filename_import' => 'd.filename_import', - 'user_name' => "CONCAT(u.first_name, ' ', u.last_name)", -]; -// Add fixed field columns -foreach ($fixedAliasMap as $fixedKey => $dbCol) { - $directColumnMap[$fixedKey] = 'd.' . $dbCol; -} - -$filterSQL = ''; -$filterParams = []; -foreach ($filters as $key => $val) { - $val = trim($val); - if ($val === '') continue; - - if (isset($directColumnMap[$key])) { - // Direct datadb column - $filterSQL .= " AND {$directColumnMap[$key]} LIKE ?"; - $filterParams[] = '%' . $val . '%'; - } elseif (str_starts_with($key, 'detail_')) { - // import_data_details field: detail_{mapping_id} - $mappingId = (int)substr($key, 7); - if ($mappingId > 0) { - $filterSQL .= " AND EXISTS (SELECT 1 FROM import_data_details dd WHERE dd.id = d.iddatadb AND dd.mapping_id = ? AND dd.field_value LIKE ?)"; - $filterParams[] = $mappingId; - $filterParams[] = '%' . $val . '%'; - } - } -} - -$baseWhere = "WHERE d.templateid = ? AND d.status = 'l' {$userFilter} {$filterSQL}"; -$baseParams = [$template_id]; -if (!$show_all_users) $baseParams[] = $user_id; -$baseParams = array_merge($baseParams, $filterParams); - -// Check if any filter is active -$hasActiveFilters = !empty(array_filter($filters, fn($v) => trim($v) !== '')); - -$countStmt = $pdo->prepare("SELECT COUNT(*) FROM datadb d LEFT JOIN auth_users u ON d.user_id = u.id {$baseWhere}"); -$countStmt->execute($baseParams); -$totalRows = (int)$countStmt->fetchColumn(); -$totalPages = max(1, (int)ceil($totalRows / $perPage)); -if ($page > $totalPages) $page = $totalPages; - -$stmt = $pdo->prepare(" - SELECT d.*, CONCAT(u.first_name, ' ', u.last_name) AS user_name - FROM datadb d - LEFT JOIN auth_users u ON d.user_id = u.id - {$baseWhere} - ORDER BY d.iddatadb DESC - LIMIT {$perPage} OFFSET " . (($page - 1) * $perPage) . " -"); -$stmt->execute($baseParams); -$importedData = $stmt->fetchAll(PDO::FETCH_ASSOC); - -$insertedIds = array_column($importedData, 'iddatadb'); - -// Fetch custom field details -$manualDetails = []; -if (!empty($insertedIds)) { - $placeholders = implode(',', array_fill(0, count($insertedIds), '?')); - $stmt = $pdo->prepare(" - SELECT d.id AS detail_id, d.id AS datadb_id, d.mapping_id, d.field_value, - m.field_id, m.field_label, m.data_type, m.is_required, m.manual_default - FROM import_data_details d - JOIN template_mapping m ON d.mapping_id = m.id - WHERE d.id IN ({$placeholders}) - "); - $stmt->execute($insertedIds); - $manualDetails = $stmt->fetchAll(PDO::FETCH_ASSOC); -} - -// Recupera il mapping globale per mostrare gli slug leggibili -$stmt = $pdo->query("SELECT mysql_column_name, user_friendly_slug FROM column_mapping"); -$slugMapping = []; -foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) { - $slugMapping[$row['mysql_column_name']] = $row['user_friendly_slug']; -} -// --- FIX LABELS ONLY (do not change keys) --- -$slugMapping['AnagraficaCertestObject'] = 'Object'; -$slugMapping['AnagraficaCertestService'] = 'Service'; - -// ---------------- FIXED FIELDS (from template_fixed_mapping) ---------------- -$fixedStmt = $pdo->prepare(" - SELECT id, fixed_field_key, is_manual, data_type, is_required, default_value, is_visible_import - FROM template_fixed_mapping - WHERE template_id = ? AND is_visible_import = 1 - ORDER BY id -"); -$fixedStmt->execute([$template_id]); -$fixedFieldsRaw = $fixedStmt->fetchAll(PDO::FETCH_ASSOC); - -// Ordine desiderato: Cliente Responsabile prima, poi gli altri, ConsegnaRichiesta prima delle 3 speciali -$desiredOrder = [ - 'ClienteResponsabile', - 'ClienteFornitore', - 'ClienteAnalisi', - 'AnagraficaCertestObject', - 'AnagraficaCertestService', - 'MoltiplicatorePrezzo', - 'ConsegnaRichiesta', - // se ci sono altri campi fixed li mettiamo dopo -]; - -// No exclusions: fixed fields will be rendered together at the end -$excludeFromFixed = []; - -$fixedFields = []; -$tempMap = []; -foreach ($fixedFieldsRaw as $f) { - if (in_array($f['fixed_field_key'], $excludeFromFixed, true)) continue; - $tempMap[$f['fixed_field_key']] = $f; -} - -foreach ($desiredOrder as $key) { - if (isset($tempMap[$key])) { - $fixedFields[] = $tempMap[$key]; - unset($tempMap[$key]); - } -} - -// Aggiunge eventuali campi fixed non elencati sopra (alla fine) -foreach ($tempMap as $f) { - $fixedFields[] = $f; -} - -// helper default (DATE can use 'today' if you already use it elsewhere) -function fixedDefaultValue(array $f): string -{ - $v = $f['default_value'] ?? ''; - if ($f['data_type'] === 'DATE' && $v === 'today') return date('Y-m-d'); - return (string)$v; -} - -// ── Build lookup maps: id → label for fixed fields ── -$fixedLookup = []; // e.g. $fixedLookup['MoltiplicatorePrezzo'][2] = 'Urgente (1.5x)' - -function loadCacheJson(string $path): ?array { - if (file_exists($path) && (time() - filemtime($path) < 3600)) { - return json_decode(file_get_contents($path), true); - } - return null; -} - -// MoltiplicatorePrezzo -$cached = loadCacheJson(__DIR__ . '/cache/moltiplicatori_prezzo.json'); -if ($cached) { - $items = $cached['value'] ?? $cached; - foreach ($items as $item) { - $id = $item['IdMoltiplicatorePrezzo'] ?? null; - if ($id !== null) $fixedLookup['MoltiplicatorePrezzo'][$id] = $item['Descrizione'] ?? $item['Codice'] ?? $id; - } -} - -// AnagraficaCertestObject -$cached = loadCacheJson(__DIR__ . '/cache/anagrafica_certest_object.json'); -if ($cached) { - $items = $cached['value'] ?? $cached; - foreach ($items as $item) { - $id = $item['IdAnagrafica'] ?? null; - if ($id !== null) $fixedLookup['AnagraficaCertestObject'][$id] = $item['NomeAnagrafica'] ?? $item['Codice'] ?? $id; - } -} - -// AnagraficaCertestService -$cached = loadCacheJson(__DIR__ . '/cache/anagrafica_certest_service.json'); -if ($cached) { - $items = $cached['value'] ?? $cached; - foreach ($items as $item) { - $id = $item['IdAnagrafica'] ?? null; - if ($id !== null) $fixedLookup['AnagraficaCertestService'][$id] = $item['NomeAnagrafica'] ?? $item['Codice'] ?? $id; - } -} - -// ClienteResponsabile — per-client cache files -$clienteIds = array_unique(array_filter(array_column($importedData, 'idclient'))); -foreach ($clienteIds as $cid) { - $cached = loadCacheJson(__DIR__ . '/cache/cliente_responsabili_' . (int)$cid . '.json'); - if ($cached) { - $items = $cached['Responsabili'] ?? []; - foreach ($items as $item) { - $id = $item['IdClienteResponsabile'] ?? null; - if ($id !== null) $fixedLookup['ClienteResponsabile'][$id] = $item['Nominativo'] ?? $id; - } - } -} - -// Helper: resolve fixed field id → label -function resolveFixedValue(string $key, $val, array $fixedLookup): string { - if ($val === '' || $val === null) return ''; - if (isset($fixedLookup[$key][(int)$val])) return $fixedLookup[$key][(int)$val]; - return (string)$val; -} - -?> - - - - - - - - - - - - - - Edit Imported Data - <?= htmlspecialchars($titlewebsite, ENT_QUOTES, 'UTF-8'); ?> - - - -
                - - -
                -
                -
                - Imported (i) - To LIMS (l) - - - - - ( of records) - -
                - -
                -
                - Rows per page -
                - $lim])); - ?> - - -
                -
                - 1): ?> -
                - of - - - 1): ?> - 1 - 2): ?>... - - - - ... - - - - -
                - -
                -
                -
                -
                - Exported to LIMS - - Clear filters - -
                -
                -
                -
                -
                -
                -
                - -
                - "; - echo ""; - echo ""; - echo ""; - } elseif ($mainFieldMapping['data_type'] === 'Data') { - echo ""; - echo ""; - } elseif ($mainFieldMapping['data_type'] === 'INT') { - echo ""; - echo ""; - } else { - echo ""; - echo ""; - } - ?> -
                - - -
                - -
                - - - -
                - "; - echo ""; - echo ""; - echo "
                "; - } else { - // Show auto import date/time in header too (read-only) - $autoVal = getImportAutoValue($mapping); - - echo "
                "; - - if (($mapping['auto_value'] ?? 'none') === 'import_date') { - echo ""; - echo ""; - } elseif (($mapping['auto_value'] ?? 'none') === 'import_time') { - echo ""; - echo ""; - } else { - // keep empty cell for other auto fields - echo ""; - } - - echo "
                "; - } - - $autoIndex++; - $topColIndex++; - } - } - - $manualIndex = 0; - - foreach ($allMappings as $mapping) { - if ($mapping['is_manual'] && $mapping['main_field'] != 1 && $mapping['is_visible_import'] == 1) { - $fieldValue = $mapping['manual_default'] ?? ''; - if ($mapping['data_type'] === 'Data' && $mapping['manual_default'] === 'today') { - $fieldValue = date('Y-m-d'); - } - $inputClass = 'manual-input'; - if ($mapping['is_required']) $inputClass .= ' required-input'; - echo "
                "; - if ($mapping['data_type'] === 'SceltaMultipla') { - echo ""; - } elseif ($mapping['data_type'] === 'Data') { - echo ""; - } elseif ($mapping['data_type'] === 'INT') { - echo ""; - } elseif (in_array($mapping['field_label'], $timeLabels)) { - echo ""; - } else { - echo ""; - } - echo ""; - echo "
                "; - - $manualIndex++; - $topColIndex++; - } - } - - echo "
                "; - $topColIndex++; - echo "
                "; - $topColIndex++; - echo "
                "; - $topColIndex++; - // ---------------- FIXED FIELDS TOP (propagate) - same order as header: fixed cols, 3 empties after ConsegnaRichiesta ---------------- - if (!empty($fixedFields)) { - $insertedAfterConsegnaTop = false; - foreach ($fixedFields as $fx => $f) { - - $key = $f['fixed_field_key']; // datadb column - - $val = fixedDefaultValue($f); - - $isRequired = ((int)$f['is_required'] === 1); - $inputClass = 'manual-input' . ($isRequired ? ' required-input' : ''); - $topRequiredClass = ($isRequired && ($val === '' || $val === null)) ? 'missing-required' : ''; - - echo "
                "; - $topColIndex++; - - // Forza DATE anche se per errore nel DB è diversa - $isDate = ($f['data_type'] === 'DATE' || $key === 'ConsegnaRichiesta'); - - if ($isDate) { - - echo ""; - } else { - - $isApiField = in_array($key, [ - 'MoltiplicatorePrezzo', - 'ClienteResponsabile', - 'ClienteFornitore', - 'ClienteAnalisi', - 'AnagraficaCertestObject', - 'AnagraficaCertestService' - ], true); - - if ($isApiField) { - $placeholder = ($key === 'ClienteResponsabile') ? 'Seleziona cliente prima...' : 'Seleziona...'; - - echo ""; - } else { - - echo ""; - } - } - - // UNA SOLA freccia - echo ""; - echo "
                "; - - if ($key === 'ConsegnaRichiesta' && !$insertedAfterConsegnaTop) { - echo "
                "; - $topColIndex++; - echo "
                "; - $topColIndex++; - echo "
                "; - $topColIndex++; - $insertedAfterConsegnaTop = true; - } - } - } - - - ?> -
                - -
                -
                View
                - -
                - -
                -
                - -
                Status
                -
                -
                Client
                -
                - " . htmlspecialchars($mapping['field_label']) . "
                "; - $headerIndex++; - } - } - foreach ($allMappings as $mapping) { - if ($mapping['is_manual'] && $mapping['main_field'] != 1 && $mapping['is_visible_import'] == 1) { - echo "
                " . htmlspecialchars($mapping['field_label']) . "
                "; - $headerIndex++; - } - } - // Aggiunta header per Tested Component - echo "
                Tested Component
                "; - $headerIndex++; - echo "
                AWB Number
                "; - $headerIndex++; - echo "
                Tracking Info
                "; - $headerIndex++; - - // ---------------- FIXED FIELDS HEADERS ---------------- - if (!empty($fixedFields)) { - $insertedAfterConsegna = false; - foreach ($fixedFields as $f) { - $key = $f['fixed_field_key']; - $label = $slugMapping[$key] ?? $key; - - echo "
                " - . htmlspecialchars($label) . - "
                "; - $headerIndex++; - - // Inseriamo le 3 colonne SOLO dopo ConsegnaRichiesta - if ($key === 'ConsegnaRichiesta' && !$insertedAfterConsegna) { - echo "
                Import Reference Code
                "; - $headerIndex++; - echo "
                " . ($slugMapping['filename_import'] ?? 'filename_import') . "
                "; - $headerIndex++; - echo "
                " . ($slugMapping['importdate'] ?? 'importdate') . "
                "; - $headerIndex++; - $insertedAfterConsegna = true; - } - } - } - ?> - -
                - - - ×" - : ''; - return "
                {$inner}{$btn}
                "; - } - // Helper: render a select filter from a lookup array - function renderFilterSelect(string $name, array $options, string $currentVal, string $style = ''): string { - $html = ""; - return wrapFilter($html, $currentVal !== ''); - } - // Helper: render a text filter - function renderFilterInput(string $name, string $currentVal): string { - $inner = ""; - return wrapFilter($inner, $currentVal !== ''); - } - // Helper: render a select filter populated by JS - function renderFilterSelectJS(string $name, string $currentVal, string $jsClass, string $dataAttr = ''): string { - $html = ""; - return wrapFilter($html, $currentVal !== ''); - } - // Fields that are client-id lookups - $clientFilterKeys = ['ClienteFornitore', 'ClienteAnalisi']; - ?> -
                -
                - -
                - - - - - -
                - - -
                - -
                - -
                - -
                - "; - if ($mapping['data_type'] === 'SceltaMultipla') { - echo renderFilterSelectJS("f[$fKey]", $fVal, 'scelta-filter', "data-field-id='{$mapping['field_id']}'"); - } else { - echo renderFilterInput("f[$fKey]", $fVal); - } - echo "
                "; - } - } - // Manual fields - foreach ($allMappings as $mapping) { - if ($mapping['is_manual'] && $mapping['main_field'] != 1 && $mapping['is_visible_import'] == 1) { - $fKey = 'detail_' . $mapping['id']; - $fVal = $filters[$fKey] ?? ''; - echo "
                "; - if ($mapping['data_type'] === 'SceltaMultipla') { - echo renderFilterSelectJS("f[$fKey]", $fVal, 'scelta-filter', "data-field-id='{$mapping['field_id']}'"); - } else { - echo renderFilterInput("f[$fKey]", $fVal); - } - echo "
                "; - } - } - // Tested Component, AWB, Tracking - echo "
                "; - echo "
                "; - echo "
                "; - - // Fixed fields - if (!empty($fixedFields)) { - $insertedFilterAfterConsegna = false; - foreach ($fixedFields as $f) { - $key = $f['fixed_field_key']; - $fVal = $filters[$key] ?? ''; - echo "
                "; - if (in_array($key, $clientFilterKeys, true)) { - // Client-based selects (populated by JS) - echo renderFilterSelectJS("f[$key]", $fVal, 'client-filter'); - } elseif (isset($fixedLookup[$key]) && !empty($fixedLookup[$key])) { - // PHP-cached lookups - echo renderFilterSelect("f[$key]", $fixedLookup[$key], $fVal); - } elseif ($key === 'ConsegnaRichiesta') { - echo renderFilterInput("f[$key]", $fVal); - } else { - echo renderFilterInput("f[$key]", $fVal); - } - echo "
                "; - - if ($key === 'ConsegnaRichiesta' && !$insertedFilterAfterConsegna) { - echo "
                " . renderFilterInput('f[importreferencecode]', $filters['importreferencecode'] ?? '') . "
                "; - echo "
                " . renderFilterInput('f[filename_import]', $filters['filename_import'] ?? '') . "
                "; - echo "
                " . renderFilterInput('f[importdate]', $filters['importdate'] ?? '') . "
                "; - $insertedFilterAfterConsegna = true; - } - } - } - ?> -
                - - $row): ?> -
                -
                - - -
                - $d['mapping_id'] == $mainFieldMapping['id'] && $d['datadb_id'] == $row['iddatadb']); - $detail = reset($detail) ?: ['field_value' => $mainFieldMapping['manual_default']]; - $fieldValue = $detail['field_value'] ?? $mainFieldMapping['manual_default'] ?? ''; - $isScelta = ($mainFieldMapping['data_type'] === 'SceltaMultipla'); - ?> -
                - > -
                - -
                - To LIMS - - - -
                -
                - -
                - - $d['datadb_id'] == $row['iddatadb']); - $autoIndex = 0; - foreach ($allMappings as $mapping) { - if (!$mapping['is_manual'] && $mapping['main_field'] != 1 && $mapping['is_visible_import'] == 1) { - $detail = array_filter($rowDetails, fn($d) => $d['mapping_id'] == $mapping['id']); - $detail = reset($detail) ?: ['field_value' => $mapping['manual_default']]; - $fieldValue = $detail['field_value'] ?? $mapping['manual_default'] ?? ''; - $isScelta = ($mapping['data_type'] === 'SceltaMultipla'); - echo "
                "; - echo $isScelta - ? "" . htmlspecialchars($fieldValue) . "" - : "" . htmlspecialchars($fieldValue) . ""; - echo "
                "; - $cellIndex++; - $autoIndex++; - } - } - foreach ($allMappings as $mapping) { - if ($mapping['is_manual'] && $mapping['main_field'] != 1 && $mapping['is_visible_import'] == 1) { - $detail = array_filter($rowDetails, fn($d) => $d['mapping_id'] == $mapping['id']); - $detail = reset($detail) ?: ['field_value' => $mapping['manual_default']]; - $fieldValue = $detail['field_value'] ?? $mapping['manual_default'] ?? ''; - $isScelta = ($mapping['data_type'] === 'SceltaMultipla'); - echo "
                "; - echo $isScelta - ? "" . htmlspecialchars($fieldValue) . "" - : "" . htmlspecialchars($fieldValue) . ""; - echo "
                "; - $cellIndex++; - } - } - // Tested Component (empty for view) - echo "
                "; - $cellIndex++; - ?> -
                - -
                - -
                - -
                - - - "; - if ($isClientField && $val !== '' && $val !== null) { - echo "" . htmlspecialchars((string)$val) . ""; - } else { - echo "" . htmlspecialchars($displayVal) . ""; - } - echo "
                "; - $cellIndex++; - - if ($key === 'ConsegnaRichiesta') { - echo "
                " . htmlspecialchars($row['importreferencecode'] ?? '') . "
                "; - $cellIndex++; - echo ""; - $cellIndex++; - echo "
                " . htmlspecialchars($row['importdate'] ?? '') . "
                "; - $cellIndex++; - } - } - } - ?> - -
                - -
                - - - - - -
                -
                -
                - -
                - - - - - - - - - diff --git a/public/userarea/tracking.js b/public/userarea/tracking.js deleted file mode 100644 index 00beedba..00000000 --- a/public/userarea/tracking.js +++ /dev/null @@ -1,55 +0,0 @@ -document.addEventListener("DOMContentLoaded", function () { - // Gestione del tracking - document.querySelectorAll(".go-btn").forEach((button) => { - button.addEventListener("click", async function () { - const rowIndex = this.getAttribute("data-row"); - const awbInput = document.querySelector( - `input[name="rows[${rowIndex}][awb_number]"]`, - ); - const carrierSelect = document.querySelector( - `select[name="rows[${rowIndex}][carrier]"]`, - ); - const trackingResult = document.querySelector( - `.tracking-info[data-row="${rowIndex}"] .tracking-result`, - ); - const trackingHidden = document.querySelector( - `input[name="rows[${rowIndex}][tracking_info]"]`, - ); - const trackingNumber = awbInput.value.trim(); - const carrierCode = carrierSelect.value; - - if (!trackingNumber) { - alert("Inserisci un numero AWB valido!"); - return; - } - - try { - trackingResult.textContent = "Caricamento..."; - this.disabled = true; - const formData = new FormData(); - formData.append("tracking_number", trackingNumber); - formData.append("courier_code", carrierCode); - const response = await fetch("fetch_tracking_info.php", { - method: "POST", - body: formData, - }); - const result = await response.json(); - - if (!result.success) throw new Error(result.message); - const trackingText = `Date: ${result.deliveryDate}, Signed by: ${result.signedBy}, Courier: ${result.carrierName}`; - trackingResult.textContent = trackingText; - trackingHidden.value = JSON.stringify({ - deliveryDate: result.deliveryDate, - signedBy: result.signedBy, - carrierName: result.carrierName, - }); - } catch (error) { - console.error("Errore:", error); - trackingResult.textContent = "Errore: " + error.message; - trackingHidden.value = ""; - } finally { - this.disabled = false; - } - }); - }); -}); diff --git a/public/userarea/tracking_functions.php b/public/userarea/tracking_functions.php deleted file mode 100644 index e69de29b..00000000 diff --git a/public/userarea/trial.php b/public/userarea/trial.php deleted file mode 100644 index 3f16307a..00000000 --- a/public/userarea/trial.php +++ /dev/null @@ -1,23 +0,0 @@ -get($endpoint); - - echo json_encode($result, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); -} catch (Exception $e) { - http_response_code(500); - echo json_encode([ - "success" => false, - "error" => $e->getMessage() - ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); -} diff --git a/public/userarea/update-profile.php b/public/userarea/update-profile.php deleted file mode 100644 index ac1fc01d..00000000 --- a/public/userarea/update-profile.php +++ /dev/null @@ -1,93 +0,0 @@ -getConnection(); - -// Current avatar -$avatar = $user->present()->avatar; - -// Avatar upload -if (isset($_FILES['avatar']) && $_FILES['avatar']['error'] === UPLOAD_ERR_OK) { - $originalName = basename($_FILES['avatar']['name']); - $safeName = preg_replace('/[^A-Za-z0-9_\.-]/', '_', $originalName); - $avatar = time() . '_' . $safeName; - - $uploadDir = __DIR__ . '/../../public/upload/users/'; - if (!is_dir($uploadDir)) { - mkdir($uploadDir, 0755, true); - } - - move_uploaded_file($_FILES['avatar']['tmp_name'], $uploadDir . $avatar); -} - -// Update main user data -$sql = "UPDATE auth_users - SET first_name = ?, - last_name = ?, - email = ?, - avatar = ?, - lims_user_id = ?, - lims_global_user_id = ? - WHERE id = ?"; -$stmt = $db->prepare($sql); -$stmt->execute([ - $first_name, - $last_name, - $email, - $avatar, - $lims_user_id, - $lims_global_user_id, - $id -]); - -// Update password only if provided -if ($password !== '') { - $hashedPassword = password_hash($password, PASSWORD_BCRYPT); - - $sql = "UPDATE auth_users SET password = ? WHERE id = ?"; - $stmt = $db->prepare($sql); - $stmt->execute([$hashedPassword, $id]); -} - -// Update session -if (session_status() === PHP_SESSION_NONE) { - session_start(); -} - -$_SESSION["nameuser"] = $first_name; -$_SESSION["surnameuser"] = $last_name; -$_SESSION["emailuser"] = $email; -$_SESSION["photouser"] = $avatar; - -header('Location: user-profile.php'); -exit; diff --git a/public/userarea/update_all_template_mapping_orders.php b/public/userarea/update_all_template_mapping_orders.php deleted file mode 100644 index de66dc11..00000000 --- a/public/userarea/update_all_template_mapping_orders.php +++ /dev/null @@ -1,107 +0,0 @@ -getConnection(); - - $api = VisualLimsApiClient::getInstance(); - - // Get all schemas currently used in template_mapping - $stmtSchemas = $pdo->query(" - SELECT DISTINCT schema_id - FROM template_mapping - WHERE schema_id IS NOT NULL - AND schema_id > 0 - ORDER BY schema_id ASC - "); - - $schemaIds = $stmtSchemas->fetchAll(PDO::FETCH_COLUMN); - - if (empty($schemaIds)) { - throw new Exception('No schema_id found in template_mapping'); - } - - $stmtUpdate = $pdo->prepare(" - UPDATE template_mapping - SET field_order = ? - WHERE schema_id = ? - AND field_id = ? - "); - - $summary = []; - $totalUpdated = 0; - - foreach ($schemaIds as $schemaId) { - $schemaId = (int)$schemaId; - - $endpoint = "SchemaCustomField($schemaId)?\$expand=SchemiCustomFieldsDettagli(\$expand=CustomField)"; - $data = $api->get($endpoint); - - if (empty($data['SchemiCustomFieldsDettagli']) || !is_array($data['SchemiCustomFieldsDettagli'])) { - $summary[] = [ - 'schema_id' => $schemaId, - 'success' => false, - 'message' => 'No SchemiCustomFieldsDettagli found' - ]; - continue; - } - - $schemaUpdated = 0; - $notFound = []; - - foreach ($data['SchemiCustomFieldsDettagli'] as $detail) { - $order = intval($detail['Ordine'] ?? 9999); - $fieldId = intval($detail['CustomField']['IdCustomField'] ?? 0); - - if ($fieldId <= 0) { - continue; - } - - $stmtUpdate->execute([ - $order, - $schemaId, - $fieldId - ]); - - if ($stmtUpdate->rowCount() > 0) { - $schemaUpdated++; - $totalUpdated++; - } else { - $notFound[] = [ - 'field_id' => $fieldId, - 'order' => $order, - 'label' => $detail['CustomField']['Titolo'] ?? '' - ]; - } - } - - $summary[] = [ - 'schema_id' => $schemaId, - 'success' => true, - 'updated' => $schemaUpdated, - 'not_found_count' => count($notFound), - 'not_found' => $notFound - ]; - } - - echo json_encode([ - 'success' => true, - 'schemas_processed' => count($schemaIds), - 'total_updated' => $totalUpdated, - 'summary' => $summary - ], JSON_PRETTY_PRINT); -} catch (Exception $e) { - http_response_code(500); - - echo json_encode([ - 'success' => false, - 'message' => $e->getMessage() - ], JSON_PRETTY_PRINT); -} diff --git a/public/userarea/update_api_json_nodes.php b/public/userarea/update_api_json_nodes.php deleted file mode 100644 index 4b42ad9e..00000000 --- a/public/userarea/update_api_json_nodes.php +++ /dev/null @@ -1,63 +0,0 @@ -getConnection(); - - $stmt = $pdo->prepare(" - UPDATE excel_templates - SET - api_sample_json = ?, - json_nodes = ? - WHERE id = ? - "); - - $stmt->execute([ - $apiSampleJson, - json_encode($decodedNodes, JSON_UNESCAPED_UNICODE), - $templateId - ]); - - echo json_encode([ - 'success' => true, - 'nodes_count' => count($decodedNodes) - ]); -} catch (Throwable $e) { - echo json_encode([ - 'success' => false, - 'message' => $e->getMessage() - ]); -} diff --git a/public/userarea/update_fixed_field.php b/public/userarea/update_fixed_field.php deleted file mode 100644 index 71b6c97e..00000000 --- a/public/userarea/update_fixed_field.php +++ /dev/null @@ -1,35 +0,0 @@ -getConnection(); - -$input = json_decode(file_get_contents('php://input'), true); - -$id = (int)($input['id'] ?? 0); -$field = (string)($input['field'] ?? ''); -$value = $input['value'] ?? null; - -if ($id <= 0) { - echo json_encode(['success' => false, 'message' => 'Invalid id']); - exit; -} - -$allowed = ['default_value', 'is_visible_import', 'is_required']; -if (!in_array($field, $allowed, true)) { - echo json_encode(['success' => false, 'message' => 'Invalid field']); - exit; -} - -if ($field === 'is_visible_import' || $field === 'is_required') { - $value = ((int)$value === 1) ? 1 : 0; -} - - -$sql = "UPDATE template_fixed_mapping SET {$field} = :val WHERE id = :id"; -$stmt = $pdo->prepare($sql); -$ok = $stmt->execute([':val' => $value, ':id' => $id]); - -echo json_encode(['success' => (bool)$ok]); diff --git a/public/userarea/update_main_field.php b/public/userarea/update_main_field.php deleted file mode 100644 index 302c6651..00000000 --- a/public/userarea/update_main_field.php +++ /dev/null @@ -1,73 +0,0 @@ - false, 'message' => 'Invalid IDs']); - exit; -} - -$db = DBHandlerSelect::getInstance(); -$pdo = $db->getConnection(); - -try { - $pdo->beginTransaction(); - - if ($mainValue === '1') { - $stmt = $pdo->prepare(" - SELECT COUNT(*) - FROM template_mapping - WHERE template_id = ? - AND main_field = '1' - AND id <> ? - "); - $stmt->execute([$template_id, $mapping_id]); - $currentMainCount = (int)$stmt->fetchColumn(); - - if ($currentMainCount >= 2) { - $pdo->rollBack(); - - echo json_encode([ - 'success' => false, - 'message' => 'Maximum 2 Main fields allowed', - 'currentMainCount' => $currentMainCount - ]); - exit; - } - } - - $stmt = $pdo->prepare(" - UPDATE template_mapping - SET main_field = ? - WHERE id = ? - AND template_id = ? - "); - $stmt->execute([$mainValue, $mapping_id, $template_id]); - - $pdo->commit(); - - echo json_encode(['success' => true]); -} catch (Exception $e) { - if ($pdo->inTransaction()) { - $pdo->rollBack(); - } - - echo json_encode([ - 'success' => false, - 'message' => $e->getMessage() - ]); -} diff --git a/public/userarea/update_photo_flags.php b/public/userarea/update_photo_flags.php deleted file mode 100644 index 93b84aae..00000000 --- a/public/userarea/update_photo_flags.php +++ /dev/null @@ -1,91 +0,0 @@ -getConnection(); - - if ($_SERVER['REQUEST_METHOD'] !== 'POST') { - throw new Exception('Metodo non valido'); - } - - $photoId = isset($_POST['photo_id']) ? (int)$_POST['photo_id'] : 0; - $field = isset($_POST['field']) ? trim($_POST['field']) : ''; - $value = isset($_POST['value']) ? (int)$_POST['value'] : 0; - - if ($photoId <= 0) { - throw new Exception('photo_id mancante o non valido'); - } - - $allowedFields = ['StampaNelRapporto', 'PrimaPagina']; - if (!in_array($field, $allowedFields, true)) { - throw new Exception('Campo non consentito'); - } - - $value = $value === 1 ? 1 : 0; - - // Recupera la foto per sapere a quale record padre appartiene - $stmt = $pdo->prepare(" - SELECT id, iddatadb, idquotations - FROM datadb_photos - WHERE id = ? - LIMIT 1 - "); - $stmt->execute([$photoId]); - $photo = $stmt->fetch(PDO::FETCH_ASSOC); - - if (!$photo) { - throw new Exception('Foto non trovata'); - } - - $iddatadb = !empty($photo['iddatadb']) ? (int)$photo['iddatadb'] : null; - $idquotations = !empty($photo['idquotations']) ? (int)$photo['idquotations'] : null; - - $pdo->beginTransaction(); - - if ($field === 'PrimaPagina' && $value === 1) { - // Solo una foto può essere PrimaPagina per lo stesso record padre - if ($iddatadb) { - $stmtReset = $pdo->prepare(" - UPDATE datadb_photos - SET PrimaPagina = 0 - WHERE iddatadb = ? - "); - $stmtReset->execute([$iddatadb]); - } elseif ($idquotations) { - $stmtReset = $pdo->prepare(" - UPDATE datadb_photos - SET PrimaPagina = 0 - WHERE idquotations = ? - "); - $stmtReset->execute([$idquotations]); - } - } - - $stmtUpdate = $pdo->prepare(" - UPDATE datadb_photos - SET {$field} = ? - WHERE id = ? - "); - $stmtUpdate->execute([$value, $photoId]); - - $pdo->commit(); - - echo json_encode([ - 'success' => true, - 'photo_id' => $photoId, - 'field' => $field, - 'value' => $value - ]); -} catch (Exception $e) { - if (isset($pdo) && $pdo->inTransaction()) { - $pdo->rollBack(); - } - - echo json_encode([ - 'success' => false, - 'message' => $e->getMessage() - ]); -} diff --git a/public/userarea/update_schemajson.php b/public/userarea/update_schemajson.php deleted file mode 100644 index 5b31599f..00000000 --- a/public/userarea/update_schemajson.php +++ /dev/null @@ -1,249 +0,0 @@ - false, "message" => ""]; - -try { - if ($_SERVER["REQUEST_METHOD"] !== "POST") { - throw new Exception("Invalid request method."); - } - - $input = json_decode(file_get_contents('php://input'), true); - - $template_id = isset($input['template_id']) ? intval($input['template_id']) : null; - $schemajson = isset($input['schemajson']) ? trim($input['schemajson']) : ''; - - if (empty($template_id) || empty($schemajson)) { - throw new Exception("All fields marked with * are required, including schemajson."); - } - - $decoded_json = json_decode($schemajson, true); - - if (json_last_error() !== JSON_ERROR_NONE) { - throw new Exception("Invalid JSON format for schemajson."); - } - - $db = DBHandlerSelect::getInstance(); - $pdo = $db->getConnection(); - - $stmt = $pdo->prepare("SELECT target_table FROM excel_templates WHERE id = ?"); - $stmt->execute([$template_id]); - $template = $stmt->fetch(PDO::FETCH_ASSOC); - - if (!$template) { - throw new Exception("Template not found."); - } - - $target_table = $template['target_table']; - - $schema_id = $decoded_json['IdSchemaCustomFields'] ?? null; - $schema_fields = $decoded_json['SchemiCustomFieldsDettagli'] ?? []; - - if (empty($schema_id)) { - throw new Exception("Schema ID not found in schemajson."); - } - - if (empty($schema_fields)) { - throw new Exception("No fields found in schema."); - } - - $pdo->beginTransaction(); - - /* - * 1) Update raw schema JSON in excel_templates - */ - $stmt = $pdo->prepare(" - UPDATE excel_templates - SET schemajson = ?, updated_at = NOW() - WHERE id = ? - "); - $stmt->execute([$schemajson, $template_id]); - - /* - * Prepare reusable statements - */ - - // Check if mapping already exists - $checkStmt = $pdo->prepare(" - SELECT id, data_type - FROM template_mapping - WHERE template_id = ? - AND field_id = ? - LIMIT 1 - "); - - // Insert new field - $insertStmt = $pdo->prepare(" - INSERT INTO template_mapping ( - template_id, - schema_id, - field_id, - field_order, - data_type, - is_required, - default_value, - has_list, - length, - decimals, - min_value, - max_value, - default_curr_date, - tablename, - field_label - ) VALUES ( - :template_id, - :schema_id, - :field_id, - :field_order, - :data_type, - :is_required, - :default_value, - :has_list, - :length, - :decimals, - :min_value, - :max_value, - :default_curr_date, - :tablename, - :field_label - ) - "); - - // Update existing field WITHOUT clearing manual_default - $updateSameTypeStmt = $pdo->prepare(" - UPDATE template_mapping - SET - schema_id = :schema_id, - field_order = :field_order, - data_type = :data_type, - is_required = :is_required, - default_value = :default_value, - has_list = :has_list, - length = :length, - decimals = :decimals, - min_value = :min_value, - max_value = :max_value, - default_curr_date = :default_curr_date, - tablename = :tablename, - field_label = :field_label - WHERE id = :id - "); - - // Update existing field AND clear user-entered value if type changed - $updateChangedTypeStmt = $pdo->prepare(" - UPDATE template_mapping - SET - schema_id = :schema_id, - data_type = :data_type, - is_required = :is_required, - default_value = :default_value, - has_list = :has_list, - length = :length, - decimals = :decimals, - min_value = :min_value, - max_value = :max_value, - default_curr_date = :default_curr_date, - tablename = :tablename, - field_label = :field_label, - - manual_default = NULL, - auto_value = 'none' - - WHERE id = :id - "); - - $currentFieldIds = []; - - /* - * 2) Insert new fields and update existing fields - */ - foreach ($schema_fields as $field) { - $custom_field = $field['CustomField'] ?? []; - - if (empty($custom_field['IdCustomField'])) { - continue; - } - - $fieldId = (int)$custom_field['IdCustomField']; - $currentFieldIds[] = $fieldId; - - $newDataType = $custom_field['Tipo'] ?? 'Testo'; - - $data = [ - ':schema_id' => $schema_id, - ':field_order' => (int)($field['Ordine'] ?? 9999), - ':data_type' => $newDataType, - ':is_required' => !empty($custom_field['ObbligatorioWeb']) ? 1 : 0, - ':default_value' => $custom_field['ValoreDefault'] ?? null, - ':has_list' => !empty($custom_field['Elenco']) ? 1 : 0, - ':length' => $custom_field['Lunghezza'] ?? 0, - ':decimals' => $custom_field['Decimali'] ?? 0, - ':min_value' => $custom_field['Minimo'] ?? null, - ':max_value' => $custom_field['Massimo'] ?? null, - ':default_curr_date' => !empty($custom_field['DefaultCurrDate']) ? 1 : 0, - ':tablename' => $target_table, - ':field_label' => $custom_field['TitoloTraduzione'] ?? '' - ]; - - $checkStmt->execute([$template_id, $fieldId]); - $existing = $checkStmt->fetch(PDO::FETCH_ASSOC); - - if (!$existing) { - // New field: insert it - $insertData = $data; - $insertData[':template_id'] = $template_id; - $insertData[':field_id'] = $fieldId; - - $insertStmt->execute($insertData); - } else { - // Existing field: update schema details - $oldDataType = $existing['data_type'] ?? ''; - - $updateData = $data; - $updateData[':id'] = (int)$existing['id']; - - if ($oldDataType !== $newDataType) { - // Type changed: clear manual value because it may no longer be valid - $updateChangedTypeStmt->execute($updateData); - } else { - // Same type: keep manual_default, excel/json mapping, visibility, main field, etc. - $updateSameTypeStmt->execute($updateData); - } - } - } - - /* - * 3) Remove fields no longer present in the schema - */ - $currentFieldIds = array_values(array_unique(array_filter($currentFieldIds))); - - if (!empty($currentFieldIds)) { - $placeholders = implode(',', array_fill(0, count($currentFieldIds), '?')); - - $deleteParams = array_merge([$template_id], $currentFieldIds); - - $deleteStmt = $pdo->prepare(" - DELETE FROM template_mapping - WHERE template_id = ? - AND field_id NOT IN ($placeholders) - "); - $deleteStmt->execute($deleteParams); - } - - $pdo->commit(); - - $response["success"] = true; - $response["message"] = "Schema JSON updated, mappings synchronized, removed fields deleted, and changed fields updated successfully."; -} catch (Exception $e) { - if (isset($pdo) && $pdo->inTransaction()) { - $pdo->rollback(); - } - - $response["message"] = $e->getMessage(); -} - -echo json_encode($response); diff --git a/public/userarea/update_template_mapping_order.php b/public/userarea/update_template_mapping_order.php deleted file mode 100644 index 9212e278..00000000 --- a/public/userarea/update_template_mapping_order.php +++ /dev/null @@ -1,79 +0,0 @@ -get($endpoint); - - if (empty($data['SchemiCustomFieldsDettagli']) || !is_array($data['SchemiCustomFieldsDettagli'])) { - throw new Exception('No SchemiCustomFieldsDettagli found'); - } - - $db = DBHandlerSelect::getInstance(); - $pdo = $db->getConnection(); - - $updated = 0; - $notFound = []; - - $stmt = $pdo->prepare(" - UPDATE template_mapping - SET field_order = ? - WHERE schema_id = ? - AND field_id = ? - "); - - foreach ($data['SchemiCustomFieldsDettagli'] as $detail) { - $order = intval($detail['Ordine'] ?? 9999); - $fieldId = intval($detail['CustomField']['IdCustomField'] ?? 0); - - if ($fieldId <= 0) { - continue; - } - - $stmt->execute([ - $order, - $schemaId, - $fieldId - ]); - - if ($stmt->rowCount() > 0) { - $updated++; - } else { - $notFound[] = [ - 'field_id' => $fieldId, - 'order' => $order, - 'label' => $detail['CustomField']['Titolo'] ?? '' - ]; - } - } - - echo json_encode([ - 'success' => true, - 'schema_id' => $schemaId, - 'updated' => $updated, - 'not_found' => $notFound - ]); -} catch (Exception $e) { - http_response_code(500); - - echo json_encode([ - 'success' => false, - 'message' => $e->getMessage() - ]); -} diff --git a/public/userarea/update_template_status.php b/public/userarea/update_template_status.php deleted file mode 100644 index 1f31665f..00000000 --- a/public/userarea/update_template_status.php +++ /dev/null @@ -1,30 +0,0 @@ - false, "message" => ""]; - -try { - if ($_SERVER["REQUEST_METHOD"] !== "POST") { - throw new Exception("Invalid request."); - } - - $id = intval($_POST['id']); - $status = ($_POST['status'] === "active") ? "active" : "inactive"; - - $db = DBHandlerSelect::getInstance(); - $pdo = $db->getConnection(); - - $stmt = $pdo->prepare("UPDATE excel_templates SET status = ?, updated_at = NOW() WHERE id = ?"); - $stmt->execute([$status, $id]); - - if ($stmt->rowCount() > 0) { - $response["success"] = true; - } else { - throw new Exception("Update failed."); - } -} catch (Exception $e) { - $response["message"] = $e->getMessage(); -} - -echo json_encode($response); diff --git a/public/userarea/update_visible_import.php b/public/userarea/update_visible_import.php deleted file mode 100644 index 75651ad1..00000000 --- a/public/userarea/update_visible_import.php +++ /dev/null @@ -1,26 +0,0 @@ - false, 'message' => 'Invalid input']); - exit; -} - -$db = DBHandlerSelect::getInstance(); -$pdo = $db->getConnection(); - -$stmt = $pdo->prepare("UPDATE template_mapping SET is_visible_import = ? WHERE id = ? AND template_id = ?"); -$result = $stmt->execute([$value, $mapping_id, $template_id]); - -if ($result) { - echo json_encode(['success' => true]); -} else { - echo json_encode(['success' => false, 'message' => 'Failed to update is_visible_import']); -} diff --git a/public/userarea/update_visible_parts.php b/public/userarea/update_visible_parts.php deleted file mode 100644 index 55db10b8..00000000 --- a/public/userarea/update_visible_parts.php +++ /dev/null @@ -1,57 +0,0 @@ - false, 'message' => 'Invalid input']); - exit; -} - -// Normalize to 0/1 -$value = ($value === 1) ? 1 : 0; - -$db = DBHandlerSelect::getInstance(); -$pdo = $db->getConnection(); - -try { - $pdo->beginTransaction(); - - if ($value === 1) { - // 1) Force ONLY ONE row visible_parts per template: - // set all to 0 for this template - $stmtReset = $pdo->prepare(" - UPDATE template_mapping - SET is_visible_parts = 0 - WHERE template_id = ? - "); - $stmtReset->execute([$template_id]); - } - - // 2) Set requested mapping to 1 or 0 - $stmtSet = $pdo->prepare(" - UPDATE template_mapping - SET is_visible_parts = ? - WHERE id = ? AND template_id = ? - "); - $stmtSet->execute([$value, $mapping_id, $template_id]); - - $pdo->commit(); - - echo json_encode([ - 'success' => true, - 'template_id' => $template_id, - 'mapping_id' => $mapping_id, - 'value' => $value - ]); -} catch (Exception $e) { - if ($pdo->inTransaction()) $pdo->rollBack(); - echo json_encode(['success' => false, 'message' => $e->getMessage()]); -} diff --git a/public/userarea/update_xls_headers.php b/public/userarea/update_xls_headers.php deleted file mode 100644 index d4c8bbaa..00000000 --- a/public/userarea/update_xls_headers.php +++ /dev/null @@ -1,104 +0,0 @@ -getConnection(); - - $data = json_decode(file_get_contents("php://input"), true); - - if (!$data || !isset($data['template_id'], $data['xls_headers'])) { - echo json_encode(["success" => false, "message" => "Invalid or missing data"]); - exit; - } - - $templateId = (int)$data['template_id']; - $xlsHeaders = $data['xls_headers']; - - $headerRow = isset($data['header_row']) && $data['header_row'] !== '' - ? (int)$data['header_row'] - : null; - - $startColumn = isset($data['start_column']) && $data['start_column'] !== '' - ? (int)$data['start_column'] - : null; - - $xlsSheetIndex = isset($data['xls_sheet_index']) && $data['xls_sheet_index'] !== '' - ? (int)$data['xls_sheet_index'] - : null; - - if ($templateId <= 0) { - echo json_encode(["success" => false, "message" => "Invalid template ID"]); - exit; - } - - if ($xlsHeaders === '') { - echo json_encode(["success" => false, "message" => "XLS headers cannot be empty"]); - exit; - } - - if ($headerRow !== null && $headerRow <= 0) { - echo json_encode(["success" => false, "message" => "Header row must be greater than 0"]); - exit; - } - - if ($startColumn !== null && $startColumn <= 0) { - echo json_encode(["success" => false, "message" => "Start column must be greater than 0"]); - exit; - } - - if ($xlsSheetIndex !== null && $xlsSheetIndex < 0) { - echo json_encode(["success" => false, "message" => "XLS sheet number cannot be negative"]); - exit; - } - - $sql = "UPDATE excel_templates SET xls_headers = ?"; - $params = [$xlsHeaders]; - - if ($headerRow !== null) { - $sql .= ", header_row = ?"; - $params[] = $headerRow; - } - - if ($startColumn !== null) { - $sql .= ", start_column = ?"; - $params[] = $startColumn; - } - - if ($xlsSheetIndex !== null) { - $sql .= ", xls_sheet_index = ?"; - $params[] = $xlsSheetIndex; - } - - $sql .= ", updated_at = NOW()"; - $sql .= " WHERE id = ?"; - $params[] = $templateId; - - $stmt = $pdo->prepare($sql); - $result = $stmt->execute($params); - - if (!$result) { - echo json_encode(["success" => false, "message" => "Database update failed"]); - exit; - } - - echo json_encode([ - "success" => true, - "message" => "XLS headers saved successfully", - "debug" => [ - "template_id" => $templateId, - "header_row" => $headerRow, - "start_column" => $startColumn, - "xls_sheet_index" => $xlsSheetIndex - ] - ]); -} catch (Exception $e) { - echo json_encode(["success" => false, "message" => "Error: " . $e->getMessage()]); -} - -exit; diff --git a/public/userarea/upload_photo.php b/public/userarea/upload_photo.php deleted file mode 100644 index 9db02841..00000000 --- a/public/userarea/upload_photo.php +++ /dev/null @@ -1,150 +0,0 @@ - false, 'message' => 'Richiesta non valida']); - exit; -} - -$iddatadb = isset($_POST['iddatadb']) ? intval($_POST['iddatadb']) : null; -$idquotations = isset($_POST['idquotations']) ? intval($_POST['idquotations']) : null; - -if ($iddatadb && $idquotations) { - echo json_encode(['success' => false, 'message' => 'Non è possibile specificare sia iddatadb che idquotations']); - exit; -} - -if (!$iddatadb && !$idquotations) { - echo json_encode(['success' => false, 'message' => 'ID TRF o ID quotations mancante']); - exit; -} - -// Verifica che l'utente loggato esista in auth_users -$db = DBHandlerSelect::getInstance(); -$pdo = $db->getConnection(); - -$stmt = $pdo->prepare("SELECT id FROM auth_users WHERE id = ?"); -$stmt->execute([$iduserlogin]); -$userExists = $stmt->fetch(PDO::FETCH_ASSOC); - -if (!$userExists) { - echo json_encode(['success' => false, 'message' => 'Utente non valido']); - exit; -} - -// Verifica l'esistenza dell'ID nella tabella corrispondente -try { - if ($iddatadb) { - $stmt = $pdo->prepare("SELECT iddatadb FROM datadb WHERE iddatadb = ?"); - $stmt->execute([$iddatadb]); - if (!$stmt->fetch()) { - echo json_encode(['success' => false, 'message' => 'iddatadb non valido']); - exit; - } - } else { - $stmt = $pdo->prepare("SELECT id FROM quotations WHERE id = ?"); - $stmt->execute([$idquotations]); - if (!$stmt->fetch()) { - echo json_encode(['success' => false, 'message' => 'idquotations non valido']); - exit; - } - } -} catch (PDOException $e) { - echo json_encode(['success' => false, 'message' => 'Errore nella validazione: ' . $e->getMessage()]); - exit; -} - -// Usa un percorso assoluto per la cartella photostrf -$uploadDir = realpath(__DIR__ . '/../photostrf') . '/'; -if (!is_dir($uploadDir)) { - if (!mkdir($uploadDir, 0755, true)) { - echo json_encode(['success' => false, 'message' => 'Impossibile creare la cartella photostrf']); - exit; - } -} - -// Verifica i permessi della cartella -if (!is_writable($uploadDir)) { - echo json_encode(['success' => false, 'message' => 'La cartella photostrf non è scrivibile']); - exit; -} - -// Verifica che il file sia un'immagine (inclusi HEIC/HEIF) -$photo = $_FILES['photo']; -$allowedTypes = ['image/jpeg', 'image/png', 'image/gif', 'image/heic', 'image/heif']; -if (!in_array($photo['type'], $allowedTypes)) { - echo json_encode(['success' => false, 'message' => 'Il file deve essere un\'immagine (JPEG, PNG, GIF, HEIC)']); - exit; -} - -// Verifica che il file temporaneo esista -if (!file_exists($photo['tmp_name']) || !is_uploaded_file($photo['tmp_name'])) { - echo json_encode(['success' => false, 'message' => 'File temporaneo non valido']); - exit; -} - -// Rinomina il file: id-timestamp-nomeoriginale.estensione -$timestamp = date('YmdHis'); -$originalName = pathinfo($photo['name'], PATHINFO_FILENAME); -$extension = strtolower(pathinfo($photo['name'], PATHINFO_EXTENSION)); -$id = $iddatadb ?: $idquotations; - -// Se il file è HEIC/HEIF, convertilo in JPEG -if (in_array($photo['type'], ['image/heic', 'image/heif'])) { - // Verifica che la libreria GD sia disponibile - if (!extension_loaded('gd')) { - echo json_encode(['success' => false, 'message' => 'La libreria GD non è disponibile per convertire il file HEIC']); - exit; - } - - // Carica il file HEIC - $image = imagecreatefromstring(file_get_contents($photo['tmp_name'])); - if ($image === false) { - echo json_encode(['success' => false, 'message' => 'Impossibile caricare il file HEIC']); - exit; - } - - // Crea un nuovo nome per il file JPEG - $newFileName = "{$id}-{$timestamp}-{$originalName}.jpg"; - $destination = $uploadDir . $newFileName; - - // Salva l'immagine come JPEG - if (!imagejpeg($image, $destination, 90)) { - imagedestroy($image); - echo json_encode(['success' => false, 'message' => 'Errore durante la conversione del file HEIC in JPEG']); - exit; - } - - // Libera la memoria - imagedestroy($image); -} else { - // Per i formati non HEIC, usa il nome e l'estensione originali - $newFileName = "{$id}-{$timestamp}-{$originalName}.{$extension}"; - $destination = $uploadDir . $newFileName; - - // Salva il file - if (!move_uploaded_file($photo['tmp_name'], $destination)) { - $error = error_get_last(); - echo json_encode(['success' => false, 'message' => 'Errore durante il caricamento del file: ' . (isset($error['message']) ? $error['message'] : 'Sconosciuto')]); - exit; - } -} - -// Debug: verifica i percorsi -error_log("Upload directory: $uploadDir"); -error_log("Destination: $destination"); -error_log("Temp file: " . $photo['tmp_name']); - -// Salva il riferimento nel database -try { - $stmt = $pdo->prepare("INSERT INTO datadb_photos (iddatadb, idquotations, file_path, file_name, uploaded_by) VALUES (?, ?, ?, ?, ?)"); - $stmt->execute([$iddatadb, $idquotations, $newFileName, $newFileName, $iduserlogin]); -} catch (PDOException $e) { - echo json_encode(['success' => false, 'message' => 'Errore durante il salvataggio nel database: ' . $e->getMessage()]); - exit; -} - -echo json_encode(['success' => true, 'message' => 'Foto caricata con successo']); diff --git a/public/userarea/upload_photos_mobile.php b/public/userarea/upload_photos_mobile.php deleted file mode 100644 index b2ebe08a..00000000 --- a/public/userarea/upload_photos_mobile.php +++ /dev/null @@ -1,286 +0,0 @@ -getConnection(); - -// Verifica che almeno uno degli ID sia passato -$iddatadb = isset($_GET['iddatadb']) && !empty($_GET['iddatadb']) ? intval($_GET['iddatadb']) : null; -$idquotations = isset($_GET['idquotations']) && !empty($_GET['idquotations']) ? intval($_GET['idquotations']) : null; - -if (!$iddatadb && !$idquotations) { - die('ID riga o ID quotations non fornito'); -} - -if ($iddatadb && $idquotations) { - die('Non è possibile specificare sia iddatadb che idquotations'); -} - -// Verifica che l'utente loggato esista -$stmt = $pdo->prepare("SELECT id FROM auth_users WHERE id = ?"); -$stmt->execute([$iduserlogin]); -if (!$stmt->fetch(PDO::FETCH_ASSOC)) { - die('Utente non valido'); -} - -// Determina quale ID usare e verifica l'esistenza -$paramName = $iddatadb ? 'iddatadb' : 'idquotations'; -$paramValue = $iddatadb ?: $idquotations; -$table = $iddatadb ? 'datadb' : 'quotations'; -$field = $iddatadb ? 'sample_code' : 'quotation_code'; - -$stmt = $pdo->prepare("SELECT {$paramName}, {$field} FROM {$table} WHERE {$paramName} = ?"); -$stmt->execute([$paramValue]); -$row = $stmt->fetch(PDO::FETCH_ASSOC); - -if (!$row) { - die('Riga non trovata'); -} - -$id = $row[$paramName]; -$code = $row[$field] ?? 'Non disponibile'; -?> - - - - - - - - Carica Foto da Mobile - - - - - -

                Carica Foto per ID:

                -

                Codice:

                -
                -
                - -

                Caricamento in corso...

                -
                -
                -
                -
                -

                Scatta una foto o seleziona immagini

                - -
                -
                - - - - - \ No newline at end of file diff --git a/public/userarea/upload_xls_example.php b/public/userarea/upload_xls_example.php deleted file mode 100644 index 04ce32c2..00000000 --- a/public/userarea/upload_xls_example.php +++ /dev/null @@ -1,48 +0,0 @@ - false, "message" => "Invalid template ID"]); - exit; -} - -$template_id = intval($_POST['template_id']); - -if (!isset($_FILES['xls_file']) || $_FILES['xls_file']['error'] !== UPLOAD_ERR_OK) { - echo json_encode(["success" => false, "message" => "File upload error"]); - exit; -} - -$file = $_FILES['xls_file']; -$originalFilename = pathinfo($file['name'], PATHINFO_FILENAME); -$extension = pathinfo($file['name'], PATHINFO_EXTENSION); - -// Crea il nuovo nome del file: {idtemplate}-{timestamp}-{nomeoriginale}.ext -$newFilename = $template_id . "-" . time() . "-" . preg_replace("/[^a-zA-Z0-9_-]/", "", $originalFilename) . "." . $extension; -$uploadDir = __DIR__ . '/xlstemplates/'; -$uploadPath = $uploadDir . $newFilename; - -// Assicura che la cartella esista -if (!is_dir($uploadDir)) { - mkdir($uploadDir, 0777, true); -} - -// Salva il file -if (!move_uploaded_file($file['tmp_name'], $uploadPath)) { - echo json_encode(["success" => false, "message" => "Failed to save file"]); - exit; -} - -// Aggiorna il database con il nome del file -try { - $db = DBHandlerSelect::getInstance(); - $pdo = $db->getConnection(); - $stmt = $pdo->prepare("UPDATE excel_templates SET sample_xlsx = ? WHERE id = ?"); - $stmt->execute([$newFilename, $template_id]); - - echo json_encode(["success" => true, "filename" => $newFilename, "filepath" => "xlstemplates/" . $newFilename]); -} catch (PDOException $e) { - echo json_encode(["success" => false, "message" => "Database error: " . $e->getMessage()]); -} diff --git a/public/userarea/validate_export.php b/public/userarea/validate_export.php deleted file mode 100644 index aad2723e..00000000 --- a/public/userarea/validate_export.php +++ /dev/null @@ -1,162 +0,0 @@ -": { - * valid: bool, - * iddatadb: int, - * errors: [ { field: "", message: "..." }, ... ] - * } - * } - * } - * - * Validators are closures registered in $validators[]. - * Each receives ($iddatadb, $ctx) and returns an array of errors (or empty []). - * $ctx holds all prefetched data (record, parts, field values, mappings, etc.). - * To add a new rule — just append another closure to $validators. - */ -include('include/headscript.php'); - -$dbHandler = DBHandlerSelect::getInstance(); -$pdo = $dbHandler->getConnection(); - -header("Content-Type: application/json"); - -// ── Validators ────────────────────────────────────────────────────────────── -// Each validator is a closure: fn(int $iddatadb, array $ctx): array<{field,message}> -// $ctx keys: record, parts, fieldValues, requiredFixed, requiredMappings, fixedAliasMap - -$validators = []; - -// 1. Every part must have a valid Matrice -// Without Matrice the LIMS API rejects the Campione creation. -$validators[] = function (int $iddatadb, array $ctx): array { - $parts = $ctx['parts']; - if (empty($parts)) { - return []; - } - $missing = []; - foreach ($parts as $p) { - $matrice = (int)($p['idmatrice'] ?? 0); - if ($matrice <= 0) { - $label = $p['part_number'] ?: ($p['part_description'] ?: '(senza nome)'); - $missing[] = $label; - } - } - if (!empty($missing)) { - return [[ - 'field' => 'parts', - 'message' => 'Matrice mancante — il LIMS rifiuterà l\'esportazione. ' - . 'Part senza matrice: ' . implode(', ', $missing) - . '. Aprire la sezione Parts e assegnare la matrice.', - ]]; - } - return []; -}; - -// 2. ConsegnaRichiesta must be filled and >= today -$validators[] = function (int $iddatadb, array $ctx): array { - $record = $ctx['record'] ?? null; - if (!$record) { - return []; - } - - $consegna = $record['consegna_richiesta'] ?? null; - - if (empty($consegna)) { - return [[ - 'field' => 'ConsegnaRichiesta', - 'message' => 'ConsegnaRichiesta è obbligatorio.', - ]]; - } - - $consegnaDate = DateTime::createFromFormat('Y-m-d', $consegna) ?: DateTime::createFromFormat('Y-m-d H:i:s', $consegna); - $today = new DateTime('today'); - - if ($consegnaDate && $consegnaDate < $today) { - return [[ - 'field' => 'ConsegnaRichiesta', - 'message' => 'ConsegnaRichiesta deve essere uguale o superiore alla data odierna (' . $today->format('Y-m-d') . ').', - ]]; - } - - return []; -}; - -// ── Main ──────────────────────────────────────────────────────────────────── - -try { - $input = json_decode(file_get_contents('php://input'), true); - $rows = $input['rows'] ?? []; - - if (empty($rows)) { - echo json_encode(['success' => false, 'message' => 'No rows provided']); - exit; - } - - // ── Prefetch all data in bulk ─────────────────────────────────────────── - - $iddatadbList = array_column($rows, 'iddatadb'); - $placeholders = implode(',', array_fill(0, count($iddatadbList), '?')); - - // Records (datadb) for fixed field validation - $stmt = $pdo->prepare(" - SELECT iddatadb, consegna_richiesta - FROM datadb - WHERE iddatadb IN ($placeholders) - "); - $stmt->execute($iddatadbList); - $recordsInfo = []; - foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $r) { - $recordsInfo[(int)$r['iddatadb']] = $r; - } - - // Parts (full rows, so validators can report which parts have issues) - $stmt = $pdo->prepare(" - SELECT iddatadb, part_number, part_description, idmatrice - FROM identification_parts - WHERE iddatadb IN ($placeholders) - "); - $stmt->execute($iddatadbList); - $partsInfo = []; - foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $r) { - $partsInfo[(int)$r['iddatadb']][] = $r; - } - - // ── Run validators per row ────────────────────────────────────────────── - - $results = []; - - foreach ($rows as $rowInfo) { - $iddatadb = (int)$rowInfo['iddatadb']; - $index = $rowInfo['index']; - - // Build context for validators - $ctx = [ - 'record' => $recordsInfo[$iddatadb] ?? null, - 'parts' => $partsInfo[$iddatadb] ?? [], - ]; - - $errors = []; - foreach ($validators as $validator) { - $errors = array_merge($errors, $validator($iddatadb, $ctx)); - } - - $results[$index] = [ - 'valid' => empty($errors), - 'iddatadb' => $iddatadb, - 'errors' => $errors, - ]; - } - - echo json_encode(['success' => true, 'results' => $results]); - -} catch (Exception $e) { - error_log("Validation error: " . $e->getMessage()); - echo json_encode(['success' => false, 'message' => $e->getMessage()]); -} diff --git a/public/userarea/warm_cache.php b/public/userarea/warm_cache.php deleted file mode 100644 index 760bcabd..00000000 --- a/public/userarea/warm_cache.php +++ /dev/null @@ -1,124 +0,0 @@ - 'Unauthorized']); - exit; - } - header('Content-Type: application/json'); -} - -require_once dirname(__DIR__, 2) . '/vendor/autoload.php'; -require_once __DIR__ . '/class/VisualLimsApiClient.class.php'; -require_once __DIR__ . '/class/db-functions.php'; - -$cacheDir = __DIR__ . '/cache'; -if (!is_dir($cacheDir)) mkdir($cacheDir, 0777, true); - -$log = []; -function warmLog(string $msg, bool $isCli) { - global $log; - $line = date('H:i:s') . " $msg"; - $log[] = $line; - if ($isCli) echo $line . PHP_EOL; -} - -try { - $api = VisualLimsApiClient::getInstance(); - $pdo = DBHandlerSelect::getInstance()->getConnection(); - - // 1. Clients - warmLog('[clients] Fetching...', $isCli); - $params = ['$select' => 'IdCliente,Nominativo,CodiceCliente', '$orderby' => 'Nominativo asc']; - $clientData = $api->get("Cliente?" . http_build_query($params)); - file_put_contents($cacheDir . '/clienti.json', json_encode($clientData)); - $clientCount = count($clientData['value'] ?? []); - warmLog("[clients] Cached $clientCount clients", $isCli); - - // 2. Fixed fields: MoltiplicatorePrezzo, AnagraficaCertestObject, AnagraficaCertestService - $fixedFields = [ - 'MoltiplicatorePrezzo' => ['endpoint' => 'MoltiplicatorePrezzi', 'file' => 'moltiplicatori_prezzo.json'], - 'AnagraficaCertestObject' => ['endpoint' => 'AnagraficaCertestObject', 'file' => 'anagrafica_certest_object.json'], - 'AnagraficaCertestService' => ['endpoint' => 'AnagraficaCertestService', 'file' => 'anagrafica_certest_service.json'], - ]; - - foreach ($fixedFields as $name => $cfg) { - warmLog("[$name] Fetching...", $isCli); - $data = $api->get($cfg['endpoint']); - file_put_contents($cacheDir . '/' . $cfg['file'], json_encode($data, JSON_PRETTY_PRINT)); - $count = count($data['value'] ?? $data ?? []); - warmLog("[$name] Cached $count items", $isCli); - } - - // 3. ClienteResponsabile — for each unique client in datadb - $stmt = $pdo->query("SELECT DISTINCT idclient FROM datadb WHERE idclient IS NOT NULL AND idclient > 0 ORDER BY idclient ASC"); - $clientIds = $stmt->fetchAll(PDO::FETCH_COLUMN); - warmLog("[ClienteResponsabile] Fetching for " . count($clientIds) . " clients...", $isCli); - - foreach ($clientIds as $cid) { - $cid = (int)$cid; - $endpoint = "Cliente($cid)?\$expand=Responsabili"; - $cacheFile = $cacheDir . '/cliente_responsabili_' . $cid . '.json'; - try { - $data = $api->get($endpoint); - file_put_contents($cacheFile, json_encode($data, JSON_PRETTY_PRINT)); - $count = count($data['Responsabili'] ?? []); - warmLog("[ClienteResponsabile] Client $cid: $count responsabili", $isCli); - } catch (Exception $e) { - warmLog("[ClienteResponsabile] Client $cid: ERROR " . $e->getMessage(), $isCli); - } - } - - // 4. CustomField values — all SceltaMultipla field_ids from template_mapping - $stmt = $pdo->query("SELECT DISTINCT field_id FROM template_mapping WHERE data_type = 'SceltaMultipla' AND is_visible_import = 1 AND field_id IS NOT NULL ORDER BY field_id"); - $fieldIds = $stmt->fetchAll(PDO::FETCH_COLUMN); - warmLog("[CustomFields] Fetching " . count($fieldIds) . " fields...", $isCli); - - foreach ($fieldIds as $fid) { - $fid = (int)$fid; - $cacheFile = $cacheDir . '/customfield_' . $fid . '.json'; - try { - $endpoint = "CustomField($fid)?\$expand=CustomFieldsValues"; - $data = $api->get($endpoint); - $values = $data['CustomFieldsValues'] ?? []; - file_put_contents($cacheFile, json_encode($values)); - warmLog("[CustomField $fid] Cached " . count($values) . " values", $isCli); - } catch (Exception $e) { - warmLog("[CustomField $fid] ERROR " . $e->getMessage(), $isCli); - } - } - - // 5. Matrici (from LIMS API) - warmLog('[matrici] Fetching from API...', $isCli); - $matriciData = $api->get('Matrice'); - $matrici = []; - foreach (($matriciData['value'] ?? []) as $item) { - $nome = $item['NomeMatrice'] ?? ''; - if ($nome !== '' && substr($nome, 0, 1) !== '*') { - $matrici[] = ['IdMatrice' => $item['IdMatrice'], 'NomeMatrice' => $nome, 'MacroMatrice' => $item['MacroMatrice'] ?? null]; - } - } - usort($matrici, fn($a, $b) => strcasecmp($a['NomeMatrice'], $b['NomeMatrice'])); - file_put_contents($cacheDir . '/matrici.json', json_encode(['success' => true, 'value' => $matrici])); - warmLog("[matrici] Cached " . count($matrici) . " items", $isCli); - - $elapsed = round(microtime(true) - $startTime, 1); - warmLog("Done in {$elapsed}s", $isCli); - -} catch (Exception $e) { - warmLog("FATAL: " . $e->getMessage(), $isCli); -} - -if (!$isCli) { - echo json_encode(['success' => true, 'log' => $log]); -} diff --git a/public/userarea/xlstemplates/10-1743684198-TrialClient1TRF-21112024_CHIARA_SS25_2CPERPELLI-Copia.xlsx b/public/userarea/xlstemplates/10-1743684198-TrialClient1TRF-21112024_CHIARA_SS25_2CPERPELLI-Copia.xlsx deleted file mode 100644 index 93a42443..00000000 Binary files a/public/userarea/xlstemplates/10-1743684198-TrialClient1TRF-21112024_CHIARA_SS25_2CPERPELLI-Copia.xlsx and /dev/null differ diff --git a/public/userarea/xlstemplates/15-1741439534-MONCLERTRF-21112024_CHIARA_SS25_2CPERPELLI.xlsx b/public/userarea/xlstemplates/15-1741439534-MONCLERTRF-21112024_CHIARA_SS25_2CPERPELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/xlstemplates/15-1741439534-MONCLERTRF-21112024_CHIARA_SS25_2CPERPELLI.xlsx and /dev/null differ diff --git a/public/userarea/xlstemplates/17-1743684564-TrialClient1TRF.xlsx b/public/userarea/xlstemplates/17-1743684564-TrialClient1TRF.xlsx deleted file mode 100644 index 93a42443..00000000 Binary files a/public/userarea/xlstemplates/17-1743684564-TrialClient1TRF.xlsx and /dev/null differ diff --git a/public/userarea/xlstemplates/19-1751871441-2524689.xlsx b/public/userarea/xlstemplates/19-1751871441-2524689.xlsx deleted file mode 100644 index da02f1e7..00000000 Binary files a/public/userarea/xlstemplates/19-1751871441-2524689.xlsx and /dev/null differ diff --git a/public/userarea/xlstemplates/19-1751873646-2524689.xlsx b/public/userarea/xlstemplates/19-1751873646-2524689.xlsx deleted file mode 100644 index da02f1e7..00000000 Binary files a/public/userarea/xlstemplates/19-1751873646-2524689.xlsx and /dev/null differ diff --git a/public/userarea/xlstemplates/19-1751874033-2524689.xlsx b/public/userarea/xlstemplates/19-1751874033-2524689.xlsx deleted file mode 100644 index da02f1e7..00000000 Binary files a/public/userarea/xlstemplates/19-1751874033-2524689.xlsx and /dev/null differ diff --git a/public/userarea/xlstemplates/19-1751874347-2524689.xlsx b/public/userarea/xlstemplates/19-1751874347-2524689.xlsx deleted file mode 100644 index da02f1e7..00000000 Binary files a/public/userarea/xlstemplates/19-1751874347-2524689.xlsx and /dev/null differ diff --git a/public/userarea/xlstemplates/19-1751874485-2524689.xlsx b/public/userarea/xlstemplates/19-1751874485-2524689.xlsx deleted file mode 100644 index da02f1e7..00000000 Binary files a/public/userarea/xlstemplates/19-1751874485-2524689.xlsx and /dev/null differ diff --git a/public/userarea/xlstemplates/19-1751875186-2524689.xlsx b/public/userarea/xlstemplates/19-1751875186-2524689.xlsx deleted file mode 100644 index da02f1e7..00000000 Binary files a/public/userarea/xlstemplates/19-1751875186-2524689.xlsx and /dev/null differ diff --git a/public/userarea/xlstemplates/19-1751883045-MONCLERTRF-21112024_CHIARA_SS25_2CPERPELLI.xlsx b/public/userarea/xlstemplates/19-1751883045-MONCLERTRF-21112024_CHIARA_SS25_2CPERPELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/xlstemplates/19-1751883045-MONCLERTRF-21112024_CHIARA_SS25_2CPERPELLI.xlsx and /dev/null differ diff --git a/public/userarea/xlstemplates/20-1751967749-MONCLERTRF-21112024_CHIARA_SS25_2CPERPELLI.xlsx b/public/userarea/xlstemplates/20-1751967749-MONCLERTRF-21112024_CHIARA_SS25_2CPERPELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/xlstemplates/20-1751967749-MONCLERTRF-21112024_CHIARA_SS25_2CPERPELLI.xlsx and /dev/null differ diff --git a/public/userarea/xlstemplates/20-1751967761-MONCLERTRF-21112024_CHIARA_SS25_2CPERPELLI.xlsx b/public/userarea/xlstemplates/20-1751967761-MONCLERTRF-21112024_CHIARA_SS25_2CPERPELLI.xlsx deleted file mode 100644 index 8c3b7e09..00000000 Binary files a/public/userarea/xlstemplates/20-1751967761-MONCLERTRF-21112024_CHIARA_SS25_2CPERPELLI.xlsx and /dev/null differ diff --git a/public/userarea/xlstemplates/21-1752057503-MONCLERTRF-21112024_CHIARA_SS25_2CPERPELLI.xlsx b/public/userarea/xlstemplates/21-1752057503-MONCLERTRF-21112024_CHIARA_SS25_2CPERPELLI.xlsx deleted file mode 100644 index f76b4227..00000000 Binary files a/public/userarea/xlstemplates/21-1752057503-MONCLERTRF-21112024_CHIARA_SS25_2CPERPELLI.xlsx and /dev/null differ diff --git a/public/userarea/xlstemplates/28-1758877070-24_09_25CERTESTAMMFORMCROMOPHPLTXSUODORECOMPOSIZIONE.xls b/public/userarea/xlstemplates/28-1758877070-24_09_25CERTESTAMMFORMCROMOPHPLTXSUODORECOMPOSIZIONE.xls deleted file mode 100644 index cf0894b8..00000000 Binary files a/public/userarea/xlstemplates/28-1758877070-24_09_25CERTESTAMMFORMCROMOPHPLTXSUODORECOMPOSIZIONE.xls and /dev/null differ diff --git a/public/userarea/xlstemplates/5-1740733446-row3.xlsx b/public/userarea/xlstemplates/5-1740733446-row3.xlsx deleted file mode 100644 index 4641d24c..00000000 Binary files a/public/userarea/xlstemplates/5-1740733446-row3.xlsx and /dev/null differ diff --git a/public/userarea/xlstemplates/7-1743684110-TrialClient1TRF-21112024_CHIARA_SS25_2CPERPELLI-Copia.xlsx b/public/userarea/xlstemplates/7-1743684110-TrialClient1TRF-21112024_CHIARA_SS25_2CPERPELLI-Copia.xlsx deleted file mode 100644 index 93a42443..00000000 Binary files a/public/userarea/xlstemplates/7-1743684110-TrialClient1TRF-21112024_CHIARA_SS25_2CPERPELLI-Copia.xlsx and /dev/null differ diff --git a/public/userarea/xlstemplates/7-1743684223-TrialClient1TRF-21112024_CHIARA_SS25_2CPERPELLI-Copia.xlsx b/public/userarea/xlstemplates/7-1743684223-TrialClient1TRF-21112024_CHIARA_SS25_2CPERPELLI-Copia.xlsx deleted file mode 100644 index 93a42443..00000000 Binary files a/public/userarea/xlstemplates/7-1743684223-TrialClient1TRF-21112024_CHIARA_SS25_2CPERPELLI-Copia.xlsx and /dev/null differ diff --git a/public/userarea/xlstemplates/7-1743684275-TrialClient1TRF.xlsx b/public/userarea/xlstemplates/7-1743684275-TrialClient1TRF.xlsx deleted file mode 100644 index 93a42443..00000000 Binary files a/public/userarea/xlstemplates/7-1743684275-TrialClient1TRF.xlsx and /dev/null differ diff --git a/public/userarea/xlstemplates_creation.php b/public/userarea/xlstemplates_creation.php deleted file mode 100644 index 98bfc55c..00000000 --- a/public/userarea/xlstemplates_creation.php +++ /dev/null @@ -1,765 +0,0 @@ - - - - - - - - - - Edmate Learning Dashboard HTML Template - - - - - - - - - -
                -
                -
                - - - -
                - - - - - - - -
                - - - -
                - -
                -
                - -
                -
                -
                -
                XLS TEMPLATE
                - -
                - -
                - -
                -
                - - -
                -
                - - -
                -
                Colonne Excel
                -
                - -
                -
                -
                - -
                -
                -
                Colonne MySQL
                -
                - -
                -
                - - -
                -
                Binding Creati
                -
                -
                  -
                  -
                  - - -
                  - -
                  -
                  - -
                  -
                  - - - -
                  -
                  -
                  -

                  Top Courses Pick for You

                  - See All -
                  - -
                  -
                  -
                  -
                  - - Course Image - -
                  - Development -
                  Full Stack Web Development
                  - -
                  - User Image -
                  - Created by Albert James -
                  -
                  - -
                  -
                  - - 24 Lesson -
                  -
                  - - 40 Hours -
                  -
                  - -
                  -
                  - - 4.9 - (12k) -
                  - View Details -
                  -
                  -
                  -
                  -
                  -
                  -
                  -
                  - - Course Image - -
                  - Design -
                  Design System
                  - -
                  - User Image -
                  - Created by Albert James -
                  -
                  - -
                  -
                  - - 24 Lesson -
                  -
                  - - 40 Hours -
                  -
                  - -
                  -
                  - - 4.9 - (12k) -
                  - View Details -
                  -
                  -
                  -
                  -
                  -
                  -
                  -
                  - - Course Image - -
                  - Frontend -
                  React Native Courese
                  - -
                  - User Image -
                  - Created by Albert James -
                  -
                  - -
                  -
                  - - 24 Lesson -
                  -
                  - - 40 Hours -
                  -
                  - -
                  -
                  - - 4.9 - (12k) -
                  - View Details -
                  -
                  -
                  -
                  -
                  -
                  -
                  -
                  - -
                  - - - -
                  -
                  - -
                  - - - - - - - - - - - - \ No newline at end of file diff --git a/public/userarea/xlstemplates_grid.php b/public/userarea/xlstemplates_grid.php deleted file mode 100644 index 222eced8..00000000 --- a/public/userarea/xlstemplates_grid.php +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - - - - Edmate Learning Dashboard HTML Template - - - - - - - - - - - - -
                  -
                  -
                  - - - -
                  - - - - - - - -
                  - - - -
                  - -
                  -
                  - - -
                  -
                  -
                  -

                  XLS Templates

                  - -
                  - - - -
                  -
                  -
                  - - - - - - - - - - - - - -
                  ID
                  - -
                  -
                  -
                  - -
                  -
                  - - - -
                  - - - -
                  -
                  - -
                  - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/vendor/autoload.php b/vendor/autoload.php index 5d5afaae..167db809 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -14,10 +14,7 @@ if (PHP_VERSION_ID < 50600) { echo $err; } } - trigger_error( - $err, - E_USER_ERROR - ); + throw new RuntimeException($err); } require_once __DIR__ . '/composer/autoload_real.php'; diff --git a/vendor/composer/InstalledVersions.php b/vendor/composer/InstalledVersions.php index 51e734a7..2052022f 100644 --- a/vendor/composer/InstalledVersions.php +++ b/vendor/composer/InstalledVersions.php @@ -26,12 +26,23 @@ use Composer\Semver\VersionParser; */ class InstalledVersions { + /** + * @var string|null if set (by reflection by Composer), this should be set to the path where this class is being copied to + * @internal + */ + private static $selfDir = null; + /** * @var mixed[]|null * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null */ private static $installed; + /** + * @var bool + */ + private static $installedIsLocalDir; + /** * @var bool|null */ @@ -309,6 +320,24 @@ class InstalledVersions { self::$installed = $data; self::$installedByVendor = array(); + + // when using reload, we disable the duplicate protection to ensure that self::$installed data is + // always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not, + // so we have to assume it does not, and that may result in duplicate data being returned when listing + // all installed packages for example + self::$installedIsLocalDir = false; + } + + /** + * @return string + */ + private static function getSelfDir() + { + if (self::$selfDir === null) { + self::$selfDir = strtr(__DIR__, '\\', '/'); + } + + return self::$selfDir; } /** @@ -322,19 +351,27 @@ class InstalledVersions } $installed = array(); + $copiedLocalDir = false; if (self::$canGetVendors) { + $selfDir = self::getSelfDir(); foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { + $vendorDir = strtr($vendorDir, '\\', '/'); if (isset(self::$installedByVendor[$vendorDir])) { $installed[] = self::$installedByVendor[$vendorDir]; } elseif (is_file($vendorDir.'/composer/installed.php')) { /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ $required = require $vendorDir.'/composer/installed.php'; - $installed[] = self::$installedByVendor[$vendorDir] = $required; - if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { - self::$installed = $installed[count($installed) - 1]; + self::$installedByVendor[$vendorDir] = $required; + $installed[] = $required; + if (self::$installed === null && $vendorDir.'/composer' === $selfDir) { + self::$installed = $required; + self::$installedIsLocalDir = true; } } + if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) { + $copiedLocalDir = true; + } } } @@ -350,7 +387,7 @@ class InstalledVersions } } - if (self::$installed !== array()) { + if (self::$installed !== array() && !$copiedLocalDir) { $installed[] = self::$installed; } diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 69f26208..9b298b11 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -184,6 +184,196 @@ return array( 'Brick\\Math\\Internal\\Calculator\\GmpCalculator' => $vendorDir . '/brick/math/src/Internal/Calculator/GmpCalculator.php', 'Brick\\Math\\Internal\\Calculator\\NativeCalculator' => $vendorDir . '/brick/math/src/Internal/Calculator/NativeCalculator.php', 'Brick\\Math\\RoundingMode' => $vendorDir . '/brick/math/src/RoundingMode.php', + 'Cake\\Chronos\\Chronos' => $vendorDir . '/cakephp/chronos/src/Chronos.php', + 'Cake\\Chronos\\ChronosDate' => $vendorDir . '/cakephp/chronos/src/ChronosDate.php', + 'Cake\\Chronos\\ChronosDatePeriod' => $vendorDir . '/cakephp/chronos/src/ChronosDatePeriod.php', + 'Cake\\Chronos\\ChronosInterval' => $vendorDir . '/cakephp/chronos/src/ChronosInterval.php', + 'Cake\\Chronos\\ChronosPeriod' => $vendorDir . '/cakephp/chronos/src/ChronosPeriod.php', + 'Cake\\Chronos\\ChronosTime' => $vendorDir . '/cakephp/chronos/src/ChronosTime.php', + 'Cake\\Chronos\\ClockFactory' => $vendorDir . '/cakephp/chronos/src/ClockFactory.php', + 'Cake\\Chronos\\DifferenceFormatter' => $vendorDir . '/cakephp/chronos/src/DifferenceFormatter.php', + 'Cake\\Chronos\\DifferenceFormatterInterface' => $vendorDir . '/cakephp/chronos/src/DifferenceFormatterInterface.php', + 'Cake\\Chronos\\FormattingTrait' => $vendorDir . '/cakephp/chronos/src/FormattingTrait.php', + 'Cake\\Chronos\\Translator' => $vendorDir . '/cakephp/chronos/src/Translator.php', + 'Cake\\Core\\App' => $vendorDir . '/cakephp/core/App.php', + 'Cake\\Core\\Attribute\\Configure' => $vendorDir . '/cakephp/core/Attribute/Configure.php', + 'Cake\\Core\\BasePlugin' => $vendorDir . '/cakephp/core/BasePlugin.php', + 'Cake\\Core\\Configure' => $vendorDir . '/cakephp/core/Configure.php', + 'Cake\\Core\\Configure\\ConfigEngineInterface' => $vendorDir . '/cakephp/core/Configure/ConfigEngineInterface.php', + 'Cake\\Core\\Configure\\Engine\\IniConfig' => $vendorDir . '/cakephp/core/Configure/Engine/IniConfig.php', + 'Cake\\Core\\Configure\\Engine\\JsonConfig' => $vendorDir . '/cakephp/core/Configure/Engine/JsonConfig.php', + 'Cake\\Core\\Configure\\Engine\\PhpConfig' => $vendorDir . '/cakephp/core/Configure/Engine/PhpConfig.php', + 'Cake\\Core\\Configure\\FileConfigTrait' => $vendorDir . '/cakephp/core/Configure/FileConfigTrait.php', + 'Cake\\Core\\ConsoleApplicationInterface' => $vendorDir . '/cakephp/core/ConsoleApplicationInterface.php', + 'Cake\\Core\\Container' => $vendorDir . '/cakephp/core/Container.php', + 'Cake\\Core\\ContainerApplicationInterface' => $vendorDir . '/cakephp/core/ContainerApplicationInterface.php', + 'Cake\\Core\\ContainerInterface' => $vendorDir . '/cakephp/core/ContainerInterface.php', + 'Cake\\Core\\ConventionsTrait' => $vendorDir . '/cakephp/core/ConventionsTrait.php', + 'Cake\\Core\\EventAwareApplicationInterface' => $vendorDir . '/cakephp/core/EventAwareApplicationInterface.php', + 'Cake\\Core\\Exception\\CakeException' => $vendorDir . '/cakephp/core/Exception/CakeException.php', + 'Cake\\Core\\Exception\\HttpErrorCodeInterface' => $vendorDir . '/cakephp/core/Exception/HttpErrorCodeInterface.php', + 'Cake\\Core\\Exception\\MissingPluginException' => $vendorDir . '/cakephp/core/Exception/MissingPluginException.php', + 'Cake\\Core\\HttpApplicationInterface' => $vendorDir . '/cakephp/core/HttpApplicationInterface.php', + 'Cake\\Core\\InstanceConfigTrait' => $vendorDir . '/cakephp/core/InstanceConfigTrait.php', + 'Cake\\Core\\ObjectRegistry' => $vendorDir . '/cakephp/core/ObjectRegistry.php', + 'Cake\\Core\\Plugin' => $vendorDir . '/cakephp/core/Plugin.php', + 'Cake\\Core\\PluginApplicationInterface' => $vendorDir . '/cakephp/core/PluginApplicationInterface.php', + 'Cake\\Core\\PluginCollection' => $vendorDir . '/cakephp/core/PluginCollection.php', + 'Cake\\Core\\PluginConfig' => $vendorDir . '/cakephp/core/PluginConfig.php', + 'Cake\\Core\\PluginInterface' => $vendorDir . '/cakephp/core/PluginInterface.php', + 'Cake\\Core\\Retry\\CommandRetry' => $vendorDir . '/cakephp/core/Retry/CommandRetry.php', + 'Cake\\Core\\Retry\\RetryStrategyInterface' => $vendorDir . '/cakephp/core/Retry/RetryStrategyInterface.php', + 'Cake\\Core\\ServiceConfig' => $vendorDir . '/cakephp/core/ServiceConfig.php', + 'Cake\\Core\\ServiceProvider' => $vendorDir . '/cakephp/core/ServiceProvider.php', + 'Cake\\Core\\StaticConfigTrait' => $vendorDir . '/cakephp/core/StaticConfigTrait.php', + 'Cake\\Core\\TestSuite\\ContainerStubTrait' => $vendorDir . '/cakephp/core/TestSuite/ContainerStubTrait.php', + 'Cake\\Database\\Connection' => $vendorDir . '/cakephp/database/Connection.php', + 'Cake\\Database\\ConstraintsInterface' => $vendorDir . '/cakephp/database/ConstraintsInterface.php', + 'Cake\\Database\\Driver' => $vendorDir . '/cakephp/database/Driver.php', + 'Cake\\Database\\DriverFeatureEnum' => $vendorDir . '/cakephp/database/DriverFeatureEnum.php', + 'Cake\\Database\\Driver\\Mysql' => $vendorDir . '/cakephp/database/Driver/Mysql.php', + 'Cake\\Database\\Driver\\Postgres' => $vendorDir . '/cakephp/database/Driver/Postgres.php', + 'Cake\\Database\\Driver\\Sqlite' => $vendorDir . '/cakephp/database/Driver/Sqlite.php', + 'Cake\\Database\\Driver\\Sqlserver' => $vendorDir . '/cakephp/database/Driver/Sqlserver.php', + 'Cake\\Database\\Driver\\TupleComparisonTranslatorTrait' => $vendorDir . '/cakephp/database/Driver/TupleComparisonTranslatorTrait.php', + 'Cake\\Database\\Exception\\DatabaseException' => $vendorDir . '/cakephp/database/Exception/DatabaseException.php', + 'Cake\\Database\\Exception\\MissingConnectionException' => $vendorDir . '/cakephp/database/Exception/MissingConnectionException.php', + 'Cake\\Database\\Exception\\MissingDriverException' => $vendorDir . '/cakephp/database/Exception/MissingDriverException.php', + 'Cake\\Database\\Exception\\MissingExtensionException' => $vendorDir . '/cakephp/database/Exception/MissingExtensionException.php', + 'Cake\\Database\\Exception\\NestedTransactionRollbackException' => $vendorDir . '/cakephp/database/Exception/NestedTransactionRollbackException.php', + 'Cake\\Database\\Exception\\QueryException' => $vendorDir . '/cakephp/database/Exception/QueryException.php', + 'Cake\\Database\\ExpressionInterface' => $vendorDir . '/cakephp/database/ExpressionInterface.php', + 'Cake\\Database\\Expression\\AggregateExpression' => $vendorDir . '/cakephp/database/Expression/AggregateExpression.php', + 'Cake\\Database\\Expression\\BetweenExpression' => $vendorDir . '/cakephp/database/Expression/BetweenExpression.php', + 'Cake\\Database\\Expression\\CaseExpressionTrait' => $vendorDir . '/cakephp/database/Expression/CaseExpressionTrait.php', + 'Cake\\Database\\Expression\\CaseStatementExpression' => $vendorDir . '/cakephp/database/Expression/CaseStatementExpression.php', + 'Cake\\Database\\Expression\\CommonTableExpression' => $vendorDir . '/cakephp/database/Expression/CommonTableExpression.php', + 'Cake\\Database\\Expression\\ComparisonExpression' => $vendorDir . '/cakephp/database/Expression/ComparisonExpression.php', + 'Cake\\Database\\Expression\\FieldInterface' => $vendorDir . '/cakephp/database/Expression/FieldInterface.php', + 'Cake\\Database\\Expression\\FieldTrait' => $vendorDir . '/cakephp/database/Expression/FieldTrait.php', + 'Cake\\Database\\Expression\\FunctionExpression' => $vendorDir . '/cakephp/database/Expression/FunctionExpression.php', + 'Cake\\Database\\Expression\\IdentifierExpression' => $vendorDir . '/cakephp/database/Expression/IdentifierExpression.php', + 'Cake\\Database\\Expression\\OrderByExpression' => $vendorDir . '/cakephp/database/Expression/OrderByExpression.php', + 'Cake\\Database\\Expression\\OrderClauseExpression' => $vendorDir . '/cakephp/database/Expression/OrderClauseExpression.php', + 'Cake\\Database\\Expression\\QueryExpression' => $vendorDir . '/cakephp/database/Expression/QueryExpression.php', + 'Cake\\Database\\Expression\\StringExpression' => $vendorDir . '/cakephp/database/Expression/StringExpression.php', + 'Cake\\Database\\Expression\\TupleComparison' => $vendorDir . '/cakephp/database/Expression/TupleComparison.php', + 'Cake\\Database\\Expression\\UnaryExpression' => $vendorDir . '/cakephp/database/Expression/UnaryExpression.php', + 'Cake\\Database\\Expression\\ValuesExpression' => $vendorDir . '/cakephp/database/Expression/ValuesExpression.php', + 'Cake\\Database\\Expression\\WhenThenExpression' => $vendorDir . '/cakephp/database/Expression/WhenThenExpression.php', + 'Cake\\Database\\Expression\\WindowExpression' => $vendorDir . '/cakephp/database/Expression/WindowExpression.php', + 'Cake\\Database\\Expression\\WindowInterface' => $vendorDir . '/cakephp/database/Expression/WindowInterface.php', + 'Cake\\Database\\FieldTypeConverter' => $vendorDir . '/cakephp/database/FieldTypeConverter.php', + 'Cake\\Database\\FunctionsBuilder' => $vendorDir . '/cakephp/database/FunctionsBuilder.php', + 'Cake\\Database\\IdentifierQuoter' => $vendorDir . '/cakephp/database/IdentifierQuoter.php', + 'Cake\\Database\\Log\\LoggedQuery' => $vendorDir . '/cakephp/database/Log/LoggedQuery.php', + 'Cake\\Database\\Log\\QueryLogger' => $vendorDir . '/cakephp/database/Log/QueryLogger.php', + 'Cake\\Database\\PostgresCompiler' => $vendorDir . '/cakephp/database/PostgresCompiler.php', + 'Cake\\Database\\Query' => $vendorDir . '/cakephp/database/Query.php', + 'Cake\\Database\\QueryCompiler' => $vendorDir . '/cakephp/database/QueryCompiler.php', + 'Cake\\Database\\Query\\DeleteQuery' => $vendorDir . '/cakephp/database/Query/DeleteQuery.php', + 'Cake\\Database\\Query\\InsertQuery' => $vendorDir . '/cakephp/database/Query/InsertQuery.php', + 'Cake\\Database\\Query\\QueryFactory' => $vendorDir . '/cakephp/database/Query/QueryFactory.php', + 'Cake\\Database\\Query\\SelectQuery' => $vendorDir . '/cakephp/database/Query/SelectQuery.php', + 'Cake\\Database\\Query\\UpdateQuery' => $vendorDir . '/cakephp/database/Query/UpdateQuery.php', + 'Cake\\Database\\Retry\\ErrorCodeWaitStrategy' => $vendorDir . '/cakephp/database/Retry/ErrorCodeWaitStrategy.php', + 'Cake\\Database\\Retry\\ReconnectStrategy' => $vendorDir . '/cakephp/database/Retry/ReconnectStrategy.php', + 'Cake\\Database\\SchemaCache' => $vendorDir . '/cakephp/database/SchemaCache.php', + 'Cake\\Database\\Schema\\CachedCollection' => $vendorDir . '/cakephp/database/Schema/CachedCollection.php', + 'Cake\\Database\\Schema\\CheckConstraint' => $vendorDir . '/cakephp/database/Schema/CheckConstraint.php', + 'Cake\\Database\\Schema\\Collection' => $vendorDir . '/cakephp/database/Schema/Collection.php', + 'Cake\\Database\\Schema\\CollectionInterface' => $vendorDir . '/cakephp/database/Schema/CollectionInterface.php', + 'Cake\\Database\\Schema\\Column' => $vendorDir . '/cakephp/database/Schema/Column.php', + 'Cake\\Database\\Schema\\Constraint' => $vendorDir . '/cakephp/database/Schema/Constraint.php', + 'Cake\\Database\\Schema\\ForeignKey' => $vendorDir . '/cakephp/database/Schema/ForeignKey.php', + 'Cake\\Database\\Schema\\Index' => $vendorDir . '/cakephp/database/Schema/Index.php', + 'Cake\\Database\\Schema\\MysqlSchemaDialect' => $vendorDir . '/cakephp/database/Schema/MysqlSchemaDialect.php', + 'Cake\\Database\\Schema\\PostgresSchemaDialect' => $vendorDir . '/cakephp/database/Schema/PostgresSchemaDialect.php', + 'Cake\\Database\\Schema\\SchemaDialect' => $vendorDir . '/cakephp/database/Schema/SchemaDialect.php', + 'Cake\\Database\\Schema\\SqlGeneratorInterface' => $vendorDir . '/cakephp/database/Schema/SqlGeneratorInterface.php', + 'Cake\\Database\\Schema\\SqliteSchemaDialect' => $vendorDir . '/cakephp/database/Schema/SqliteSchemaDialect.php', + 'Cake\\Database\\Schema\\SqlserverSchemaDialect' => $vendorDir . '/cakephp/database/Schema/SqlserverSchemaDialect.php', + 'Cake\\Database\\Schema\\TableSchema' => $vendorDir . '/cakephp/database/Schema/TableSchema.php', + 'Cake\\Database\\Schema\\TableSchemaInterface' => $vendorDir . '/cakephp/database/Schema/TableSchemaInterface.php', + 'Cake\\Database\\Schema\\UniqueKey' => $vendorDir . '/cakephp/database/Schema/UniqueKey.php', + 'Cake\\Database\\SqlserverCompiler' => $vendorDir . '/cakephp/database/SqlserverCompiler.php', + 'Cake\\Database\\StatementInterface' => $vendorDir . '/cakephp/database/StatementInterface.php', + 'Cake\\Database\\Statement\\SqliteStatement' => $vendorDir . '/cakephp/database/Statement/SqliteStatement.php', + 'Cake\\Database\\Statement\\SqlserverStatement' => $vendorDir . '/cakephp/database/Statement/SqlserverStatement.php', + 'Cake\\Database\\Statement\\Statement' => $vendorDir . '/cakephp/database/Statement/Statement.php', + 'Cake\\Database\\TypeFactory' => $vendorDir . '/cakephp/database/TypeFactory.php', + 'Cake\\Database\\TypeInterface' => $vendorDir . '/cakephp/database/TypeInterface.php', + 'Cake\\Database\\TypeMap' => $vendorDir . '/cakephp/database/TypeMap.php', + 'Cake\\Database\\TypeMapTrait' => $vendorDir . '/cakephp/database/TypeMapTrait.php', + 'Cake\\Database\\Type\\BaseType' => $vendorDir . '/cakephp/database/Type/BaseType.php', + 'Cake\\Database\\Type\\BatchCastingInterface' => $vendorDir . '/cakephp/database/Type/BatchCastingInterface.php', + 'Cake\\Database\\Type\\BinaryType' => $vendorDir . '/cakephp/database/Type/BinaryType.php', + 'Cake\\Database\\Type\\BinaryUuidType' => $vendorDir . '/cakephp/database/Type/BinaryUuidType.php', + 'Cake\\Database\\Type\\BoolType' => $vendorDir . '/cakephp/database/Type/BoolType.php', + 'Cake\\Database\\Type\\ColumnSchemaAwareInterface' => $vendorDir . '/cakephp/database/Type/ColumnSchemaAwareInterface.php', + 'Cake\\Database\\Type\\DateTimeFractionalType' => $vendorDir . '/cakephp/database/Type/DateTimeFractionalType.php', + 'Cake\\Database\\Type\\DateTimeTimezoneType' => $vendorDir . '/cakephp/database/Type/DateTimeTimezoneType.php', + 'Cake\\Database\\Type\\DateTimeType' => $vendorDir . '/cakephp/database/Type/DateTimeType.php', + 'Cake\\Database\\Type\\DateType' => $vendorDir . '/cakephp/database/Type/DateType.php', + 'Cake\\Database\\Type\\DecimalType' => $vendorDir . '/cakephp/database/Type/DecimalType.php', + 'Cake\\Database\\Type\\EnumLabelInterface' => $vendorDir . '/cakephp/database/Type/EnumLabelInterface.php', + 'Cake\\Database\\Type\\EnumType' => $vendorDir . '/cakephp/database/Type/EnumType.php', + 'Cake\\Database\\Type\\ExpressionTypeCasterTrait' => $vendorDir . '/cakephp/database/Type/ExpressionTypeCasterTrait.php', + 'Cake\\Database\\Type\\ExpressionTypeInterface' => $vendorDir . '/cakephp/database/Type/ExpressionTypeInterface.php', + 'Cake\\Database\\Type\\FloatType' => $vendorDir . '/cakephp/database/Type/FloatType.php', + 'Cake\\Database\\Type\\IntegerType' => $vendorDir . '/cakephp/database/Type/IntegerType.php', + 'Cake\\Database\\Type\\JsonType' => $vendorDir . '/cakephp/database/Type/JsonType.php', + 'Cake\\Database\\Type\\OptionalConvertInterface' => $vendorDir . '/cakephp/database/Type/OptionalConvertInterface.php', + 'Cake\\Database\\Type\\StringType' => $vendorDir . '/cakephp/database/Type/StringType.php', + 'Cake\\Database\\Type\\TimeType' => $vendorDir . '/cakephp/database/Type/TimeType.php', + 'Cake\\Database\\Type\\UuidType' => $vendorDir . '/cakephp/database/Type/UuidType.php', + 'Cake\\Database\\TypedResultInterface' => $vendorDir . '/cakephp/database/TypedResultInterface.php', + 'Cake\\Database\\TypedResultTrait' => $vendorDir . '/cakephp/database/TypedResultTrait.php', + 'Cake\\Database\\ValueBinder' => $vendorDir . '/cakephp/database/ValueBinder.php', + 'Cake\\Datasource\\ConnectionInterface' => $vendorDir . '/cakephp/datasource/ConnectionInterface.php', + 'Cake\\Datasource\\ConnectionManager' => $vendorDir . '/cakephp/datasource/ConnectionManager.php', + 'Cake\\Datasource\\ConnectionRegistry' => $vendorDir . '/cakephp/datasource/ConnectionRegistry.php', + 'Cake\\Datasource\\EntityInterface' => $vendorDir . '/cakephp/datasource/EntityInterface.php', + 'Cake\\Datasource\\EntityTrait' => $vendorDir . '/cakephp/datasource/EntityTrait.php', + 'Cake\\Datasource\\Exception\\InvalidPrimaryKeyException' => $vendorDir . '/cakephp/datasource/Exception/InvalidPrimaryKeyException.php', + 'Cake\\Datasource\\Exception\\MissingDatasourceConfigException' => $vendorDir . '/cakephp/datasource/Exception/MissingDatasourceConfigException.php', + 'Cake\\Datasource\\Exception\\MissingDatasourceException' => $vendorDir . '/cakephp/datasource/Exception/MissingDatasourceException.php', + 'Cake\\Datasource\\Exception\\MissingModelException' => $vendorDir . '/cakephp/datasource/Exception/MissingModelException.php', + 'Cake\\Datasource\\Exception\\MissingPropertyException' => $vendorDir . '/cakephp/datasource/Exception/MissingPropertyException.php', + 'Cake\\Datasource\\Exception\\RecordNotFoundException' => $vendorDir . '/cakephp/datasource/Exception/RecordNotFoundException.php', + 'Cake\\Datasource\\FactoryLocator' => $vendorDir . '/cakephp/datasource/FactoryLocator.php', + 'Cake\\Datasource\\FixtureInterface' => $vendorDir . '/cakephp/datasource/FixtureInterface.php', + 'Cake\\Datasource\\InvalidPropertyInterface' => $vendorDir . '/cakephp/datasource/InvalidPropertyInterface.php', + 'Cake\\Datasource\\Locator\\AbstractLocator' => $vendorDir . '/cakephp/datasource/Locator/AbstractLocator.php', + 'Cake\\Datasource\\Locator\\LocatorInterface' => $vendorDir . '/cakephp/datasource/Locator/LocatorInterface.php', + 'Cake\\Datasource\\ModelAwareTrait' => $vendorDir . '/cakephp/datasource/ModelAwareTrait.php', + 'Cake\\Datasource\\Paging\\Exception\\PageOutOfBoundsException' => $vendorDir . '/cakephp/datasource/Paging/Exception/PageOutOfBoundsException.php', + 'Cake\\Datasource\\Paging\\NumericPaginator' => $vendorDir . '/cakephp/datasource/Paging/NumericPaginator.php', + 'Cake\\Datasource\\Paging\\PaginatedInterface' => $vendorDir . '/cakephp/datasource/Paging/PaginatedInterface.php', + 'Cake\\Datasource\\Paging\\PaginatedResultSet' => $vendorDir . '/cakephp/datasource/Paging/PaginatedResultSet.php', + 'Cake\\Datasource\\Paging\\PaginatorInterface' => $vendorDir . '/cakephp/datasource/Paging/PaginatorInterface.php', + 'Cake\\Datasource\\Paging\\SimplePaginator' => $vendorDir . '/cakephp/datasource/Paging/SimplePaginator.php', + 'Cake\\Datasource\\Paging\\SortField' => $vendorDir . '/cakephp/datasource/Paging/SortField.php', + 'Cake\\Datasource\\Paging\\SortableFieldsBuilder' => $vendorDir . '/cakephp/datasource/Paging/SortableFieldsBuilder.php', + 'Cake\\Datasource\\QueryCacher' => $vendorDir . '/cakephp/datasource/QueryCacher.php', + 'Cake\\Datasource\\QueryInterface' => $vendorDir . '/cakephp/datasource/QueryInterface.php', + 'Cake\\Datasource\\RepositoryInterface' => $vendorDir . '/cakephp/datasource/RepositoryInterface.php', + 'Cake\\Datasource\\ResultSetDecorator' => $vendorDir . '/cakephp/datasource/ResultSetDecorator.php', + 'Cake\\Datasource\\ResultSetInterface' => $vendorDir . '/cakephp/datasource/ResultSetInterface.php', + 'Cake\\Datasource\\RuleInvoker' => $vendorDir . '/cakephp/datasource/RuleInvoker.php', + 'Cake\\Datasource\\RulesAwareTrait' => $vendorDir . '/cakephp/datasource/RulesAwareTrait.php', + 'Cake\\Datasource\\RulesChecker' => $vendorDir . '/cakephp/datasource/RulesChecker.php', + 'Cake\\Datasource\\SchemaInterface' => $vendorDir . '/cakephp/datasource/SchemaInterface.php', + 'Cake\\Utility\\CookieCryptTrait' => $vendorDir . '/cakephp/utility/CookieCryptTrait.php', + 'Cake\\Utility\\Crypto\\OpenSsl' => $vendorDir . '/cakephp/utility/Crypto/OpenSsl.php', + 'Cake\\Utility\\Exception\\XmlException' => $vendorDir . '/cakephp/utility/Exception/XmlException.php', + 'Cake\\Utility\\Filesystem' => $vendorDir . '/cakephp/utility/Filesystem.php', + 'Cake\\Utility\\Hash' => $vendorDir . '/cakephp/utility/Hash.php', + 'Cake\\Utility\\Inflector' => $vendorDir . '/cakephp/utility/Inflector.php', + 'Cake\\Utility\\MergeVariablesTrait' => $vendorDir . '/cakephp/utility/MergeVariablesTrait.php', + 'Cake\\Utility\\Security' => $vendorDir . '/cakephp/utility/Security.php', + 'Cake\\Utility\\Text' => $vendorDir . '/cakephp/utility/Text.php', + 'Cake\\Utility\\Xml' => $vendorDir . '/cakephp/utility/Xml.php', 'Carbon\\AbstractTranslator' => $vendorDir . '/nesbot/carbon/src/Carbon/AbstractTranslator.php', 'Carbon\\Callback' => $vendorDir . '/nesbot/carbon/src/Carbon/Callback.php', 'Carbon\\Carbon' => $vendorDir . '/nesbot/carbon/src/Carbon/Carbon.php', @@ -3413,6 +3603,55 @@ return array( 'League\\Config\\MutableConfigurationInterface' => $vendorDir . '/league/config/src/MutableConfigurationInterface.php', 'League\\Config\\ReadOnlyConfiguration' => $vendorDir . '/league/config/src/ReadOnlyConfiguration.php', 'League\\Config\\SchemaBuilderInterface' => $vendorDir . '/league/config/src/SchemaBuilderInterface.php', + 'League\\Container\\Argument\\ArgumentInterface' => $vendorDir . '/league/container/src/Argument/ArgumentInterface.php', + 'League\\Container\\Argument\\ArgumentReflectorInterface' => $vendorDir . '/league/container/src/Argument/ArgumentReflectorInterface.php', + 'League\\Container\\Argument\\ArgumentReflectorTrait' => $vendorDir . '/league/container/src/Argument/ArgumentReflectorTrait.php', + 'League\\Container\\Argument\\ArgumentResolverInterface' => $vendorDir . '/league/container/src/Argument/ArgumentResolverInterface.php', + 'League\\Container\\Argument\\ArgumentResolverTrait' => $vendorDir . '/league/container/src/Argument/ArgumentResolverTrait.php', + 'League\\Container\\Argument\\DefaultValueArgument' => $vendorDir . '/league/container/src/Argument/DefaultValueArgument.php', + 'League\\Container\\Argument\\DefaultValueInterface' => $vendorDir . '/league/container/src/Argument/DefaultValueInterface.php', + 'League\\Container\\Argument\\LiteralArgument' => $vendorDir . '/league/container/src/Argument/LiteralArgument.php', + 'League\\Container\\Argument\\LiteralArgumentInterface' => $vendorDir . '/league/container/src/Argument/LiteralArgumentInterface.php', + 'League\\Container\\Argument\\Literal\\ArrayArgument' => $vendorDir . '/league/container/src/Argument/Literal/ArrayArgument.php', + 'League\\Container\\Argument\\Literal\\BooleanArgument' => $vendorDir . '/league/container/src/Argument/Literal/BooleanArgument.php', + 'League\\Container\\Argument\\Literal\\CallableArgument' => $vendorDir . '/league/container/src/Argument/Literal/CallableArgument.php', + 'League\\Container\\Argument\\Literal\\FloatArgument' => $vendorDir . '/league/container/src/Argument/Literal/FloatArgument.php', + 'League\\Container\\Argument\\Literal\\IntegerArgument' => $vendorDir . '/league/container/src/Argument/Literal/IntegerArgument.php', + 'League\\Container\\Argument\\Literal\\ObjectArgument' => $vendorDir . '/league/container/src/Argument/Literal/ObjectArgument.php', + 'League\\Container\\Argument\\Literal\\StringArgument' => $vendorDir . '/league/container/src/Argument/Literal/StringArgument.php', + 'League\\Container\\Argument\\ResolvableArgument' => $vendorDir . '/league/container/src/Argument/ResolvableArgument.php', + 'League\\Container\\Argument\\ResolvableArgumentInterface' => $vendorDir . '/league/container/src/Argument/ResolvableArgumentInterface.php', + 'League\\Container\\Attribute\\AttributeInterface' => $vendorDir . '/league/container/src/Attribute/AttributeInterface.php', + 'League\\Container\\Attribute\\Inject' => $vendorDir . '/league/container/src/Attribute/Inject.php', + 'League\\Container\\Attribute\\Resolve' => $vendorDir . '/league/container/src/Attribute/Resolve.php', + 'League\\Container\\Container' => $vendorDir . '/league/container/src/Container.php', + 'League\\Container\\ContainerAwareInterface' => $vendorDir . '/league/container/src/ContainerAwareInterface.php', + 'League\\Container\\ContainerAwareTrait' => $vendorDir . '/league/container/src/ContainerAwareTrait.php', + 'League\\Container\\DefinitionContainerInterface' => $vendorDir . '/league/container/src/DefinitionContainerInterface.php', + 'League\\Container\\Definition\\Definition' => $vendorDir . '/league/container/src/Definition/Definition.php', + 'League\\Container\\Definition\\DefinitionAggregate' => $vendorDir . '/league/container/src/Definition/DefinitionAggregate.php', + 'League\\Container\\Definition\\DefinitionAggregateInterface' => $vendorDir . '/league/container/src/Definition/DefinitionAggregateInterface.php', + 'League\\Container\\Definition\\DefinitionInterface' => $vendorDir . '/league/container/src/Definition/DefinitionInterface.php', + 'League\\Container\\Event\\BeforeResolveEvent' => $vendorDir . '/league/container/src/Event/BeforeResolveEvent.php', + 'League\\Container\\Event\\ContainerEvent' => $vendorDir . '/league/container/src/Event/ContainerEvent.php', + 'League\\Container\\Event\\DefinitionResolvedEvent' => $vendorDir . '/league/container/src/Event/DefinitionResolvedEvent.php', + 'League\\Container\\Event\\EventAwareTrait' => $vendorDir . '/league/container/src/Event/EventAwareTrait.php', + 'League\\Container\\Event\\EventDispatcher' => $vendorDir . '/league/container/src/Event/EventDispatcher.php', + 'League\\Container\\Event\\EventFilter' => $vendorDir . '/league/container/src/Event/EventFilter.php', + 'League\\Container\\Event\\OnDefineEvent' => $vendorDir . '/league/container/src/Event/OnDefineEvent.php', + 'League\\Container\\Event\\ServiceResolvedEvent' => $vendorDir . '/league/container/src/Event/ServiceResolvedEvent.php', + 'League\\Container\\Exception\\ContainerException' => $vendorDir . '/league/container/src/Exception/ContainerException.php', + 'League\\Container\\Exception\\NotFoundException' => $vendorDir . '/league/container/src/Exception/NotFoundException.php', + 'League\\Container\\Inflector\\Inflector' => $vendorDir . '/league/container/src/Inflector/Inflector.php', + 'League\\Container\\Inflector\\InflectorAggregate' => $vendorDir . '/league/container/src/Inflector/InflectorAggregate.php', + 'League\\Container\\Inflector\\InflectorAggregateInterface' => $vendorDir . '/league/container/src/Inflector/InflectorAggregateInterface.php', + 'League\\Container\\Inflector\\InflectorInterface' => $vendorDir . '/league/container/src/Inflector/InflectorInterface.php', + 'League\\Container\\ReflectionContainer' => $vendorDir . '/league/container/src/ReflectionContainer.php', + 'League\\Container\\ServiceProvider\\AbstractServiceProvider' => $vendorDir . '/league/container/src/ServiceProvider/AbstractServiceProvider.php', + 'League\\Container\\ServiceProvider\\BootableServiceProviderInterface' => $vendorDir . '/league/container/src/ServiceProvider/BootableServiceProviderInterface.php', + 'League\\Container\\ServiceProvider\\ServiceProviderAggregate' => $vendorDir . '/league/container/src/ServiceProvider/ServiceProviderAggregate.php', + 'League\\Container\\ServiceProvider\\ServiceProviderAggregateInterface' => $vendorDir . '/league/container/src/ServiceProvider/ServiceProviderAggregateInterface.php', + 'League\\Container\\ServiceProvider\\ServiceProviderInterface' => $vendorDir . '/league/container/src/ServiceProvider/ServiceProviderInterface.php', 'League\\Flysystem\\CalculateChecksumFromStream' => $vendorDir . '/league/flysystem/src/CalculateChecksumFromStream.php', 'League\\Flysystem\\ChecksumAlgoIsNotSupported' => $vendorDir . '/league/flysystem/src/ChecksumAlgoIsNotSupported.php', 'League\\Flysystem\\ChecksumProvider' => $vendorDir . '/league/flysystem/src/ChecksumProvider.php', @@ -4921,6 +5160,76 @@ return array( 'PharIo\\Version\\VersionConstraintParser' => $vendorDir . '/phar-io/version/src/VersionConstraintParser.php', 'PharIo\\Version\\VersionConstraintValue' => $vendorDir . '/phar-io/version/src/VersionConstraintValue.php', 'PharIo\\Version\\VersionNumber' => $vendorDir . '/phar-io/version/src/VersionNumber.php', + 'Phinx\\Config\\Config' => $vendorDir . '/robmorgan/phinx/src/Phinx/Config/Config.php', + 'Phinx\\Config\\ConfigInterface' => $vendorDir . '/robmorgan/phinx/src/Phinx/Config/ConfigInterface.php', + 'Phinx\\Config\\FeatureFlags' => $vendorDir . '/robmorgan/phinx/src/Phinx/Config/FeatureFlags.php', + 'Phinx\\Config\\NamespaceAwareInterface' => $vendorDir . '/robmorgan/phinx/src/Phinx/Config/NamespaceAwareInterface.php', + 'Phinx\\Config\\NamespaceAwareTrait' => $vendorDir . '/robmorgan/phinx/src/Phinx/Config/NamespaceAwareTrait.php', + 'Phinx\\Console\\Command\\AbstractCommand' => $vendorDir . '/robmorgan/phinx/src/Phinx/Console/Command/AbstractCommand.php', + 'Phinx\\Console\\Command\\Breakpoint' => $vendorDir . '/robmorgan/phinx/src/Phinx/Console/Command/Breakpoint.php', + 'Phinx\\Console\\Command\\Create' => $vendorDir . '/robmorgan/phinx/src/Phinx/Console/Command/Create.php', + 'Phinx\\Console\\Command\\Init' => $vendorDir . '/robmorgan/phinx/src/Phinx/Console/Command/Init.php', + 'Phinx\\Console\\Command\\ListAliases' => $vendorDir . '/robmorgan/phinx/src/Phinx/Console/Command/ListAliases.php', + 'Phinx\\Console\\Command\\Migrate' => $vendorDir . '/robmorgan/phinx/src/Phinx/Console/Command/Migrate.php', + 'Phinx\\Console\\Command\\Rollback' => $vendorDir . '/robmorgan/phinx/src/Phinx/Console/Command/Rollback.php', + 'Phinx\\Console\\Command\\SeedCreate' => $vendorDir . '/robmorgan/phinx/src/Phinx/Console/Command/SeedCreate.php', + 'Phinx\\Console\\Command\\SeedRun' => $vendorDir . '/robmorgan/phinx/src/Phinx/Console/Command/SeedRun.php', + 'Phinx\\Console\\Command\\Status' => $vendorDir . '/robmorgan/phinx/src/Phinx/Console/Command/Status.php', + 'Phinx\\Console\\Command\\Test' => $vendorDir . '/robmorgan/phinx/src/Phinx/Console/Command/Test.php', + 'Phinx\\Console\\PhinxApplication' => $vendorDir . '/robmorgan/phinx/src/Phinx/Console/PhinxApplication.php', + 'Phinx\\Db\\Action\\Action' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Action/Action.php', + 'Phinx\\Db\\Action\\AddColumn' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Action/AddColumn.php', + 'Phinx\\Db\\Action\\AddForeignKey' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Action/AddForeignKey.php', + 'Phinx\\Db\\Action\\AddIndex' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Action/AddIndex.php', + 'Phinx\\Db\\Action\\ChangeColumn' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Action/ChangeColumn.php', + 'Phinx\\Db\\Action\\ChangeComment' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Action/ChangeComment.php', + 'Phinx\\Db\\Action\\ChangePrimaryKey' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Action/ChangePrimaryKey.php', + 'Phinx\\Db\\Action\\CreateTable' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Action/CreateTable.php', + 'Phinx\\Db\\Action\\DropForeignKey' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Action/DropForeignKey.php', + 'Phinx\\Db\\Action\\DropIndex' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Action/DropIndex.php', + 'Phinx\\Db\\Action\\DropTable' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Action/DropTable.php', + 'Phinx\\Db\\Action\\RemoveColumn' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Action/RemoveColumn.php', + 'Phinx\\Db\\Action\\RenameColumn' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Action/RenameColumn.php', + 'Phinx\\Db\\Action\\RenameTable' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Action/RenameTable.php', + 'Phinx\\Db\\Adapter\\AbstractAdapter' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Adapter/AbstractAdapter.php', + 'Phinx\\Db\\Adapter\\AdapterFactory' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Adapter/AdapterFactory.php', + 'Phinx\\Db\\Adapter\\AdapterInterface' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Adapter/AdapterInterface.php', + 'Phinx\\Db\\Adapter\\AdapterWrapper' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Adapter/AdapterWrapper.php', + 'Phinx\\Db\\Adapter\\DirectActionInterface' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Adapter/DirectActionInterface.php', + 'Phinx\\Db\\Adapter\\MysqlAdapter' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Adapter/MysqlAdapter.php', + 'Phinx\\Db\\Adapter\\PdoAdapter' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Adapter/PdoAdapter.php', + 'Phinx\\Db\\Adapter\\PostgresAdapter' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Adapter/PostgresAdapter.php', + 'Phinx\\Db\\Adapter\\ProxyAdapter' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Adapter/ProxyAdapter.php', + 'Phinx\\Db\\Adapter\\SQLiteAdapter' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Adapter/SQLiteAdapter.php', + 'Phinx\\Db\\Adapter\\SqlServerAdapter' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Adapter/SqlServerAdapter.php', + 'Phinx\\Db\\Adapter\\TablePrefixAdapter' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Adapter/TablePrefixAdapter.php', + 'Phinx\\Db\\Adapter\\TimedOutputAdapter' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Adapter/TimedOutputAdapter.php', + 'Phinx\\Db\\Adapter\\UnsupportedColumnTypeException' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Adapter/UnsupportedColumnTypeException.php', + 'Phinx\\Db\\Adapter\\WrapperInterface' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Adapter/WrapperInterface.php', + 'Phinx\\Db\\Plan\\AlterTable' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Plan/AlterTable.php', + 'Phinx\\Db\\Plan\\Intent' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Plan/Intent.php', + 'Phinx\\Db\\Plan\\NewTable' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Plan/NewTable.php', + 'Phinx\\Db\\Plan\\Plan' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Plan/Plan.php', + 'Phinx\\Db\\Plan\\Solver\\ActionSplitter' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Plan/Solver/ActionSplitter.php', + 'Phinx\\Db\\Table' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Table.php', + 'Phinx\\Db\\Table\\Column' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Table/Column.php', + 'Phinx\\Db\\Table\\ForeignKey' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Table/ForeignKey.php', + 'Phinx\\Db\\Table\\Index' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Table/Index.php', + 'Phinx\\Db\\Table\\Table' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Table/Table.php', + 'Phinx\\Db\\Util\\AlterInstructions' => $vendorDir . '/robmorgan/phinx/src/Phinx/Db/Util/AlterInstructions.php', + 'Phinx\\Migration\\AbstractMigration' => $vendorDir . '/robmorgan/phinx/src/Phinx/Migration/AbstractMigration.php', + 'Phinx\\Migration\\AbstractTemplateCreation' => $vendorDir . '/robmorgan/phinx/src/Phinx/Migration/AbstractTemplateCreation.php', + 'Phinx\\Migration\\CreationInterface' => $vendorDir . '/robmorgan/phinx/src/Phinx/Migration/CreationInterface.php', + 'Phinx\\Migration\\IrreversibleMigrationException' => $vendorDir . '/robmorgan/phinx/src/Phinx/Migration/IrreversibleMigrationException.php', + 'Phinx\\Migration\\Manager' => $vendorDir . '/robmorgan/phinx/src/Phinx/Migration/Manager.php', + 'Phinx\\Migration\\Manager\\Environment' => $vendorDir . '/robmorgan/phinx/src/Phinx/Migration/Manager/Environment.php', + 'Phinx\\Migration\\MigrationInterface' => $vendorDir . '/robmorgan/phinx/src/Phinx/Migration/MigrationInterface.php', + 'Phinx\\Seed\\AbstractSeed' => $vendorDir . '/robmorgan/phinx/src/Phinx/Seed/AbstractSeed.php', + 'Phinx\\Seed\\SeedInterface' => $vendorDir . '/robmorgan/phinx/src/Phinx/Seed/SeedInterface.php', + 'Phinx\\Util\\Expression' => $vendorDir . '/robmorgan/phinx/src/Phinx/Util/Expression.php', + 'Phinx\\Util\\Literal' => $vendorDir . '/robmorgan/phinx/src/Phinx/Util/Literal.php', + 'Phinx\\Util\\Util' => $vendorDir . '/robmorgan/phinx/src/Phinx/Util/Util.php', + 'Phinx\\Wrapper\\TextWrapper' => $vendorDir . '/robmorgan/phinx/src/Phinx/Wrapper/TextWrapper.php', 'PhpOffice\\PhpSpreadsheet\\Calculation\\ArrayEnabled' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/ArrayEnabled.php', 'PhpOffice\\PhpSpreadsheet\\Calculation\\BinaryComparison' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/BinaryComparison.php', 'PhpOffice\\PhpSpreadsheet\\Calculation\\Calculation' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Calculation.php', @@ -6661,6 +6970,96 @@ return array( 'Symfony\\Component\\Clock\\MonotonicClock' => $vendorDir . '/symfony/clock/MonotonicClock.php', 'Symfony\\Component\\Clock\\NativeClock' => $vendorDir . '/symfony/clock/NativeClock.php', 'Symfony\\Component\\Clock\\Test\\ClockSensitiveTrait' => $vendorDir . '/symfony/clock/Test/ClockSensitiveTrait.php', + 'Symfony\\Component\\Config\\Builder\\ClassBuilder' => $vendorDir . '/symfony/config/Builder/ClassBuilder.php', + 'Symfony\\Component\\Config\\Builder\\ConfigBuilderGenerator' => $vendorDir . '/symfony/config/Builder/ConfigBuilderGenerator.php', + 'Symfony\\Component\\Config\\Builder\\ConfigBuilderGeneratorInterface' => $vendorDir . '/symfony/config/Builder/ConfigBuilderGeneratorInterface.php', + 'Symfony\\Component\\Config\\Builder\\ConfigBuilderInterface' => $vendorDir . '/symfony/config/Builder/ConfigBuilderInterface.php', + 'Symfony\\Component\\Config\\Builder\\Method' => $vendorDir . '/symfony/config/Builder/Method.php', + 'Symfony\\Component\\Config\\Builder\\Property' => $vendorDir . '/symfony/config/Builder/Property.php', + 'Symfony\\Component\\Config\\ConfigCache' => $vendorDir . '/symfony/config/ConfigCache.php', + 'Symfony\\Component\\Config\\ConfigCacheFactory' => $vendorDir . '/symfony/config/ConfigCacheFactory.php', + 'Symfony\\Component\\Config\\ConfigCacheFactoryInterface' => $vendorDir . '/symfony/config/ConfigCacheFactoryInterface.php', + 'Symfony\\Component\\Config\\ConfigCacheInterface' => $vendorDir . '/symfony/config/ConfigCacheInterface.php', + 'Symfony\\Component\\Config\\Definition\\ArrayNode' => $vendorDir . '/symfony/config/Definition/ArrayNode.php', + 'Symfony\\Component\\Config\\Definition\\ArrayShapeGenerator' => $vendorDir . '/symfony/config/Definition/ArrayShapeGenerator.php', + 'Symfony\\Component\\Config\\Definition\\BaseNode' => $vendorDir . '/symfony/config/Definition/BaseNode.php', + 'Symfony\\Component\\Config\\Definition\\BooleanNode' => $vendorDir . '/symfony/config/Definition/BooleanNode.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\ArrayNodeDefinition' => $vendorDir . '/symfony/config/Definition/Builder/ArrayNodeDefinition.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\BooleanNodeDefinition' => $vendorDir . '/symfony/config/Definition/Builder/BooleanNodeDefinition.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\BuilderAwareInterface' => $vendorDir . '/symfony/config/Definition/Builder/BuilderAwareInterface.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\EnumNodeDefinition' => $vendorDir . '/symfony/config/Definition/Builder/EnumNodeDefinition.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\ExprBuilder' => $vendorDir . '/symfony/config/Definition/Builder/ExprBuilder.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\FloatNodeDefinition' => $vendorDir . '/symfony/config/Definition/Builder/FloatNodeDefinition.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\IntegerNodeDefinition' => $vendorDir . '/symfony/config/Definition/Builder/IntegerNodeDefinition.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\MergeBuilder' => $vendorDir . '/symfony/config/Definition/Builder/MergeBuilder.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\NodeBuilder' => $vendorDir . '/symfony/config/Definition/Builder/NodeBuilder.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\NodeDefinition' => $vendorDir . '/symfony/config/Definition/Builder/NodeDefinition.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\NodeParentInterface' => $vendorDir . '/symfony/config/Definition/Builder/NodeParentInterface.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\NormalizationBuilder' => $vendorDir . '/symfony/config/Definition/Builder/NormalizationBuilder.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\NumericNodeDefinition' => $vendorDir . '/symfony/config/Definition/Builder/NumericNodeDefinition.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\ParentNodeDefinitionInterface' => $vendorDir . '/symfony/config/Definition/Builder/ParentNodeDefinitionInterface.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\ScalarNodeDefinition' => $vendorDir . '/symfony/config/Definition/Builder/ScalarNodeDefinition.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\StringNodeDefinition' => $vendorDir . '/symfony/config/Definition/Builder/StringNodeDefinition.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\TreeBuilder' => $vendorDir . '/symfony/config/Definition/Builder/TreeBuilder.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\ValidationBuilder' => $vendorDir . '/symfony/config/Definition/Builder/ValidationBuilder.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\VariableNodeDefinition' => $vendorDir . '/symfony/config/Definition/Builder/VariableNodeDefinition.php', + 'Symfony\\Component\\Config\\Definition\\ConfigurableInterface' => $vendorDir . '/symfony/config/Definition/ConfigurableInterface.php', + 'Symfony\\Component\\Config\\Definition\\Configuration' => $vendorDir . '/symfony/config/Definition/Configuration.php', + 'Symfony\\Component\\Config\\Definition\\ConfigurationInterface' => $vendorDir . '/symfony/config/Definition/ConfigurationInterface.php', + 'Symfony\\Component\\Config\\Definition\\Configurator\\DefinitionConfigurator' => $vendorDir . '/symfony/config/Definition/Configurator/DefinitionConfigurator.php', + 'Symfony\\Component\\Config\\Definition\\Dumper\\XmlReferenceDumper' => $vendorDir . '/symfony/config/Definition/Dumper/XmlReferenceDumper.php', + 'Symfony\\Component\\Config\\Definition\\Dumper\\YamlReferenceDumper' => $vendorDir . '/symfony/config/Definition/Dumper/YamlReferenceDumper.php', + 'Symfony\\Component\\Config\\Definition\\EnumNode' => $vendorDir . '/symfony/config/Definition/EnumNode.php', + 'Symfony\\Component\\Config\\Definition\\Exception\\DuplicateKeyException' => $vendorDir . '/symfony/config/Definition/Exception/DuplicateKeyException.php', + 'Symfony\\Component\\Config\\Definition\\Exception\\Exception' => $vendorDir . '/symfony/config/Definition/Exception/Exception.php', + 'Symfony\\Component\\Config\\Definition\\Exception\\ForbiddenOverwriteException' => $vendorDir . '/symfony/config/Definition/Exception/ForbiddenOverwriteException.php', + 'Symfony\\Component\\Config\\Definition\\Exception\\InvalidConfigurationException' => $vendorDir . '/symfony/config/Definition/Exception/InvalidConfigurationException.php', + 'Symfony\\Component\\Config\\Definition\\Exception\\InvalidDefinitionException' => $vendorDir . '/symfony/config/Definition/Exception/InvalidDefinitionException.php', + 'Symfony\\Component\\Config\\Definition\\Exception\\InvalidTypeException' => $vendorDir . '/symfony/config/Definition/Exception/InvalidTypeException.php', + 'Symfony\\Component\\Config\\Definition\\Exception\\UnsetKeyException' => $vendorDir . '/symfony/config/Definition/Exception/UnsetKeyException.php', + 'Symfony\\Component\\Config\\Definition\\FloatNode' => $vendorDir . '/symfony/config/Definition/FloatNode.php', + 'Symfony\\Component\\Config\\Definition\\IntegerNode' => $vendorDir . '/symfony/config/Definition/IntegerNode.php', + 'Symfony\\Component\\Config\\Definition\\Loader\\DefinitionFileLoader' => $vendorDir . '/symfony/config/Definition/Loader/DefinitionFileLoader.php', + 'Symfony\\Component\\Config\\Definition\\NodeInterface' => $vendorDir . '/symfony/config/Definition/NodeInterface.php', + 'Symfony\\Component\\Config\\Definition\\NumericNode' => $vendorDir . '/symfony/config/Definition/NumericNode.php', + 'Symfony\\Component\\Config\\Definition\\Processor' => $vendorDir . '/symfony/config/Definition/Processor.php', + 'Symfony\\Component\\Config\\Definition\\PrototypeNodeInterface' => $vendorDir . '/symfony/config/Definition/PrototypeNodeInterface.php', + 'Symfony\\Component\\Config\\Definition\\PrototypedArrayNode' => $vendorDir . '/symfony/config/Definition/PrototypedArrayNode.php', + 'Symfony\\Component\\Config\\Definition\\ScalarNode' => $vendorDir . '/symfony/config/Definition/ScalarNode.php', + 'Symfony\\Component\\Config\\Definition\\StringNode' => $vendorDir . '/symfony/config/Definition/StringNode.php', + 'Symfony\\Component\\Config\\Definition\\VariableNode' => $vendorDir . '/symfony/config/Definition/VariableNode.php', + 'Symfony\\Component\\Config\\Exception\\FileLoaderImportCircularReferenceException' => $vendorDir . '/symfony/config/Exception/FileLoaderImportCircularReferenceException.php', + 'Symfony\\Component\\Config\\Exception\\FileLocatorFileNotFoundException' => $vendorDir . '/symfony/config/Exception/FileLocatorFileNotFoundException.php', + 'Symfony\\Component\\Config\\Exception\\LoaderLoadException' => $vendorDir . '/symfony/config/Exception/LoaderLoadException.php', + 'Symfony\\Component\\Config\\Exception\\LogicException' => $vendorDir . '/symfony/config/Exception/LogicException.php', + 'Symfony\\Component\\Config\\FileLocator' => $vendorDir . '/symfony/config/FileLocator.php', + 'Symfony\\Component\\Config\\FileLocatorInterface' => $vendorDir . '/symfony/config/FileLocatorInterface.php', + 'Symfony\\Component\\Config\\Loader\\DelegatingLoader' => $vendorDir . '/symfony/config/Loader/DelegatingLoader.php', + 'Symfony\\Component\\Config\\Loader\\DirectoryAwareLoaderInterface' => $vendorDir . '/symfony/config/Loader/DirectoryAwareLoaderInterface.php', + 'Symfony\\Component\\Config\\Loader\\FileLoader' => $vendorDir . '/symfony/config/Loader/FileLoader.php', + 'Symfony\\Component\\Config\\Loader\\GlobFileLoader' => $vendorDir . '/symfony/config/Loader/GlobFileLoader.php', + 'Symfony\\Component\\Config\\Loader\\Loader' => $vendorDir . '/symfony/config/Loader/Loader.php', + 'Symfony\\Component\\Config\\Loader\\LoaderInterface' => $vendorDir . '/symfony/config/Loader/LoaderInterface.php', + 'Symfony\\Component\\Config\\Loader\\LoaderResolver' => $vendorDir . '/symfony/config/Loader/LoaderResolver.php', + 'Symfony\\Component\\Config\\Loader\\LoaderResolverInterface' => $vendorDir . '/symfony/config/Loader/LoaderResolverInterface.php', + 'Symfony\\Component\\Config\\Loader\\ParamConfigurator' => $vendorDir . '/symfony/config/Loader/ParamConfigurator.php', + 'Symfony\\Component\\Config\\ResourceCheckerConfigCache' => $vendorDir . '/symfony/config/ResourceCheckerConfigCache.php', + 'Symfony\\Component\\Config\\ResourceCheckerConfigCacheFactory' => $vendorDir . '/symfony/config/ResourceCheckerConfigCacheFactory.php', + 'Symfony\\Component\\Config\\ResourceCheckerInterface' => $vendorDir . '/symfony/config/ResourceCheckerInterface.php', + 'Symfony\\Component\\Config\\Resource\\ClassExistenceResource' => $vendorDir . '/symfony/config/Resource/ClassExistenceResource.php', + 'Symfony\\Component\\Config\\Resource\\ComposerResource' => $vendorDir . '/symfony/config/Resource/ComposerResource.php', + 'Symfony\\Component\\Config\\Resource\\DirectoryResource' => $vendorDir . '/symfony/config/Resource/DirectoryResource.php', + 'Symfony\\Component\\Config\\Resource\\FileExistenceResource' => $vendorDir . '/symfony/config/Resource/FileExistenceResource.php', + 'Symfony\\Component\\Config\\Resource\\FileResource' => $vendorDir . '/symfony/config/Resource/FileResource.php', + 'Symfony\\Component\\Config\\Resource\\GlobResource' => $vendorDir . '/symfony/config/Resource/GlobResource.php', + 'Symfony\\Component\\Config\\Resource\\ReflectionClassResource' => $vendorDir . '/symfony/config/Resource/ReflectionClassResource.php', + 'Symfony\\Component\\Config\\Resource\\ResourceInterface' => $vendorDir . '/symfony/config/Resource/ResourceInterface.php', + 'Symfony\\Component\\Config\\Resource\\SelfCheckingResourceChecker' => $vendorDir . '/symfony/config/Resource/SelfCheckingResourceChecker.php', + 'Symfony\\Component\\Config\\Resource\\SelfCheckingResourceInterface' => $vendorDir . '/symfony/config/Resource/SelfCheckingResourceInterface.php', + 'Symfony\\Component\\Config\\Resource\\SkippingResourceChecker' => $vendorDir . '/symfony/config/Resource/SkippingResourceChecker.php', + 'Symfony\\Component\\Config\\Util\\Exception\\InvalidXmlException' => $vendorDir . '/symfony/config/Util/Exception/InvalidXmlException.php', + 'Symfony\\Component\\Config\\Util\\Exception\\XmlParsingException' => $vendorDir . '/symfony/config/Util/Exception/XmlParsingException.php', + 'Symfony\\Component\\Config\\Util\\XmlUtils' => $vendorDir . '/symfony/config/Util/XmlUtils.php', 'Symfony\\Component\\Console\\Application' => $vendorDir . '/symfony/console/Application.php', 'Symfony\\Component\\Console\\Attribute\\Argument' => $vendorDir . '/symfony/console/Attribute/Argument.php', 'Symfony\\Component\\Console\\Attribute\\AsCommand' => $vendorDir . '/symfony/console/Attribute/AsCommand.php', @@ -6869,6 +7268,14 @@ return array( 'Symfony\\Component\\EventDispatcher\\EventSubscriberInterface' => $vendorDir . '/symfony/event-dispatcher/EventSubscriberInterface.php', 'Symfony\\Component\\EventDispatcher\\GenericEvent' => $vendorDir . '/symfony/event-dispatcher/GenericEvent.php', 'Symfony\\Component\\EventDispatcher\\ImmutableEventDispatcher' => $vendorDir . '/symfony/event-dispatcher/ImmutableEventDispatcher.php', + 'Symfony\\Component\\Filesystem\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/filesystem/Exception/ExceptionInterface.php', + 'Symfony\\Component\\Filesystem\\Exception\\FileNotFoundException' => $vendorDir . '/symfony/filesystem/Exception/FileNotFoundException.php', + 'Symfony\\Component\\Filesystem\\Exception\\IOException' => $vendorDir . '/symfony/filesystem/Exception/IOException.php', + 'Symfony\\Component\\Filesystem\\Exception\\IOExceptionInterface' => $vendorDir . '/symfony/filesystem/Exception/IOExceptionInterface.php', + 'Symfony\\Component\\Filesystem\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/filesystem/Exception/InvalidArgumentException.php', + 'Symfony\\Component\\Filesystem\\Exception\\RuntimeException' => $vendorDir . '/symfony/filesystem/Exception/RuntimeException.php', + 'Symfony\\Component\\Filesystem\\Filesystem' => $vendorDir . '/symfony/filesystem/Filesystem.php', + 'Symfony\\Component\\Filesystem\\Path' => $vendorDir . '/symfony/filesystem/Path.php', 'Symfony\\Component\\Finder\\Comparator\\Comparator' => $vendorDir . '/symfony/finder/Comparator/Comparator.php', 'Symfony\\Component\\Finder\\Comparator\\DateComparator' => $vendorDir . '/symfony/finder/Comparator/DateComparator.php', 'Symfony\\Component\\Finder\\Comparator\\NumberComparator' => $vendorDir . '/symfony/finder/Comparator/NumberComparator.php', diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php index 3b101480..4a566a59 100644 --- a/vendor/composer/autoload_files.php +++ b/vendor/composer/autoload_files.php @@ -11,14 +11,15 @@ return array( 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php', '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', '8825ede83f2f289127722d4e842cf7e8' => $vendorDir . '/symfony/polyfill-intl-grapheme/bootstrap.php', - '662a729f963d39afe703c9d9b7ab4a8c' => $vendorDir . '/symfony/polyfill-php83/bootstrap.php', 'b6b991a57620e2fb6b2f66f03fe9ddc2' => $vendorDir . '/symfony/string/Resources/functions.php', + '662a729f963d39afe703c9d9b7ab4a8c' => $vendorDir . '/symfony/polyfill-php83/bootstrap.php', '667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php', '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php', 'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php', '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php', 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', + '72142d7b40a3a0b14e91825290b5ad82' => $vendorDir . '/cakephp/core/functions.php', '35a6ad97d21e794e7e22a17d806652e4' => $vendorDir . '/nunomaduro/termwind/src/Functions.php', '2203a247e6fda86070a5e4e07aed533a' => $vendorDir . '/symfony/clock/Resources/now.php', '09f6b20656683369174dd6fa83b7e5fb' => $vendorDir . '/symfony/polyfill-uuid/bootstrap.php', @@ -33,6 +34,7 @@ return array( '58571171fd5812e6e447dce228f52f4d' => $vendorDir . '/laravel/framework/src/Illuminate/Support/helpers.php', '6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php', '3bd81c9b8fcc150b69d8b63b4d2ccf23' => $vendorDir . '/spatie/flare-client-php/src/helpers.php', + '948ad5488880985ff1c06721a4e447fe' => $vendorDir . '/cakephp/utility/bootstrap.php', 'ec07570ca5a812141189b1fa81503674' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert/Functions.php', '801c31d8ed748cfa537fa45402288c95' => $vendorDir . '/psy/psysh/src/functions.php', 'b84a5ba6d9a8ee8cf648b71c42c799b7' => $vendorDir . '/akaunting/laravel-setting/src/helpers.php', diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index 98a2b369..ebab1ab7 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -8,7 +8,7 @@ $baseDir = dirname($vendorDir); return array( 'voku\\' => array($vendorDir . '/voku/portable-ascii/src/voku'), 'phpseclib3\\' => array($vendorDir . '/phpseclib/phpseclib/phpseclib'), - 'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/type-resolver/src'), + 'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/type-resolver/src', $vendorDir . '/phpdocumentor/reflection-common/src'), 'ZipStream\\' => array($vendorDir . '/maennchen/zipstream-php/src'), 'Whoops\\' => array($vendorDir . '/filp/whoops/src/Whoops'), 'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'), @@ -47,16 +47,18 @@ return array( 'Symfony\\Component\\HttpKernel\\' => array($vendorDir . '/symfony/http-kernel'), 'Symfony\\Component\\HttpFoundation\\' => array($vendorDir . '/symfony/http-foundation'), 'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'), + 'Symfony\\Component\\Filesystem\\' => array($vendorDir . '/symfony/filesystem'), 'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'), 'Symfony\\Component\\ErrorHandler\\' => array($vendorDir . '/symfony/error-handler'), 'Symfony\\Component\\CssSelector\\' => array($vendorDir . '/symfony/css-selector'), 'Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'), + 'Symfony\\Component\\Config\\' => array($vendorDir . '/symfony/config'), 'Symfony\\Component\\Clock\\' => array($vendorDir . '/symfony/clock'), 'Spatie\\QueryBuilder\\Database\\Factories\\' => array($vendorDir . '/spatie/laravel-query-builder/database/factories'), 'Spatie\\QueryBuilder\\' => array($vendorDir . '/spatie/laravel-query-builder/src'), 'Spatie\\LaravelPackageTools\\' => array($vendorDir . '/spatie/laravel-package-tools/src'), - 'Spatie\\LaravelIgnition\\' => array($vendorDir . '/spatie/error-solutions/legacy/laravel-ignition', $vendorDir . '/spatie/laravel-ignition/src'), - 'Spatie\\Ignition\\' => array($vendorDir . '/spatie/error-solutions/legacy/ignition', $vendorDir . '/spatie/ignition/src'), + 'Spatie\\LaravelIgnition\\' => array($vendorDir . '/spatie/laravel-ignition/src', $vendorDir . '/spatie/error-solutions/legacy/laravel-ignition'), + 'Spatie\\Ignition\\' => array($vendorDir . '/spatie/ignition/src', $vendorDir . '/spatie/error-solutions/legacy/ignition'), 'Spatie\\FlareClient\\' => array($vendorDir . '/spatie/flare-client-php/src'), 'Spatie\\ErrorSolutions\\' => array($vendorDir . '/spatie/error-solutions/src'), 'Spatie\\Backtrace\\' => array($vendorDir . '/spatie/backtrace/src'), @@ -77,6 +79,7 @@ return array( 'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'), 'PhpOption\\' => array($vendorDir . '/phpoption/phpoption/src/PhpOption'), 'PhpOffice\\PhpSpreadsheet\\' => array($vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet'), + 'Phinx\\' => array($vendorDir . '/robmorgan/phinx/src/Phinx'), 'ParagonIE\\ConstantTime\\' => array($vendorDir . '/paragonie/constant_time_encoding/src'), 'ParaTest\\' => array($vendorDir . '/brianium/paratest/src'), 'PHPStan\\PhpDocParser\\' => array($vendorDir . '/phpstan/phpdoc-parser/src'), @@ -89,6 +92,7 @@ return array( 'League\\MimeTypeDetection\\' => array($vendorDir . '/league/mime-type-detection/src'), 'League\\Flysystem\\Local\\' => array($vendorDir . '/league/flysystem-local'), 'League\\Flysystem\\' => array($vendorDir . '/league/flysystem/src'), + 'League\\Container\\' => array($vendorDir . '/league/container/src'), 'League\\Config\\' => array($vendorDir . '/league/config/src'), 'League\\CommonMark\\' => array($vendorDir . '/league/commonmark/src'), 'Laravel\\Ui\\' => array($vendorDir . '/laravel/ui/src'), @@ -134,6 +138,11 @@ return array( 'Complex\\' => array($vendorDir . '/markbaker/complex/classes/src'), 'Carbon\\Doctrine\\' => array($vendorDir . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine'), 'Carbon\\' => array($vendorDir . '/nesbot/carbon/src/Carbon'), + 'Cake\\Utility\\' => array($vendorDir . '/cakephp/utility'), + 'Cake\\Datasource\\' => array($vendorDir . '/cakephp/datasource'), + 'Cake\\Database\\' => array($vendorDir . '/cakephp/database'), + 'Cake\\Core\\' => array($vendorDir . '/cakephp/core'), + 'Cake\\Chronos\\' => array($vendorDir . '/cakephp/chronos/src'), 'Brick\\Math\\' => array($vendorDir . '/brick/math/src'), 'Barryvdh\\LaravelIdeHelper\\' => array($vendorDir . '/barryvdh/laravel-ide-helper/src'), 'Barryvdh\\Debugbar\\' => array($vendorDir . '/barryvdh/laravel-debugbar/src'), diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 2feeac88..2514749b 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -12,14 +12,15 @@ class ComposerStaticInitc91cd9c5b1e6a9e8573a14b799ea9342 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php', '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', '8825ede83f2f289127722d4e842cf7e8' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/bootstrap.php', - '662a729f963d39afe703c9d9b7ab4a8c' => __DIR__ . '/..' . '/symfony/polyfill-php83/bootstrap.php', 'b6b991a57620e2fb6b2f66f03fe9ddc2' => __DIR__ . '/..' . '/symfony/string/Resources/functions.php', + '662a729f963d39afe703c9d9b7ab4a8c' => __DIR__ . '/..' . '/symfony/polyfill-php83/bootstrap.php', '667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php', '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php', 'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php', '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php', 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', + '72142d7b40a3a0b14e91825290b5ad82' => __DIR__ . '/..' . '/cakephp/core/functions.php', '35a6ad97d21e794e7e22a17d806652e4' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Functions.php', '2203a247e6fda86070a5e4e07aed533a' => __DIR__ . '/..' . '/symfony/clock/Resources/now.php', '09f6b20656683369174dd6fa83b7e5fb' => __DIR__ . '/..' . '/symfony/polyfill-uuid/bootstrap.php', @@ -34,6 +35,7 @@ class ComposerStaticInitc91cd9c5b1e6a9e8573a14b799ea9342 '58571171fd5812e6e447dce228f52f4d' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/helpers.php', '6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php', '3bd81c9b8fcc150b69d8b63b4d2ccf23' => __DIR__ . '/..' . '/spatie/flare-client-php/src/helpers.php', + '948ad5488880985ff1c06721a4e447fe' => __DIR__ . '/..' . '/cakephp/utility/bootstrap.php', 'ec07570ca5a812141189b1fa81503674' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert/Functions.php', '801c31d8ed748cfa537fa45402288c95' => __DIR__ . '/..' . '/psy/psysh/src/functions.php', 'b84a5ba6d9a8ee8cf648b71c42c799b7' => __DIR__ . '/..' . '/akaunting/laravel-setting/src/helpers.php', @@ -107,10 +109,12 @@ class ComposerStaticInitc91cd9c5b1e6a9e8573a14b799ea9342 'Symfony\\Component\\HttpKernel\\' => 29, 'Symfony\\Component\\HttpFoundation\\' => 33, 'Symfony\\Component\\Finder\\' => 25, + 'Symfony\\Component\\Filesystem\\' => 29, 'Symfony\\Component\\EventDispatcher\\' => 34, 'Symfony\\Component\\ErrorHandler\\' => 31, 'Symfony\\Component\\CssSelector\\' => 30, 'Symfony\\Component\\Console\\' => 26, + 'Symfony\\Component\\Config\\' => 25, 'Symfony\\Component\\Clock\\' => 24, 'Spatie\\QueryBuilder\\Database\\Factories\\' => 39, 'Spatie\\QueryBuilder\\' => 20, @@ -143,6 +147,7 @@ class ComposerStaticInitc91cd9c5b1e6a9e8573a14b799ea9342 'PhpParser\\' => 10, 'PhpOption\\' => 10, 'PhpOffice\\PhpSpreadsheet\\' => 25, + 'Phinx\\' => 6, 'ParagonIE\\ConstantTime\\' => 23, 'ParaTest\\' => 9, 'PHPStan\\PhpDocParser\\' => 21, @@ -164,6 +169,7 @@ class ComposerStaticInitc91cd9c5b1e6a9e8573a14b799ea9342 'League\\MimeTypeDetection\\' => 25, 'League\\Flysystem\\Local\\' => 23, 'League\\Flysystem\\' => 17, + 'League\\Container\\' => 17, 'League\\Config\\' => 14, 'League\\CommonMark\\' => 18, 'Laravel\\Ui\\' => 11, @@ -230,6 +236,11 @@ class ComposerStaticInitc91cd9c5b1e6a9e8573a14b799ea9342 'Complex\\' => 8, 'Carbon\\Doctrine\\' => 16, 'Carbon\\' => 7, + 'Cake\\Utility\\' => 13, + 'Cake\\Datasource\\' => 16, + 'Cake\\Database\\' => 14, + 'Cake\\Core\\' => 10, + 'Cake\\Chronos\\' => 13, ), 'B' => array ( @@ -257,8 +268,8 @@ class ComposerStaticInitc91cd9c5b1e6a9e8573a14b799ea9342 ), 'phpDocumentor\\Reflection\\' => array ( - 0 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src', - 1 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src', + 0 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src', + 1 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src', ), 'ZipStream\\' => array ( @@ -412,6 +423,10 @@ class ComposerStaticInitc91cd9c5b1e6a9e8573a14b799ea9342 array ( 0 => __DIR__ . '/..' . '/symfony/finder', ), + 'Symfony\\Component\\Filesystem\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/filesystem', + ), 'Symfony\\Component\\EventDispatcher\\' => array ( 0 => __DIR__ . '/..' . '/symfony/event-dispatcher', @@ -428,6 +443,10 @@ class ComposerStaticInitc91cd9c5b1e6a9e8573a14b799ea9342 array ( 0 => __DIR__ . '/..' . '/symfony/console', ), + 'Symfony\\Component\\Config\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/config', + ), 'Symfony\\Component\\Clock\\' => array ( 0 => __DIR__ . '/..' . '/symfony/clock', @@ -446,13 +465,13 @@ class ComposerStaticInitc91cd9c5b1e6a9e8573a14b799ea9342 ), 'Spatie\\LaravelIgnition\\' => array ( - 0 => __DIR__ . '/..' . '/spatie/error-solutions/legacy/laravel-ignition', - 1 => __DIR__ . '/..' . '/spatie/laravel-ignition/src', + 0 => __DIR__ . '/..' . '/spatie/laravel-ignition/src', + 1 => __DIR__ . '/..' . '/spatie/error-solutions/legacy/laravel-ignition', ), 'Spatie\\Ignition\\' => array ( - 0 => __DIR__ . '/..' . '/spatie/error-solutions/legacy/ignition', - 1 => __DIR__ . '/..' . '/spatie/ignition/src', + 0 => __DIR__ . '/..' . '/spatie/ignition/src', + 1 => __DIR__ . '/..' . '/spatie/error-solutions/legacy/ignition', ), 'Spatie\\FlareClient\\' => array ( @@ -535,6 +554,10 @@ class ComposerStaticInitc91cd9c5b1e6a9e8573a14b799ea9342 array ( 0 => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet', ), + 'Phinx\\' => + array ( + 0 => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx', + ), 'ParagonIE\\ConstantTime\\' => array ( 0 => __DIR__ . '/..' . '/paragonie/constant_time_encoding/src', @@ -583,6 +606,10 @@ class ComposerStaticInitc91cd9c5b1e6a9e8573a14b799ea9342 array ( 0 => __DIR__ . '/..' . '/league/flysystem/src', ), + 'League\\Container\\' => + array ( + 0 => __DIR__ . '/..' . '/league/container/src', + ), 'League\\Config\\' => array ( 0 => __DIR__ . '/..' . '/league/config/src', @@ -767,6 +794,26 @@ class ComposerStaticInitc91cd9c5b1e6a9e8573a14b799ea9342 array ( 0 => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon', ), + 'Cake\\Utility\\' => + array ( + 0 => __DIR__ . '/..' . '/cakephp/utility', + ), + 'Cake\\Datasource\\' => + array ( + 0 => __DIR__ . '/..' . '/cakephp/datasource', + ), + 'Cake\\Database\\' => + array ( + 0 => __DIR__ . '/..' . '/cakephp/database', + ), + 'Cake\\Core\\' => + array ( + 0 => __DIR__ . '/..' . '/cakephp/core', + ), + 'Cake\\Chronos\\' => + array ( + 0 => __DIR__ . '/..' . '/cakephp/chronos/src', + ), 'Brick\\Math\\' => array ( 0 => __DIR__ . '/..' . '/brick/math/src', @@ -1000,6 +1047,196 @@ class ComposerStaticInitc91cd9c5b1e6a9e8573a14b799ea9342 'Brick\\Math\\Internal\\Calculator\\GmpCalculator' => __DIR__ . '/..' . '/brick/math/src/Internal/Calculator/GmpCalculator.php', 'Brick\\Math\\Internal\\Calculator\\NativeCalculator' => __DIR__ . '/..' . '/brick/math/src/Internal/Calculator/NativeCalculator.php', 'Brick\\Math\\RoundingMode' => __DIR__ . '/..' . '/brick/math/src/RoundingMode.php', + 'Cake\\Chronos\\Chronos' => __DIR__ . '/..' . '/cakephp/chronos/src/Chronos.php', + 'Cake\\Chronos\\ChronosDate' => __DIR__ . '/..' . '/cakephp/chronos/src/ChronosDate.php', + 'Cake\\Chronos\\ChronosDatePeriod' => __DIR__ . '/..' . '/cakephp/chronos/src/ChronosDatePeriod.php', + 'Cake\\Chronos\\ChronosInterval' => __DIR__ . '/..' . '/cakephp/chronos/src/ChronosInterval.php', + 'Cake\\Chronos\\ChronosPeriod' => __DIR__ . '/..' . '/cakephp/chronos/src/ChronosPeriod.php', + 'Cake\\Chronos\\ChronosTime' => __DIR__ . '/..' . '/cakephp/chronos/src/ChronosTime.php', + 'Cake\\Chronos\\ClockFactory' => __DIR__ . '/..' . '/cakephp/chronos/src/ClockFactory.php', + 'Cake\\Chronos\\DifferenceFormatter' => __DIR__ . '/..' . '/cakephp/chronos/src/DifferenceFormatter.php', + 'Cake\\Chronos\\DifferenceFormatterInterface' => __DIR__ . '/..' . '/cakephp/chronos/src/DifferenceFormatterInterface.php', + 'Cake\\Chronos\\FormattingTrait' => __DIR__ . '/..' . '/cakephp/chronos/src/FormattingTrait.php', + 'Cake\\Chronos\\Translator' => __DIR__ . '/..' . '/cakephp/chronos/src/Translator.php', + 'Cake\\Core\\App' => __DIR__ . '/..' . '/cakephp/core/App.php', + 'Cake\\Core\\Attribute\\Configure' => __DIR__ . '/..' . '/cakephp/core/Attribute/Configure.php', + 'Cake\\Core\\BasePlugin' => __DIR__ . '/..' . '/cakephp/core/BasePlugin.php', + 'Cake\\Core\\Configure' => __DIR__ . '/..' . '/cakephp/core/Configure.php', + 'Cake\\Core\\Configure\\ConfigEngineInterface' => __DIR__ . '/..' . '/cakephp/core/Configure/ConfigEngineInterface.php', + 'Cake\\Core\\Configure\\Engine\\IniConfig' => __DIR__ . '/..' . '/cakephp/core/Configure/Engine/IniConfig.php', + 'Cake\\Core\\Configure\\Engine\\JsonConfig' => __DIR__ . '/..' . '/cakephp/core/Configure/Engine/JsonConfig.php', + 'Cake\\Core\\Configure\\Engine\\PhpConfig' => __DIR__ . '/..' . '/cakephp/core/Configure/Engine/PhpConfig.php', + 'Cake\\Core\\Configure\\FileConfigTrait' => __DIR__ . '/..' . '/cakephp/core/Configure/FileConfigTrait.php', + 'Cake\\Core\\ConsoleApplicationInterface' => __DIR__ . '/..' . '/cakephp/core/ConsoleApplicationInterface.php', + 'Cake\\Core\\Container' => __DIR__ . '/..' . '/cakephp/core/Container.php', + 'Cake\\Core\\ContainerApplicationInterface' => __DIR__ . '/..' . '/cakephp/core/ContainerApplicationInterface.php', + 'Cake\\Core\\ContainerInterface' => __DIR__ . '/..' . '/cakephp/core/ContainerInterface.php', + 'Cake\\Core\\ConventionsTrait' => __DIR__ . '/..' . '/cakephp/core/ConventionsTrait.php', + 'Cake\\Core\\EventAwareApplicationInterface' => __DIR__ . '/..' . '/cakephp/core/EventAwareApplicationInterface.php', + 'Cake\\Core\\Exception\\CakeException' => __DIR__ . '/..' . '/cakephp/core/Exception/CakeException.php', + 'Cake\\Core\\Exception\\HttpErrorCodeInterface' => __DIR__ . '/..' . '/cakephp/core/Exception/HttpErrorCodeInterface.php', + 'Cake\\Core\\Exception\\MissingPluginException' => __DIR__ . '/..' . '/cakephp/core/Exception/MissingPluginException.php', + 'Cake\\Core\\HttpApplicationInterface' => __DIR__ . '/..' . '/cakephp/core/HttpApplicationInterface.php', + 'Cake\\Core\\InstanceConfigTrait' => __DIR__ . '/..' . '/cakephp/core/InstanceConfigTrait.php', + 'Cake\\Core\\ObjectRegistry' => __DIR__ . '/..' . '/cakephp/core/ObjectRegistry.php', + 'Cake\\Core\\Plugin' => __DIR__ . '/..' . '/cakephp/core/Plugin.php', + 'Cake\\Core\\PluginApplicationInterface' => __DIR__ . '/..' . '/cakephp/core/PluginApplicationInterface.php', + 'Cake\\Core\\PluginCollection' => __DIR__ . '/..' . '/cakephp/core/PluginCollection.php', + 'Cake\\Core\\PluginConfig' => __DIR__ . '/..' . '/cakephp/core/PluginConfig.php', + 'Cake\\Core\\PluginInterface' => __DIR__ . '/..' . '/cakephp/core/PluginInterface.php', + 'Cake\\Core\\Retry\\CommandRetry' => __DIR__ . '/..' . '/cakephp/core/Retry/CommandRetry.php', + 'Cake\\Core\\Retry\\RetryStrategyInterface' => __DIR__ . '/..' . '/cakephp/core/Retry/RetryStrategyInterface.php', + 'Cake\\Core\\ServiceConfig' => __DIR__ . '/..' . '/cakephp/core/ServiceConfig.php', + 'Cake\\Core\\ServiceProvider' => __DIR__ . '/..' . '/cakephp/core/ServiceProvider.php', + 'Cake\\Core\\StaticConfigTrait' => __DIR__ . '/..' . '/cakephp/core/StaticConfigTrait.php', + 'Cake\\Core\\TestSuite\\ContainerStubTrait' => __DIR__ . '/..' . '/cakephp/core/TestSuite/ContainerStubTrait.php', + 'Cake\\Database\\Connection' => __DIR__ . '/..' . '/cakephp/database/Connection.php', + 'Cake\\Database\\ConstraintsInterface' => __DIR__ . '/..' . '/cakephp/database/ConstraintsInterface.php', + 'Cake\\Database\\Driver' => __DIR__ . '/..' . '/cakephp/database/Driver.php', + 'Cake\\Database\\DriverFeatureEnum' => __DIR__ . '/..' . '/cakephp/database/DriverFeatureEnum.php', + 'Cake\\Database\\Driver\\Mysql' => __DIR__ . '/..' . '/cakephp/database/Driver/Mysql.php', + 'Cake\\Database\\Driver\\Postgres' => __DIR__ . '/..' . '/cakephp/database/Driver/Postgres.php', + 'Cake\\Database\\Driver\\Sqlite' => __DIR__ . '/..' . '/cakephp/database/Driver/Sqlite.php', + 'Cake\\Database\\Driver\\Sqlserver' => __DIR__ . '/..' . '/cakephp/database/Driver/Sqlserver.php', + 'Cake\\Database\\Driver\\TupleComparisonTranslatorTrait' => __DIR__ . '/..' . '/cakephp/database/Driver/TupleComparisonTranslatorTrait.php', + 'Cake\\Database\\Exception\\DatabaseException' => __DIR__ . '/..' . '/cakephp/database/Exception/DatabaseException.php', + 'Cake\\Database\\Exception\\MissingConnectionException' => __DIR__ . '/..' . '/cakephp/database/Exception/MissingConnectionException.php', + 'Cake\\Database\\Exception\\MissingDriverException' => __DIR__ . '/..' . '/cakephp/database/Exception/MissingDriverException.php', + 'Cake\\Database\\Exception\\MissingExtensionException' => __DIR__ . '/..' . '/cakephp/database/Exception/MissingExtensionException.php', + 'Cake\\Database\\Exception\\NestedTransactionRollbackException' => __DIR__ . '/..' . '/cakephp/database/Exception/NestedTransactionRollbackException.php', + 'Cake\\Database\\Exception\\QueryException' => __DIR__ . '/..' . '/cakephp/database/Exception/QueryException.php', + 'Cake\\Database\\ExpressionInterface' => __DIR__ . '/..' . '/cakephp/database/ExpressionInterface.php', + 'Cake\\Database\\Expression\\AggregateExpression' => __DIR__ . '/..' . '/cakephp/database/Expression/AggregateExpression.php', + 'Cake\\Database\\Expression\\BetweenExpression' => __DIR__ . '/..' . '/cakephp/database/Expression/BetweenExpression.php', + 'Cake\\Database\\Expression\\CaseExpressionTrait' => __DIR__ . '/..' . '/cakephp/database/Expression/CaseExpressionTrait.php', + 'Cake\\Database\\Expression\\CaseStatementExpression' => __DIR__ . '/..' . '/cakephp/database/Expression/CaseStatementExpression.php', + 'Cake\\Database\\Expression\\CommonTableExpression' => __DIR__ . '/..' . '/cakephp/database/Expression/CommonTableExpression.php', + 'Cake\\Database\\Expression\\ComparisonExpression' => __DIR__ . '/..' . '/cakephp/database/Expression/ComparisonExpression.php', + 'Cake\\Database\\Expression\\FieldInterface' => __DIR__ . '/..' . '/cakephp/database/Expression/FieldInterface.php', + 'Cake\\Database\\Expression\\FieldTrait' => __DIR__ . '/..' . '/cakephp/database/Expression/FieldTrait.php', + 'Cake\\Database\\Expression\\FunctionExpression' => __DIR__ . '/..' . '/cakephp/database/Expression/FunctionExpression.php', + 'Cake\\Database\\Expression\\IdentifierExpression' => __DIR__ . '/..' . '/cakephp/database/Expression/IdentifierExpression.php', + 'Cake\\Database\\Expression\\OrderByExpression' => __DIR__ . '/..' . '/cakephp/database/Expression/OrderByExpression.php', + 'Cake\\Database\\Expression\\OrderClauseExpression' => __DIR__ . '/..' . '/cakephp/database/Expression/OrderClauseExpression.php', + 'Cake\\Database\\Expression\\QueryExpression' => __DIR__ . '/..' . '/cakephp/database/Expression/QueryExpression.php', + 'Cake\\Database\\Expression\\StringExpression' => __DIR__ . '/..' . '/cakephp/database/Expression/StringExpression.php', + 'Cake\\Database\\Expression\\TupleComparison' => __DIR__ . '/..' . '/cakephp/database/Expression/TupleComparison.php', + 'Cake\\Database\\Expression\\UnaryExpression' => __DIR__ . '/..' . '/cakephp/database/Expression/UnaryExpression.php', + 'Cake\\Database\\Expression\\ValuesExpression' => __DIR__ . '/..' . '/cakephp/database/Expression/ValuesExpression.php', + 'Cake\\Database\\Expression\\WhenThenExpression' => __DIR__ . '/..' . '/cakephp/database/Expression/WhenThenExpression.php', + 'Cake\\Database\\Expression\\WindowExpression' => __DIR__ . '/..' . '/cakephp/database/Expression/WindowExpression.php', + 'Cake\\Database\\Expression\\WindowInterface' => __DIR__ . '/..' . '/cakephp/database/Expression/WindowInterface.php', + 'Cake\\Database\\FieldTypeConverter' => __DIR__ . '/..' . '/cakephp/database/FieldTypeConverter.php', + 'Cake\\Database\\FunctionsBuilder' => __DIR__ . '/..' . '/cakephp/database/FunctionsBuilder.php', + 'Cake\\Database\\IdentifierQuoter' => __DIR__ . '/..' . '/cakephp/database/IdentifierQuoter.php', + 'Cake\\Database\\Log\\LoggedQuery' => __DIR__ . '/..' . '/cakephp/database/Log/LoggedQuery.php', + 'Cake\\Database\\Log\\QueryLogger' => __DIR__ . '/..' . '/cakephp/database/Log/QueryLogger.php', + 'Cake\\Database\\PostgresCompiler' => __DIR__ . '/..' . '/cakephp/database/PostgresCompiler.php', + 'Cake\\Database\\Query' => __DIR__ . '/..' . '/cakephp/database/Query.php', + 'Cake\\Database\\QueryCompiler' => __DIR__ . '/..' . '/cakephp/database/QueryCompiler.php', + 'Cake\\Database\\Query\\DeleteQuery' => __DIR__ . '/..' . '/cakephp/database/Query/DeleteQuery.php', + 'Cake\\Database\\Query\\InsertQuery' => __DIR__ . '/..' . '/cakephp/database/Query/InsertQuery.php', + 'Cake\\Database\\Query\\QueryFactory' => __DIR__ . '/..' . '/cakephp/database/Query/QueryFactory.php', + 'Cake\\Database\\Query\\SelectQuery' => __DIR__ . '/..' . '/cakephp/database/Query/SelectQuery.php', + 'Cake\\Database\\Query\\UpdateQuery' => __DIR__ . '/..' . '/cakephp/database/Query/UpdateQuery.php', + 'Cake\\Database\\Retry\\ErrorCodeWaitStrategy' => __DIR__ . '/..' . '/cakephp/database/Retry/ErrorCodeWaitStrategy.php', + 'Cake\\Database\\Retry\\ReconnectStrategy' => __DIR__ . '/..' . '/cakephp/database/Retry/ReconnectStrategy.php', + 'Cake\\Database\\SchemaCache' => __DIR__ . '/..' . '/cakephp/database/SchemaCache.php', + 'Cake\\Database\\Schema\\CachedCollection' => __DIR__ . '/..' . '/cakephp/database/Schema/CachedCollection.php', + 'Cake\\Database\\Schema\\CheckConstraint' => __DIR__ . '/..' . '/cakephp/database/Schema/CheckConstraint.php', + 'Cake\\Database\\Schema\\Collection' => __DIR__ . '/..' . '/cakephp/database/Schema/Collection.php', + 'Cake\\Database\\Schema\\CollectionInterface' => __DIR__ . '/..' . '/cakephp/database/Schema/CollectionInterface.php', + 'Cake\\Database\\Schema\\Column' => __DIR__ . '/..' . '/cakephp/database/Schema/Column.php', + 'Cake\\Database\\Schema\\Constraint' => __DIR__ . '/..' . '/cakephp/database/Schema/Constraint.php', + 'Cake\\Database\\Schema\\ForeignKey' => __DIR__ . '/..' . '/cakephp/database/Schema/ForeignKey.php', + 'Cake\\Database\\Schema\\Index' => __DIR__ . '/..' . '/cakephp/database/Schema/Index.php', + 'Cake\\Database\\Schema\\MysqlSchemaDialect' => __DIR__ . '/..' . '/cakephp/database/Schema/MysqlSchemaDialect.php', + 'Cake\\Database\\Schema\\PostgresSchemaDialect' => __DIR__ . '/..' . '/cakephp/database/Schema/PostgresSchemaDialect.php', + 'Cake\\Database\\Schema\\SchemaDialect' => __DIR__ . '/..' . '/cakephp/database/Schema/SchemaDialect.php', + 'Cake\\Database\\Schema\\SqlGeneratorInterface' => __DIR__ . '/..' . '/cakephp/database/Schema/SqlGeneratorInterface.php', + 'Cake\\Database\\Schema\\SqliteSchemaDialect' => __DIR__ . '/..' . '/cakephp/database/Schema/SqliteSchemaDialect.php', + 'Cake\\Database\\Schema\\SqlserverSchemaDialect' => __DIR__ . '/..' . '/cakephp/database/Schema/SqlserverSchemaDialect.php', + 'Cake\\Database\\Schema\\TableSchema' => __DIR__ . '/..' . '/cakephp/database/Schema/TableSchema.php', + 'Cake\\Database\\Schema\\TableSchemaInterface' => __DIR__ . '/..' . '/cakephp/database/Schema/TableSchemaInterface.php', + 'Cake\\Database\\Schema\\UniqueKey' => __DIR__ . '/..' . '/cakephp/database/Schema/UniqueKey.php', + 'Cake\\Database\\SqlserverCompiler' => __DIR__ . '/..' . '/cakephp/database/SqlserverCompiler.php', + 'Cake\\Database\\StatementInterface' => __DIR__ . '/..' . '/cakephp/database/StatementInterface.php', + 'Cake\\Database\\Statement\\SqliteStatement' => __DIR__ . '/..' . '/cakephp/database/Statement/SqliteStatement.php', + 'Cake\\Database\\Statement\\SqlserverStatement' => __DIR__ . '/..' . '/cakephp/database/Statement/SqlserverStatement.php', + 'Cake\\Database\\Statement\\Statement' => __DIR__ . '/..' . '/cakephp/database/Statement/Statement.php', + 'Cake\\Database\\TypeFactory' => __DIR__ . '/..' . '/cakephp/database/TypeFactory.php', + 'Cake\\Database\\TypeInterface' => __DIR__ . '/..' . '/cakephp/database/TypeInterface.php', + 'Cake\\Database\\TypeMap' => __DIR__ . '/..' . '/cakephp/database/TypeMap.php', + 'Cake\\Database\\TypeMapTrait' => __DIR__ . '/..' . '/cakephp/database/TypeMapTrait.php', + 'Cake\\Database\\Type\\BaseType' => __DIR__ . '/..' . '/cakephp/database/Type/BaseType.php', + 'Cake\\Database\\Type\\BatchCastingInterface' => __DIR__ . '/..' . '/cakephp/database/Type/BatchCastingInterface.php', + 'Cake\\Database\\Type\\BinaryType' => __DIR__ . '/..' . '/cakephp/database/Type/BinaryType.php', + 'Cake\\Database\\Type\\BinaryUuidType' => __DIR__ . '/..' . '/cakephp/database/Type/BinaryUuidType.php', + 'Cake\\Database\\Type\\BoolType' => __DIR__ . '/..' . '/cakephp/database/Type/BoolType.php', + 'Cake\\Database\\Type\\ColumnSchemaAwareInterface' => __DIR__ . '/..' . '/cakephp/database/Type/ColumnSchemaAwareInterface.php', + 'Cake\\Database\\Type\\DateTimeFractionalType' => __DIR__ . '/..' . '/cakephp/database/Type/DateTimeFractionalType.php', + 'Cake\\Database\\Type\\DateTimeTimezoneType' => __DIR__ . '/..' . '/cakephp/database/Type/DateTimeTimezoneType.php', + 'Cake\\Database\\Type\\DateTimeType' => __DIR__ . '/..' . '/cakephp/database/Type/DateTimeType.php', + 'Cake\\Database\\Type\\DateType' => __DIR__ . '/..' . '/cakephp/database/Type/DateType.php', + 'Cake\\Database\\Type\\DecimalType' => __DIR__ . '/..' . '/cakephp/database/Type/DecimalType.php', + 'Cake\\Database\\Type\\EnumLabelInterface' => __DIR__ . '/..' . '/cakephp/database/Type/EnumLabelInterface.php', + 'Cake\\Database\\Type\\EnumType' => __DIR__ . '/..' . '/cakephp/database/Type/EnumType.php', + 'Cake\\Database\\Type\\ExpressionTypeCasterTrait' => __DIR__ . '/..' . '/cakephp/database/Type/ExpressionTypeCasterTrait.php', + 'Cake\\Database\\Type\\ExpressionTypeInterface' => __DIR__ . '/..' . '/cakephp/database/Type/ExpressionTypeInterface.php', + 'Cake\\Database\\Type\\FloatType' => __DIR__ . '/..' . '/cakephp/database/Type/FloatType.php', + 'Cake\\Database\\Type\\IntegerType' => __DIR__ . '/..' . '/cakephp/database/Type/IntegerType.php', + 'Cake\\Database\\Type\\JsonType' => __DIR__ . '/..' . '/cakephp/database/Type/JsonType.php', + 'Cake\\Database\\Type\\OptionalConvertInterface' => __DIR__ . '/..' . '/cakephp/database/Type/OptionalConvertInterface.php', + 'Cake\\Database\\Type\\StringType' => __DIR__ . '/..' . '/cakephp/database/Type/StringType.php', + 'Cake\\Database\\Type\\TimeType' => __DIR__ . '/..' . '/cakephp/database/Type/TimeType.php', + 'Cake\\Database\\Type\\UuidType' => __DIR__ . '/..' . '/cakephp/database/Type/UuidType.php', + 'Cake\\Database\\TypedResultInterface' => __DIR__ . '/..' . '/cakephp/database/TypedResultInterface.php', + 'Cake\\Database\\TypedResultTrait' => __DIR__ . '/..' . '/cakephp/database/TypedResultTrait.php', + 'Cake\\Database\\ValueBinder' => __DIR__ . '/..' . '/cakephp/database/ValueBinder.php', + 'Cake\\Datasource\\ConnectionInterface' => __DIR__ . '/..' . '/cakephp/datasource/ConnectionInterface.php', + 'Cake\\Datasource\\ConnectionManager' => __DIR__ . '/..' . '/cakephp/datasource/ConnectionManager.php', + 'Cake\\Datasource\\ConnectionRegistry' => __DIR__ . '/..' . '/cakephp/datasource/ConnectionRegistry.php', + 'Cake\\Datasource\\EntityInterface' => __DIR__ . '/..' . '/cakephp/datasource/EntityInterface.php', + 'Cake\\Datasource\\EntityTrait' => __DIR__ . '/..' . '/cakephp/datasource/EntityTrait.php', + 'Cake\\Datasource\\Exception\\InvalidPrimaryKeyException' => __DIR__ . '/..' . '/cakephp/datasource/Exception/InvalidPrimaryKeyException.php', + 'Cake\\Datasource\\Exception\\MissingDatasourceConfigException' => __DIR__ . '/..' . '/cakephp/datasource/Exception/MissingDatasourceConfigException.php', + 'Cake\\Datasource\\Exception\\MissingDatasourceException' => __DIR__ . '/..' . '/cakephp/datasource/Exception/MissingDatasourceException.php', + 'Cake\\Datasource\\Exception\\MissingModelException' => __DIR__ . '/..' . '/cakephp/datasource/Exception/MissingModelException.php', + 'Cake\\Datasource\\Exception\\MissingPropertyException' => __DIR__ . '/..' . '/cakephp/datasource/Exception/MissingPropertyException.php', + 'Cake\\Datasource\\Exception\\RecordNotFoundException' => __DIR__ . '/..' . '/cakephp/datasource/Exception/RecordNotFoundException.php', + 'Cake\\Datasource\\FactoryLocator' => __DIR__ . '/..' . '/cakephp/datasource/FactoryLocator.php', + 'Cake\\Datasource\\FixtureInterface' => __DIR__ . '/..' . '/cakephp/datasource/FixtureInterface.php', + 'Cake\\Datasource\\InvalidPropertyInterface' => __DIR__ . '/..' . '/cakephp/datasource/InvalidPropertyInterface.php', + 'Cake\\Datasource\\Locator\\AbstractLocator' => __DIR__ . '/..' . '/cakephp/datasource/Locator/AbstractLocator.php', + 'Cake\\Datasource\\Locator\\LocatorInterface' => __DIR__ . '/..' . '/cakephp/datasource/Locator/LocatorInterface.php', + 'Cake\\Datasource\\ModelAwareTrait' => __DIR__ . '/..' . '/cakephp/datasource/ModelAwareTrait.php', + 'Cake\\Datasource\\Paging\\Exception\\PageOutOfBoundsException' => __DIR__ . '/..' . '/cakephp/datasource/Paging/Exception/PageOutOfBoundsException.php', + 'Cake\\Datasource\\Paging\\NumericPaginator' => __DIR__ . '/..' . '/cakephp/datasource/Paging/NumericPaginator.php', + 'Cake\\Datasource\\Paging\\PaginatedInterface' => __DIR__ . '/..' . '/cakephp/datasource/Paging/PaginatedInterface.php', + 'Cake\\Datasource\\Paging\\PaginatedResultSet' => __DIR__ . '/..' . '/cakephp/datasource/Paging/PaginatedResultSet.php', + 'Cake\\Datasource\\Paging\\PaginatorInterface' => __DIR__ . '/..' . '/cakephp/datasource/Paging/PaginatorInterface.php', + 'Cake\\Datasource\\Paging\\SimplePaginator' => __DIR__ . '/..' . '/cakephp/datasource/Paging/SimplePaginator.php', + 'Cake\\Datasource\\Paging\\SortField' => __DIR__ . '/..' . '/cakephp/datasource/Paging/SortField.php', + 'Cake\\Datasource\\Paging\\SortableFieldsBuilder' => __DIR__ . '/..' . '/cakephp/datasource/Paging/SortableFieldsBuilder.php', + 'Cake\\Datasource\\QueryCacher' => __DIR__ . '/..' . '/cakephp/datasource/QueryCacher.php', + 'Cake\\Datasource\\QueryInterface' => __DIR__ . '/..' . '/cakephp/datasource/QueryInterface.php', + 'Cake\\Datasource\\RepositoryInterface' => __DIR__ . '/..' . '/cakephp/datasource/RepositoryInterface.php', + 'Cake\\Datasource\\ResultSetDecorator' => __DIR__ . '/..' . '/cakephp/datasource/ResultSetDecorator.php', + 'Cake\\Datasource\\ResultSetInterface' => __DIR__ . '/..' . '/cakephp/datasource/ResultSetInterface.php', + 'Cake\\Datasource\\RuleInvoker' => __DIR__ . '/..' . '/cakephp/datasource/RuleInvoker.php', + 'Cake\\Datasource\\RulesAwareTrait' => __DIR__ . '/..' . '/cakephp/datasource/RulesAwareTrait.php', + 'Cake\\Datasource\\RulesChecker' => __DIR__ . '/..' . '/cakephp/datasource/RulesChecker.php', + 'Cake\\Datasource\\SchemaInterface' => __DIR__ . '/..' . '/cakephp/datasource/SchemaInterface.php', + 'Cake\\Utility\\CookieCryptTrait' => __DIR__ . '/..' . '/cakephp/utility/CookieCryptTrait.php', + 'Cake\\Utility\\Crypto\\OpenSsl' => __DIR__ . '/..' . '/cakephp/utility/Crypto/OpenSsl.php', + 'Cake\\Utility\\Exception\\XmlException' => __DIR__ . '/..' . '/cakephp/utility/Exception/XmlException.php', + 'Cake\\Utility\\Filesystem' => __DIR__ . '/..' . '/cakephp/utility/Filesystem.php', + 'Cake\\Utility\\Hash' => __DIR__ . '/..' . '/cakephp/utility/Hash.php', + 'Cake\\Utility\\Inflector' => __DIR__ . '/..' . '/cakephp/utility/Inflector.php', + 'Cake\\Utility\\MergeVariablesTrait' => __DIR__ . '/..' . '/cakephp/utility/MergeVariablesTrait.php', + 'Cake\\Utility\\Security' => __DIR__ . '/..' . '/cakephp/utility/Security.php', + 'Cake\\Utility\\Text' => __DIR__ . '/..' . '/cakephp/utility/Text.php', + 'Cake\\Utility\\Xml' => __DIR__ . '/..' . '/cakephp/utility/Xml.php', 'Carbon\\AbstractTranslator' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/AbstractTranslator.php', 'Carbon\\Callback' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Callback.php', 'Carbon\\Carbon' => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon/Carbon.php', @@ -4229,6 +4466,55 @@ class ComposerStaticInitc91cd9c5b1e6a9e8573a14b799ea9342 'League\\Config\\MutableConfigurationInterface' => __DIR__ . '/..' . '/league/config/src/MutableConfigurationInterface.php', 'League\\Config\\ReadOnlyConfiguration' => __DIR__ . '/..' . '/league/config/src/ReadOnlyConfiguration.php', 'League\\Config\\SchemaBuilderInterface' => __DIR__ . '/..' . '/league/config/src/SchemaBuilderInterface.php', + 'League\\Container\\Argument\\ArgumentInterface' => __DIR__ . '/..' . '/league/container/src/Argument/ArgumentInterface.php', + 'League\\Container\\Argument\\ArgumentReflectorInterface' => __DIR__ . '/..' . '/league/container/src/Argument/ArgumentReflectorInterface.php', + 'League\\Container\\Argument\\ArgumentReflectorTrait' => __DIR__ . '/..' . '/league/container/src/Argument/ArgumentReflectorTrait.php', + 'League\\Container\\Argument\\ArgumentResolverInterface' => __DIR__ . '/..' . '/league/container/src/Argument/ArgumentResolverInterface.php', + 'League\\Container\\Argument\\ArgumentResolverTrait' => __DIR__ . '/..' . '/league/container/src/Argument/ArgumentResolverTrait.php', + 'League\\Container\\Argument\\DefaultValueArgument' => __DIR__ . '/..' . '/league/container/src/Argument/DefaultValueArgument.php', + 'League\\Container\\Argument\\DefaultValueInterface' => __DIR__ . '/..' . '/league/container/src/Argument/DefaultValueInterface.php', + 'League\\Container\\Argument\\LiteralArgument' => __DIR__ . '/..' . '/league/container/src/Argument/LiteralArgument.php', + 'League\\Container\\Argument\\LiteralArgumentInterface' => __DIR__ . '/..' . '/league/container/src/Argument/LiteralArgumentInterface.php', + 'League\\Container\\Argument\\Literal\\ArrayArgument' => __DIR__ . '/..' . '/league/container/src/Argument/Literal/ArrayArgument.php', + 'League\\Container\\Argument\\Literal\\BooleanArgument' => __DIR__ . '/..' . '/league/container/src/Argument/Literal/BooleanArgument.php', + 'League\\Container\\Argument\\Literal\\CallableArgument' => __DIR__ . '/..' . '/league/container/src/Argument/Literal/CallableArgument.php', + 'League\\Container\\Argument\\Literal\\FloatArgument' => __DIR__ . '/..' . '/league/container/src/Argument/Literal/FloatArgument.php', + 'League\\Container\\Argument\\Literal\\IntegerArgument' => __DIR__ . '/..' . '/league/container/src/Argument/Literal/IntegerArgument.php', + 'League\\Container\\Argument\\Literal\\ObjectArgument' => __DIR__ . '/..' . '/league/container/src/Argument/Literal/ObjectArgument.php', + 'League\\Container\\Argument\\Literal\\StringArgument' => __DIR__ . '/..' . '/league/container/src/Argument/Literal/StringArgument.php', + 'League\\Container\\Argument\\ResolvableArgument' => __DIR__ . '/..' . '/league/container/src/Argument/ResolvableArgument.php', + 'League\\Container\\Argument\\ResolvableArgumentInterface' => __DIR__ . '/..' . '/league/container/src/Argument/ResolvableArgumentInterface.php', + 'League\\Container\\Attribute\\AttributeInterface' => __DIR__ . '/..' . '/league/container/src/Attribute/AttributeInterface.php', + 'League\\Container\\Attribute\\Inject' => __DIR__ . '/..' . '/league/container/src/Attribute/Inject.php', + 'League\\Container\\Attribute\\Resolve' => __DIR__ . '/..' . '/league/container/src/Attribute/Resolve.php', + 'League\\Container\\Container' => __DIR__ . '/..' . '/league/container/src/Container.php', + 'League\\Container\\ContainerAwareInterface' => __DIR__ . '/..' . '/league/container/src/ContainerAwareInterface.php', + 'League\\Container\\ContainerAwareTrait' => __DIR__ . '/..' . '/league/container/src/ContainerAwareTrait.php', + 'League\\Container\\DefinitionContainerInterface' => __DIR__ . '/..' . '/league/container/src/DefinitionContainerInterface.php', + 'League\\Container\\Definition\\Definition' => __DIR__ . '/..' . '/league/container/src/Definition/Definition.php', + 'League\\Container\\Definition\\DefinitionAggregate' => __DIR__ . '/..' . '/league/container/src/Definition/DefinitionAggregate.php', + 'League\\Container\\Definition\\DefinitionAggregateInterface' => __DIR__ . '/..' . '/league/container/src/Definition/DefinitionAggregateInterface.php', + 'League\\Container\\Definition\\DefinitionInterface' => __DIR__ . '/..' . '/league/container/src/Definition/DefinitionInterface.php', + 'League\\Container\\Event\\BeforeResolveEvent' => __DIR__ . '/..' . '/league/container/src/Event/BeforeResolveEvent.php', + 'League\\Container\\Event\\ContainerEvent' => __DIR__ . '/..' . '/league/container/src/Event/ContainerEvent.php', + 'League\\Container\\Event\\DefinitionResolvedEvent' => __DIR__ . '/..' . '/league/container/src/Event/DefinitionResolvedEvent.php', + 'League\\Container\\Event\\EventAwareTrait' => __DIR__ . '/..' . '/league/container/src/Event/EventAwareTrait.php', + 'League\\Container\\Event\\EventDispatcher' => __DIR__ . '/..' . '/league/container/src/Event/EventDispatcher.php', + 'League\\Container\\Event\\EventFilter' => __DIR__ . '/..' . '/league/container/src/Event/EventFilter.php', + 'League\\Container\\Event\\OnDefineEvent' => __DIR__ . '/..' . '/league/container/src/Event/OnDefineEvent.php', + 'League\\Container\\Event\\ServiceResolvedEvent' => __DIR__ . '/..' . '/league/container/src/Event/ServiceResolvedEvent.php', + 'League\\Container\\Exception\\ContainerException' => __DIR__ . '/..' . '/league/container/src/Exception/ContainerException.php', + 'League\\Container\\Exception\\NotFoundException' => __DIR__ . '/..' . '/league/container/src/Exception/NotFoundException.php', + 'League\\Container\\Inflector\\Inflector' => __DIR__ . '/..' . '/league/container/src/Inflector/Inflector.php', + 'League\\Container\\Inflector\\InflectorAggregate' => __DIR__ . '/..' . '/league/container/src/Inflector/InflectorAggregate.php', + 'League\\Container\\Inflector\\InflectorAggregateInterface' => __DIR__ . '/..' . '/league/container/src/Inflector/InflectorAggregateInterface.php', + 'League\\Container\\Inflector\\InflectorInterface' => __DIR__ . '/..' . '/league/container/src/Inflector/InflectorInterface.php', + 'League\\Container\\ReflectionContainer' => __DIR__ . '/..' . '/league/container/src/ReflectionContainer.php', + 'League\\Container\\ServiceProvider\\AbstractServiceProvider' => __DIR__ . '/..' . '/league/container/src/ServiceProvider/AbstractServiceProvider.php', + 'League\\Container\\ServiceProvider\\BootableServiceProviderInterface' => __DIR__ . '/..' . '/league/container/src/ServiceProvider/BootableServiceProviderInterface.php', + 'League\\Container\\ServiceProvider\\ServiceProviderAggregate' => __DIR__ . '/..' . '/league/container/src/ServiceProvider/ServiceProviderAggregate.php', + 'League\\Container\\ServiceProvider\\ServiceProviderAggregateInterface' => __DIR__ . '/..' . '/league/container/src/ServiceProvider/ServiceProviderAggregateInterface.php', + 'League\\Container\\ServiceProvider\\ServiceProviderInterface' => __DIR__ . '/..' . '/league/container/src/ServiceProvider/ServiceProviderInterface.php', 'League\\Flysystem\\CalculateChecksumFromStream' => __DIR__ . '/..' . '/league/flysystem/src/CalculateChecksumFromStream.php', 'League\\Flysystem\\ChecksumAlgoIsNotSupported' => __DIR__ . '/..' . '/league/flysystem/src/ChecksumAlgoIsNotSupported.php', 'League\\Flysystem\\ChecksumProvider' => __DIR__ . '/..' . '/league/flysystem/src/ChecksumProvider.php', @@ -5737,6 +6023,76 @@ class ComposerStaticInitc91cd9c5b1e6a9e8573a14b799ea9342 'PharIo\\Version\\VersionConstraintParser' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintParser.php', 'PharIo\\Version\\VersionConstraintValue' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintValue.php', 'PharIo\\Version\\VersionNumber' => __DIR__ . '/..' . '/phar-io/version/src/VersionNumber.php', + 'Phinx\\Config\\Config' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Config/Config.php', + 'Phinx\\Config\\ConfigInterface' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Config/ConfigInterface.php', + 'Phinx\\Config\\FeatureFlags' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Config/FeatureFlags.php', + 'Phinx\\Config\\NamespaceAwareInterface' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Config/NamespaceAwareInterface.php', + 'Phinx\\Config\\NamespaceAwareTrait' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Config/NamespaceAwareTrait.php', + 'Phinx\\Console\\Command\\AbstractCommand' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Console/Command/AbstractCommand.php', + 'Phinx\\Console\\Command\\Breakpoint' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Console/Command/Breakpoint.php', + 'Phinx\\Console\\Command\\Create' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Console/Command/Create.php', + 'Phinx\\Console\\Command\\Init' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Console/Command/Init.php', + 'Phinx\\Console\\Command\\ListAliases' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Console/Command/ListAliases.php', + 'Phinx\\Console\\Command\\Migrate' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Console/Command/Migrate.php', + 'Phinx\\Console\\Command\\Rollback' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Console/Command/Rollback.php', + 'Phinx\\Console\\Command\\SeedCreate' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Console/Command/SeedCreate.php', + 'Phinx\\Console\\Command\\SeedRun' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Console/Command/SeedRun.php', + 'Phinx\\Console\\Command\\Status' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Console/Command/Status.php', + 'Phinx\\Console\\Command\\Test' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Console/Command/Test.php', + 'Phinx\\Console\\PhinxApplication' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Console/PhinxApplication.php', + 'Phinx\\Db\\Action\\Action' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Action/Action.php', + 'Phinx\\Db\\Action\\AddColumn' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Action/AddColumn.php', + 'Phinx\\Db\\Action\\AddForeignKey' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Action/AddForeignKey.php', + 'Phinx\\Db\\Action\\AddIndex' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Action/AddIndex.php', + 'Phinx\\Db\\Action\\ChangeColumn' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Action/ChangeColumn.php', + 'Phinx\\Db\\Action\\ChangeComment' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Action/ChangeComment.php', + 'Phinx\\Db\\Action\\ChangePrimaryKey' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Action/ChangePrimaryKey.php', + 'Phinx\\Db\\Action\\CreateTable' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Action/CreateTable.php', + 'Phinx\\Db\\Action\\DropForeignKey' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Action/DropForeignKey.php', + 'Phinx\\Db\\Action\\DropIndex' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Action/DropIndex.php', + 'Phinx\\Db\\Action\\DropTable' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Action/DropTable.php', + 'Phinx\\Db\\Action\\RemoveColumn' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Action/RemoveColumn.php', + 'Phinx\\Db\\Action\\RenameColumn' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Action/RenameColumn.php', + 'Phinx\\Db\\Action\\RenameTable' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Action/RenameTable.php', + 'Phinx\\Db\\Adapter\\AbstractAdapter' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Adapter/AbstractAdapter.php', + 'Phinx\\Db\\Adapter\\AdapterFactory' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Adapter/AdapterFactory.php', + 'Phinx\\Db\\Adapter\\AdapterInterface' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Adapter/AdapterInterface.php', + 'Phinx\\Db\\Adapter\\AdapterWrapper' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Adapter/AdapterWrapper.php', + 'Phinx\\Db\\Adapter\\DirectActionInterface' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Adapter/DirectActionInterface.php', + 'Phinx\\Db\\Adapter\\MysqlAdapter' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Adapter/MysqlAdapter.php', + 'Phinx\\Db\\Adapter\\PdoAdapter' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Adapter/PdoAdapter.php', + 'Phinx\\Db\\Adapter\\PostgresAdapter' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Adapter/PostgresAdapter.php', + 'Phinx\\Db\\Adapter\\ProxyAdapter' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Adapter/ProxyAdapter.php', + 'Phinx\\Db\\Adapter\\SQLiteAdapter' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Adapter/SQLiteAdapter.php', + 'Phinx\\Db\\Adapter\\SqlServerAdapter' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Adapter/SqlServerAdapter.php', + 'Phinx\\Db\\Adapter\\TablePrefixAdapter' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Adapter/TablePrefixAdapter.php', + 'Phinx\\Db\\Adapter\\TimedOutputAdapter' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Adapter/TimedOutputAdapter.php', + 'Phinx\\Db\\Adapter\\UnsupportedColumnTypeException' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Adapter/UnsupportedColumnTypeException.php', + 'Phinx\\Db\\Adapter\\WrapperInterface' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Adapter/WrapperInterface.php', + 'Phinx\\Db\\Plan\\AlterTable' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Plan/AlterTable.php', + 'Phinx\\Db\\Plan\\Intent' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Plan/Intent.php', + 'Phinx\\Db\\Plan\\NewTable' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Plan/NewTable.php', + 'Phinx\\Db\\Plan\\Plan' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Plan/Plan.php', + 'Phinx\\Db\\Plan\\Solver\\ActionSplitter' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Plan/Solver/ActionSplitter.php', + 'Phinx\\Db\\Table' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Table.php', + 'Phinx\\Db\\Table\\Column' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Table/Column.php', + 'Phinx\\Db\\Table\\ForeignKey' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Table/ForeignKey.php', + 'Phinx\\Db\\Table\\Index' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Table/Index.php', + 'Phinx\\Db\\Table\\Table' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Table/Table.php', + 'Phinx\\Db\\Util\\AlterInstructions' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Db/Util/AlterInstructions.php', + 'Phinx\\Migration\\AbstractMigration' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Migration/AbstractMigration.php', + 'Phinx\\Migration\\AbstractTemplateCreation' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Migration/AbstractTemplateCreation.php', + 'Phinx\\Migration\\CreationInterface' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Migration/CreationInterface.php', + 'Phinx\\Migration\\IrreversibleMigrationException' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Migration/IrreversibleMigrationException.php', + 'Phinx\\Migration\\Manager' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Migration/Manager.php', + 'Phinx\\Migration\\Manager\\Environment' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Migration/Manager/Environment.php', + 'Phinx\\Migration\\MigrationInterface' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Migration/MigrationInterface.php', + 'Phinx\\Seed\\AbstractSeed' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Seed/AbstractSeed.php', + 'Phinx\\Seed\\SeedInterface' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Seed/SeedInterface.php', + 'Phinx\\Util\\Expression' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Util/Expression.php', + 'Phinx\\Util\\Literal' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Util/Literal.php', + 'Phinx\\Util\\Util' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Util/Util.php', + 'Phinx\\Wrapper\\TextWrapper' => __DIR__ . '/..' . '/robmorgan/phinx/src/Phinx/Wrapper/TextWrapper.php', 'PhpOffice\\PhpSpreadsheet\\Calculation\\ArrayEnabled' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/ArrayEnabled.php', 'PhpOffice\\PhpSpreadsheet\\Calculation\\BinaryComparison' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/BinaryComparison.php', 'PhpOffice\\PhpSpreadsheet\\Calculation\\Calculation' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Calculation.php', @@ -7477,6 +7833,96 @@ class ComposerStaticInitc91cd9c5b1e6a9e8573a14b799ea9342 'Symfony\\Component\\Clock\\MonotonicClock' => __DIR__ . '/..' . '/symfony/clock/MonotonicClock.php', 'Symfony\\Component\\Clock\\NativeClock' => __DIR__ . '/..' . '/symfony/clock/NativeClock.php', 'Symfony\\Component\\Clock\\Test\\ClockSensitiveTrait' => __DIR__ . '/..' . '/symfony/clock/Test/ClockSensitiveTrait.php', + 'Symfony\\Component\\Config\\Builder\\ClassBuilder' => __DIR__ . '/..' . '/symfony/config/Builder/ClassBuilder.php', + 'Symfony\\Component\\Config\\Builder\\ConfigBuilderGenerator' => __DIR__ . '/..' . '/symfony/config/Builder/ConfigBuilderGenerator.php', + 'Symfony\\Component\\Config\\Builder\\ConfigBuilderGeneratorInterface' => __DIR__ . '/..' . '/symfony/config/Builder/ConfigBuilderGeneratorInterface.php', + 'Symfony\\Component\\Config\\Builder\\ConfigBuilderInterface' => __DIR__ . '/..' . '/symfony/config/Builder/ConfigBuilderInterface.php', + 'Symfony\\Component\\Config\\Builder\\Method' => __DIR__ . '/..' . '/symfony/config/Builder/Method.php', + 'Symfony\\Component\\Config\\Builder\\Property' => __DIR__ . '/..' . '/symfony/config/Builder/Property.php', + 'Symfony\\Component\\Config\\ConfigCache' => __DIR__ . '/..' . '/symfony/config/ConfigCache.php', + 'Symfony\\Component\\Config\\ConfigCacheFactory' => __DIR__ . '/..' . '/symfony/config/ConfigCacheFactory.php', + 'Symfony\\Component\\Config\\ConfigCacheFactoryInterface' => __DIR__ . '/..' . '/symfony/config/ConfigCacheFactoryInterface.php', + 'Symfony\\Component\\Config\\ConfigCacheInterface' => __DIR__ . '/..' . '/symfony/config/ConfigCacheInterface.php', + 'Symfony\\Component\\Config\\Definition\\ArrayNode' => __DIR__ . '/..' . '/symfony/config/Definition/ArrayNode.php', + 'Symfony\\Component\\Config\\Definition\\ArrayShapeGenerator' => __DIR__ . '/..' . '/symfony/config/Definition/ArrayShapeGenerator.php', + 'Symfony\\Component\\Config\\Definition\\BaseNode' => __DIR__ . '/..' . '/symfony/config/Definition/BaseNode.php', + 'Symfony\\Component\\Config\\Definition\\BooleanNode' => __DIR__ . '/..' . '/symfony/config/Definition/BooleanNode.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\ArrayNodeDefinition' => __DIR__ . '/..' . '/symfony/config/Definition/Builder/ArrayNodeDefinition.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\BooleanNodeDefinition' => __DIR__ . '/..' . '/symfony/config/Definition/Builder/BooleanNodeDefinition.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\BuilderAwareInterface' => __DIR__ . '/..' . '/symfony/config/Definition/Builder/BuilderAwareInterface.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\EnumNodeDefinition' => __DIR__ . '/..' . '/symfony/config/Definition/Builder/EnumNodeDefinition.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\ExprBuilder' => __DIR__ . '/..' . '/symfony/config/Definition/Builder/ExprBuilder.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\FloatNodeDefinition' => __DIR__ . '/..' . '/symfony/config/Definition/Builder/FloatNodeDefinition.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\IntegerNodeDefinition' => __DIR__ . '/..' . '/symfony/config/Definition/Builder/IntegerNodeDefinition.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\MergeBuilder' => __DIR__ . '/..' . '/symfony/config/Definition/Builder/MergeBuilder.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\NodeBuilder' => __DIR__ . '/..' . '/symfony/config/Definition/Builder/NodeBuilder.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\NodeDefinition' => __DIR__ . '/..' . '/symfony/config/Definition/Builder/NodeDefinition.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\NodeParentInterface' => __DIR__ . '/..' . '/symfony/config/Definition/Builder/NodeParentInterface.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\NormalizationBuilder' => __DIR__ . '/..' . '/symfony/config/Definition/Builder/NormalizationBuilder.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\NumericNodeDefinition' => __DIR__ . '/..' . '/symfony/config/Definition/Builder/NumericNodeDefinition.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\ParentNodeDefinitionInterface' => __DIR__ . '/..' . '/symfony/config/Definition/Builder/ParentNodeDefinitionInterface.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\ScalarNodeDefinition' => __DIR__ . '/..' . '/symfony/config/Definition/Builder/ScalarNodeDefinition.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\StringNodeDefinition' => __DIR__ . '/..' . '/symfony/config/Definition/Builder/StringNodeDefinition.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\TreeBuilder' => __DIR__ . '/..' . '/symfony/config/Definition/Builder/TreeBuilder.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\ValidationBuilder' => __DIR__ . '/..' . '/symfony/config/Definition/Builder/ValidationBuilder.php', + 'Symfony\\Component\\Config\\Definition\\Builder\\VariableNodeDefinition' => __DIR__ . '/..' . '/symfony/config/Definition/Builder/VariableNodeDefinition.php', + 'Symfony\\Component\\Config\\Definition\\ConfigurableInterface' => __DIR__ . '/..' . '/symfony/config/Definition/ConfigurableInterface.php', + 'Symfony\\Component\\Config\\Definition\\Configuration' => __DIR__ . '/..' . '/symfony/config/Definition/Configuration.php', + 'Symfony\\Component\\Config\\Definition\\ConfigurationInterface' => __DIR__ . '/..' . '/symfony/config/Definition/ConfigurationInterface.php', + 'Symfony\\Component\\Config\\Definition\\Configurator\\DefinitionConfigurator' => __DIR__ . '/..' . '/symfony/config/Definition/Configurator/DefinitionConfigurator.php', + 'Symfony\\Component\\Config\\Definition\\Dumper\\XmlReferenceDumper' => __DIR__ . '/..' . '/symfony/config/Definition/Dumper/XmlReferenceDumper.php', + 'Symfony\\Component\\Config\\Definition\\Dumper\\YamlReferenceDumper' => __DIR__ . '/..' . '/symfony/config/Definition/Dumper/YamlReferenceDumper.php', + 'Symfony\\Component\\Config\\Definition\\EnumNode' => __DIR__ . '/..' . '/symfony/config/Definition/EnumNode.php', + 'Symfony\\Component\\Config\\Definition\\Exception\\DuplicateKeyException' => __DIR__ . '/..' . '/symfony/config/Definition/Exception/DuplicateKeyException.php', + 'Symfony\\Component\\Config\\Definition\\Exception\\Exception' => __DIR__ . '/..' . '/symfony/config/Definition/Exception/Exception.php', + 'Symfony\\Component\\Config\\Definition\\Exception\\ForbiddenOverwriteException' => __DIR__ . '/..' . '/symfony/config/Definition/Exception/ForbiddenOverwriteException.php', + 'Symfony\\Component\\Config\\Definition\\Exception\\InvalidConfigurationException' => __DIR__ . '/..' . '/symfony/config/Definition/Exception/InvalidConfigurationException.php', + 'Symfony\\Component\\Config\\Definition\\Exception\\InvalidDefinitionException' => __DIR__ . '/..' . '/symfony/config/Definition/Exception/InvalidDefinitionException.php', + 'Symfony\\Component\\Config\\Definition\\Exception\\InvalidTypeException' => __DIR__ . '/..' . '/symfony/config/Definition/Exception/InvalidTypeException.php', + 'Symfony\\Component\\Config\\Definition\\Exception\\UnsetKeyException' => __DIR__ . '/..' . '/symfony/config/Definition/Exception/UnsetKeyException.php', + 'Symfony\\Component\\Config\\Definition\\FloatNode' => __DIR__ . '/..' . '/symfony/config/Definition/FloatNode.php', + 'Symfony\\Component\\Config\\Definition\\IntegerNode' => __DIR__ . '/..' . '/symfony/config/Definition/IntegerNode.php', + 'Symfony\\Component\\Config\\Definition\\Loader\\DefinitionFileLoader' => __DIR__ . '/..' . '/symfony/config/Definition/Loader/DefinitionFileLoader.php', + 'Symfony\\Component\\Config\\Definition\\NodeInterface' => __DIR__ . '/..' . '/symfony/config/Definition/NodeInterface.php', + 'Symfony\\Component\\Config\\Definition\\NumericNode' => __DIR__ . '/..' . '/symfony/config/Definition/NumericNode.php', + 'Symfony\\Component\\Config\\Definition\\Processor' => __DIR__ . '/..' . '/symfony/config/Definition/Processor.php', + 'Symfony\\Component\\Config\\Definition\\PrototypeNodeInterface' => __DIR__ . '/..' . '/symfony/config/Definition/PrototypeNodeInterface.php', + 'Symfony\\Component\\Config\\Definition\\PrototypedArrayNode' => __DIR__ . '/..' . '/symfony/config/Definition/PrototypedArrayNode.php', + 'Symfony\\Component\\Config\\Definition\\ScalarNode' => __DIR__ . '/..' . '/symfony/config/Definition/ScalarNode.php', + 'Symfony\\Component\\Config\\Definition\\StringNode' => __DIR__ . '/..' . '/symfony/config/Definition/StringNode.php', + 'Symfony\\Component\\Config\\Definition\\VariableNode' => __DIR__ . '/..' . '/symfony/config/Definition/VariableNode.php', + 'Symfony\\Component\\Config\\Exception\\FileLoaderImportCircularReferenceException' => __DIR__ . '/..' . '/symfony/config/Exception/FileLoaderImportCircularReferenceException.php', + 'Symfony\\Component\\Config\\Exception\\FileLocatorFileNotFoundException' => __DIR__ . '/..' . '/symfony/config/Exception/FileLocatorFileNotFoundException.php', + 'Symfony\\Component\\Config\\Exception\\LoaderLoadException' => __DIR__ . '/..' . '/symfony/config/Exception/LoaderLoadException.php', + 'Symfony\\Component\\Config\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/config/Exception/LogicException.php', + 'Symfony\\Component\\Config\\FileLocator' => __DIR__ . '/..' . '/symfony/config/FileLocator.php', + 'Symfony\\Component\\Config\\FileLocatorInterface' => __DIR__ . '/..' . '/symfony/config/FileLocatorInterface.php', + 'Symfony\\Component\\Config\\Loader\\DelegatingLoader' => __DIR__ . '/..' . '/symfony/config/Loader/DelegatingLoader.php', + 'Symfony\\Component\\Config\\Loader\\DirectoryAwareLoaderInterface' => __DIR__ . '/..' . '/symfony/config/Loader/DirectoryAwareLoaderInterface.php', + 'Symfony\\Component\\Config\\Loader\\FileLoader' => __DIR__ . '/..' . '/symfony/config/Loader/FileLoader.php', + 'Symfony\\Component\\Config\\Loader\\GlobFileLoader' => __DIR__ . '/..' . '/symfony/config/Loader/GlobFileLoader.php', + 'Symfony\\Component\\Config\\Loader\\Loader' => __DIR__ . '/..' . '/symfony/config/Loader/Loader.php', + 'Symfony\\Component\\Config\\Loader\\LoaderInterface' => __DIR__ . '/..' . '/symfony/config/Loader/LoaderInterface.php', + 'Symfony\\Component\\Config\\Loader\\LoaderResolver' => __DIR__ . '/..' . '/symfony/config/Loader/LoaderResolver.php', + 'Symfony\\Component\\Config\\Loader\\LoaderResolverInterface' => __DIR__ . '/..' . '/symfony/config/Loader/LoaderResolverInterface.php', + 'Symfony\\Component\\Config\\Loader\\ParamConfigurator' => __DIR__ . '/..' . '/symfony/config/Loader/ParamConfigurator.php', + 'Symfony\\Component\\Config\\ResourceCheckerConfigCache' => __DIR__ . '/..' . '/symfony/config/ResourceCheckerConfigCache.php', + 'Symfony\\Component\\Config\\ResourceCheckerConfigCacheFactory' => __DIR__ . '/..' . '/symfony/config/ResourceCheckerConfigCacheFactory.php', + 'Symfony\\Component\\Config\\ResourceCheckerInterface' => __DIR__ . '/..' . '/symfony/config/ResourceCheckerInterface.php', + 'Symfony\\Component\\Config\\Resource\\ClassExistenceResource' => __DIR__ . '/..' . '/symfony/config/Resource/ClassExistenceResource.php', + 'Symfony\\Component\\Config\\Resource\\ComposerResource' => __DIR__ . '/..' . '/symfony/config/Resource/ComposerResource.php', + 'Symfony\\Component\\Config\\Resource\\DirectoryResource' => __DIR__ . '/..' . '/symfony/config/Resource/DirectoryResource.php', + 'Symfony\\Component\\Config\\Resource\\FileExistenceResource' => __DIR__ . '/..' . '/symfony/config/Resource/FileExistenceResource.php', + 'Symfony\\Component\\Config\\Resource\\FileResource' => __DIR__ . '/..' . '/symfony/config/Resource/FileResource.php', + 'Symfony\\Component\\Config\\Resource\\GlobResource' => __DIR__ . '/..' . '/symfony/config/Resource/GlobResource.php', + 'Symfony\\Component\\Config\\Resource\\ReflectionClassResource' => __DIR__ . '/..' . '/symfony/config/Resource/ReflectionClassResource.php', + 'Symfony\\Component\\Config\\Resource\\ResourceInterface' => __DIR__ . '/..' . '/symfony/config/Resource/ResourceInterface.php', + 'Symfony\\Component\\Config\\Resource\\SelfCheckingResourceChecker' => __DIR__ . '/..' . '/symfony/config/Resource/SelfCheckingResourceChecker.php', + 'Symfony\\Component\\Config\\Resource\\SelfCheckingResourceInterface' => __DIR__ . '/..' . '/symfony/config/Resource/SelfCheckingResourceInterface.php', + 'Symfony\\Component\\Config\\Resource\\SkippingResourceChecker' => __DIR__ . '/..' . '/symfony/config/Resource/SkippingResourceChecker.php', + 'Symfony\\Component\\Config\\Util\\Exception\\InvalidXmlException' => __DIR__ . '/..' . '/symfony/config/Util/Exception/InvalidXmlException.php', + 'Symfony\\Component\\Config\\Util\\Exception\\XmlParsingException' => __DIR__ . '/..' . '/symfony/config/Util/Exception/XmlParsingException.php', + 'Symfony\\Component\\Config\\Util\\XmlUtils' => __DIR__ . '/..' . '/symfony/config/Util/XmlUtils.php', 'Symfony\\Component\\Console\\Application' => __DIR__ . '/..' . '/symfony/console/Application.php', 'Symfony\\Component\\Console\\Attribute\\Argument' => __DIR__ . '/..' . '/symfony/console/Attribute/Argument.php', 'Symfony\\Component\\Console\\Attribute\\AsCommand' => __DIR__ . '/..' . '/symfony/console/Attribute/AsCommand.php', @@ -7685,6 +8131,14 @@ class ComposerStaticInitc91cd9c5b1e6a9e8573a14b799ea9342 'Symfony\\Component\\EventDispatcher\\EventSubscriberInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher/EventSubscriberInterface.php', 'Symfony\\Component\\EventDispatcher\\GenericEvent' => __DIR__ . '/..' . '/symfony/event-dispatcher/GenericEvent.php', 'Symfony\\Component\\EventDispatcher\\ImmutableEventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/ImmutableEventDispatcher.php', + 'Symfony\\Component\\Filesystem\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/filesystem/Exception/ExceptionInterface.php', + 'Symfony\\Component\\Filesystem\\Exception\\FileNotFoundException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/FileNotFoundException.php', + 'Symfony\\Component\\Filesystem\\Exception\\IOException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/IOException.php', + 'Symfony\\Component\\Filesystem\\Exception\\IOExceptionInterface' => __DIR__ . '/..' . '/symfony/filesystem/Exception/IOExceptionInterface.php', + 'Symfony\\Component\\Filesystem\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/InvalidArgumentException.php', + 'Symfony\\Component\\Filesystem\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/RuntimeException.php', + 'Symfony\\Component\\Filesystem\\Filesystem' => __DIR__ . '/..' . '/symfony/filesystem/Filesystem.php', + 'Symfony\\Component\\Filesystem\\Path' => __DIR__ . '/..' . '/symfony/filesystem/Path.php', 'Symfony\\Component\\Finder\\Comparator\\Comparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/Comparator.php', 'Symfony\\Component\\Finder\\Comparator\\DateComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/DateComparator.php', 'Symfony\\Component\\Finder\\Comparator\\NumberComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/NumberComparator.php', diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 670e46b5..9eddfcf8 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -593,6 +593,345 @@ ], "install-path": "../brick/math" }, + { + "name": "cakephp/chronos", + "version": "3.5.0", + "version_normalized": "3.5.0.0", + "source": { + "type": "git", + "url": "https://github.com/cakephp/chronos.git", + "reference": "e6e777b534244911566face8a5dbdbd7f7bda5a6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cakephp/chronos/zipball/e6e777b534244911566face8a5dbdbd7f7bda5a6", + "reference": "e6e777b534244911566face8a5dbdbd7f7bda5a6", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/clock": "^1.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "cakephp/cakephp-codesniffer": "^5.0", + "phpunit/phpunit": "^10.5.58 || ^11.5.3 || ^12.1.3" + }, + "time": "2026-04-10T02:50:39+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Cake\\Chronos\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "http://nesbot.com" + }, + { + "name": "The CakePHP Team", + "homepage": "https://cakephp.org" + } + ], + "description": "A simple API extension for DateTime.", + "homepage": "https://cakephp.org", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "issues": "https://github.com/cakephp/chronos/issues", + "source": "https://github.com/cakephp/chronos" + }, + "install-path": "../cakephp/chronos" + }, + { + "name": "cakephp/core", + "version": "5.3.6", + "version_normalized": "5.3.6.0", + "source": { + "type": "git", + "url": "https://github.com/cakephp/core.git", + "reference": "9c458b0e9322ec88bc4c758b33cde6a0abf49d12" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cakephp/core/zipball/9c458b0e9322ec88bc4c758b33cde6a0abf49d12", + "reference": "9c458b0e9322ec88bc4c758b33cde6a0abf49d12", + "shasum": "" + }, + "require": { + "cakephp/utility": "^5.3.0", + "league/container": "^5.1", + "php": ">=8.2", + "psr/container": "^1.1 || ^2.0" + }, + "provide": { + "psr/container-implementation": "^2.0" + }, + "suggest": { + "cakephp/cache": "To use Configure::store() and restore().", + "cakephp/event": "To use PluginApplicationInterface or plugin applications.", + "league/container": "To use Container and ServiceProvider classes" + }, + "time": "2026-05-15T03:31:14+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-5.next": "5.4.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "functions.php" + ], + "psr-4": { + "Cake\\Core\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "CakePHP Community", + "homepage": "https://github.com/cakephp/core/graphs/contributors" + } + ], + "description": "CakePHP Framework Core classes", + "homepage": "https://cakephp.org", + "keywords": [ + "cakephp", + "core", + "framework" + ], + "support": { + "forum": "https://stackoverflow.com/tags/cakephp", + "irc": "irc://irc.freenode.org/cakephp", + "issues": "https://github.com/cakephp/cakephp/issues", + "source": "https://github.com/cakephp/core" + }, + "install-path": "../cakephp/core" + }, + { + "name": "cakephp/database", + "version": "5.3.6", + "version_normalized": "5.3.6.0", + "source": { + "type": "git", + "url": "https://github.com/cakephp/database.git", + "reference": "442d12bf0a1edeffc555a59de9f955cb0619c7ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cakephp/database/zipball/442d12bf0a1edeffc555a59de9f955cb0619c7ca", + "reference": "442d12bf0a1edeffc555a59de9f955cb0619c7ca", + "shasum": "" + }, + "require": { + "cakephp/chronos": "^3.3", + "cakephp/core": "^5.3.0", + "cakephp/datasource": "^5.3.0", + "php": ">=8.2", + "psr/log": "^3.0" + }, + "require-dev": { + "cakephp/i18n": "^5.3.0", + "cakephp/log": "^5.3.0" + }, + "suggest": { + "cakephp/i18n": "If you are using locale-aware datetime formats.", + "cakephp/log": "If you want to use query logging without providing a logger yourself." + }, + "time": "2026-05-21T19:38:13+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-5.next": "5.4.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Cake\\Database\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "CakePHP Community", + "homepage": "https://github.com/cakephp/database/graphs/contributors" + } + ], + "description": "Flexible and powerful Database abstraction library with a familiar PDO-like API", + "homepage": "https://cakephp.org", + "keywords": [ + "abstraction", + "cakephp", + "database", + "database abstraction", + "pdo" + ], + "support": { + "forum": "https://stackoverflow.com/tags/cakephp", + "irc": "irc://irc.freenode.org/cakephp", + "issues": "https://github.com/cakephp/cakephp/issues", + "source": "https://github.com/cakephp/database" + }, + "install-path": "../cakephp/database" + }, + { + "name": "cakephp/datasource", + "version": "5.3.6", + "version_normalized": "5.3.6.0", + "source": { + "type": "git", + "url": "https://github.com/cakephp/datasource.git", + "reference": "b768f0c0bf0fca815f83c4caef14e7fbb2409bf5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cakephp/datasource/zipball/b768f0c0bf0fca815f83c4caef14e7fbb2409bf5", + "reference": "b768f0c0bf0fca815f83c4caef14e7fbb2409bf5", + "shasum": "" + }, + "require": { + "cakephp/core": "^5.3.0", + "php": ">=8.2", + "psr/simple-cache": "^2.0 || ^3.0" + }, + "require-dev": { + "cakephp/cache": "^5.3.0", + "cakephp/collection": "^5.3.0", + "cakephp/utility": "^5.3.0" + }, + "suggest": { + "cakephp/cache": "If you decide to use Query caching.", + "cakephp/collection": "If you decide to use ResultSetInterface.", + "cakephp/utility": "If you decide to use EntityTrait." + }, + "time": "2026-05-20T10:27:33+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-5.next": "5.4.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Cake\\Datasource\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "CakePHP Community", + "homepage": "https://github.com/cakephp/datasource/graphs/contributors" + } + ], + "description": "Provides connection managing and traits for Entities and Queries that can be reused for different datastores", + "homepage": "https://cakephp.org", + "keywords": [ + "cakephp", + "connection management", + "datasource", + "entity", + "query" + ], + "support": { + "forum": "https://stackoverflow.com/tags/cakephp", + "irc": "irc://irc.freenode.org/cakephp", + "issues": "https://github.com/cakephp/cakephp/issues", + "source": "https://github.com/cakephp/datasource" + }, + "install-path": "../cakephp/datasource" + }, + { + "name": "cakephp/utility", + "version": "5.3.6", + "version_normalized": "5.3.6.0", + "source": { + "type": "git", + "url": "https://github.com/cakephp/utility.git", + "reference": "4c703a010b9d955fed44731669e35d3043425cc7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cakephp/utility/zipball/4c703a010b9d955fed44731669e35d3043425cc7", + "reference": "4c703a010b9d955fed44731669e35d3043425cc7", + "shasum": "" + }, + "require": { + "cakephp/core": "^5.3.0", + "php": ">=8.2" + }, + "suggest": { + "ext-intl": "To use Text::transliterate() or Text::slug()", + "lib-ICU": "To use Text::transliterate() or Text::slug()" + }, + "time": "2026-05-21T19:38:13+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-5.next": "5.4.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Cake\\Utility\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "CakePHP Community", + "homepage": "https://github.com/cakephp/utility/graphs/contributors" + } + ], + "description": "CakePHP Utility classes such as Inflector, String, Hash, and Security", + "homepage": "https://cakephp.org", + "keywords": [ + "cakephp", + "hash", + "inflector", + "security", + "string", + "utility" + ], + "support": { + "forum": "https://stackoverflow.com/tags/cakephp", + "irc": "irc://irc.freenode.org/cakephp", + "issues": "https://github.com/cakephp/cakephp/issues", + "source": "https://github.com/cakephp/utility" + }, + "install-path": "../cakephp/utility" + }, { "name": "carbonphp/carbon-doctrine-types", "version": "3.2.0", @@ -3640,6 +3979,93 @@ ], "install-path": "../league/config" }, + { + "name": "league/container", + "version": "5.2.0", + "version_normalized": "5.2.0.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/container.git", + "reference": "58accbc032f0090a9bd08326f93062c5a658b2c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/container/zipball/58accbc032f0090a9bd08326f93062c5a658b2c5", + "reference": "58accbc032f0090a9bd08326f93062c5a658b2c5", + "shasum": "" + }, + "require": { + "php": "^8.1", + "psr/container": "^2.0.2", + "psr/event-dispatcher": "^1.0" + }, + "provide": { + "psr/container-implementation": "^1.0" + }, + "replace": { + "orno/di": "~2.0" + }, + "require-dev": { + "nette/php-generator": "^4.1", + "nikic/php-parser": "^5.0", + "phpstan/phpstan": "^2.1.11", + "phpunit/phpunit": "^10.5.45|^11.5.15|^12.0", + "roave/security-advisories": "dev-latest", + "scrutinizer/ocular": "^1.9", + "squizlabs/php_codesniffer": "^3.9" + }, + "time": "2026-03-19T18:52:39+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev", + "dev-2.x": "2.x-dev", + "dev-3.x": "3.x-dev", + "dev-4.x": "4.x-dev", + "dev-5.x": "5.x-dev", + "dev-master": "5.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "League\\Container\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Phil Bennett", + "email": "mail@philbennett.co.uk", + "role": "Developer" + } + ], + "description": "A fast and intuitive dependency injection container.", + "homepage": "https://github.com/thephpleague/container", + "keywords": [ + "container", + "dependency", + "di", + "injection", + "league", + "provider", + "service" + ], + "support": { + "issues": "https://github.com/thephpleague/container/issues", + "source": "https://github.com/thephpleague/container/tree/5.2.0" + }, + "funding": [ + { + "url": "https://github.com/philipobenito", + "type": "github" + } + ], + "install-path": "../league/container" + }, { "name": "league/flysystem", "version": "3.28.0", @@ -7146,6 +7572,96 @@ ], "install-path": "../ramsey/uuid" }, + { + "name": "robmorgan/phinx", + "version": "0.16.11", + "version_normalized": "0.16.11.0", + "source": { + "type": "git", + "url": "https://github.com/cakephp/phinx.git", + "reference": "a03014fea316ba021fc0776982e5bed2d10228d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cakephp/phinx/zipball/a03014fea316ba021fc0776982e5bed2d10228d4", + "reference": "a03014fea316ba021fc0776982e5bed2d10228d4", + "shasum": "" + }, + "require": { + "cakephp/database": "^5.0.2", + "composer-runtime-api": "^2.0", + "php-64bit": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/config": "^4.0|^5.0|^6.0|^7.0|^8.0", + "symfony/console": "^6.0|^7.0|^8.0" + }, + "require-dev": { + "cakephp/cakephp-codesniffer": "^5.0", + "cakephp/i18n": "^5.0", + "ext-json": "*", + "ext-pdo": "*", + "phpunit/phpunit": "^10.5", + "symfony/yaml": "^4.0|^5.0|^6.0|^7.0|^8.0" + }, + "suggest": { + "ext-json": "Install if using JSON configuration format", + "ext-pdo": "PDO extension is needed", + "symfony/yaml": "Install if using YAML configuration format" + }, + "time": "2026-03-15T00:04:32+00:00", + "bin": [ + "bin/phinx" + ], + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Phinx\\": "src/Phinx/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Rob Morgan", + "email": "robbym@gmail.com", + "homepage": "https://robmorgan.id.au", + "role": "Lead Developer" + }, + { + "name": "Woody Gilk", + "email": "woody.gilk@gmail.com", + "homepage": "https://shadowhand.me", + "role": "Developer" + }, + { + "name": "Richard Quadling", + "email": "rquadling@gmail.com", + "role": "Developer" + }, + { + "name": "CakePHP Community", + "homepage": "https://github.com/cakephp/phinx/graphs/contributors", + "role": "Developer" + } + ], + "description": "Phinx makes it ridiculously easy to manage the database migrations for your PHP app.", + "homepage": "https://phinx.org", + "keywords": [ + "database", + "database migrations", + "db", + "migrations", + "phinx" + ], + "support": { + "issues": "https://github.com/cakephp/phinx/issues", + "source": "https://github.com/cakephp/phinx/tree/0.16.11" + }, + "install-path": "../robmorgan/phinx" + }, { "name": "sebastian/cli-parser", "version": "2.0.1", @@ -8849,6 +9365,88 @@ ], "install-path": "../symfony/clock" }, + { + "name": "symfony/config", + "version": "v7.4.10", + "version_normalized": "7.4.10.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/config.git", + "reference": "d91b6c7cd2a8c9a9c2b8d26c8f5ed48edf99ef57" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/config/zipball/d91b6c7cd2a8c9a9c2b8d26c8f5ed48edf99ef57", + "reference": "d91b6c7cd2a8c9a9c2b8d26c8f5ed48edf99ef57", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/filesystem": "^7.1|^8.0", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/finder": "<6.4", + "symfony/service-contracts": "<2.5" + }, + "require-dev": { + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^6.4|^7.0|^8.0" + }, + "time": "2026-05-03T14:20:49+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/config/tree/v7.4.10" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "install-path": "../symfony/config" + }, { "name": "symfony/console", "version": "v7.1.3", @@ -9323,6 +9921,79 @@ ], "install-path": "../symfony/event-dispatcher-contracts" }, + { + "name": "symfony/filesystem", + "version": "v7.4.11", + "version_normalized": "7.4.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "d721ea61b4a5fba8c5b6e7c1feda19efea144b50" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/d721ea61b4a5fba8c5b6e7c1feda19efea144b50", + "reference": "d721ea61b4a5fba8c5b6e7c1feda19efea144b50", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { + "symfony/process": "^6.4|^7.0|^8.0" + }, + "time": "2026-05-11T16:38:44+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v7.4.11" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "install-path": "../symfony/filesystem" + }, { "name": "symfony/finder", "version": "v7.1.3", diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 58334298..cdc7ccb1 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -3,7 +3,7 @@ 'name' => 'loshmis/vanguard', 'pretty_version' => 'dev-main', 'version' => 'dev-main', - 'reference' => 'baf3f6da32fd5bc669ac7360970be21407d1d384', + 'reference' => 'dab8d9aebf257f7fb7325f9269086f1a7c9e2f1d', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -82,6 +82,51 @@ 'aliases' => array(), 'dev_requirement' => false, ), + 'cakephp/chronos' => array( + 'pretty_version' => '3.5.0', + 'version' => '3.5.0.0', + 'reference' => 'e6e777b534244911566face8a5dbdbd7f7bda5a6', + 'type' => 'library', + 'install_path' => __DIR__ . '/../cakephp/chronos', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'cakephp/core' => array( + 'pretty_version' => '5.3.6', + 'version' => '5.3.6.0', + 'reference' => '9c458b0e9322ec88bc4c758b33cde6a0abf49d12', + 'type' => 'library', + 'install_path' => __DIR__ . '/../cakephp/core', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'cakephp/database' => array( + 'pretty_version' => '5.3.6', + 'version' => '5.3.6.0', + 'reference' => '442d12bf0a1edeffc555a59de9f955cb0619c7ca', + 'type' => 'library', + 'install_path' => __DIR__ . '/../cakephp/database', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'cakephp/datasource' => array( + 'pretty_version' => '5.3.6', + 'version' => '5.3.6.0', + 'reference' => 'b768f0c0bf0fca815f83c4caef14e7fbb2409bf5', + 'type' => 'library', + 'install_path' => __DIR__ . '/../cakephp/datasource', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'cakephp/utility' => array( + 'pretty_version' => '5.3.6', + 'version' => '5.3.6.0', + 'reference' => '4c703a010b9d955fed44731669e35d3043425cc7', + 'type' => 'library', + 'install_path' => __DIR__ . '/../cakephp/utility', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'carbonphp/carbon-doctrine-types' => array( 'pretty_version' => '3.2.0', 'version' => '3.2.0.0', @@ -649,6 +694,15 @@ 'aliases' => array(), 'dev_requirement' => false, ), + 'league/container' => array( + 'pretty_version' => '5.2.0', + 'version' => '5.2.0.0', + 'reference' => '58accbc032f0090a9bd08326f93062c5a658b2c5', + 'type' => 'library', + 'install_path' => __DIR__ . '/../league/container', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'league/flysystem' => array( 'pretty_version' => '3.28.0', 'version' => '3.28.0.0', @@ -688,7 +742,7 @@ 'loshmis/vanguard' => array( 'pretty_version' => 'dev-main', 'version' => 'dev-main', - 'reference' => 'baf3f6da32fd5bc669ac7360970be21407d1d384', + 'reference' => 'dab8d9aebf257f7fb7325f9269086f1a7c9e2f1d', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -826,6 +880,12 @@ 'aliases' => array(), 'dev_requirement' => false, ), + 'orno/di' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => '~2.0', + ), + ), 'paragonie/constant_time_encoding' => array( 'pretty_version' => 'v2.7.0', 'version' => '2.7.0.0', @@ -1025,6 +1085,8 @@ 'dev_requirement' => false, 'provided' => array( 0 => '1.1|2.0', + 1 => '^1.0', + 2 => '^2.0', ), ), 'psr/event-dispatcher' => array( @@ -1160,6 +1222,15 @@ 0 => '4.7.6', ), ), + 'robmorgan/phinx' => array( + 'pretty_version' => '0.16.11', + 'version' => '0.16.11.0', + 'reference' => 'a03014fea316ba021fc0776982e5bed2d10228d4', + 'type' => 'library', + 'install_path' => __DIR__ . '/../robmorgan/phinx', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'sebastian/cli-parser' => array( 'pretty_version' => '2.0.1', 'version' => '2.0.1.0', @@ -1391,6 +1462,15 @@ 'aliases' => array(), 'dev_requirement' => false, ), + 'symfony/config' => array( + 'pretty_version' => 'v7.4.10', + 'version' => '7.4.10.0', + 'reference' => 'd91b6c7cd2a8c9a9c2b8d26c8f5ed48edf99ef57', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/config', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'symfony/console' => array( 'pretty_version' => 'v7.1.3', 'version' => '7.1.3.0', @@ -1451,6 +1531,15 @@ 0 => '2.0|3.0', ), ), + 'symfony/filesystem' => array( + 'pretty_version' => 'v7.4.11', + 'version' => '7.4.11.0', + 'reference' => 'd721ea61b4a5fba8c5b6e7c1feda19efea144b50', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/filesystem', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'symfony/finder' => array( 'pretty_version' => 'v7.1.3', 'version' => '7.1.3.0', diff --git a/vendor/composer/platform_check.php b/vendor/composer/platform_check.php index d515d34b..87484392 100644 --- a/vendor/composer/platform_check.php +++ b/vendor/composer/platform_check.php @@ -23,8 +23,7 @@ if ($issues) { echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; } } - trigger_error( - 'Composer detected issues in your platform: ' . implode(' ', $issues), - E_USER_ERROR + throw new \RuntimeException( + 'Composer detected issues in your platform: ' . implode(' ', $issues) ); }