diff --git a/packages/Webkul/Admin/src/DataGrids/OrderInvoicesDataGrid.php b/packages/Webkul/Admin/src/DataGrids/OrderInvoicesDataGrid.php index 11b545ef7..0570987c3 100755 --- a/packages/Webkul/Admin/src/DataGrids/OrderInvoicesDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/OrderInvoicesDataGrid.php @@ -45,6 +45,19 @@ class OrderInvoicesDataGrid extends DataGrid 'filterable' => true, ]); + $this->addColumn([ + 'index' => 'created_at', + 'label' => trans('admin::app.datagrid.invoice-date'), + 'type' => 'string', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true, + 'closure' => true, + 'wrapper' => function ($value) { + return \Carbon\Carbon::parse($value->created_at)->format('d-m-Y'); + } + ]); + $this->addColumn([ 'index' => 'base_grand_total', 'label' => trans('admin::app.datagrid.grand-total'), @@ -55,12 +68,22 @@ class OrderInvoicesDataGrid extends DataGrid ]); $this->addColumn([ - 'index' => 'created_at', - 'label' => trans('admin::app.datagrid.invoice-date'), - 'type' => 'datetime', + 'index' => 'state', + 'label' => trans('admin::app.datagrid.state'), + 'type' => 'string', + 'closure' => true, 'searchable' => true, 'sortable' => true, 'filterable' => true, + 'wrapper' => function ($value) { + if ($value->state == 'paid') { + return ''. trans('admin::app.sales.orders.invoice-status-paid') .''; + } elseif ($value->state == "pending") { + return ''. trans('admin::app.sales.orders.invoice-status-pending') .''; + } elseif ($value->state == "overdue") { + return ''. trans('admin::app.sales.orders.invoice-status-overdue') . ''; + } + } ]); } diff --git a/packages/Webkul/Admin/src/Http/Controllers/Customer/CustomerController.php b/packages/Webkul/Admin/src/Http/Controllers/Customer/CustomerController.php index 18ec38400..4c4de66c7 100755 --- a/packages/Webkul/Admin/src/Http/Controllers/Customer/CustomerController.php +++ b/packages/Webkul/Admin/src/Http/Controllers/Customer/CustomerController.php @@ -64,12 +64,12 @@ class CustomerController extends Controller CustomerGroupRepository $customerGroupRepository, ChannelRepository $channelRepository ) - + { $this->_config = request('_config'); $this->middleware('admin'); $this->customerRepository = $customerRepository; - + $this->customerAddressRepository = $customerAddressRepository; $this->customerGroupRepository = $customerGroupRepository; $this->channelRepository = $channelRepository; @@ -200,12 +200,19 @@ class CustomerController extends Controller $customer = $this->customerRepository->findorFail($id); try { - $this->customerRepository->delete($id); + + if (! $this->customerRepository->checkIfCustomerHasOrderPendingOrProcessing($customer)) { + + $this->customerRepository->delete($id); + } else { + + return response()->json(['message' => false], 400); + } session()->flash('success', trans('admin::app.response.delete-success', ['name' => 'Customer'])); - return response()->json(['message' => true], 200); } catch (\Exception $e) { + session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Customer'])); } @@ -279,12 +286,18 @@ class CustomerController extends Controller { $customerIds = explode(',', request()->input('indexes')); - foreach ($customerIds as $customerId) { - $this->customerRepository->deleteWhere(['id' => $customerId]); + if (!$this->customerRepository->checkBulkCustomerIfTheyHaveOrderPendingOrProcessing($customerIds)) { + + foreach ($customerIds as $customerId) { + $this->customerRepository->deleteWhere(['id' => $customerId]); + } + + session()->flash('success', trans('admin::app.customers.customers.mass-destroy-success')); + + return redirect()->back(); } - session()->flash('success', trans('admin::app.customers.customers.mass-destroy-success')); - + session()->flash('error', trans('admin::app.response.order-pending', ['name' => 'Customers'])); return redirect()->back(); } } \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Http/Controllers/Sales/InvoiceController.php b/packages/Webkul/Admin/src/Http/Controllers/Sales/InvoiceController.php index 3931fc268..2d346bf2a 100755 --- a/packages/Webkul/Admin/src/Http/Controllers/Sales/InvoiceController.php +++ b/packages/Webkul/Admin/src/Http/Controllers/Sales/InvoiceController.php @@ -2,9 +2,12 @@ namespace Webkul\Admin\Http\Controllers\Sales; +use Illuminate\Http\Request; + use Webkul\Admin\Http\Controllers\Controller; use Webkul\Sales\Repositories\OrderRepository; use Webkul\Sales\Repositories\InvoiceRepository; + use PDF; class InvoiceController extends Controller @@ -97,7 +100,7 @@ class InvoiceController extends Controller $data = request()->all(); $haveProductToInvoice = false; - + foreach ($data['invoice']['items'] as $itemId => $qty) { if ($qty) { $haveProductToInvoice = true; @@ -145,4 +148,29 @@ class InvoiceController extends Controller return $pdf->download('invoice-' . $invoice->created_at->format('d-m-Y') . '.pdf'); } + + /** + * Update the invoice state. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function updateState($id, Request $request) + { + $invoice = $this->invoiceRepository->findOrFail($id); + $task = $this->invoiceRepository->updateInvoiceState($invoice, $request->state); + + if($request->state == 'paid'){ + $order = $this->orderRepository->findOrFail($invoice->order->id); + $this->orderRepository->updateOrderStatus($order); + } + + if ($task){ + session()->flash('success', trans('admin::app.sales.orders.invoice-status-confirmed')); + } else { + session()->flash('success', trans('admin::app.sales.orders.invoice-status-error')); + } + + return back(); + } } diff --git a/packages/Webkul/Admin/src/Http/Requests/ConfigurationForm.php b/packages/Webkul/Admin/src/Http/Requests/ConfigurationForm.php index 4611ad6b5..3eb339d75 100644 --- a/packages/Webkul/Admin/src/Http/Requests/ConfigurationForm.php +++ b/packages/Webkul/Admin/src/Http/Requests/ConfigurationForm.php @@ -29,9 +29,17 @@ class ConfigurationForm extends FormRequest if (request()->has('general.design.admin_logo.logo_image') && ! request()->input('general.design.admin_logo.logo_image.delete') ) { - $this->rules = [ - 'general.design.admin_logo.logo_image' => 'required|mimes:jpeg,bmp,png,jpg', - ]; + $this->rules = array_merge($this->rules, [ + 'general.design.admin_logo.logo_image' => 'required|mimes:jpeg,bmp,png,jpg|max:5000', + ]); + } + + if (request()->has('general.design.admin_logo.favicon') + && ! request()->input('general.design.admin_logo.favicon.delete') + ) { + $this->rules = array_merge($this->rules, [ + 'general.design.admin_logo.favicon' => 'required|mimes:jpeg,bmp,png,jpg|max:5000', + ]); } return $this->rules; @@ -48,4 +56,15 @@ class ConfigurationForm extends FormRequest 'general.design.admin_logo.logo_image.mimes' => 'Invalid file format. Use only jpeg, bmp, png, jpg.', ]; } -} + + /** + * Set the attribute name. + */ + public function attributes() + { + return [ + 'general.design.admin_logo.logo_image' => 'Logo Image', + 'general.design.admin_logo.favicon' => 'Favicon Image' + ]; + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Http/routes.php b/packages/Webkul/Admin/src/Http/routes.php index b4f9cce62..07ab2fc32 100755 --- a/packages/Webkul/Admin/src/Http/routes.php +++ b/packages/Webkul/Admin/src/Http/routes.php @@ -211,6 +211,10 @@ Route::group(['middleware' => ['web']], function () { 'view' => 'admin::sales.invoices.print', ])->name('admin.sales.invoices.print'); + Route::post('/invoices/update/state/{order_id}', 'Webkul\Admin\Http\Controllers\Sales\InvoiceController@updateState')->defaults('_config', [ + 'redirect' => 'admin.sales.orders.view', + ])->name('admin.sales.invoices.update.state'); + // Sales Shipments Routes Route::get('/shipments', 'Webkul\Admin\Http\Controllers\Sales\ShipmentController@index')->defaults('_config', [ diff --git a/packages/Webkul/Admin/src/Resources/lang/de/app.php b/packages/Webkul/Admin/src/Resources/lang/de/app.php index 881147964..192909b92 100755 --- a/packages/Webkul/Admin/src/Resources/lang/de/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/de/app.php @@ -320,6 +320,14 @@ return array ( 'invoice-btn-title' => 'Rechnung', 'info' => 'Informationen', 'invoices' => 'Rechnungen', + 'invoices-change-title' => 'Change invoice state', + 'invoices-change-state-desc' => 'Please select the new invoice state:', + 'invoice-status-paid' => 'Paid', + 'invoice-status-pending' => 'Pending', + 'invoice-status-overdue' => 'Overdue', + 'invoice-status-update' => 'Save changes', + 'invoice-status-confirmed' => 'The invoice state has been changed.', + 'invoice-status-error' => 'Could not update the invoice state. ', 'shipments' => 'Sendungen', 'order-and-account' => 'Bestellung und Rechnung', 'order-info' => 'Bestellinformationen', diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php index ac7a8ad25..fd1c381bf 100755 --- a/packages/Webkul/Admin/src/Resources/lang/en/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -319,6 +319,14 @@ return [ 'invoice-btn-title' => 'Invoice', 'info' => 'Information', 'invoices' => 'Invoices', + 'invoices-change-title' => 'Change invoice state', + 'invoices-change-state-desc' => 'Please select the new invoice state:', + 'invoice-status-paid' => 'Paid', + 'invoice-status-pending' => 'Pending', + 'invoice-status-overdue' => 'Overdue', + 'invoice-status-update' => 'Save changes', + 'invoice-status-confirmed' => 'The invoice state has been changed.', + 'invoice-status-error' => 'Could not update the invoice state. ', 'shipments' => 'Shipments', 'order-and-account' => 'Order and Account', 'order-info' => 'Order Information', @@ -1219,7 +1227,7 @@ return [ 'cancel-success' => ':name canceled successfully.', 'cancel-error' => ':name can not be canceled.', 'already-taken' => 'The :name has already been taken.', - 'order-pending' => 'Cannot delete account because some Order(s) are pending or processing state.' + 'order-pending' => 'Cannot delete :name account because some Order(s) are pending or processing state.' ], 'footer' => [ diff --git a/packages/Webkul/Admin/src/Resources/lang/fa/app.php b/packages/Webkul/Admin/src/Resources/lang/fa/app.php index 6f88bc54e..410af2d47 100644 --- a/packages/Webkul/Admin/src/Resources/lang/fa/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/fa/app.php @@ -318,6 +318,14 @@ return [ 'invoice-btn-title' => 'صورت حساب', 'info' => 'اطلاعات', 'invoices' => 'صورت حساب ها', + 'invoices-change-title' => 'Change invoice state', + 'invoices-change-state-desc' => 'Please select the new invoice state:', + 'invoice-status-paid' => 'Paid', + 'invoice-status-pending' => 'Pending', + 'invoice-status-overdue' => 'Overdue', + 'invoice-status-update' => 'Save changes', + 'invoice-status-confirmed' => 'The invoice state has been changed.', + 'invoice-status-error' => 'Could not update the invoice state. ', 'shipments' => 'حمل و نقل ها', 'order-and-account' => 'سفارش و حساب', 'order-info' => 'اطلاعات سفارش', diff --git a/packages/Webkul/Admin/src/Resources/lang/it/app.php b/packages/Webkul/Admin/src/Resources/lang/it/app.php index 580ab92d2..fca9749c8 100644 --- a/packages/Webkul/Admin/src/Resources/lang/it/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/it/app.php @@ -318,6 +318,14 @@ return [ 'invoice-btn-title' => 'Fattura', 'info' => 'Informazoni', 'invoices' => 'Fatture', + 'invoices-change-title' => 'Change invoice state', + 'invoices-change-state-desc' => 'Please select the new invoice state:', + 'invoice-status-paid' => 'Paid', + 'invoice-status-pending' => 'Pending', + 'invoice-status-overdue' => 'Overdue', + 'invoice-status-update' => 'Save changes', + 'invoice-status-confirmed' => 'The invoice state has been changed.', + 'invoice-status-error' => 'Could not update the invoice state. ', 'shipments' => 'Spedizioni', 'order-and-account' => 'Ordine e Account', 'order-info' => 'informazioni Ordine', diff --git a/packages/Webkul/Admin/src/Resources/lang/nl/app.php b/packages/Webkul/Admin/src/Resources/lang/nl/app.php index 3c67966f2..f7ca87ef7 100644 --- a/packages/Webkul/Admin/src/Resources/lang/nl/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/nl/app.php @@ -318,6 +318,14 @@ return [ 'invoice-btn-title' => 'Factuur', 'info' => 'Informatie', 'invoices' => 'Facturen', + 'invoices-change-title' => 'Change invoice state', + 'invoices-change-state-desc' => 'Please select the new invoice state:', + 'invoice-status-paid' => 'Paid', + 'invoice-status-pending' => 'Pending', + 'invoice-status-overdue' => 'Overdue', + 'invoice-status-update' => 'Save changes', + 'invoice-status-confirmed' => 'The invoice state has been changed.', + 'invoice-status-error' => 'Could not update the invoice state. ', 'shipments' => 'Verzendingen', 'order-and-account' => 'Order and Account', 'order-info' => 'Order Information', diff --git a/packages/Webkul/Admin/src/Resources/lang/pl/app.php b/packages/Webkul/Admin/src/Resources/lang/pl/app.php index a714a24b3..960202a88 100644 --- a/packages/Webkul/Admin/src/Resources/lang/pl/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/pl/app.php @@ -317,6 +317,14 @@ return [ 'invoice-btn-title' => 'Faktura', 'info' => 'Informacje', 'invoices' => 'Faktury', + 'invoices-change-title' => 'Change invoice state', + 'invoices-change-state-desc' => 'Please select the new invoice state:', + 'invoice-status-paid' => 'Paid', + 'invoice-status-pending' => 'Pending', + 'invoice-status-overdue' => 'Overdue', + 'invoice-status-update' => 'Save changes', + 'invoice-status-confirmed' => 'The invoice state has been changed.', + 'invoice-status-error' => 'Could not update the invoice state. ', 'shipments' => 'Przesyłki', 'order-and-account' => 'Zamówienie i konto', 'order-info' => 'Informacje o zamówieniu', diff --git a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php index fb31ad0dc..4043e01f3 100755 --- a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php @@ -318,6 +318,14 @@ return [ 'invoice-btn-title' => 'Faturar', 'info' => 'Informação', 'invoices' => 'Faturas', + 'invoices-change-title' => 'Change invoice state', + 'invoices-change-state-desc' => 'Please select the new invoice state:', + 'invoice-status-paid' => 'Paid', + 'invoice-status-pending' => 'Pending', + 'invoice-status-overdue' => 'Overdue', + 'invoice-status-update' => 'Save changes', + 'invoice-status-confirmed' => 'The invoice state has been changed.', + 'invoice-status-error' => 'Could not update the invoice state. ', 'shipments' => 'Envios', 'order-and-account' => 'Pedido e Conta', 'order-info' => 'Informação do Pedido', diff --git a/packages/Webkul/Admin/src/Resources/lang/tr/app.php b/packages/Webkul/Admin/src/Resources/lang/tr/app.php index b9bd5afd2..f1c7b8103 100644 --- a/packages/Webkul/Admin/src/Resources/lang/tr/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/tr/app.php @@ -316,6 +316,14 @@ return [ 'invoice-btn-title' => 'Fatura', 'info' => 'Bilgi', 'invoices' => 'Faturalar', + 'invoices-change-title' => 'Change invoice state', + 'invoices-change-state-desc' => 'Please select the new invoice state:', + 'invoice-status-paid' => 'Paid', + 'invoice-status-pending' => 'Pending', + 'invoice-status-overdue' => 'Overdue', + 'invoice-status-update' => 'Save changes', + 'invoice-status-confirmed' => 'The invoice state has been changed.', + 'invoice-status-error' => 'Could not update the invoice state. ', 'shipments' => 'Kargo', 'order-and-account' => 'Sipariş ve Hesap', 'order-info' => 'Sipariş Bilgisi', diff --git a/packages/Webkul/Admin/src/Resources/views/sales/invoices/index.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/invoices/index.blade.php index 42b871faf..ef1dd4412 100755 --- a/packages/Webkul/Admin/src/Resources/views/sales/invoices/index.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/sales/invoices/index.blade.php @@ -13,10 +13,7 @@