diff --git a/packages/Sarga/Admin/src/Http/Controllers/Orders.php b/packages/Sarga/Admin/src/Http/Controllers/Orders.php
index 6b95f606e..96a3ae35d 100644
--- a/packages/Sarga/Admin/src/Http/Controllers/Orders.php
+++ b/packages/Sarga/Admin/src/Http/Controllers/Orders.php
@@ -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();
}
}
\ No newline at end of file
diff --git a/packages/Sarga/Admin/src/Resources/views/sales/orders/view.blade.php b/packages/Sarga/Admin/src/Resources/views/sales/orders/view.blade.php
index d72c41873..01a5fae90 100644
--- a/packages/Sarga/Admin/src/Resources/views/sales/orders/view.blade.php
+++ b/packages/Sarga/Admin/src/Resources/views/sales/orders/view.blade.php
@@ -353,9 +353,11 @@
{{ core()->formatPrice($item->total + $item->tax_amount - $item->discount_amount,$order->order_currency_code) }} |
+ @if($item->canCancel())
+ @endif
|
@endforeach
diff --git a/packages/Sarga/Shop/src/Repositories/OrderItemRepository.php b/packages/Sarga/Shop/src/Repositories/OrderItemRepository.php
index 5845c5260..bb6c09335 100644
--- a/packages/Sarga/Shop/src/Repositories/OrderItemRepository.php
+++ b/packages/Sarga/Shop/src/Repositories/OrderItemRepository.php
@@ -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;
}
}
\ No newline at end of file