From 9dc63ca5d9430377a68f5661d4b82c45c8b00df5 Mon Sep 17 00:00:00 2001 From: merdan Date: Fri, 4 Nov 2022 14:54:23 +0500 Subject: [PATCH] filter options --- .../Admin/src/Http/Controllers/Orders.php | 13 +++++ .../Sarga/Admin/src/Resources/lang/en/app.php | 2 + .../views/sales/orders/view.blade.php | 13 +++++ .../Sarga/Admin/src/Routes/sales-routes.php | 7 +++ packages/Sarga/Shop/src/Contracts/Order.php | 7 +++ packages/Sarga/Shop/src/Models/Order.php | 47 +++++++++++++++++++ packages/Sarga/Shop/src/Models/OrderProxy.php | 10 ++++ .../src/Providers/ModuleServiceProvider.php | 1 + .../Shop/src/Repositories/OrderRepository.php | 9 ++++ 9 files changed, 109 insertions(+) create mode 100644 packages/Sarga/Shop/src/Contracts/Order.php create mode 100644 packages/Sarga/Shop/src/Models/Order.php create mode 100644 packages/Sarga/Shop/src/Models/OrderProxy.php diff --git a/packages/Sarga/Admin/src/Http/Controllers/Orders.php b/packages/Sarga/Admin/src/Http/Controllers/Orders.php index 10433b33d..a4ccdbd2a 100644 --- a/packages/Sarga/Admin/src/Http/Controllers/Orders.php +++ b/packages/Sarga/Admin/src/Http/Controllers/Orders.php @@ -3,6 +3,7 @@ namespace Sarga\Admin\Http\Controllers; use Sarga\Admin\DataGrids\OrderDataGrid; +use Sarga\Shop\Models\Order; use Sarga\Shop\Repositories\OrderItemRepository; use Sarga\Shop\Repositories\OrderRepository; use Webkul\Admin\Http\Controllers\Sales\OrderController; @@ -68,4 +69,16 @@ class Orders extends OrderController return redirect()->back(); } + + public function accept($orderId){ + $order = $this->orderRepository->findOrFail($orderId); + $this->orderRepository->updateOrderStatus($order, Order::STATUS_PURCHASE); + return redirect()->back(); + } + + public function ship($orderId){ + $order = $this->orderRepository->findOrFail($orderId); + $this->orderRepository->updateOrderStatus($order, Order::STATUS_SHIPPING); + return redirect()->back(); + } } \ No newline at end of file diff --git a/packages/Sarga/Admin/src/Resources/lang/en/app.php b/packages/Sarga/Admin/src/Resources/lang/en/app.php index 7e1355fc7..640a8781d 100644 --- a/packages/Sarga/Admin/src/Resources/lang/en/app.php +++ b/packages/Sarga/Admin/src/Resources/lang/en/app.php @@ -9,6 +9,8 @@ return [ 'title' => 'Orders', 'view-title' => 'Order #:order_id', 'cancel-btn-title' => 'Cancel', + 'accept-btn-title' => 'Accept', + 'ship-btn-title' => 'Cargo', 'shipment-btn-title' => 'Ship', 'invoice-btn-title' => 'Invoice', 'info' => 'Information', 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 8f83ed5ca..9428360b1 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 @@ -26,8 +26,21 @@ {{ __('admin::app.sales.orders.cancel-btn-title') }} + @endif + @if ($order->canAccept()) + + + {{ __('admin::app.sales.orders.accept-btn-title') }} + + @endif + @if ($order->canSendShip()) + + + {{ __('admin::app.sales.orders.ship-btn-title') }} + + @endif @if ($order->canInvoice() && $order->payment->method !== 'paypal_standard') {{ __('admin::app.sales.orders.invoice-btn-title') }} diff --git a/packages/Sarga/Admin/src/Routes/sales-routes.php b/packages/Sarga/Admin/src/Routes/sales-routes.php index d6cfd70c6..ba61069f4 100644 --- a/packages/Sarga/Admin/src/Routes/sales-routes.php +++ b/packages/Sarga/Admin/src/Routes/sales-routes.php @@ -13,11 +13,18 @@ Route::group(['middleware' => ['web', 'admin'], 'prefix' => config('app.admin_ur 'view' => 'admin::sales.orders.index', ])->name('admin.sales.orders.index'); + Route::get('/orders/view/{id}', [\Sarga\Admin\Http\Controllers\Orders::class, 'view'])->defaults('_config', [ + 'view' => 'admin::sales.orders.view', + ])->name('admin.sales.orders.view'); + Route::get('/orders/item/{id}/cancel', [\Sarga\Admin\Http\Controllers\Orders::class, 'cancelOrderItem']) ->name('admin.sales.orders.cancel_item'); Route::post('/shipments/create/{order_id}', [\Sarga\Admin\Http\Controllers\Shipments::class, 'store'])->defaults('_config', [ 'redirect' => 'admin.sales.orders.view', ])->name('admin.sales.shipments.store'); + + Route::get('/orders/{id}/accept',[\Sarga\Admin\Http\Controllers\Orders::class, 'accept'])->name('admin.sales.orders.accept'); + Route::get('/orders/{id}/ship',[\Sarga\Admin\Http\Controllers\Orders::class, 'ship'])->name('admin.sales.orders.ship'); }); }); \ No newline at end of file diff --git a/packages/Sarga/Shop/src/Contracts/Order.php b/packages/Sarga/Shop/src/Contracts/Order.php new file mode 100644 index 000000000..4d473ee87 --- /dev/null +++ b/packages/Sarga/Shop/src/Contracts/Order.php @@ -0,0 +1,7 @@ + 'Pending', + self::STATUS_PENDING_PAYMENT => 'Pending Payment', + self::STATUS_PROCESSING => 'Arrived', + self::STATUS_COMPLETED => 'Completed', + self::STATUS_CANCELED => 'Canceled', + self::STATUS_CLOSED => 'Closed', + self::STATUS_FRAUD => 'Fraud', + self::STATUS_PURCHASE => 'Purchasing', + self::STATUS_SHIPPING => 'Shipping', + ]; + + public function canSendShip(){ + return $this->status === self::STATUS_PURCHASE; + } + + public function canAccept(){ + return $this->status === self::STATUS_PENDING; + } + /** + * Checks if new invoice is allow or not + * + * @return bool + */ + public function canInvoice(): bool{ + return $this->status === self::STATUS_SHIPPING && parent::canInvoice(); + } + + /** + * Checks if new shipment is allow or not + * + * @return bool + */ + public function canShip(): bool{ + return $this->status === self::STATUS_SHIPPING && parent::canShip(); + } + } \ No newline at end of file diff --git a/packages/Sarga/Shop/src/Models/OrderProxy.php b/packages/Sarga/Shop/src/Models/OrderProxy.php new file mode 100644 index 000000000..81f7cb0b7 --- /dev/null +++ b/packages/Sarga/Shop/src/Models/OrderProxy.php @@ -0,0 +1,10 @@ +