Skip to content

Commit 1146503

Browse files
Use the strict option for in_array to allow numerical SKUs
1 parent 19e9ada commit 1146503

File tree

2 files changed

+54
-1
lines changed

2 files changed

+54
-1
lines changed

app/code/Magento/ConfigurableImportExport/Model/Import/Product/Type/Configurable.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -937,7 +937,7 @@ public function isRowValid(array $rowData, $rowNum, $isNewProduct = true)
937937
}
938938
foreach ($dataWithExtraVirtualRows as $option) {
939939
if (isset($option['_super_products_sku'])) {
940-
if (in_array($option['_super_products_sku'], $skus)) {
940+
if (in_array($option['_super_products_sku'], $skus, true)) {
941941
$error = true;
942942
$this->_entityModel->addRowError(
943943
sprintf(

app/code/Magento/ConfigurableImportExport/Test/Unit/Model/Import/Product/Type/ConfigurableTest.php

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -586,8 +586,55 @@ public function testIsRowValid()
586586
'_type' => 'configurable',
587587
'_product_websites' => 'website_1',
588588
];
589+
// Checking that variations with duplicate sku are invalid
590+
$duplicateVariationSKU = 'configurableskuI22DuplicateVariation';
591+
$duplicateVariationProduct = [
592+
'sku' => $duplicateVariationSKU,
593+
'store_view_code' => null,
594+
'attribute_set_code' => 'Default',
595+
'product_type' => 'configurable',
596+
'name' => 'Configurable Product with duplicate SKUs in variations',
597+
'product_websites' => 'website_1',
598+
'configurable_variation_labels' => 'testattr2=Select Color, testattr3=Select Size',
599+
'configurable_variations' => 'sku=testconf2-attr2val1-testattr3v1,'
600+
. 'testattr2=attr2val1,'
601+
. 'testattr3=testattr3v1,'
602+
. 'display=1|sku=testconf2-attr2val1-testattr3v1,'
603+
. 'testattr2=attr2val1,'
604+
. 'testattr3=testattr3v2,'
605+
. 'display=0',
606+
'_store' => null,
607+
'_attribute_set' => 'Default',
608+
'_type' => 'configurable',
609+
'_product_websites' => 'website_1',
610+
];
611+
// Checking that variations with SKUs that are the same when interpreted as number,
612+
// but different when interpreted as string are valid
613+
$nonDuplicateVariationSKU = 'configurableskuI22NonDuplicateVariation';
614+
$nonDuplicateVariationProduct = [
615+
'sku' => $nonDuplicateVariationSKU,
616+
'store_view_code' => null,
617+
'attribute_set_code' => 'Default',
618+
'product_type' => 'configurable',
619+
'name' => 'Configurable Product with different SKUs in variations',
620+
'product_websites' => 'website_1',
621+
'configurable_variation_labels' => 'testattr2=Select Color, testattr3=Select Size',
622+
'configurable_variations' => 'sku=1234.10,'
623+
. 'testattr2=attr2val1,'
624+
. 'testattr3=testattr3v1,'
625+
. 'display=1|sku=1234.1,'
626+
. 'testattr2=attr2val1,'
627+
. 'testattr3=testattr3v2,'
628+
. 'display=0',
629+
'_store' => null,
630+
'_attribute_set' => 'Default',
631+
'_type' => 'configurable',
632+
'_product_websites' => 'website_1',
633+
];
589634
$bunch[] = $badProduct;
590635
$bunch[] = $caseInsensitiveProduct;
636+
$bunch[] = $duplicateVariationProduct;
637+
$bunch[] = $nonDuplicateVariationProduct;
591638
// Set _attributes to avoid error in Magento\CatalogImportExport\Model\Import\Product\Type\AbstractType.
592639
$this->setPropertyValue($this->configurable, '_attributes', [
593640
$badProduct[\Magento\CatalogImportExport\Model\Import\Product::COL_ATTR_SET] => [],
@@ -613,6 +660,12 @@ public function testIsRowValid()
613660
if ($rowData['sku'] === $caseInsensitiveSKU) {
614661
$this->assertTrue($result);
615662
}
663+
if ($rowData['sku'] === $duplicateVariationSKU) {
664+
$this->assertFalse($result);
665+
}
666+
if ($rowData['sku'] === $nonDuplicateVariationSKU) {
667+
$this->assertTrue($result);
668+
}
616669
}
617670
}
618671

0 commit comments

Comments
 (0)