@@ -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