order item iptal

This commit is contained in:
merdan 2022-03-17 18:44:22 +05:00
parent a07cc8c38a
commit 607c5ffbe3
3 changed files with 43 additions and 0 deletions

View File

@ -23,6 +23,12 @@ class Orders extends OrderController
}
public function cancelOrderItem(OrderItemRepository $repository,$item_id){
if($repository->cancel($item_id)){
session()->flash('success', trans('admin::app.response.cancel-success', ['name' => 'Order Item']));
} else {
session()->flash('error', trans('admin::app.response.cancel-error', ['name' => 'Order Item']));
}
return redirect()->back();
}
}

View File

@ -353,9 +353,11 @@
<td>{{ core()->formatPrice($item->total + $item->tax_amount - $item->discount_amount,$order->order_currency_code) }}</td>
<td class="action">
@if($item->canCancel())
<a href="{{ route('admin.sales.orders.cancel_item', $item->id) }}">
<i class="icon trash-icon"></i>
</a>
@endif
</td>
</tr>
@endforeach

View File

@ -6,6 +6,41 @@ use Webkul\Sales\Repositories\OrderItemRepository as WOrderItemRepo;
class OrderItemRepository extends WOrderItemRepo
{
public function cancel($itemId){
$item = $this->find($itemId);
if(! $item || ! $item->qty_to_cancel) {
return false;
}
$orderItems = [];
if ($item->getTypeInstance()->isComposite()) {
foreach ($item->children as $child) {
$orderItems[] = $child;
}
} else {
$orderItems[] = $item;
}
foreach ($orderItems as $orderItem) {
if ($orderItem->product) {
$this->orderItemRepository->returnQtyToProductInventory($orderItem);
}
if ($orderItem->qty_ordered) {
$orderItem->qty_canceled += $orderItem->qty_to_cancel;
$orderItem->save();
if ($orderItem->parent && $orderItem->parent->qty_ordered) {
$orderItem->parent->qty_canceled += $orderItem->parent->qty_to_cancel;
$orderItem->parent->save();
}
} else {
$orderItem->parent->qty_canceled += $orderItem->parent->qty_to_cancel;
$orderItem->parent->save();
}
}
return true;
}
}