diff --git a/packages/Webkul/Admin/src/DataGrids/OrderInvoicesDataGrid.php b/packages/Webkul/Admin/src/DataGrids/OrderInvoicesDataGrid.php index f792ae4f5..0570987c3 100755 --- a/packages/Webkul/Admin/src/DataGrids/OrderInvoicesDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/OrderInvoicesDataGrid.php @@ -48,10 +48,14 @@ class OrderInvoicesDataGrid extends DataGrid $this->addColumn([ 'index' => 'created_at', 'label' => trans('admin::app.datagrid.invoice-date'), - 'type' => 'datetime', + '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([ 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/routes.php b/packages/Webkul/Admin/src/Http/routes.php index f9fa5a75b..dfeeffdb3 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/views/sales/invoices/view.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/invoices/view.blade.php index d5c7c83b2..db00425a8 100755 --- a/packages/Webkul/Admin/src/Resources/views/sales/invoices/view.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/sales/invoices/view.blade.php @@ -1,10 +1,10 @@ -@extends('admin::layouts.master') +@extends('admin::layouts.content') @section('page_title') {{ __('admin::app.sales.invoices.view-title', ['invoice_id' => $invoice->id]) }} @stop -@section('content-wrapper') +@section('content') order; ?> @@ -260,7 +260,7 @@ @push('scripts') diff --git a/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php index ce7346468..33c70a7ef 100755 --- a/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/sales/orders/view.blade.php @@ -470,7 +470,15 @@ {{ $invoice->created_at }} #{{ $invoice->order->increment_id }} {{ $invoice->address->name }} - {{ $invoice->status_label }} + + @if($invoice->state == "paid") + {{ __('admin::app.sales.orders.invoice-status-paid') }} + @elseif($invoice->state == "overdue") + {{ __('admin::app.sales.orders.invoice-status-overdue') }} + @else + {{ __('admin::app.sales.orders.invoice-status-pending') }} + @endif + {{ core()->formatBasePrice($invoice->base_grand_total) }} diff --git a/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php b/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php index 8f4f605e6..70a3882ca 100755 --- a/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php +++ b/packages/Webkul/Sales/src/Repositories/InvoiceRepository.php @@ -97,7 +97,7 @@ class InvoiceRepository extends Repository $invoice = $this->model->create([ 'order_id' => $order->id, 'total_qty' => $totalQty, - 'state' => 'paid', + 'state' => 'pending', 'base_currency_code' => $order->base_currency_code, 'channel_currency_code' => $order->channel_currency_code, 'order_currency_code' => $order->order_currency_code, @@ -106,7 +106,7 @@ class InvoiceRepository extends Repository foreach ($data['invoice']['items'] as $itemId => $qty) { if (! $qty) { - continue; + continue; } $orderItem = $this->orderItemRepository->find($itemId); @@ -192,11 +192,8 @@ class InvoiceRepository extends Repository } $this->collectTotals($invoice); - $this->orderRepository->collectTotals($order); - $this->orderRepository->updateOrderStatus($order); - Event::dispatch('sales.invoice.save.after', $invoice); } catch (\Exception $e) { DB::rollBack(); @@ -256,4 +253,16 @@ class InvoiceRepository extends Repository return $invoice; } + + /** + * @param \Webkul\Sales\Contracts\Invoice $invoice + * @return void + */ + public function updateInvoiceState($invoice, $status) + { + $invoice->state = $status; + $invoice->save(); + + return true; + } } \ No newline at end of file