diff --git a/packages/Webkul/Sales/src/Repositories/RefundRepository.php b/packages/Webkul/Sales/src/Repositories/RefundRepository.php index 357e7511c..0c441d14c 100644 --- a/packages/Webkul/Sales/src/Repositories/RefundRepository.php +++ b/packages/Webkul/Sales/src/Repositories/RefundRepository.php @@ -129,30 +129,38 @@ class RefundRepository extends Repository 'additional' => $orderItem->additional ]); - if ($orderItem->type == 'configurable' && $orderItem->child) { - $childOrderItem = $orderItem->child; + if ($orderItem->getTypeInstance()->isComposite()) { + foreach ($orderItem->children as $childOrderItem) { + $finalQty = $childOrderItem->qty_ordered + ? ($childOrderItem->qty_ordered / $orderItem->qty_ordered) * $qty + : $childOrderItem->qty_ordered; - $refundItem->child = $this->refundItemRepository->create([ - 'refund_id' => $refund->id, - 'order_item_id' => $childOrderItem->id, - 'parent_id' => $refundItem->id, - 'name' => $childOrderItem->name, - 'sku' => $childOrderItem->sku, - 'qty' => $qty, - 'price' => $childOrderItem->price, - 'base_price' => $childOrderItem->base_price, - 'total' => $childOrderItem->price * $qty, - 'base_total' => $childOrderItem->base_price * $qty, - 'tax_amount' => 0, - 'base_tax_amount' => 0, - 'discount_amount' => 0, - 'base_discount_amount' => 0, - 'product_id' => $childOrderItem->product_id, - 'product_type' => $childOrderItem->product_type, - 'additional' => $childOrderItem->additional - ]); + $refundItem->child = $this->refundItemRepository->create([ + 'refund_id' => $refund->id, + 'order_item_id' => $childOrderItem->id, + 'parent_id' => $refundItem->id, + 'name' => $childOrderItem->name, + 'sku' => $childOrderItem->sku, + 'qty' => $finalQty, + 'price' => $childOrderItem->price, + 'base_price' => $childOrderItem->base_price, + 'total' => $childOrderItem->price * $finalQty, + 'base_total' => $childOrderItem->base_price * $finalQty, + 'tax_amount' => 0, + 'base_tax_amount' => 0, + 'discount_amount' => 0, + 'base_discount_amount' => 0, + 'product_id' => $childOrderItem->product_id, + 'product_type' => $childOrderItem->product_type, + 'additional' => $childOrderItem->additional + ]); + + if ($childOrderItem->product->getTypeInstance()->showQuantityBox()) + $this->refundItemRepository->returnQtyToProductInventory($childOrderItem, $finalQty); + + $this->orderItemRepository->collectTotals($childOrderItem); + } - $this->refundItemRepository->returnQtyToProductInventory($childOrderItem, $qty); } else { $this->refundItemRepository->returnQtyToProductInventory($orderItem, $qty); } diff --git a/packages/Webkul/Shop/src/Resources/views/emails/sales/new-refund.blade.php b/packages/Webkul/Shop/src/Resources/views/emails/sales/new-refund.blade.php index af0683473..d80d9937d 100644 --- a/packages/Webkul/Shop/src/Resources/views/emails/sales/new-refund.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/emails/sales/new-refund.blade.php @@ -31,37 +31,39 @@