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