@@ -58,6 +58,8 @@ public function __construct(
58
58
}
59
59
60
60
/**
61
+ * Perform action on Bundle product relation/extension attribute
62
+ *
61
63
* @param object $entity
62
64
* @param array $arguments
63
65
*
@@ -83,7 +85,7 @@ public function execute($entity, $arguments = [])
83
85
: [];
84
86
85
87
if (!$ entity ->getCopyFromView ()) {
86
- $ this ->processRemovedOptions ($ entity-> getSku () , $ existingOptionsIds , $ optionIds );
88
+ $ this ->processRemovedOptions ($ entity , $ existingOptionsIds , $ optionIds );
87
89
$ newOptionsIds = array_diff ($ optionIds , $ existingOptionsIds );
88
90
$ this ->saveOptions ($ entity , $ bundleProductOptions , $ newOptionsIds );
89
91
} else {
@@ -96,6 +98,8 @@ public function execute($entity, $arguments = [])
96
98
}
97
99
98
100
/**
101
+ * Remove option product links
102
+ *
99
103
* @param string $entitySku
100
104
* @param \Magento\Bundle\Api\Data\OptionInterface $option
101
105
* @return void
@@ -154,16 +158,19 @@ private function getOptionIds(array $options): array
154
158
/**
155
159
* Removes old options that no longer exists.
156
160
*
157
- * @param string $entitySku
161
+ * @param ProductInterface $entity
158
162
* @param array $existingOptionsIds
159
163
* @param array $optionIds
160
164
* @return void
161
165
*/
162
- private function processRemovedOptions (string $ entitySku , array $ existingOptionsIds , array $ optionIds ): void
166
+ private function processRemovedOptions (ProductInterface $ entity , array $ existingOptionsIds , array $ optionIds ): void
163
167
{
168
+ $ metadata = $ this ->metadataPool ->getMetadata (ProductInterface::class);
169
+ $ parentId = $ entity ->getData ($ metadata ->getLinkField ());
164
170
foreach (array_diff ($ existingOptionsIds , $ optionIds ) as $ optionId ) {
165
- $ option = $ this ->optionRepository ->get ($ entitySku , $ optionId );
166
- $ this ->removeOptionLinks ($ entitySku , $ option );
171
+ $ option = $ this ->optionRepository ->get ($ entity ->getSku (), $ optionId );
172
+ $ option ->setParentId ($ parentId );
173
+ $ this ->removeOptionLinks ($ entity ->getSku (), $ option );
167
174
$ this ->optionRepository ->delete ($ option );
168
175
}
169
176
}
0 commit comments