Skip to content

Commit be6bf6d

Browse files
committed
ACPT-1423: Import Customers Main File
1 parent ab2e9f8 commit be6bf6d

File tree

3 files changed

+32
-18
lines changed

3 files changed

+32
-18
lines changed

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

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -402,9 +402,7 @@ public function validateData()
402402
protected function _prepareDataForUpdate(array $rowData)
403403
{
404404
$multiSeparator = $this->getMultipleValueSeparator();
405-
$entitiesToCreate = [];
406-
$entitiesToUpdate = [];
407-
$attributesToSave = [];
405+
$entitiesToCreate = $entitiesToUpdate = $attributesToSave = [];
408406

409407
// entity table data
410408
$now = new \DateTime();
@@ -439,7 +437,11 @@ protected function _prepareDataForUpdate(array $rowData)
439437
}
440438
} elseif ('multiselect' == $attributeParameters['type']) {
441439
$ids = [];
442-
$values = $value !== null ? explode($multiSeparator, mb_strtolower($value)) : [];
440+
if (!is_array($value)) {
441+
$values = $value !== null ? explode($multiSeparator, mb_strtolower($value)) : [];
442+
} else {
443+
$values = array_map('mb_strtolower', $value);
444+
}
443445
foreach ($values as $subValue) {
444446
$ids[] = $this->getSelectAttrIdByValue($attributeParameters, $subValue);
445447
}
@@ -615,27 +617,32 @@ protected function _validateRowForUpdate(array $rowData, $rowNumber)
615617
$isFieldRequired = $attributeParams['is_required'];
616618
$isFieldNotSetAndCustomerDoesNotExist =
617619
!isset($rowData[$attributeCode]) && !$this->_getCustomerId($email, $website);
618-
$isFieldSetAndTrimmedValueIsEmpty
619-
= isset($rowData[$attributeCode]) && '' === trim((string)$rowData[$attributeCode]);
620+
$isFieldSetAndTrimmedValueIsEmpty = true;
621+
$isFieldValueNotEmpty = false;
622+
623+
if (isset($rowData[$attributeCode])) {
624+
if (is_array($rowData[$attributeCode])) {
625+
$isFieldSetAndTrimmedValueIsEmpty = empty(array_filter($rowData[$attributeCode], 'trim'));
626+
$isFieldValueNotEmpty = count(array_filter($rowData[$attributeCode], 'strlen')) > 0;
627+
} else {
628+
$isFieldSetAndTrimmedValueIsEmpty = '' === trim((string)$rowData[$attributeCode]);
629+
$isFieldValueNotEmpty = strlen($rowData[$attributeCode]) > 0;
630+
}
631+
}
620632

621633
if ($isFieldRequired && ($isFieldNotSetAndCustomerDoesNotExist || $isFieldSetAndTrimmedValueIsEmpty)) {
622634
$this->addRowError(self::ERROR_VALUE_IS_REQUIRED, $rowNumber, $attributeCode);
623635
continue;
624636
}
625637

626-
if (isset($rowData[$attributeCode]) && strlen((string)$rowData[$attributeCode])) {
627-
if ($attributeParams['type'] == 'select') {
628-
continue;
629-
}
630-
638+
if (isset($rowData[$attributeCode]) && $isFieldValueNotEmpty && $attributeParams['type'] != 'select') {
631639
$this->isAttributeValid(
632640
$attributeCode,
633641
$attributeParams,
634642
$rowData,
635643
$rowNumber,
636-
isset($this->_parameters[Import::FIELD_FIELD_MULTIPLE_VALUE_SEPARATOR])
637-
? $this->_parameters[Import::FIELD_FIELD_MULTIPLE_VALUE_SEPARATOR]
638-
: Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR
644+
$this->_parameters[Import::FIELD_FIELD_MULTIPLE_VALUE_SEPARATOR]
645+
?? Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR
639646
);
640647
}
641648
}

app/code/Magento/DownloadableImportExport/Model/Import/Product/Type/Downloadable.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -831,7 +831,7 @@ protected function prepareSampleData($rowCol, $entityId = null)
831831
* Prepare samples data in structured format.
832832
*
833833
* @param array $samples
834-
* @param null $entityId
834+
* @param $entityId
835835
* @return array
836836
*/
837837
private function prepareStructuredSampleData(array $samples, $entityId = null): array
@@ -885,7 +885,7 @@ protected function prepareLinkData($rowCol, $entityId = null)
885885
* Prepare links data in structured format.
886886
*
887887
* @param array $links
888-
* @param null $entityId
888+
* @param $entityId
889889
* @return array
890890
*/
891891
private function prepareStructuredLinkData(array $links, $entityId = null): array

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

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -693,12 +693,19 @@ public function isAttributeValid(
693693
case 'multiselect':
694694
case 'boolean':
695695
$valid = true;
696-
foreach (explode($multiSeparator, mb_strtolower($rowData[$attributeCode])) as $value) {
697-
$valid = isset($attributeParams['options'][$value]);
696+
$values = $rowData[$attributeCode];
697+
698+
if (!is_array($values)) {
699+
$values = explode($multiSeparator, mb_strtolower($values));
700+
}
701+
702+
foreach ($values as $value) {
703+
$valid = isset($attributeParams['options'][mb_strtolower($value)]);
698704
if (!$valid) {
699705
break;
700706
}
701707
}
708+
702709
$message = self::ERROR_INVALID_ATTRIBUTE_OPTION;
703710
break;
704711
case 'int':

0 commit comments

Comments
 (0)