diff --git a/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php b/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php index 0cbaa08da..9e2d21de0 100755 --- a/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php +++ b/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php @@ -141,7 +141,7 @@ class InvoiceRepository extends Repository foreach ($orderItem->children as $childOrderItem) { $finalQty = $childOrderItem->qty_ordered ? ($childOrderItem->qty_ordered / $orderItem->qty_ordered) * $qty - : $childOrderItem->qty_ordered; + : $orderItem->qty_ordered; $this->invoiceItemRepository->create([ 'invoice_id' => $invoice->id, diff --git a/packages/Webkul/Sales/src/Repositories/RefundItemRepository.php b/packages/Webkul/Sales/src/Repositories/RefundItemRepository.php index 5011802e7..1bba9b5b8 100644 --- a/packages/Webkul/Sales/src/Repositories/RefundItemRepository.php +++ b/packages/Webkul/Sales/src/Repositories/RefundItemRepository.php @@ -29,7 +29,7 @@ class RefundItemRepository extends Repository * Returns qty to product inventory after order refund * * @param OrdreItem $orderItem - * @param integer $quantity + * @param integer $quantity * @return void */ public function returnQtyToProductInventory($orderItem, $quantity) @@ -41,16 +41,27 @@ class RefundItemRepository extends Repository $nonShippedQty = $orderItem->qty_ordered - $orderItem->qty_shipped; if (($totalShippedQtyToRefund = $quantity - $nonShippedQty) > 0) { - foreach ($orderItem->shipment_items as $shipmentItem) { + $shipmentItems = $orderItem->parent ? $orderItem->parent->shipment_items : $orderItem->shipment_items; + + foreach ($shipmentItems as $shipmentItem) { if (! $totalShippedQtyToRefund) break; if (! $shipmentItem->shipment->inventory_source_id) continue; - $shippedQtyToRefund = $totalShippedQtyToRefund > $shipmentItem->qty ? $shipmentItem->qty : $totalShippedQtyToRefund; - $totalShippedQtyToRefund = $totalShippedQtyToRefund > $shipmentItem->qty ? $totalShippedQtyToRefund - $shipmentItem->qty : 0; + if ($orderItem->parent) { + $shippedQty = $orderItem->qty_ordered + ? ($orderItem->qty_ordered / $orderItem->parent->qty_ordered) * $shipmentItem->qty + : $orderItem->parent->qty_ordered; + } else { + $shippedQty = $shipmentItem->qty; + } + + $shippedQtyToRefund = $totalShippedQtyToRefund > $shippedQty ? $shippedQty : $totalShippedQtyToRefund; + + $totalShippedQtyToRefund = $totalShippedQtyToRefund > $shippedQty ? $totalShippedQtyToRefund - $shippedQty : 0; $inventory = $product->inventories() // ->where('vendor_id', $data['vendor_id']) diff --git a/packages/Webkul/Sales/src/Repositories/RefundRepository.php b/packages/Webkul/Sales/src/Repositories/RefundRepository.php index f707426e8..8417a0312 100644 --- a/packages/Webkul/Sales/src/Repositories/RefundRepository.php +++ b/packages/Webkul/Sales/src/Repositories/RefundRepository.php @@ -144,7 +144,7 @@ class RefundRepository extends Repository foreach ($orderItem->children as $childOrderItem) { $finalQty = $childOrderItem->qty_ordered ? ($childOrderItem->qty_ordered / $orderItem->qty_ordered) * $qty - : $childOrderItem->qty_ordered; + : $orderItem->qty_ordered; $refundItem->child = $this->refundItemRepository->create([ 'refund_id' => $refund->id,