Skip to content

Commit 3045c20

Browse files
committed
MC-37705: [Magento Cloud] - Import / Export does not working
1 parent 5977749 commit 3045c20

File tree

1 file changed

+24
-7
lines changed
  • app/code/Magento/CatalogImportExport/Model/Import/Product

1 file changed

+24
-7
lines changed

app/code/Magento/CatalogImportExport/Model/Import/Product/Option.php

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ public function __construct(
421421

422422
$this->_initMessageTemplates();
423423

424-
$this->_initProductsSku()->_initOldCustomOptions();
424+
$this->_initProductsSku();
425425
}
426426

427427
/**
@@ -606,6 +606,9 @@ protected function _initOldCustomOptions()
606606
'option_title.store_id = ?',
607607
$storeId
608608
);
609+
if (!empty($this->_newOptionsOldData)) {
610+
$this->_optionCollection->addProductToFilter(array_keys($this->_newOptionsOldData));
611+
}
609612

610613
$this->_byPagesIterator->iterate($this->_optionCollection, $this->_pageSize, [$addCustomOptions]);
611614
}
@@ -614,6 +617,20 @@ protected function _initOldCustomOptions()
614617
return $this;
615618
}
616619

620+
/**
621+
* Get existing custom options data
622+
*
623+
* @return array
624+
*/
625+
private function getOldCustomOptions(): array
626+
{
627+
if ($this->_oldCustomOptions === null) {
628+
$this->_initOldCustomOptions();
629+
}
630+
631+
return $this->_oldCustomOptions;
632+
}
633+
617634
/**
618635
* Imported entity type code getter
619636
*
@@ -717,9 +734,9 @@ protected function _findOldOptionsWithTheSameTitles()
717734
$errorRows = [];
718735
foreach ($this->_newOptionsOldData as $productId => $options) {
719736
foreach ($options as $outerData) {
720-
if (isset($this->_oldCustomOptions[$productId])) {
737+
if (isset($this->getOldCustomOptions()[$productId])) {
721738
$optionsCount = 0;
722-
foreach ($this->_oldCustomOptions[$productId] as $innerData) {
739+
foreach ($this->getOldCustomOptions()[$productId] as $innerData) {
723740
if (count($outerData['titles']) == count($innerData['titles'])) {
724741
$outerTitles = $outerData['titles'];
725742
$innerTitles = $innerData['titles'];
@@ -753,8 +770,8 @@ protected function _findNewOldOptionsTypeMismatch()
753770
$errorRows = [];
754771
foreach ($this->_newOptionsOldData as $productId => $options) {
755772
foreach ($options as $outerData) {
756-
if (isset($this->_oldCustomOptions[$productId])) {
757-
foreach ($this->_oldCustomOptions[$productId] as $innerData) {
773+
if (isset($this->getOldCustomOptions()[$productId])) {
774+
foreach ($this->getOldCustomOptions()[$productId] as $innerData) {
758775
if (count($outerData['titles']) == count($innerData['titles'])) {
759776
$outerTitles = $outerData['titles'];
760777
$innerTitles = $innerData['titles'];
@@ -784,9 +801,9 @@ protected function _findNewOldOptionsTypeMismatch()
784801
protected function _findExistingOptionId(array $newOptionData, array $newOptionTitles)
785802
{
786803
$productId = $newOptionData['product_id'];
787-
if (isset($this->_oldCustomOptions[$productId])) {
804+
if (isset($this->getOldCustomOptions()[$productId])) {
788805
ksort($newOptionTitles);
789-
$existingOptions = $this->_oldCustomOptions[$productId];
806+
$existingOptions = $this->getOldCustomOptions()[$productId];
790807
foreach ($existingOptions as $optionId => $optionData) {
791808
if ($optionData['type'] == $newOptionData['type']
792809
&& $optionData['titles'][Store::DEFAULT_STORE_ID] == $newOptionTitles[Store::DEFAULT_STORE_ID]

0 commit comments

Comments
 (0)