From 15874297a53a52c4264ad5bb079550a87e9ebbba Mon Sep 17 00:00:00 2001 From: merdan Date: Tue, 5 Jul 2022 14:44:54 +0500 Subject: [PATCH] parse test --- .../Sarga/API/Http/Controllers/Orders.php | 6 ++- .../Admin/src/Http/Controllers/Orders.php | 6 ++- .../src/Repositories/OrderItemRepository.php | 36 ++++++++++++++ .../Shop/src/Repositories/OrderRepository.php | 49 +++++++++---------- 4 files changed, 69 insertions(+), 28 deletions(-) diff --git a/packages/Sarga/API/Http/Controllers/Orders.php b/packages/Sarga/API/Http/Controllers/Orders.php index 27deafe4f..3909af16e 100644 --- a/packages/Sarga/API/Http/Controllers/Orders.php +++ b/packages/Sarga/API/Http/Controllers/Orders.php @@ -32,10 +32,14 @@ class Orders extends OrderController $orderItem = $this->orderItemRepository->with('order') ->findOrFail($item_id); + if($order->shipping_amount>0){ + $order = $this->orderRepository->calculateShipping($order,$orderItem); + } + if($this->orderItemRepository->cancel($orderItem)) { - $order = $this->orderRepository->calculateTotals($order,$orderItem); $order = $this->orderRepository->updateOrderStatus($order); + $order = $this->orderRepository->calculateTotals($order); return response(['data'=>[ 'order' => new OrderResource($order)], diff --git a/packages/Sarga/Admin/src/Http/Controllers/Orders.php b/packages/Sarga/Admin/src/Http/Controllers/Orders.php index 810a14cfa..10433b33d 100644 --- a/packages/Sarga/Admin/src/Http/Controllers/Orders.php +++ b/packages/Sarga/Admin/src/Http/Controllers/Orders.php @@ -51,10 +51,14 @@ class Orders extends OrderController $order = $orderItem->order; + if($order->shipping_amount>0){ + $order = $this->orderRepository->calculateShipping($order,$orderItem); + } + if($this->orderItemRepository->cancel($orderItem)) { $this->orderRepository->updateOrderStatus($order); - $this->orderRepository->calculateTotals($order,$orderItem); + $this->orderRepository->calculateTotals($order); session()->flash('success', trans('admin::app.response.cancel-success', ['name' => 'Order Item'])); } else diff --git a/packages/Sarga/Shop/src/Repositories/OrderItemRepository.php b/packages/Sarga/Shop/src/Repositories/OrderItemRepository.php index 8abfbe194..b7cf83b50 100644 --- a/packages/Sarga/Shop/src/Repositories/OrderItemRepository.php +++ b/packages/Sarga/Shop/src/Repositories/OrderItemRepository.php @@ -27,15 +27,51 @@ class OrderItemRepository extends WOrderItemRepo } if ($orderItem->qty_ordered) { +// $orderItem->total_weight -= $orderItem->weight * $orderItem->qty_to_cancel; + $prosent_discount = ($orderItem->total* $orderItem->discount_percent)/100; + $base_prosent_discount = ($orderItem->base_total* $orderItem->discount_percent)/100; + $prosentsizDiscount = $orderItem->discount_amount - $prosent_discount; + $base_prosentsizDiscount = $orderItem->base_discount_amount - $base_prosent_discount; + $shtukDiscount = $prosentsizDiscount/($orderItem->qty_ordered-$orderItem->qty_canceled); + $base_shtukDiscount = $base_prosentsizDiscount/($orderItem->qty_ordered-$orderItem->qty_canceled); $orderItem->qty_canceled += $orderItem->qty_to_cancel; + $orderItem->total = $orderItem->price * ($orderItem->qty_ordered -$orderItem->qty_canceled); + $orderItem->discount_amount = ($orderItem->total* $orderItem->discount_percent)/100 + ($shtukDiscount*($orderItem->qty_ordered-$orderItem->qty_canceled)); + $orderItem->base_total = $orderItem->base_price * ($orderItem->qty_ordered -$orderItem->qty_canceled); + $orderItem->base_discount_amount = ($orderItem->base_total* $orderItem->discount_percent)/100 + ($base_shtukDiscount*($orderItem->qty_ordered-$orderItem->qty_canceled)); + $orderItem->save(); if ($orderItem->parent && $orderItem->parent->qty_ordered) { + $prosent_discount = ($orderItem->parent->total* $orderItem->parent->discount_percent)/100; + $base_prosent_discount = ($orderItem->parent->base_total* $orderItem->parent->discount_percent)/100; + $prosentsizDiscount = $orderItem->parent->discount_amount - $prosent_discount; + $base_prosentsizDiscount = $orderItem->parent->base_discount_amount - $base_prosent_discount; + $shtukDiscount = $prosentsizDiscount/($orderItem->parent->qty_ordered-$orderItem->parent->qty_canceled); + $base_shtukDiscount = $base_prosentsizDiscount/($orderItem->parent->qty_ordered-$orderItem->parent->qty_canceled); $orderItem->parent->qty_canceled += $orderItem->parent->qty_to_cancel; + $orderItem->parent->total = $orderItem->parent->price * ($orderItem->parent->qty_ordered -$orderItem->parent->qty_canceled); + $orderItem->parent->discount_amount = ($orderItem->parent->total* $orderItem->parent->discount_percent)/100 + + ($shtukDiscount*($orderItem->parent->qty_ordered - $orderItem->parent->qty_canceled)); + $orderItem->parent->base_total = $orderItem->parent->base_price * ($orderItem->parent->qty_ordered -$orderItem->parent->qty_canceled); + $orderItem->parent->base_discount_amount = ($orderItem->parent->base_total * $orderItem->parent->discount_percent)/100 + + ($base_shtukDiscount * ($orderItem->parent->qty_ordered - $orderItem->parent->qty_canceled)); $orderItem->parent->save(); } } else { + $prosent_discount = ($orderItem->parent->total* $orderItem->parent->discount_percent)/100; + $base_prosent_discount = ($orderItem->parent->base_total* $orderItem->parent->discount_percent)/100; + $prosentsizDiscount = $orderItem->parent->discount_amount - $prosent_discount; + $base_prosentsizDiscount = $orderItem->parent->base_discount_amount - $base_prosent_discount; + $shtukDiscount = $prosentsizDiscount/($orderItem->parent->qty_ordered-$orderItem->parent->qty_canceled); + $base_shtukDiscount = $base_prosentsizDiscount/($orderItem->parent->qty_ordered-$orderItem->parent->qty_canceled); $orderItem->parent->qty_canceled += $orderItem->parent->qty_to_cancel; + $orderItem->parent->total = $orderItem->parent->price * ($orderItem->parent->qty_ordered -$orderItem->parent->qty_canceled); + $orderItem->parent->discount_amount = ($orderItem->parent->total* $orderItem->parent->discount_percent)/100 + + ($shtukDiscount*($orderItem->parent->qty_ordered - $orderItem->parent->qty_canceled)); + $orderItem->parent->base_total = $orderItem->parent->base_price * ($orderItem->parent->qty_ordered -$orderItem->parent->qty_canceled); + $orderItem->parent->base_discount_amount = ($orderItem->parent->base_total * $orderItem->parent->discount_percent)/100 + + ($base_shtukDiscount * ($orderItem->parent->qty_ordered - $orderItem->parent->qty_canceled)); $orderItem->parent->save(); } } diff --git a/packages/Sarga/Shop/src/Repositories/OrderRepository.php b/packages/Sarga/Shop/src/Repositories/OrderRepository.php index f4eee1409..6aac442e3 100644 --- a/packages/Sarga/Shop/src/Repositories/OrderRepository.php +++ b/packages/Sarga/Shop/src/Repositories/OrderRepository.php @@ -47,36 +47,33 @@ class OrderRepository extends WOrderRepository return $order->items()->sum('qty_invoiced') > 0; } - public function calculateTotals($order, $order_item){ - if($order && $order_item && $order->shipping_amount >0){ - $total_weight = $order_item->total_weight; - foreach($order->items as $item ){ - if($item->id !== $order_item->id) - $total_weight += ($item->qty_ordered - $item->qty_canceled) * $item->weight; - } - $shipping_price = $order->shipping_amount/$total_weight; - $base_shipping_price = $order->base_shipping_amount/$total_weight; - $canceled_amount = $shipping_price * $order_item->qty_canceled * $order_item->weight; - $canceled_base_amount = $base_shipping_price * $order_item->qty_canceled * $order_item->weight; - $order->shipping_amount = $order->shipping_amount - $canceled_amount; - $order->base_shipping_amount = $order->base_shipping_amount - $canceled_base_amount; - $order->grand_total = $order->grand_total - $canceled_amount; - $order->base_grand_total = $order->base_grand_total - $canceled_base_amount; - } + public function calculateTotals($order){ - if($order && $order_item){ - $total_price = $order_item->price * $order_item->qty_canceled; - $total_base_price = $order_item->base_price * $order_item->qty_canceled; - $total_discount = $total_price * $order_item->discount_percent/100; - $total_base_discount = $total_base_price * $order_item->discount_percent/100; - $order->sub_total = $order->sub_total - $total_price; - $order->base_sub_total = $order->base_sub_total - $total_base_price; - $order->grand_total = $order->grand_total - ($total_price + $total_discount); - $order->base_grand_total = $order->base_grand_total-($total_base_price + $total_base_discount); - } + $order->sub_total = $order->items()->sum('total'); + $order->base_sub_total = $order->items()->sum('base_total'); + +// dd($order); + $order->grand_total = $order->shipping_amount + $order->sub_total - $order->items->sum('discount_amount') - $order->shipping_discount_amount; + $order->base_grand_total = $order->base_shipping_amount + $order->base_sub_total - $order->items->sum('base_discount_amount') - $order->base_shipping_discount_amount; $order->save(); return $order; } + + public function calculateShipping($order,$order_item){ + $total_weight = $order->items->sum('total_weight'); +// $order_item->total_weight = ($order_item->qty_ordered - $order_item->qty_canceled) * $order_item->weight; + + $shipping_price = $order->shipping_amount/$total_weight; + $base_shipping_price = $order->base_shipping_amount/$total_weight; + + $canceled_amount = $shipping_price * $order_item->qty_to_cancel * $order_item->weight; + $canceled_base_amount = $base_shipping_price * $order_item->qty_to_cancel * $order_item->weight; + + $order->shipping_amount = $order->shipping_amount - $canceled_amount; + $order->base_shipping_amount = $order->base_shipping_amount - $canceled_base_amount; + + return $order; + } } \ No newline at end of file