Skip to content

Commit 6715a93

Browse files
author
Eric Bohanon
committed
MAGETWO-65667: Error Importing Customer multiselect attribute
1 parent 1a4aa5b commit 6715a93

File tree

3 files changed

+32
-7
lines changed

3 files changed

+32
-7
lines changed

app/code/Magento/CustomerImportExport/Model/Import/Address.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
*/
66
namespace Magento\CustomerImportExport\Model\Import;
77

8+
use Magento\ImportExport\Model\Import;
89
use Magento\ImportExport\Model\Import\ErrorProcessing\ProcessingErrorAggregatorInterface;
910

1011
/**
@@ -740,7 +741,16 @@ protected function _validateRowForUpdate(array $rowData, $rowNumber)
740741
continue;
741742
}
742743
if (isset($rowData[$attributeCode]) && strlen($rowData[$attributeCode])) {
743-
$this->isAttributeValid($attributeCode, $attributeParams, $rowData, $rowNumber);
744+
$multiSeparator = isset($this->_parameters[Import::FIELD_FIELD_MULTIPLE_VALUE_SEPARATOR]) ?
745+
$this->_parameters[Import::FIELD_FIELD_MULTIPLE_VALUE_SEPARATOR] :
746+
Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR;
747+
$this->isAttributeValid(
748+
$attributeCode,
749+
$attributeParams,
750+
$rowData,
751+
$rowNumber,
752+
$multiSeparator
753+
);
744754
} elseif ($attributeParams['is_required'] && (!isset(
745755
$this->_addresses[$customerId]
746756
) || !in_array(

app/code/Magento/ImportExport/Model/Import/AbstractEntity.php

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,7 @@ abstract class AbstractEntity
7474
self::ERROR_CODE_COLUMNS_NUMBER => "Number of columns does not correspond to the number of rows in the header",
7575
self::ERROR_EXCEEDED_MAX_LENGTH => 'Attribute %s exceeded max length',
7676
self::ERROR_INVALID_ATTRIBUTE_TYPE => 'Value for \'%s\' attribute contains incorrect value',
77-
self::ERROR_INVALID_ATTRIBUTE_OPTION =>
78-
"Value for %s attribute contains incorrect value, see acceptable values on settings specified for Admin",
77+
self::ERROR_INVALID_ATTRIBUTE_OPTION => "Value for %s attribute contains incorrect value, see acceptable values on settings specified for Admin",
7978
];
8079

8180
/**#@-*/
@@ -665,11 +664,17 @@ public function getMasterAttributeCode()
665664
* @param array $attributeParams Attribute params
666665
* @param array $rowData Row data
667666
* @param int $rowNumber
667+
* @param string $multiSeparator
668668
* @return bool
669669
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
670670
*/
671-
public function isAttributeValid($attributeCode, array $attributeParams, array $rowData, $rowNumber)
672-
{
671+
public function isAttributeValid(
672+
$attributeCode,
673+
array $attributeParams,
674+
array $rowData,
675+
$rowNumber,
676+
$multiSeparator
677+
) {
673678
$message = '';
674679
switch ($attributeParams['type']) {
675680
case 'varchar':
@@ -684,7 +689,13 @@ public function isAttributeValid($attributeCode, array $attributeParams, array $
684689
break;
685690
case 'select':
686691
case 'multiselect':
687-
$valid = isset($attributeParams['options'][strtolower($rowData[$attributeCode])]);
692+
$valid = true;
693+
foreach (explode($multiSeparator, strtolower($rowData[$attributeCode])) as $value) {
694+
$valid = isset($attributeParams['options'][$value]);
695+
if (!$valid) {
696+
break;
697+
}
698+
}
688699
$message = self::ERROR_INVALID_ATTRIBUTE_OPTION;
689700
break;
690701
case 'int':

app/code/Magento/ImportExport/Model/Import/Entity/AbstractEav.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,11 @@ public function getAttributeOptions(
227227
foreach ($value as $innerOption) {
228228
if (strlen($innerOption['value'])) {
229229
// skip ' -- Please Select -- ' option
230-
$options[strtolower($innerOption[$index])] = $innerOption['value'];
230+
if ($attribute->isStatic()) {
231+
$options[strtolower($innerOption[$index])] = $innerOption['value'];
232+
} else {
233+
$options[$innerOption['value']] = $innerOption[$index];
234+
}
231235
}
232236
}
233237
}

0 commit comments

Comments
 (0)