From 281e77709065d8809636e60521c243d49f669ee0 Mon Sep 17 00:00:00 2001 From: Oleksandr Radchenko <oradchenko@magento.com> Date: Mon, 24 Oct 2016 15:21:53 +0300 Subject: [PATCH] MAGETWO-59074: Creditmemo return to stock only one unit of configurable product --- .../Sales/Model/Order/CreditmemoFactory.php | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/app/code/Magento/Sales/Model/Order/CreditmemoFactory.php b/app/code/Magento/Sales/Model/Order/CreditmemoFactory.php index 8207e784229..ff687074e4a 100644 --- a/app/code/Magento/Sales/Model/Order/CreditmemoFactory.php +++ b/app/code/Magento/Sales/Model/Order/CreditmemoFactory.php @@ -61,10 +61,12 @@ class CreditmemoFactory $item = $this->convertor->itemToCreditmemoItem($orderItem); if ($orderItem->isDummy()) { - $qty = 1; if (isset($data['qtys'][$orderItem->getParentItemId()])) { - $qty = $this->calculateProductOptions($orderItem, $data['qtys']); + $parentQty = $data['qtys'][$orderItem->getParentItemId()]; + } else { + $parentQty = $orderItem->getParentItem() ? $orderItem->getParentItem()->getQtyToRefund() : 1; } + $qty = $this->calculateProductOptions($orderItem, $parentQty); $orderItem->setLockedDoShip(true); } else { if (isset($qtys[$orderItem->getId()])) { @@ -139,10 +141,12 @@ class CreditmemoFactory $item = $this->convertor->itemToCreditmemoItem($orderItem); if ($orderItem->isDummy()) { - $qty = 1; if (isset($data['qtys'][$orderItem->getParentItemId()])) { - $qty = $this->calculateProductOptions($orderItem, $data['qtys']); + $parentQty = $data['qtys'][$orderItem->getParentItemId()]; + } else { + $parentQty = $orderItem->getParentItem() ? $orderItem->getParentItem()->getQtyToRefund() : 1; } + $qty = $this->calculateProductOptions($orderItem, $parentQty); } else { if (isset($qtys[$orderItem->getId()])) { $qty = (double)$qtys[$orderItem->getId()]; @@ -261,15 +265,15 @@ class CreditmemoFactory * @param array $qtys * @return int */ - private function calculateProductOptions(\Magento\Sales\Api\Data\OrderItemInterface $orderItem, $qtys) + private function calculateProductOptions(\Magento\Sales\Api\Data\OrderItemInterface $orderItem, $parentQty) { - $qty = 1; + $qty = $parentQty; $productOptions = $orderItem->getProductOptions(); if (isset($productOptions['bundle_selection_attributes'])) { $bundleSelectionAttributes = $this->getUnserialize() ->unserialize($productOptions['bundle_selection_attributes']); if ($bundleSelectionAttributes) { - $qty = $bundleSelectionAttributes['qty'] * $qtys[$orderItem->getParentItemId()]; + $qty = $bundleSelectionAttributes['qty'] * $parentQty; } } return $qty; -- GitLab