@@ -67,7 +67,8 @@ public function execute($entity, $arguments = [])
67
67
$ this ->processRemovedOptions ($ entity ->getSku (), $ existingOptionsIds , $ optionIds );
68
68
$ this ->processExistedOptions ($ entity ->getSku (), $ existingOptionsIds , $ optionIds );
69
69
70
- $ this ->saveOptions ($ entity , $ options );
70
+ $ newOptionsIds = array_diff ($ optionIds , $ existingOptionsIds );
71
+ $ this ->saveOptions ($ entity , $ options , $ newOptionsIds );
71
72
} else {
72
73
//save only labels and not selections + product links
73
74
$ this ->saveOptions ($ entity , $ options );
@@ -97,13 +98,17 @@ protected function removeOptionLinks($entitySku, $option)
97
98
* Perform save for all options entities
98
99
* @param object $entity
99
100
* @param array $options
101
+ * @param array $newOptionsIds
100
102
* @throws \Magento\Framework\Exception\CouldNotSaveException
101
103
* @throws \Magento\Framework\Exception\InputException
102
104
* @return void
103
105
*/
104
- private function saveOptions ($ entity , $ options )
106
+ private function saveOptions ($ entity , $ options, $ newOptionsIds = [] )
105
107
{
106
108
foreach ($ options as $ option ) {
109
+ if (in_array ($ option ->getOptionId (), $ newOptionsIds )) {
110
+ $ option ->setOptionId (null );
111
+ }
107
112
$ this ->optionRepository ->save ($ entity , $ option );
108
113
}
109
114
}
0 commit comments