parse test

This commit is contained in:
merdan 2022-07-05 14:44:54 +05:00
parent 4e7db448aa
commit 15874297a5
4 changed files with 69 additions and 28 deletions

View File

@ -32,10 +32,14 @@ class Orders extends OrderController
$orderItem = $this->orderItemRepository->with('order') $orderItem = $this->orderItemRepository->with('order')
->findOrFail($item_id); ->findOrFail($item_id);
if($order->shipping_amount>0){
$order = $this->orderRepository->calculateShipping($order,$orderItem);
}
if($this->orderItemRepository->cancel($orderItem)) if($this->orderItemRepository->cancel($orderItem))
{ {
$order = $this->orderRepository->calculateTotals($order,$orderItem);
$order = $this->orderRepository->updateOrderStatus($order); $order = $this->orderRepository->updateOrderStatus($order);
$order = $this->orderRepository->calculateTotals($order);
return response(['data'=>[ return response(['data'=>[
'order' => new OrderResource($order)], 'order' => new OrderResource($order)],

View File

@ -51,10 +51,14 @@ class Orders extends OrderController
$order = $orderItem->order; $order = $orderItem->order;
if($order->shipping_amount>0){
$order = $this->orderRepository->calculateShipping($order,$orderItem);
}
if($this->orderItemRepository->cancel($orderItem)) if($this->orderItemRepository->cancel($orderItem))
{ {
$this->orderRepository->updateOrderStatus($order); $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'])); session()->flash('success', trans('admin::app.response.cancel-success', ['name' => 'Order Item']));
} }
else else

View File

@ -27,15 +27,51 @@ class OrderItemRepository extends WOrderItemRepo
} }
if ($orderItem->qty_ordered) { 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->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(); $orderItem->save();
if ($orderItem->parent && $orderItem->parent->qty_ordered) { 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->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(); $orderItem->parent->save();
} }
} else { } 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->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(); $orderItem->parent->save();
} }
} }

View File

@ -47,36 +47,33 @@ class OrderRepository extends WOrderRepository
return $order->items()->sum('qty_invoiced') > 0; return $order->items()->sum('qty_invoiced') > 0;
} }
public function calculateTotals($order, $order_item){ public function calculateTotals($order){
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;
}
if($order && $order_item){ $order->sub_total = $order->items()->sum('total');
$total_price = $order_item->price * $order_item->qty_canceled; $order->base_sub_total = $order->items()->sum('base_total');
$total_base_price = $order_item->base_price * $order_item->qty_canceled;
$total_discount = $total_price * $order_item->discount_percent/100; // dd($order);
$total_base_discount = $total_base_price * $order_item->discount_percent/100; $order->grand_total = $order->shipping_amount + $order->sub_total - $order->items->sum('discount_amount') - $order->shipping_discount_amount;
$order->sub_total = $order->sub_total - $total_price; $order->base_grand_total = $order->base_shipping_amount + $order->base_sub_total - $order->items->sum('base_discount_amount') - $order->base_shipping_discount_amount;
$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->save(); $order->save();
return $order; 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;
}
} }