From ce4c1d5bf8611897ac5b8fcd46fcd009b141af51 Mon Sep 17 00:00:00 2001 From: Dmytro Asieiev Date: Mon, 2 Sep 2024 14:53:59 +0300 Subject: [PATCH 1/3] CC-34258: Multi-select attribute values (Fixathon) --- composer.lock | 122 ++++++++++++------ .../common/common/product_attribute_key.csv | 1 + .../common/product_management_attribute.csv | 1 + .../ProductsRestApiDependencyProvider.php | 4 + .../product-detail-option.twig | 2 +- .../ProductAbstractHydratorStep.php | 22 +++- .../ProductAttributeConfig.php | 27 ++++ .../ProductAttributeDependencyProvider.php | 24 ++++ 8 files changed, 161 insertions(+), 42 deletions(-) create mode 100644 src/Pyz/Zed/ProductAttribute/ProductAttributeConfig.php create mode 100644 src/Pyz/Zed/ProductAttribute/ProductAttributeDependencyProvider.php diff --git a/composer.lock b/composer.lock index f028ece21f..6e4bc7f917 100644 --- a/composer.lock +++ b/composer.lock @@ -13509,16 +13509,16 @@ }, { "name": "spryker-shop/product-detail-page", - "version": "3.20.0", + "version": "3.20.1", "source": { "type": "git", "url": "https://github.com/spryker-shop/product-detail-page.git", - "reference": "ab7ac9858f1e4a353060c2c5bda94c50e38087a7" + "reference": "672e6d68ccd01c95bb9a651b53c8edfa98a78ae3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spryker-shop/product-detail-page/zipball/ab7ac9858f1e4a353060c2c5bda94c50e38087a7", - "reference": "ab7ac9858f1e4a353060c2c5bda94c50e38087a7", + "url": "https://api.github.com/repos/spryker-shop/product-detail-page/zipball/672e6d68ccd01c95bb9a651b53c8edfa98a78ae3", + "reference": "672e6d68ccd01c95bb9a651b53c8edfa98a78ae3", "shasum": "" }, "require": { @@ -13568,9 +13568,9 @@ ], "description": "ProductDetailPage module", "support": { - "source": "https://github.com/spryker-shop/product-detail-page/tree/3.20.0" + "source": "https://github.com/spryker-shop/product-detail-page/tree/3.20.1" }, - "time": "2023-12-27T10:44:32+00:00" + "time": "2024-09-02T08:22:17+00:00" }, { "name": "spryker-shop/product-discontinued-widget", @@ -41525,25 +41525,26 @@ }, { "name": "spryker/product-attribute", - "version": "1.13.0", + "version": "1.15.0", "source": { "type": "git", "url": "https://github.com/spryker/product-attribute.git", - "reference": "9e03d5a563f70478de276c24db8f900495c12774" + "reference": "c3074890a011d096bb11abd8cbb155be0e3d41b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spryker/product-attribute/zipball/9e03d5a563f70478de276c24db8f900495c12774", - "reference": "9e03d5a563f70478de276c24db8f900495c12774", + "url": "https://api.github.com/repos/spryker/product-attribute/zipball/c3074890a011d096bb11abd8cbb155be0e3d41b3", + "reference": "c3074890a011d096bb11abd8cbb155be0e3d41b3", "shasum": "" }, "require": { - "php": ">=8.0", + "php": ">=8.1", "spryker/acl-merchant-portal-extension": "^1.0.0", "spryker/glossary": "^3.8.0", "spryker/kernel": "^3.30.0", "spryker/locale": "^3.0.0 || ^4.0.0", "spryker/product": "^5.2.0 || ^6.0.0", + "spryker/product-attribute-extension": "^1.0.0", "spryker/propel-orm": "^1.2.0", "spryker/transfer": "^3.27.0", "spryker/util-encoding": "^2.0.0", @@ -41573,22 +41574,63 @@ ], "description": "ProductAttribute module", "support": { - "source": "https://github.com/spryker/product-attribute/tree/1.13.0" + "source": "https://github.com/spryker/product-attribute/tree/1.15.0" }, - "time": "2023-03-31T19:36:11+00:00" + "time": "2024-09-02T08:22:15+00:00" + }, + { + "name": "spryker/product-attribute-extension", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/spryker/product-attribute-extension.git", + "reference": "65b0ffc5636977201d37b6d62abceaf208b17e2a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spryker/product-attribute-extension/zipball/65b0ffc5636977201d37b6d62abceaf208b17e2a", + "reference": "65b0ffc5636977201d37b6d62abceaf208b17e2a", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "spryker/code-sniffer": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Spryker\\": "src/Spryker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "proprietary" + ], + "description": "ProductAttributeExtension module", + "support": { + "source": "https://github.com/spryker/product-attribute-extension/tree/1.0.0" + }, + "time": "2024-09-02T08:22:15+00:00" }, { "name": "spryker/product-attribute-gui", - "version": "1.6.0", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/spryker/product-attribute-gui.git", - "reference": "a5e9ca2267757a1434157691b15b5d715a58450d" + "reference": "fd202da5b61bd1ca85e22f2e6a39e6823d73518f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spryker/product-attribute-gui/zipball/a5e9ca2267757a1434157691b15b5d715a58450d", - "reference": "a5e9ca2267757a1434157691b15b5d715a58450d", + "url": "https://api.github.com/repos/spryker/product-attribute-gui/zipball/fd202da5b61bd1ca85e22f2e6a39e6823d73518f", + "reference": "fd202da5b61bd1ca85e22f2e6a39e6823d73518f", "shasum": "" }, "require": { @@ -41633,35 +41675,35 @@ ], "description": "ProductAttributeGui module", "support": { - "source": "https://github.com/spryker/product-attribute-gui/tree/1.6.0" + "source": "https://github.com/spryker/product-attribute-gui/tree/1.7.0" }, - "time": "2023-11-02T20:09:27+00:00" + "time": "2024-09-02T08:22:15+00:00" }, { "name": "spryker/product-attributes-rest-api", - "version": "1.0.0", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/spryker/product-attributes-rest-api.git", - "reference": "9d2a42bcba5338423d3da4731b8f5f1c7df99871" + "reference": "e40c51e427224fb4fab9edada5b156fd9cc0d9fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spryker/product-attributes-rest-api/zipball/9d2a42bcba5338423d3da4731b8f5f1c7df99871", - "reference": "9d2a42bcba5338423d3da4731b8f5f1c7df99871", + "url": "https://api.github.com/repos/spryker/product-attributes-rest-api/zipball/e40c51e427224fb4fab9edada5b156fd9cc0d9fd", + "reference": "e40c51e427224fb4fab9edada5b156fd9cc0d9fd", "shasum": "" }, "require": { - "php": ">=7.2", + "php": ">=8.1", "spryker/glue-application": "^1.0.0", "spryker/glue-application-extension": "^1.0.0", "spryker/kernel": "^3.33.0", "spryker/product-attribute": "^1.8.0", + "spryker/products-rest-api-extension": "^1.1.0", "spryker/symfony": "^3.0.0" }, "require-dev": { - "spryker/code-sniffer": "*", - "spryker/testify": "*" + "spryker/code-sniffer": "*" }, "type": "library", "extra": { @@ -41681,9 +41723,9 @@ "description": "ProductAttributesRestApi module", "support": { "issues": "https://github.com/spryker/product-attributes-rest-api/issues", - "source": "https://github.com/spryker/product-attributes-rest-api/tree/1.0.0" + "source": "https://github.com/spryker/product-attributes-rest-api/tree/1.1.0" }, - "time": "2020-10-05T14:05:22+00:00" + "time": "2024-09-02T08:22:15+00:00" }, { "name": "spryker/product-availabilities-rest-api", @@ -45070,16 +45112,16 @@ }, { "name": "spryker/product-management", - "version": "0.19.39", + "version": "0.19.41", "source": { "type": "git", "url": "https://github.com/spryker/product-management.git", - "reference": "62451f48b42a610195194e855fd6a1dea1eb90a6" + "reference": "dc3269b8a0a514a3dc49b69ba530e722669761a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spryker/product-management/zipball/62451f48b42a610195194e855fd6a1dea1eb90a6", - "reference": "62451f48b42a610195194e855fd6a1dea1eb90a6", + "url": "https://api.github.com/repos/spryker/product-management/zipball/dc3269b8a0a514a3dc49b69ba530e722669761a0", + "reference": "dc3269b8a0a514a3dc49b69ba530e722669761a0", "shasum": "" }, "require": { @@ -45147,9 +45189,9 @@ ], "description": "ProductManagement module", "support": { - "source": "https://github.com/spryker/product-management/tree/0.19.39" + "source": "https://github.com/spryker/product-management/tree/0.19.41" }, - "time": "2023-11-02T20:09:27+00:00" + "time": "2024-09-02T08:22:15+00:00" }, { "name": "spryker/product-management-extension", @@ -45250,16 +45292,16 @@ }, { "name": "spryker/product-merchant-portal-gui", - "version": "4.1.0", + "version": "4.3.0", "source": { "type": "git", "url": "https://github.com/spryker/product-merchant-portal-gui.git", - "reference": "88c53062d32cbbd5cd768190f13d7fd756224cca" + "reference": "cf00d4e817a3840baf7b47b7f957eb30a514284b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spryker/product-merchant-portal-gui/zipball/88c53062d32cbbd5cd768190f13d7fd756224cca", - "reference": "88c53062d32cbbd5cd768190f13d7fd756224cca", + "url": "https://api.github.com/repos/spryker/product-merchant-portal-gui/zipball/cf00d4e817a3840baf7b47b7f957eb30a514284b", + "reference": "cf00d4e817a3840baf7b47b7f957eb30a514284b", "shasum": "" }, "require": { @@ -45320,9 +45362,9 @@ ], "description": "ProductMerchantPortalGui module", "support": { - "source": "https://github.com/spryker/product-merchant-portal-gui/tree/4.1.0" + "source": "https://github.com/spryker/product-merchant-portal-gui/tree/4.3.0" }, - "time": "2024-05-16T14:02:12+00:00" + "time": "2024-09-02T08:22:15+00:00" }, { "name": "spryker/product-merchant-portal-gui-extension", diff --git a/data/import/common/common/product_attribute_key.csv b/data/import/common/common/product_attribute_key.csv index dede47c911..42330f527e 100644 --- a/data/import/common/common/product_attribute_key.csv +++ b/data/import/common/common/product_attribute_key.csv @@ -110,3 +110,4 @@ bundled_product,0 packaging_unit,1 value,1 upcs,0 +pc_operating_system,0 diff --git a/data/import/common/common/product_management_attribute.csv b/data/import/common/common/product_management_attribute.csv index 434e55ef74..fd461abddf 100644 --- a/data/import/common/common/product_management_attribute.csv +++ b/data/import/common/common/product_management_attribute.csv @@ -111,3 +111,4 @@ white_balance,text,no,,"auto, manual",White balance,Weißabgleich,"Auto, Manual" wi_fi,text,no,no,"yes, no",Wi-Fi,WLAN,"yes, no","ja, nein" width,text,yes,no,"4.2 cm, 3.6 cm, 4 cm",Width,Breite,, upcs,select,yes,yes,,UPCs,UPCs,, +pc_operating_system,multiselect,no,yes,"Windows 11,Windows 10,Ubuntu,Debian,macOS Sonoma,macOS Ventura",PC Operating System,PC-Betriebssystem,, diff --git a/src/Pyz/Glue/ProductsRestApi/ProductsRestApiDependencyProvider.php b/src/Pyz/Glue/ProductsRestApi/ProductsRestApiDependencyProvider.php index d14e1a8559..f827d7e285 100644 --- a/src/Pyz/Glue/ProductsRestApi/ProductsRestApiDependencyProvider.php +++ b/src/Pyz/Glue/ProductsRestApi/ProductsRestApiDependencyProvider.php @@ -7,6 +7,8 @@ namespace Pyz\Glue\ProductsRestApi; +use Spryker\Glue\ProductAttributesRestApi\Plugin\ProductsRestApi\MultiSelectAttributeAbstractProductsResourceExpanderPlugin; +use Spryker\Glue\ProductAttributesRestApi\Plugin\ProductsRestApi\MultiSelectAttributeConcreteProductsResourceExpanderPlugin; use Spryker\Glue\ProductConfigurationsRestApi\Plugin\ProductsRestApi\ProductConfigurationConcreteProductsResourceExpanderPlugin; use Spryker\Glue\ProductDiscontinuedRestApi\Plugin\ProductDiscontinuedConcreteProductsResourceExpanderPlugin; use Spryker\Glue\ProductReviewsRestApi\Plugin\ProductsRestApi\ProductReviewsAbstractProductsResourceExpanderPlugin; @@ -24,6 +26,7 @@ protected function getConcreteProductsResourceExpanderPlugins(): array new ProductDiscontinuedConcreteProductsResourceExpanderPlugin(), new ProductReviewsConcreteProductsResourceExpanderPlugin(), new ProductConfigurationConcreteProductsResourceExpanderPlugin(), + new MultiSelectAttributeConcreteProductsResourceExpanderPlugin(), // remove if the project is accept product attribute values as array of strings ]; } @@ -34,6 +37,7 @@ protected function getAbstractProductsResourceExpanderPlugins(): array { return [ new ProductReviewsAbstractProductsResourceExpanderPlugin(), + new MultiSelectAttributeAbstractProductsResourceExpanderPlugin(), // remove if the project is accept product attribute values as array of strings ]; } } diff --git a/src/Pyz/Yves/ProductDetailPage/Theme/default/components/molecules/product-detail-option/product-detail-option.twig b/src/Pyz/Yves/ProductDetailPage/Theme/default/components/molecules/product-detail-option/product-detail-option.twig index 75bcc8e00a..ccbab99102 100644 --- a/src/Pyz/Yves/ProductDetailPage/Theme/default/components/molecules/product-detail-option/product-detail-option.twig +++ b/src/Pyz/Yves/ProductDetailPage/Theme/default/components/molecules/product-detail-option/product-detail-option.twig @@ -17,7 +17,7 @@ {% if name is not empty %}
{{ ('product.attribute.' ~ name) | trans }}
-
{{ value }}
+
{{ value | join(', ') }}
{% endif %} {% endfor %} diff --git a/src/Pyz/Zed/DataImport/Business/Model/ProductAbstract/ProductAbstractHydratorStep.php b/src/Pyz/Zed/DataImport/Business/Model/ProductAbstract/ProductAbstractHydratorStep.php index 3f43510bd6..6eb213157f 100644 --- a/src/Pyz/Zed/DataImport/Business/Model/ProductAbstract/ProductAbstractHydratorStep.php +++ b/src/Pyz/Zed/DataImport/Business/Model/ProductAbstract/ProductAbstractHydratorStep.php @@ -204,7 +204,7 @@ protected function importProductAbstract(DataSetInterface $dataSet): void $productAbstractEntityTransfer ->setColorCode($dataSet[static::COLUMN_COLOR_CODE]) ->setFkTaxSet($dataSet[static::KEY_ID_TAX_SET]) - ->setAttributes(json_encode($dataSet[static::KEY_ATTRIBUTES])) + ->setAttributes(json_encode($this->formatMultiSelectProductAttributes($dataSet[static::KEY_ATTRIBUTES] ?? []))) ->setNewFrom($dataSet[static::COLUMN_NEW_FROM]) ->setNewTo($dataSet[static::COLUMN_NEW_TO]); @@ -328,4 +328,24 @@ protected function getCategoryProductOrder($categoryProductOrder): array return array_map('trim', $categoryProductOrder); } + + /** + * @param array $attributes + * + * @return array + */ + protected function formatMultiSelectProductAttributes(array $attributes): array + { + foreach ($attributes as $key => $value) { + if (is_string($value) && preg_match('/^\[.*\]$/', $value)) { + $json = str_replace("'", '"', $value); + $decoded = json_decode($json, true); + if (json_last_error() === JSON_ERROR_NONE && is_array($decoded)) { + $attributes[$key] = $decoded; + } + } + } + + return $attributes; + } } diff --git a/src/Pyz/Zed/ProductAttribute/ProductAttributeConfig.php b/src/Pyz/Zed/ProductAttribute/ProductAttributeConfig.php new file mode 100644 index 0000000000..dadf392999 --- /dev/null +++ b/src/Pyz/Zed/ProductAttribute/ProductAttributeConfig.php @@ -0,0 +1,27 @@ + + */ + public function getAttributeAvailableTypes(): array + { + return array_merge( + parent::getAttributeAvailableTypes(), + [ + SharedProductAttributeConfig::INPUT_TYPE_MULTISELECT => SharedProductAttributeConfig::INPUT_TYPE_MULTISELECT, + ], + ); + } +} diff --git a/src/Pyz/Zed/ProductAttribute/ProductAttributeDependencyProvider.php b/src/Pyz/Zed/ProductAttribute/ProductAttributeDependencyProvider.php new file mode 100644 index 0000000000..43d098b766 --- /dev/null +++ b/src/Pyz/Zed/ProductAttribute/ProductAttributeDependencyProvider.php @@ -0,0 +1,24 @@ + + */ + protected function getProductAttributeDataFormatterPlugins(): array + { + return [ + new MultiSelectProductAttributeDataFormatterPlugin(), + ]; + } +} From 60fd6f2df273baa5d0dd4e597de95df9877a031b Mon Sep 17 00:00:00 2001 From: Dmytro Asieiev Date: Mon, 2 Sep 2024 15:05:17 +0300 Subject: [PATCH 2/3] CC-34258: Multi-select attribute values (Fixathon) --- data/import/common/common/product_abstract.csv | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/import/common/common/product_abstract.csv b/data/import/common/common/product_abstract.csv index 45bedb04c7..73052fdd2f 100644 --- a/data/import/common/common/product_abstract.csv +++ b/data/import/common/common/product_abstract.csv @@ -114,8 +114,8 @@ smartwatches,4,111,Sony SmartWatch,Sony SmartWatch,/en/sony-smartwatch-111,/de/s pcs-and-workstations,14,113,Acer Veriton 6,Acer Veriton 6,/en/acer-veriton-6-113,/de/acer-veriton-6-113,processor_threads,3.4 GHz,,,product_type,PC,,,bus_type,DMI3,,,processor_cores,4,brand,Acer,color,black,,,#000000,"Rock-solid technology drives business The Veriton 6 Series comes in a wide range of form factors to meet various business needs. Intel® Core™ processors and fast DDR4 memory deliver premium performance, while a powerful software suite offers security and manageability to drive business efficiency. The Veriton 6 Series comes in form factors ranging from 3 to 30 liters, to fit all office spaces and business demands. Perform more tasks at once with 3 rd generation Intel ® Core ™ processors supporting Intel ™ vPro Technology plus up to 32 GB of fast DDR4 memory. Storage options from a DVD drive to Intel ® Rapid Storage Technology with RAID ensure a solid match for your needs. The 100% solid capacitor design provides the stability, reliability and longevity essential to meet the power needs of the high-end processors and other components in the Veriton 6 Series, enabling them to run today's most demanding applications. A convenient, modular design allows components to be easily swapped or upgraded.","Erfüllt jede Anforderung Mit dem leistungsstarken HP EliteDesk 800 SFF erhalten Sie erstklassige Produktivität, branchenführende Zuverlässigkeit, Sicherheit und Verwaltbarkeit sowie ein einzigartiges Lösungsportfolio in einem kompakten, platzsparenden Design. - Schützen Sie Ihren PC und sorgen Sie für kontinuierlichen Betrieb mit verschiedenen Sicherheitslösungen, die Sicherheitslücken verhindern, darunter HP BIOSphere mit Sure Start. Erweitern Sie die Lebensdauer Ihrer Investitionen mit einem werkzeugfreien Gehäuse und einer Reihe von Erweiterungssteckplätzen, Einschüben und Anschlüssen für Ihre anspruchsvollsten Geschäftsanforderungen. Genießen Sie die Sicherheit eines PCs, der 120.000 Stunden im HP Total Test Process durchlaufen hat und die MIL-STD-Teststandards erfüllt. Erhöhen Sie die Zuverlässigkeit in staubigen Umgebungen mit dem optionalen Staubfilter.",Tax Exempt,Acer Veriton 6,Acer Veriton 6,"Acer,Tax Exempt","Acer,Tax Exempt",Rock-solid technology drives business The Veriton 6 Series comes in a wide range of form factors to meet various business needs. Intel® Core™ processors an,"Erfüllt jede Anforderung Mit dem leistungsstarken HP EliteDesk 800 SFF erhalten Sie erstklassige Produktivität, branchenführende Zuverlässigkeit, Sicherhei",, "pcs-and-workstations,variant-showcase","17,31",114,ASUS M,ASUS M,/en/asus-m-114,/de/asus-m-114,processor_cores,4,,,thermal_design_power,84 W,,,internal_memory,8 GB,,,bus_type,DMI,brand,ASUS,,,,,,"The Perfect Home Computer ASUS M32 desktop PC performs everything from your daily tasks to playing 4K Ultra HD video with enhanced energy efficiency. Multitask with several apps at once thanks to the 4th gen Intel® Core™ processor. Power visually demanding programs with discrete NVIDIA graphics. Whatever you choose to do, M32 makes it happen with unique optimization for increased performance or energy savings when you need it. M32 desktop PC features discrete NVIDIA or AMD graphics card that delivers twice the performance of the previous generation. Watch up to 4K Ultra HD video and enjoy smoother visuals and more responsiveness when playing the latest games. Giving you reliability with convenience, M32 desktop PC monitors internal temperatures and intelligently adjusts fan speed to ensure efficient cooling while staying under 25dB of sound at idle—quieter than a library.","Erfüllt jede Anforderung Mit dem leistungsstarken HP EliteDesk 800 SFF erhalten Sie erstklassige Produktivität, branchenführende Zuverlässigkeit, Sicherheit und Verwaltbarkeit sowie ein einzigartiges Lösungsportfolio in einem kompakten, platzsparenden Design. - Schützen Sie Ihren PC und sorgen Sie für kontinuierlichen Betrieb mit verschiedenen Sicherheitslösungen, die Sicherheitslücken verhindern, darunter HP BIOSphere mit Sure Start. Erweitern Sie die Lebensdauer Ihrer Investitionen mit einem werkzeugfreien Gehäuse und einer Reihe von Erweiterungssteckplätzen, Einschüben und Anschlüssen für Ihre anspruchsvollsten Geschäftsanforderungen. Genießen Sie die Sicherheit eines PCs, der 120.000 Stunden im HP Total Test Process durchlaufen hat und die MIL-STD-Teststandards erfüllt. Erhöhen Sie die Zuverlässigkeit in staubigen Umgebungen mit dem optionalen Staubfilter.",Tax Exempt,ASUS M,ASUS M,"ASUS,Tax Exempt","ASUS,Tax Exempt",The Perfect Home Computer ASUS M32 desktop PC performs everything from your daily tasks to playing 4K Ultra HD video with enhanced energy efficiency. Multi,"Erfüllt jede Anforderung Mit dem leistungsstarken HP EliteDesk 800 SFF erhalten Sie erstklassige Produktivität, branchenführende Zuverlässigkeit, Sicherhei",, "pcs-and-workstations,variant-showcase","1,17",115,DELL OptiPlex 3020,DELL OptiPlex 3020,/en/dell-optiplex-3020-115,/de/dell-optiplex-3020-115,processor_cache,3 MB,,,bus_type,DMI,,,processor_threads,2,,,tcase,72 °,brand,DELL,,,upcs,884116131359,,"Great performance. Outstanding value Get the job done with business-ready desktops offering superb value with strong performance, exceptional security and easy serviceability. Stop advanced threats and zero-day attacks with Dell Data Protection | Protected Workspace — a proactive, real-time solution for malware protection. Ensure authorized access through multifactor, single sign-on (SSO) and preboot authentication with Dell Data Protection | Security Tools. Streamline administration with integration into Dell KACE appliances, Microsoft System Center and industry-standard tools. Deploy with flexibility through multiple chassis options. Select the small form factor chassis, optimized for constrained workspaces, or the expandable mini tower with support for up to four PCIe cards.","Erfüllt jede Anforderung Mit dem leistungsstarken HP EliteDesk 800 SFF erhalten Sie erstklassige Produktivität, branchenführende Zuverlässigkeit, Sicherheit und Verwaltbarkeit sowie ein einzigartiges Lösungsportfolio in einem kompakten, platzsparenden Design. - Schützen Sie Ihren PC und sorgen Sie für kontinuierlichen Betrieb mit verschiedenen Sicherheitslösungen, die Sicherheitslücken verhindern, darunter HP BIOSphere mit Sure Start. Erweitern Sie die Lebensdauer Ihrer Investitionen mit einem werkzeugfreien Gehäuse und einer Reihe von Erweiterungssteckplätzen, Einschüben und Anschlüssen für Ihre anspruchsvollsten Geschäftsanforderungen. Genießen Sie die Sicherheit eines PCs, der 120.000 Stunden im HP Total Test Process durchlaufen hat und die MIL-STD-Teststandards erfüllt. Erhöhen Sie die Zuverlässigkeit in staubigen Umgebungen mit dem optionalen Staubfilter.",Tax Exempt,DELL OptiPlex 3020,DELL OptiPlex 3020,"DELL,Tax Exempt","DELL,Tax Exempt","Great performance. Outstanding value Get the job done with business-ready desktops offering superb value with strong performance, exceptional security and ","Erfüllt jede Anforderung Mit dem leistungsstarken HP EliteDesk 800 SFF erhalten Sie erstklassige Produktivität, branchenführende Zuverlässigkeit, Sicherhei",, -"pcs-and-workstations,variant-showcase","13,26",116,Fujitsu CELSIUS M740,Fujitsu CELSIUS M740,/en/fujitsu-celsius-m740-116,/de/fujitsu-celsius-m740-116,processor_cores,4,,,processor_threads,4,,,bus_type,QPI,,,tcase,66 °,brand,Fujitsu,,,,,,"Perfomance you can count on. Next generation Intel® Xeon® processors, high performing graphics subsystems, quad-channel memory technology and high-speed hard disk drives. The CELSIUS M740 desktop workstation has been optimized to combat today’s professional and technical challenges. It can be individually configured, helping you to enhance your productivity. The CELSIUS M740power is certified for Medical EMC standards IEC60601-1-2 to perform in healthcare environments. To round things off, a near-silent noise emission of 20 dB(A) allows you to work comfortably in the most quiet of working environments. High product standards thanks to top-quality components and comprehensive testing in certified in-house laboratories for 24/7 operation.","Erfüllt jede Anforderung Mit dem leistungsstarken HP EliteDesk 800 SFF erhalten Sie erstklassige Produktivität, branchenführende Zuverlässigkeit, Sicherheit und Verwaltbarkeit sowie ein einzigartiges Lösungsportfolio in einem kompakten, platzsparenden Design. - Schützen Sie Ihren PC und sorgen Sie für kontinuierlichen Betrieb mit verschiedenen Sicherheitslösungen, die Sicherheitslücken verhindern, darunter HP BIOSphere mit Sure Start. Erweitern Sie die Lebensdauer Ihrer Investitionen mit einem werkzeugfreien Gehäuse und einer Reihe von Erweiterungssteckplätzen, Einschüben und Anschlüssen für Ihre anspruchsvollsten Geschäftsanforderungen. Genießen Sie die Sicherheit eines PCs, der 120.000 Stunden im HP Total Test Process durchlaufen hat und die MIL-STD-Teststandards erfüllt. Erhöhen Sie die Zuverlässigkeit in staubigen Umgebungen mit dem optionalen Staubfilter.",Tax Exempt,Fujitsu CELSIUS M740,Fujitsu CELSIUS M740,"Fujitsu,Tax Exempt","Fujitsu,Tax Exempt","Perfomance you can count on. Next generation Intel® Xeon® processors, high performing graphics subsystems, quad-channel memory technology and high-speed ha","Erfüllt jede Anforderung Mit dem leistungsstarken HP EliteDesk 800 SFF erhalten Sie erstklassige Produktivität, branchenführende Zuverlässigkeit, Sicherhei",, -"pcs-and-workstations,variant-showcase","10,24",117,Fujitsu ESPRIMO D556,Fujitsu ESPRIMO D556,/en/fujitsu-esprimo-d556-117,/de/fujitsu-esprimo-d556-117,processor_frequency,3.7 GHz,,,processor_cores,2,,,bus_type,DMI3,,,tcase,65 °,brand,Fujitsu,,,,,,The FUJITSU ESPRIMO Desktop provides high-quality computing for your daily office tasks. It supports attractive price points and delivers the continuity needed for daily operations. Your valuable business data is protected by the latest TPM controller and the Erasedisk option. To meet your specific hardware needs it can be either individually configured or customized.,"Erfüllt jede Anforderung Mit dem leistungsstarken HP EliteDesk 800 SFF erhalten Sie erstklassige Produktivität, branchenführende Zuverlässigkeit, Sicherheit und Verwaltbarkeit sowie ein einzigartiges Lösungsportfolio in einem kompakten, platzsparenden Design. - Schützen Sie Ihren PC und sorgen Sie für kontinuierlichen Betrieb mit verschiedenen Sicherheitslösungen, die Sicherheitslücken verhindern, darunter HP BIOSphere mit Sure Start. Erweitern Sie die Lebensdauer Ihrer Investitionen mit einem werkzeugfreien Gehäuse und einer Reihe von Erweiterungssteckplätzen, Einschüben und Anschlüssen für Ihre anspruchsvollsten Geschäftsanforderungen. Genießen Sie die Sicherheit eines PCs, der 120.000 Stunden im HP Total Test Process durchlaufen hat und die MIL-STD-Teststandards erfüllt. Erhöhen Sie die Zuverlässigkeit in staubigen Umgebungen mit dem optionalen Staubfilter.",Tax Exempt,Fujitsu ESPRIMO D556,Fujitsu ESPRIMO D556,"Fujitsu,Tax Exempt","Fujitsu,Tax Exempt",The FUJITSU ESPRIMO Desktop provides high-quality computing for your daily office tasks. It supports attractive price points and delivers the continuity n,"Erfüllt jede Anforderung Mit dem leistungsstarken HP EliteDesk 800 SFF erhalten Sie erstklassige Produktivität, branchenführende Zuverlässigkeit, Sicherhei",, +"pcs-and-workstations,variant-showcase","13,26",116,Fujitsu CELSIUS M740,Fujitsu CELSIUS M740,/en/fujitsu-celsius-m740-116,/de/fujitsu-celsius-m740-116,pc_operating_system,"['Windows 11', 'Windows 10', 'Ubuntu']",,,processor_threads,4,,,bus_type,QPI,,,tcase,66 °,brand,Fujitsu,,,,,,"Perfomance you can count on. Next generation Intel® Xeon® processors, high performing graphics subsystems, quad-channel memory technology and high-speed hard disk drives. The CELSIUS M740 desktop workstation has been optimized to combat today’s professional and technical challenges. It can be individually configured, helping you to enhance your productivity. The CELSIUS M740power is certified for Medical EMC standards IEC60601-1-2 to perform in healthcare environments. To round things off, a near-silent noise emission of 20 dB(A) allows you to work comfortably in the most quiet of working environments. High product standards thanks to top-quality components and comprehensive testing in certified in-house laboratories for 24/7 operation.","Erfüllt jede Anforderung Mit dem leistungsstarken HP EliteDesk 800 SFF erhalten Sie erstklassige Produktivität, branchenführende Zuverlässigkeit, Sicherheit und Verwaltbarkeit sowie ein einzigartiges Lösungsportfolio in einem kompakten, platzsparenden Design. - Schützen Sie Ihren PC und sorgen Sie für kontinuierlichen Betrieb mit verschiedenen Sicherheitslösungen, die Sicherheitslücken verhindern, darunter HP BIOSphere mit Sure Start. Erweitern Sie die Lebensdauer Ihrer Investitionen mit einem werkzeugfreien Gehäuse und einer Reihe von Erweiterungssteckplätzen, Einschüben und Anschlüssen für Ihre anspruchsvollsten Geschäftsanforderungen. Genießen Sie die Sicherheit eines PCs, der 120.000 Stunden im HP Total Test Process durchlaufen hat und die MIL-STD-Teststandards erfüllt. Erhöhen Sie die Zuverlässigkeit in staubigen Umgebungen mit dem optionalen Staubfilter.",Tax Exempt,Fujitsu CELSIUS M740,Fujitsu CELSIUS M740,"Fujitsu,Tax Exempt","Fujitsu,Tax Exempt","Perfomance you can count on. Next generation Intel® Xeon® processors, high performing graphics subsystems, quad-channel memory technology and high-speed ha","Erfüllt jede Anforderung Mit dem leistungsstarken HP EliteDesk 800 SFF erhalten Sie erstklassige Produktivität, branchenführende Zuverlässigkeit, Sicherhei",, +"pcs-and-workstations,variant-showcase","10,24",117,Fujitsu ESPRIMO D556,Fujitsu ESPRIMO D556,/en/fujitsu-esprimo-d556-117,/de/fujitsu-esprimo-d556-117,processor_frequency,3.7 GHz,,,pc_operating_system,"['Windows 11', 'Windows 10']",,,bus_type,DMI3,,,tcase,65 °,brand,Fujitsu,,,,,,The FUJITSU ESPRIMO Desktop provides high-quality computing for your daily office tasks. It supports attractive price points and delivers the continuity needed for daily operations. Your valuable business data is protected by the latest TPM controller and the Erasedisk option. To meet your specific hardware needs it can be either individually configured or customized.,"Erfüllt jede Anforderung Mit dem leistungsstarken HP EliteDesk 800 SFF erhalten Sie erstklassige Produktivität, branchenführende Zuverlässigkeit, Sicherheit und Verwaltbarkeit sowie ein einzigartiges Lösungsportfolio in einem kompakten, platzsparenden Design. - Schützen Sie Ihren PC und sorgen Sie für kontinuierlichen Betrieb mit verschiedenen Sicherheitslösungen, die Sicherheitslücken verhindern, darunter HP BIOSphere mit Sure Start. Erweitern Sie die Lebensdauer Ihrer Investitionen mit einem werkzeugfreien Gehäuse und einer Reihe von Erweiterungssteckplätzen, Einschüben und Anschlüssen für Ihre anspruchsvollsten Geschäftsanforderungen. Genießen Sie die Sicherheit eines PCs, der 120.000 Stunden im HP Total Test Process durchlaufen hat und die MIL-STD-Teststandards erfüllt. Erhöhen Sie die Zuverlässigkeit in staubigen Umgebungen mit dem optionalen Staubfilter.",Tax Exempt,Fujitsu ESPRIMO D556,Fujitsu ESPRIMO D556,"Fujitsu,Tax Exempt","Fujitsu,Tax Exempt",The FUJITSU ESPRIMO Desktop provides high-quality computing for your daily office tasks. It supports attractive price points and delivers the continuity n,"Erfüllt jede Anforderung Mit dem leistungsstarken HP EliteDesk 800 SFF erhalten Sie erstklassige Produktivität, branchenführende Zuverlässigkeit, Sicherhei",, pcs-and-workstations,2,118,Fujitsu ESPRIMO E420,Fujitsu ESPRIMO E420,/en/fujitsu-esprimo-e420-118,/de/fujitsu-esprimo-e420-118,processor_cache,6 MB,,,bus_type,DMI,,,processor_model,i5-4590,,,product_type,PC,brand,Fujitsu,color,black,,,#000000,"Energy Efficiency As energy saving is one of the core components of Fujitsu’ approach to the environment, we permanently try to improve the energy efficiency of our products. The Fujitsu ESPRIMO E420 features proven technology regarding Intel® chipset and processor and an 85% energy efficient power supply. Fujitsu is committed to eliminating the use of harmful and potentially harmful substances in its products and production processes in order to minimize risk to end users and to the environment. This strategy is captured in Environmental Guideline FTS03230 and forms the basis on which all Fujitsu's products are designed. Especially for Fujitsu ESPRIMO PCs this means that all used printed circuit boards are halogen free. Furthermore they are compliant with several certificates awarding environmental conscience such as ENERGY STAR® and EPEAT.","Erfüllt jede Anforderung Mit dem leistungsstarken HP EliteDesk 800 SFF erhalten Sie erstklassige Produktivität, branchenführende Zuverlässigkeit, Sicherheit und Verwaltbarkeit sowie ein einzigartiges Lösungsportfolio in einem kompakten, platzsparenden Design. - Schützen Sie Ihren PC und sorgen Sie für kontinuierlichen Betrieb mit verschiedenen Sicherheitslösungen, die Sicherheitslücken verhindern, darunter HP BIOSphere mit Sure Start. Erweitern Sie die Lebensdauer Ihrer Investitionen mit einem werkzeugfreien Gehäuse und einer Reihe von Erweiterungssteckplätzen, Einschüben und Anschlüssen für Ihre anspruchsvollsten Geschäftsanforderungen. Genießen Sie die Sicherheit eines PCs, der 120.000 Stunden im HP Total Test Process durchlaufen hat und die MIL-STD-Teststandards erfüllt. Erhöhen Sie die Zuverlässigkeit in staubigen Umgebungen mit dem optionalen Staubfilter.",Tax Exempt,Fujitsu ESPRIMO E420,Fujitsu ESPRIMO E420,"Fujitsu,Tax Exempt","Fujitsu,Tax Exempt","Energy Efficiency As energy saving is one of the core components of Fujitsu’ approach to the environment, we permanently try to improve the energy efficien","Erfüllt jede Anforderung Mit dem leistungsstarken HP EliteDesk 800 SFF erhalten Sie erstklassige Produktivität, branchenführende Zuverlässigkeit, Sicherhei",, pcs-and-workstations,6,119,Fujitsu ESPRIMO E920,Fujitsu ESPRIMO E920,/en/fujitsu-esprimo-e920-119,/de/fujitsu-esprimo-e920-119,internal_memory,32 GB,,,intel_smart_cache,yes,,,product_type,PC,,,processor_cache,6 MB,brand,Fujitsu,color,red,,,#DC2E09,"Green IT Fujitsu is committed to eliminating the use of harmful and potentially harmful substances in its products and production processes in order to minimize risk to end users and to the environment. This strategy is captured in Environmental Guideline FTS03230 and forms the basis on which all Fujitsu's products are designed. Especially for Fujitsu ESPRIMO PCs this means that all used printed circuit boards are halogen free. Furthermore they are compliant with several certificates awarding environmental conscience such as ENERGY STAR® and EPEAT. As energy saving is one of the core components of Fujitsu’ approach to the environment, we permanently try to improve the energy efficiency of our products. The Fujitsu ESPRIMO E920 features latest technology regarding Intel® chipset and processor and optional an up to 94% energy efficient power supply. Furthermore it delivers enhanced power management settings and optional 0-Watt power consumption in off-mode.","Erfüllt jede Anforderung Mit dem leistungsstarken HP EliteDesk 800 SFF erhalten Sie erstklassige Produktivität, branchenführende Zuverlässigkeit, Sicherheit und Verwaltbarkeit sowie ein einzigartiges Lösungsportfolio in einem kompakten, platzsparenden Design. - Schützen Sie Ihren PC und sorgen Sie für kontinuierlichen Betrieb mit verschiedenen Sicherheitslösungen, die Sicherheitslücken verhindern, darunter HP BIOSphere mit Sure Start. Erweitern Sie die Lebensdauer Ihrer Investitionen mit einem werkzeugfreien Gehäuse und einer Reihe von Erweiterungssteckplätzen, Einschüben und Anschlüssen für Ihre anspruchsvollsten Geschäftsanforderungen. Genießen Sie die Sicherheit eines PCs, der 120.000 Stunden im HP Total Test Process durchlaufen hat und die MIL-STD-Teststandards erfüllt. Erhöhen Sie die Zuverlässigkeit in staubigen Umgebungen mit dem optionalen Staubfilter.",Tax Exempt,Fujitsu ESPRIMO E920,Fujitsu ESPRIMO E920,"Fujitsu,Tax Exempt","Fujitsu,Tax Exempt",Green IT Fujitsu is committed to eliminating the use of harmful and potentially harmful substances in its products and production processes in order to min,"Erfüllt jede Anforderung Mit dem leistungsstarken HP EliteDesk 800 SFF erhalten Sie erstklassige Produktivität, branchenführende Zuverlässigkeit, Sicherhei",, "pcs-and-workstations,variant-showcase","14,27",120,Fujitsu ESPRIMO P556,Fujitsu ESPRIMO P556,/en/fujitsu-esprimo-p556-120,/de/fujitsu-esprimo-p556-120,processor_operating_models,64-bit,,,processor_threads,4,,,processor_cores,2,,,pci_express_slots_version,3,brand,Fujitsu,,,,,,"High performance and best price/performance ratio As energy saving is one of the core components of Fujitsu’ approach to the environment, we permanently try to improve the energy efficiency of our products. The Fujitsu ESPRIMO E920 features latest technology regarding Intel® chipset and processor and optional an up to 94% energy efficient power supply. Furthermore it delivers enhanced power management settings and optional 0-Watt power consumption in off-mode. Outstanding quality and stable functions based on German production standards. The development, production and functionality tests - all under one roof in Germany","Erfüllt jede Anforderung Mit dem leistungsstarken HP EliteDesk 800 SFF erhalten Sie erstklassige Produktivität, branchenführende Zuverlässigkeit, Sicherheit und Verwaltbarkeit sowie ein einzigartiges Lösungsportfolio in einem kompakten, platzsparenden Design. - Schützen Sie Ihren PC und sorgen Sie für kontinuierlichen Betrieb mit verschiedenen Sicherheitslösungen, die Sicherheitslücken verhindern, darunter HP BIOSphere mit Sure Start. Erweitern Sie die Lebensdauer Ihrer Investitionen mit einem werkzeugfreien Gehäuse und einer Reihe von Erweiterungssteckplätzen, Einschüben und Anschlüssen für Ihre anspruchsvollsten Geschäftsanforderungen. Genießen Sie die Sicherheit eines PCs, der 120.000 Stunden im HP Total Test Process durchlaufen hat und die MIL-STD-Teststandards erfüllt. Erhöhen Sie die Zuverlässigkeit in staubigen Umgebungen mit dem optionalen Staubfilter.",Tax Exempt,Fujitsu ESPRIMO P556,Fujitsu ESPRIMO P556,"Fujitsu,Tax Exempt","Fujitsu,Tax Exempt","High performance and best price/performance ratio As energy saving is one of the core components of Fujitsu’ approach to the environment, we permanently tr","Erfüllt jede Anforderung Mit dem leistungsstarken HP EliteDesk 800 SFF erhalten Sie erstklassige Produktivität, branchenführende Zuverlässigkeit, Sicherhei",, From 5c97f347f058a1b96985ca9c11535c439edf0727 Mon Sep 17 00:00:00 2001 From: Dmytro Asieiev Date: Mon, 2 Sep 2024 16:06:51 +0300 Subject: [PATCH 3/3] CC-34258: Adjusted data-import step [skip ci] --- .../Model/ProductAbstract/ProductAbstractHydratorStep.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Pyz/Zed/DataImport/Business/Model/ProductAbstract/ProductAbstractHydratorStep.php b/src/Pyz/Zed/DataImport/Business/Model/ProductAbstract/ProductAbstractHydratorStep.php index 6eb213157f..08f8b02ad8 100644 --- a/src/Pyz/Zed/DataImport/Business/Model/ProductAbstract/ProductAbstractHydratorStep.php +++ b/src/Pyz/Zed/DataImport/Business/Model/ProductAbstract/ProductAbstractHydratorStep.php @@ -229,7 +229,7 @@ protected function importProductAbstractLocalizedAttributes(DataSetInterface $da ->setMetaDescription($localizedAttributes[static::COLUMN_META_DESCRIPTION]) ->setMetaKeywords($localizedAttributes[static::COLUMN_META_KEYWORDS]) ->setFkLocale($idLocale) - ->setAttributes(json_encode($localizedAttributes[static::KEY_ATTRIBUTES])); + ->setAttributes(json_encode($this->formatMultiSelectProductAttributes($localizedAttributes[static::KEY_ATTRIBUTES]))); $localizedAttributeTransfer[] = [ static::COLUMN_ABSTRACT_SKU => $dataSet[static::COLUMN_ABSTRACT_SKU],