Skip to content

Commit 01af82f

Browse files
Merge remote-tracking branch 'remotes/github/MAGETWO-96408' into EPAM-PR-27
2 parents 93efb01 + 8bf0176 commit 01af82f

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

app/code/Magento/Bundle/Model/Product/SaveHandler.php

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ public function __construct(
5858
}
5959

6060
/**
61+
* Perform action on Bundle product relation/extension attribute
62+
*
6163
* @param object $entity
6264
* @param array $arguments
6365
*
@@ -83,7 +85,7 @@ public function execute($entity, $arguments = [])
8385
: [];
8486

8587
if (!$entity->getCopyFromView()) {
86-
$this->processRemovedOptions($entity->getSku(), $existingOptionsIds, $optionIds);
88+
$this->processRemovedOptions($entity, $existingOptionsIds, $optionIds);
8789
$newOptionsIds = array_diff($optionIds, $existingOptionsIds);
8890
$this->saveOptions($entity, $bundleProductOptions, $newOptionsIds);
8991
} else {
@@ -96,6 +98,8 @@ public function execute($entity, $arguments = [])
9698
}
9799

98100
/**
101+
* Remove option product links
102+
*
99103
* @param string $entitySku
100104
* @param \Magento\Bundle\Api\Data\OptionInterface $option
101105
* @return void
@@ -154,16 +158,19 @@ private function getOptionIds(array $options): array
154158
/**
155159
* Removes old options that no longer exists.
156160
*
157-
* @param string $entitySku
161+
* @param ProductInterface $entity
158162
* @param array $existingOptionsIds
159163
* @param array $optionIds
160164
* @return void
161165
*/
162-
private function processRemovedOptions(string $entitySku, array $existingOptionsIds, array $optionIds): void
166+
private function processRemovedOptions(ProductInterface $entity, array $existingOptionsIds, array $optionIds): void
163167
{
168+
$metadata = $this->metadataPool->getMetadata(ProductInterface::class);
169+
$parentId = $entity->getData($metadata->getLinkField());
164170
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);
167174
$this->optionRepository->delete($option);
168175
}
169176
}

0 commit comments

Comments
 (0)