diff --git a/.env b/.env index db1ad39..21753ec 100644 --- a/.env +++ b/.env @@ -32,7 +32,8 @@ DATABASE_URL="mysql://db:db@db:3306/db?serverVersion=mariadb-10.4.11&charset=utf CORS_ALLOW_ORIGIN='^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$' ###< nelmio/cors-bundle ### -SHOPWARE_API_URL="https://cycro.ddev.site" -SHOPWARE_API_KEY="SHVRaXVVNU1wVm8xWlBVclZiaTFrTkNtdkJDNng3cUFhZHhoZ3Y" -SHOPWARE_API_ID="SWIAB0HHT3NLBUDLEK1JY2J5RW" +SHOPWARE_API_URL="ddev-cycro-web" +SHOPWARE_API_ID="SWIAETU3AXZKYMX6AMT3SDR0TA" +SHOPWARE_API_KEY="bFFkZDgxVmVjOVFvMGJyNldQUFd0ZXJIU2dmZlB6MzlpQlVTemU" + diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml index 130b5c5..2862243 100644 --- a/.idea/dataSources.xml +++ b/.idea/dataSources.xml @@ -8,13 +8,13 @@ jdbc:mysql://127.0.0.1:3306 $ProjectFileDir$ - + mariadb true true DDEV generated data source org.mariadb.jdbc.Driver - jdbc:mariadb://127.0.0.1:60294/db?user=db&password=db + jdbc:mariadb://127.0.0.1:32794/db?user=db&password=db $ProjectFileDir$ diff --git a/composer.lock b/composer.lock index 18b225d..a4abff6 100644 --- a/composer.lock +++ b/composer.lock @@ -8,16 +8,16 @@ "packages": [ { "name": "api-platform/core", - "version": "v2.7.8", + "version": "v2.7.9", "source": { "type": "git", "url": "https://github.com/api-platform/core.git", - "reference": "dc11c7322ba47bb722e963e811face7265bae5e6" + "reference": "1c9a025aac450035ddd6b6a89b0312493303be49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/core/zipball/dc11c7322ba47bb722e963e811face7265bae5e6", - "reference": "dc11c7322ba47bb722e963e811face7265bae5e6", + "url": "https://api.github.com/repos/api-platform/core/zipball/1c9a025aac450035ddd6b6a89b0312493303be49", + "reference": "1c9a025aac450035ddd6b6a89b0312493303be49", "shasum": "" }, "require": { @@ -165,7 +165,7 @@ ], "support": { "issues": "https://github.com/api-platform/core/issues", - "source": "https://github.com/api-platform/core/tree/v2.7.8" + "source": "https://github.com/api-platform/core/tree/v2.7.9" }, "funding": [ { @@ -173,20 +173,20 @@ "type": "tidelift" } ], - "time": "2023-01-27T09:28:22+00:00" + "time": "2023-02-03T08:53:46+00:00" }, { "name": "doctrine/annotations", - "version": "1.14.2", + "version": "1.14.3", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "ad785217c1e9555a7d6c6c8c9f406395a5e2882b" + "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/ad785217c1e9555a7d6c6c8c9f406395a5e2882b", - "reference": "ad785217c1e9555a7d6c6c8c9f406395a5e2882b", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", + "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", "shasum": "" }, "require": { @@ -247,9 +247,9 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.14.2" + "source": "https://github.com/doctrine/annotations/tree/1.14.3" }, - "time": "2022-12-15T06:48:22+00:00" + "time": "2023-02-01T09:20:38+00:00" }, { "name": "doctrine/cache", @@ -523,16 +523,16 @@ }, { "name": "doctrine/dbal", - "version": "3.5.3", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "88fa7e5189fd5ec6682477044264dc0ed4e3aa1e" + "reference": "85b98cb23c8af471a67abfe14485da696bcabc2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/88fa7e5189fd5ec6682477044264dc0ed4e3aa1e", - "reference": "88fa7e5189fd5ec6682477044264dc0ed4e3aa1e", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/85b98cb23c8af471a67abfe14485da696bcabc2e", + "reference": "85b98cb23c8af471a67abfe14485da696bcabc2e", "shasum": "" }, "require": { @@ -545,11 +545,12 @@ "psr/log": "^1|^2|^3" }, "require-dev": { - "doctrine/coding-standard": "11.0.0", + "doctrine/coding-standard": "11.1.0", + "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2022.3", - "phpstan/phpstan": "1.9.4", + "phpstan/phpstan": "1.9.14", "phpstan/phpstan-strict-rules": "^1.4", - "phpunit/phpunit": "9.5.27", + "phpunit/phpunit": "9.6.3", "psalm/plugin-phpunit": "0.18.4", "squizlabs/php_codesniffer": "3.7.1", "symfony/cache": "^5.4|^6.0", @@ -614,7 +615,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.5.3" + "source": "https://github.com/doctrine/dbal/tree/3.6.0" }, "funding": [ { @@ -630,7 +631,7 @@ "type": "tidelift" } ], - "time": "2023-01-12T10:21:44+00:00" + "time": "2023-02-07T22:52:03+00:00" }, { "name": "doctrine/deprecations", @@ -677,16 +678,16 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.8.2", + "version": "2.8.3", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "251cd5aaea32bb92cdad4204840786b317dcdd4c" + "reference": "fd67ba64db3c806f626a33dcab15a4db0c77652e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/251cd5aaea32bb92cdad4204840786b317dcdd4c", - "reference": "251cd5aaea32bb92cdad4204840786b317dcdd4c", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/fd67ba64db3c806f626a33dcab15a4db0c77652e", + "reference": "fd67ba64db3c806f626a33dcab15a4db0c77652e", "shasum": "" }, "require": { @@ -700,7 +701,7 @@ "symfony/console": "^5.4 || ^6.0", "symfony/dependency-injection": "^5.4 || ^6.0", "symfony/deprecation-contracts": "^2.1 || ^3", - "symfony/doctrine-bridge": "^5.4.7 || ^6.0.7", + "symfony/doctrine-bridge": "^5.4.19 || ^6.0.7", "symfony/framework-bundle": "^5.4 || ^6.0", "symfony/service-contracts": "^1.1.1 || ^2.0 || ^3" }, @@ -772,7 +773,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.8.2" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.8.3" }, "funding": [ { @@ -788,7 +789,7 @@ "type": "tidelift" } ], - "time": "2023-01-06T11:42:10+00:00" + "time": "2023-02-03T09:32:42+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", @@ -1410,16 +1411,16 @@ }, { "name": "doctrine/persistence", - "version": "3.1.3", + "version": "3.1.4", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "920da294b4bb0bb527f2a91ed60c18213435880f" + "reference": "8bf8ab15960787f1a49d405f6eb8c787b4841119" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/920da294b4bb0bb527f2a91ed60c18213435880f", - "reference": "920da294b4bb0bb527f2a91ed60c18213435880f", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/8bf8ab15960787f1a49d405f6eb8c787b4841119", + "reference": "8bf8ab15960787f1a49d405f6eb8c787b4841119", "shasum": "" }, "require": { @@ -1488,7 +1489,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/3.1.3" + "source": "https://github.com/doctrine/persistence/tree/3.1.4" }, "funding": [ { @@ -1504,7 +1505,7 @@ "type": "tidelift" } ], - "time": "2023-01-19T13:39:42+00:00" + "time": "2023-02-03T11:13:07+00:00" }, { "name": "doctrine/sql-formatter", @@ -2036,29 +2037,30 @@ }, { "name": "nelmio/cors-bundle", - "version": "2.2.0", + "version": "2.3.1", "source": { "type": "git", "url": "https://github.com/nelmio/NelmioCorsBundle.git", - "reference": "0ee5ee30b0ee08ea122d431ae6e0ddeb87f035c0" + "reference": "185d2c0ae50a3f0b628790170164d5f1c5b7c281" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/0ee5ee30b0ee08ea122d431ae6e0ddeb87f035c0", - "reference": "0ee5ee30b0ee08ea122d431ae6e0ddeb87f035c0", + "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/185d2c0ae50a3f0b628790170164d5f1c5b7c281", + "reference": "185d2c0ae50a3f0b628790170164d5f1c5b7c281", "shasum": "" }, "require": { - "symfony/framework-bundle": "^4.3 || ^5.0 || ^6.0" + "psr/log": "^1.0 || ^2.0 || ^3.0", + "symfony/framework-bundle": "^4.4 || ^5.4 || ^6.0" }, "require-dev": { "mockery/mockery": "^1.2", - "symfony/phpunit-bridge": "^4.3 || ^5.0 || ^6.0" + "symfony/phpunit-bridge": "^4.4 || ^5.4 || ^6.0" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -2091,9 +2093,9 @@ ], "support": { "issues": "https://github.com/nelmio/NelmioCorsBundle/issues", - "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.2.0" + "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.3.1" }, - "time": "2021-12-01T09:34:27+00:00" + "time": "2023-02-16T08:49:29+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -2262,16 +2264,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.16.0", + "version": "1.16.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "57090cfccbfaa639e703c007486d605a6e80f56d" + "reference": "e27e92d939e2e3636f0a1f0afaba59692c0bf571" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/57090cfccbfaa639e703c007486d605a6e80f56d", - "reference": "57090cfccbfaa639e703c007486d605a6e80f56d", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/e27e92d939e2e3636f0a1f0afaba59692c0bf571", + "reference": "e27e92d939e2e3636f0a1f0afaba59692c0bf571", "shasum": "" }, "require": { @@ -2301,9 +2303,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.16.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.16.1" }, - "time": "2023-01-29T14:41:23+00:00" + "time": "2023-02-07T18:11:17+00:00" }, { "name": "psr/cache", @@ -6803,16 +6805,16 @@ }, { "name": "twig/twig", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "3ffcf4b7d890770466da3b2666f82ac054e7ec72" + "reference": "a6e0510cc793912b451fd40ab983a1d28f611c15" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/3ffcf4b7d890770466da3b2666f82ac054e7ec72", - "reference": "3ffcf4b7d890770466da3b2666f82ac054e7ec72", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/a6e0510cc793912b451fd40ab983a1d28f611c15", + "reference": "a6e0510cc793912b451fd40ab983a1d28f611c15", "shasum": "" }, "require": { @@ -6863,7 +6865,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.5.0" + "source": "https://github.com/twigphp/Twig/tree/v3.5.1" }, "funding": [ { @@ -6875,7 +6877,7 @@ "type": "tidelift" } ], - "time": "2022-12-27T12:28:18+00:00" + "time": "2023-02-08T07:49:20+00:00" }, { "name": "vin-sw/shopware-sdk", @@ -7115,16 +7117,16 @@ }, { "name": "monolog/monolog", - "version": "3.2.0", + "version": "3.3.1", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "305444bc6fb6c89e490f4b34fa6e979584d7fa81" + "reference": "9b5daeaffce5b926cac47923798bba91059e60e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/305444bc6fb6c89e490f4b34fa6e979584d7fa81", - "reference": "305444bc6fb6c89e490f4b34fa6e979584d7fa81", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/9b5daeaffce5b926cac47923798bba91059e60e2", + "reference": "9b5daeaffce5b926cac47923798bba91059e60e2", "shasum": "" }, "require": { @@ -7139,16 +7141,16 @@ "doctrine/couchdb": "~1.0@dev", "elasticsearch/elasticsearch": "^7 || ^8", "ext-json": "*", - "graylog2/gelf-php": "^1.4.2", - "guzzlehttp/guzzle": "^7.4", + "graylog2/gelf-php": "^1.4.2 || ^2@dev", + "guzzlehttp/guzzle": "^7.4.5", "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", "php-amqplib/php-amqplib": "~2.4 || ^3", - "phpstan/phpstan": "^1.4", + "phpstan/phpstan": "^1.9", "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-strict-rules": "^1.1", - "phpunit/phpunit": "^9.5.16", - "predis/predis": "^1.1", + "phpstan/phpstan-strict-rules": "^1.4", + "phpunit/phpunit": "^9.5.26", + "predis/predis": "^1.1 || ^2", "ruflin/elastica": "^7", "symfony/mailer": "^5.4 || ^6", "symfony/mime": "^5.4 || ^6" @@ -7200,7 +7202,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.2.0" + "source": "https://github.com/Seldaek/monolog/tree/3.3.1" }, "funding": [ { @@ -7212,7 +7214,7 @@ "type": "tidelift" } ], - "time": "2022-07-24T12:00:55+00:00" + "time": "2023-02-06T13:46:10+00:00" }, { "name": "myclabs/deep-copy", @@ -7760,16 +7762,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.28", + "version": "9.6.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "954ca3113a03bf780d22f07bf055d883ee04b65e" + "reference": "e7b1615e3e887d6c719121c6d4a44b0ab9645555" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/954ca3113a03bf780d22f07bf055d883ee04b65e", - "reference": "954ca3113a03bf780d22f07bf055d883ee04b65e", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e7b1615e3e887d6c719121c6d4a44b0ab9645555", + "reference": "e7b1615e3e887d6c719121c6d4a44b0ab9645555", "shasum": "" }, "require": { @@ -7811,7 +7813,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.5-dev" + "dev-master": "9.6-dev" } }, "autoload": { @@ -7842,7 +7844,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.28" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.3" }, "funding": [ { @@ -7858,7 +7860,7 @@ "type": "tidelift" } ], - "time": "2023-01-14T12:32:24+00:00" + "time": "2023-02-04T13:37:15+00:00" }, { "name": "sebastian/cli-parser", @@ -8226,16 +8228,16 @@ }, { "name": "sebastian/environment", - "version": "5.1.4", + "version": "5.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", "shasum": "" }, "require": { @@ -8277,7 +8279,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" }, "funding": [ { @@ -8285,7 +8287,7 @@ "type": "github" } ], - "time": "2022-04-03T09:37:03+00:00" + "time": "2023-02-03T06:03:51+00:00" }, { "name": "sebastian/exporter", @@ -8599,16 +8601,16 @@ }, { "name": "sebastian/recursion-context", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", "shasum": "" }, "require": { @@ -8647,10 +8649,10 @@ } ], "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" }, "funding": [ { @@ -8658,7 +8660,7 @@ "type": "github" } ], - "time": "2020-10-26T13:17:30+00:00" + "time": "2023-02-03T06:07:39+00:00" }, { "name": "sebastian/resource-operations", @@ -8717,16 +8719,16 @@ }, { "name": "sebastian/type", - "version": "3.2.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e" + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", - "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", "shasum": "" }, "require": { @@ -8761,7 +8763,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.2.0" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" }, "funding": [ { @@ -8769,7 +8771,7 @@ "type": "github" } ], - "time": "2022-09-12T14:47:03+00:00" + "time": "2023-02-03T06:13:03+00:00" }, { "name": "sebastian/version", diff --git a/hiltes/h2c/WS000001.0002 b/hiltes/h2c/WS000001.0002 index 4ac64af..7a64470 100644 --- a/hiltes/h2c/WS000001.0002 +++ b/hiltes/h2c/WS000001.0002 @@ -692,10 +692,10 @@ filiale;etikettnr;menge;modellnr;modellbez;bestandskz;abteilung;hauptwarengruppe 000000002;00194903376208;000000100;"NF0A493TUBF ";"W Simple Dome Tee Dress ";"E";000000111;00011101;111011;000000000;"20210510";"000000000";" ";"194903376208";0;5 000000002;00194903376253;000000100;"NF0A493TUBF ";"W Simple Dome Tee Dress ";"E";000000111;00011101;111011;000000000;"20210510";"000000000";" ";"194903376253";0;5 000000002;00194903376253;000000100;"NF0A493TUBF ";"W Simple Dome Tee Dress ";"E";000000111;00011101;111011;000000000;"20210510";"000000000";" ";"194903376253";0;5 -000000002;00194903489205;000000100;"NF0A557VJK3 ";"Gosei Puffer Jacket ";"E";000000111;00011145;111452;000000000;"20211004";"000000000";" ";"194903489205";0;5 +000000002;00194903489205;000000200;"NF0A557VJK3 ";"Gosei Puffer Jacket ";"E";000000111;00011145;111452;000000000;"20211004";"000000000";" ";"194903489205";0;5 000000002;00194904257483;000000100;"NF0A3KZUYXH ";"Explore Utility Tote ";"E";000000135;00013501;135011;000000000;"20210311";"000000000";" ";"194904257483";0;5 000000002;00194904379857;000000100;"NF0A48KMY1B ";"W Tka Glacier Snap-Neck Pullover ";"E";000000111;00011105;111051;000000000;"20210315";"000000000";" ";"194904379857";0;5 -000000002;00194904380679;000000100;"NF0A48KMY1B ";"W Tka Glacier Snap-Neck Pullover ";"E";000000111;00011105;111051;000000000;"20210315";"000000000";" ";"194904380679";0;5 +000000002;00194904380679;000000010;"NF0A48KMY1B ";"W Tka Glacier Snap-Neck Pullover ";"E";000000111;00011105;111051;000000000;"20210315";"000000000";" ";"194904380679";0;5 000000002;00194904380679;000000100;"NF0A48KMY1B ";"W Tka Glacier Snap-Neck Pullover ";"E";000000111;00011105;111051;000000000;"20210315";"000000000";" ";"194904380679";0;5 000000002;00194905263063;000000100;"NF0A52RYYXH ";"Bozer Cross Body ";"E";000000135;00013501;135012;000000000;"20210304";"000000000";" ";"194905263063";0;5 000000002;00194905263063;000000100;"NF0A52RYYXH ";"Bozer Cross Body ";"E";000000135;00013501;135012;000000000;"20210304";"000000000";" ";"194905263063";0;5 @@ -737,7 +737,7 @@ filiale;etikettnr;menge;modellnr;modellbez;bestandskz;abteilung;hauptwarengruppe 000000002;00194955933152;000000100;"DA2045-100 ";"Blazer Low X ";"E";000000121;00012115;121151;000000000;"20211006";"000000000";" ";"194955933152";0;5 000000002;00194955933176;000000100;"DA2045-100 ";"Blazer Low X ";"E";000000121;00012115;121151;000000000;"20211006";"000000000";" ";"194955933176";0;5 000000002;00194955933213;000000100;"DA2045-100 ";"Blazer Low X ";"E";000000121;00012115;121151;000000000;"20211006";"000000000";" ";"194955933213";0;5 -000000002;00194955933213;000000100;"DA2045-100 ";"Blazer Low X ";"E";000000121;00012115;121151;000000000;"20211006";"000000000";" ";"194955933213";0;5 +000000002;00194955933213;000099100;"DA2045-100 ";"Blazer Low X ";"E";000000121;00012115;121151;000000000;"20211006";"000000000";" ";"194955933213";0;5 000000002;00194955933220;000000100;"DA2045-100 ";"Blazer Low X ";"E";000000121;00012115;121151;000000000;"20211006";"000000000";" ";"194955933220";0;5 000000002;00194955933275;000000100;"DA2045-100 ";"Blazer Low X ";"E";000000121;00012115;121151;000000000;"20211006";"000000000";" ";"194955933275";0;5 000000002;00194955987209;000000100;"DD1068-001 ";"Air Huarache ";"E";000000121;00012101;121015;000000000;"20211101";"000000000";" ";"194955987209";0;5 diff --git a/src/Command/HiltesImportCommand.php b/src/Command/HiltesImportCommand.php index c2e563e..b9be897 100644 --- a/src/Command/HiltesImportCommand.php +++ b/src/Command/HiltesImportCommand.php @@ -58,13 +58,21 @@ class HiltesImportCommand extends Command * @var HiltesImport */ $hiltesImport = new HiltesImport($this->productRepository,$this->logger); - $hiltesImport->startImport(); + $r = $hiltesImport->startImport(); + if($r['error']){ + $io->error($r['text']); + $this->logger->error($r['text']); + return Command::FAILURE; + }else{ - $io->success('Done.'); + $pushStock = new SwPushStockCommand($this->stockRepository,$this->warehouseRepository,$this->logger); + $pushStock->execute($input,$output); - return Command::SUCCESS; + $io->success('Done.'); + return Command::SUCCESS; + } } } diff --git a/src/Command/SwPushStockCommand.php b/src/Command/SwPushStockCommand.php index 201be67..bdb7c06 100644 --- a/src/Command/SwPushStockCommand.php +++ b/src/Command/SwPushStockCommand.php @@ -3,13 +3,11 @@ namespace App\Command; use App\Helper\Shopware; -use App\Repository\StockRepository; +use App\Repository\ProductRepository; use Psr\Log\LoggerInterface; use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; @@ -20,15 +18,15 @@ use Symfony\Component\Console\Style\SymfonyStyle; class SwPushStockCommand extends Command { - private $stockRepository; + private $productRepository; private $logger; -// public function __construct(StockRepository $stockRepository, LoggerInterface $logger) -// { -// $this->stockRepository = $stockRepository; -// $this->logger = $logger; -// parent::__construct(); -// } + public function __construct(ProductRepository $productRepository, LoggerInterface $logger) + { + $this->productRepository = $productRepository; + $this->logger = $logger; + parent::__construct(); + } protected function configure(): void @@ -48,15 +46,66 @@ class SwPushStockCommand extends Command // // ... // } - $shopware = new Shopware(); + $shopware = new Shopware($this->logger); - $shopware->pushStock(); + + $products = $this->getProducts(); + + if (count($products) > 0) { + + foreach ($products as $product) { + + //prüfen ob Shopware ID vorhanden + if($product->getShopwareId() == null) { + + $swID = $this->getShopwareId($product); + + if($swID != null) { + $product->setShopwareId($swID->id); + }else{ + continue; + } + } + + + $shopware->setProduct($product); + } + } $io->success('Done.'); return Command::SUCCESS; } + protected function getProducts() + { + $products = $this->productRepository->findAll(); + $arrProducts = array(); + foreach ($products as $product) { + $arrProducts[$product->getGtin()] = $product; + } + + return $arrProducts; + } + + /** + * @param Product $product + * @return int|null + */ + protected function getShopwareId($product) + { + $shopware = new Shopware($this->logger); + $shopwareProduct = $shopware->getShopwareIdbyGtin($product->getGtin()); + if($shopwareProduct != null) { + dump($shopwareProduct); + $product->setShopwareId($shopwareProduct->id); + $this->productRepository->save($product, true); + } + + return $shopwareProduct; + + } + } diff --git a/src/Helper/HiltesImport.php b/src/Helper/HiltesImport.php index 605a7e3..8f30376 100644 --- a/src/Helper/HiltesImport.php +++ b/src/Helper/HiltesImport.php @@ -7,16 +7,12 @@ use App\Entity\Product; use App\Entity\Stock; use App\Entity\Warehouse; use App\Repository\ProductRepository; -use App\Repository\StockRepository; -use App\Repository\WarehouseRepository; -use Doctrine\ORM\EntityManager; use Psr\Log\LoggerInterface; use Symfony\Component\Finder\Finder; class HiltesImport { private $productRepository; - private $stockRepository; private $warehouseRepository; private $logger; protected $currentDirPath; @@ -24,9 +20,6 @@ class HiltesImport public function __construct(ProductRepository $productRepository, LoggerInterface $logger) { -// $this->stockRepository = $stockRepository; -// $this->warehouseRepository = $warehouseRepository; - $this->productRepository = $productRepository; $this->logger = $logger; @@ -34,7 +27,9 @@ class HiltesImport } - + /** + * @return array|void + */ public function startImport() { #*** Holt alle Dateien @@ -44,6 +39,7 @@ class HiltesImport if(is_file($file['realPath'])){ $this->loadFiles($file['realPath'],$file['fileSize']); }else{ + return array('error'=>1,'text'=>'Error is_file('.$file['realPath'].')'); } } @@ -52,6 +48,10 @@ class HiltesImport }else return array('error'=>1,'text'=>'Error in getFiles'); } + + /** + * @return bool + */ protected function getFiles() { $finder = Finder::create(); @@ -62,6 +62,8 @@ class HiltesImport # return $file->isDir() || \preg_match('/\.(php|json)$/', $file->getPathname()); #}); if ($finder->hasResults()) { + + dump($finder); foreach ($finder as $file) { $this->arrData['orgFiles']['data'][] = array( 'realPath' => $file->getRealPath(), @@ -79,9 +81,8 @@ class HiltesImport { $file = new \SplFileObject($srcFile); - - dump($file->getRealPath()); + $this->logger->info('Starte Import von ' . $file->getRealPath()); $c = 0; @@ -98,6 +99,9 @@ class HiltesImport $this->switchSaveData($this->splitLine($data)); } + // $em = $this->productRepository->getEntityManager(); + // $em->flush(); + dump($c . ' Datensätze importiert'); } protected function splitLine($str){ @@ -190,8 +194,8 @@ class HiltesImport #menge; $prod->setStock($stock); - #gtin; - $prod->setGtin($arr[1]); + #eanzuIdent; + $prod->setGtin($arr[13]); $prod->setShopwareId(""); diff --git a/src/Helper/Shopware.php b/src/Helper/Shopware.php index eed2e4f..16a4b23 100644 --- a/src/Helper/Shopware.php +++ b/src/Helper/Shopware.php @@ -2,14 +2,17 @@ namespace App\Helper; -use App\Entity\Products; -use App\Repository\ProductsRepository; + + + use Psr\Log\LoggerInterface; + use Vin\ShopwareSdk\Client\AdminAuthenticator; use Vin\ShopwareSdk\Client\GrantType\ClientCredentialsGrantType; use Vin\ShopwareSdk\Data\Context; use Vin\ShopwareSdk\Data\Criteria; use Vin\ShopwareSdk\Data\Entity\Order\OrderDefinition; +use Vin\ShopwareSdk\Data\Entity\Product\ProductDefinition; use Vin\ShopwareSdk\Data\Filter\EqualsFilter; use Vin\ShopwareSdk\Factory\RepositoryFactory; @@ -34,8 +37,12 @@ class Shopware try { $grantType = new ClientCredentialsGrantType($_ENV['SHOPWARE_API_ID'], $_ENV['SHOPWARE_API_KEY']); $adminClient = new AdminAuthenticator($grantType, $_ENV['SHOPWARE_API_URL']); + + //dump([$grantType, $adminClient,$_ENV['SHOPWARE_API_ID'], $_ENV['SHOPWARE_API_KEY']]); + return $adminClient->fetchAccessToken(); } catch (\Exception $e) { + dump($e->getMessage()); $this->logger->error($e->getMessage()); } } @@ -70,30 +77,58 @@ class Shopware return $orders->getEntities(); } - public function setProduct(Products $product){ + /** + * @param $prod + */ + public function setProduct($prod): void + { $context = new Context($_ENV['SHOPWARE_API_URL'], $this->shopwareAuth()); //prüfen ob Shopware Produktid schon bekannt ist - if($product->getProductId() == null){ + if($prod->getShopwareId() == null){ $this->logger->error('Shopware Produkt ID ist nicht bekannt'); return; } - $productRepository = RepositoryFactory::create(ProductDefinition::ENTITY_NAME); - $productRepository->update($product, $context); - } - public function pushStock() - { - $productRepository = new ProductsRepository(); - $products = $productRepository->findAll(); + dump($prod->getShopwareId()); - - - - foreach ($products as $product) { - $this->setProduct($product); + try { + $productRepository->update([ + 'id' => $prod->getShopwareId(), + 'stock' => $prod->getStock()->getInStock() + ], $context); + } catch (\ShopwareResponseException $e) { + $this->logger->error($e->getResponse()); } + } + + public function getShopwareIdbyGtin($gtin) + { + $context = new Context($_ENV['SHOPWARE_API_URL'], $this->shopwareAuth()); + + // Create the repository for the entity + $productRepository = RepositoryFactory::create(ProductDefinition::ENTITY_NAME); + + // Create the criteria + $criteria = new Criteria(); + $criteria->addFilter(new EqualsFilter('ean', $gtin)); + + $products = $productRepository->search($criteria, $context); + + //dump($products->getEntities()->first()); + + if($products->count() > 0){ + $productCollection = $products->getEntities(); + return $productCollection->first(); + //$prod->setShopwareId($products->getEntities()->first()->getId()); + //return $products->getEntities()->first(); + }else{ + return null; + } + + } + } \ No newline at end of file