From 6d246f03e49163cf77d526a6bed76d3b50b949a1 Mon Sep 17 00:00:00 2001 From: denisdulici Date: Tue, 31 Oct 2017 22:41:06 +0300 Subject: [PATCH] fixed #47 --- app/Http/Controllers/Api/Incomes/Invoices.php | 5 +++ app/Http/Controllers/Incomes/Invoices.php | 13 ++++++- app/Listeners/Updates/Version108.php | 36 +++++++++++++++++++ app/Providers/EventServiceProvider.php | 1 + database/seeds/Settings.php | 6 ++-- resources/lang/en-GB/settings.php | 8 ++--- resources/views/expenses/bills/bill.blade.php | 4 +-- resources/views/expenses/bills/show.blade.php | 4 +-- .../views/incomes/invoices/create.blade.php | 4 +-- .../views/incomes/invoices/invoice.blade.php | 4 +-- .../views/incomes/invoices/show.blade.php | 4 +-- .../views/settings/settings/edit.blade.php | 6 ++-- 12 files changed, 74 insertions(+), 21 deletions(-) create mode 100644 app/Listeners/Updates/Version108.php diff --git a/app/Http/Controllers/Api/Incomes/Invoices.php b/app/Http/Controllers/Api/Incomes/Invoices.php index d28fe57a2..988b6d611 100644 --- a/app/Http/Controllers/Api/Incomes/Invoices.php +++ b/app/Http/Controllers/Api/Incomes/Invoices.php @@ -138,6 +138,11 @@ class Invoices extends ApiController InvoiceHistory::create($request->input()); + // Update next invoice number + $next = setting('general.invoice_number_next', 1) + 1; + setting(['general.invoice_number_next' => $next]); + setting()->save(); + // Fire the event to make it extendible event(new InvoiceCreated($invoice)); diff --git a/app/Http/Controllers/Incomes/Invoices.php b/app/Http/Controllers/Incomes/Invoices.php index b09b454ec..3936b6389 100644 --- a/app/Http/Controllers/Incomes/Invoices.php +++ b/app/Http/Controllers/Incomes/Invoices.php @@ -232,7 +232,13 @@ class Invoices extends Controller $taxes = Tax::enabled()->pluck('name', 'id'); - return view('incomes.invoices.create', compact('customers', 'currencies', 'items', 'taxes')); + // Generate next invoice number + $prefix = setting('general.invoice_number_prefix', 'INV-'); + $next = setting('general.invoice_number_next', '1'); + $digit = setting('general.invoice_number_digit', '5'); + $number = $prefix . str_pad($next, $digit, '0', STR_PAD_LEFT); + + return view('incomes.invoices.create', compact('customers', 'currencies', 'items', 'taxes', 'number')); } /** @@ -345,6 +351,11 @@ class Invoices extends Controller InvoiceHistory::create($request->all()); + // Update next invoice number + $next = setting('general.invoice_number_next', 1) + 1; + setting(['general.invoice_number_next' => $next]); + setting()->save(); + // Fire the event to make it extendible event(new InvoiceCreated($invoice)); diff --git a/app/Listeners/Updates/Version108.php b/app/Listeners/Updates/Version108.php new file mode 100644 index 000000000..4e4f47fea --- /dev/null +++ b/app/Listeners/Updates/Version108.php @@ -0,0 +1,36 @@ +check($event)) { + return; + } + + setting(['general.invoice_number_prefix' => setting('general.invoice_prefix', 'INV-')]); + setting(['general.invoice_number_digit' => setting('general.invoice_digit', '5')]); + setting(['general.invoice_number_next' => setting('general.invoice_start', '1')]); + + setting()->forget('general.invoice_prefix'); + setting()->forget('general.invoice_digit'); + setting()->forget('general.invoice_start'); + + setting()->save(); + } +} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 3595b29a2..427406871 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -16,6 +16,7 @@ class EventServiceProvider extends ServiceProvider 'App\Events\UpdateFinished' => [ 'App\Listeners\Updates\Version106', 'App\Listeners\Updates\Version107', + 'App\Listeners\Updates\Version108', ], 'Illuminate\Auth\Events\Login' => [ 'App\Listeners\Auth\Login', diff --git a/database/seeds/Settings.php b/database/seeds/Settings.php index fb20a1a3b..2f9f9129e 100644 --- a/database/seeds/Settings.php +++ b/database/seeds/Settings.php @@ -30,9 +30,9 @@ class Settings extends Seeder 'general.date_format' => 'd M Y', 'general.date_separator' => 'space', 'general.timezone' => 'Europe/London', - 'general.invoice_prefix' => 'INV-', - 'general.invoice_digit' => '5', - 'general.invoice_start' => '1', + 'general.invoice_number_prefix' => 'INV-', + 'general.invoice_number_digit' => '5', + 'general.invoice_number_next' => '1', 'general.default_payment_method' => 'offlinepayment.cash.1', 'general.email_protocol' => 'mail', 'general.email_sendmail_path' => '/usr/sbin/sendmail -bs', diff --git a/resources/lang/en-GB/settings.php b/resources/lang/en-GB/settings.php index a1bf6be5d..83229e217 100644 --- a/resources/lang/en-GB/settings.php +++ b/resources/lang/en-GB/settings.php @@ -24,10 +24,10 @@ return [ ], 'invoice' => [ 'tab' => 'Invoice', - 'prefix' => 'Invoice Prefix', - 'digit' => 'Invoice Number Digit', - 'start' => 'Invoice Start Number', - 'logo' => 'Invoice Logo', + 'prefix' => 'Prefix', + 'digit' => 'Number Digit', + 'next' => 'Next Number', + 'logo' => 'Logo', ], 'default' => [ 'tab' => 'Defaults', diff --git a/resources/views/expenses/bills/bill.blade.php b/resources/views/expenses/bills/bill.blade.php index 1bf73d653..9b27e5ff2 100644 --- a/resources/views/expenses/bills/bill.blade.php +++ b/resources/views/expenses/bills/bill.blade.php @@ -7,9 +7,9 @@
@if (setting('general.invoice_logo')) - + @else - + @endif
diff --git a/resources/views/expenses/bills/show.blade.php b/resources/views/expenses/bills/show.blade.php index bdad1bb82..8d2d51484 100644 --- a/resources/views/expenses/bills/show.blade.php +++ b/resources/views/expenses/bills/show.blade.php @@ -10,9 +10,9 @@
@if (setting('general.invoice_logo')) - + @else - + @endif
diff --git a/resources/views/incomes/invoices/create.blade.php b/resources/views/incomes/invoices/create.blade.php index 43102bc0b..657716fc7 100644 --- a/resources/views/incomes/invoices/create.blade.php +++ b/resources/views/incomes/invoices/create.blade.php @@ -16,9 +16,9 @@ {{ Form::textGroup('due_at', trans('invoices.due_date'), 'calendar',['id' => 'due_at', 'class' => 'form-control', 'required' => 'required', 'data-inputmask' => '\'alias\': \'yyyy/mm/dd\'', 'data-mask' => '']) }} - {{ Form::textGroup('invoice_number', trans('invoices.invoice_number'), 'file-text-o') }} + {{ Form::textGroup('invoice_number', trans('invoices.invoice_number'), 'file-text-o', ['required' => 'required'], $number) }} - {{ Form::textGroup('order_number', trans('invoices.order_number'), 'shopping-cart',[]) }} + {{ Form::textGroup('order_number', trans('invoices.order_number'), 'shopping-cart', []) }}
{!! Form::label('items', 'Items', ['class' => 'control-label']) !!} diff --git a/resources/views/incomes/invoices/invoice.blade.php b/resources/views/incomes/invoices/invoice.blade.php index cd51919ad..e5461321c 100644 --- a/resources/views/incomes/invoices/invoice.blade.php +++ b/resources/views/incomes/invoices/invoice.blade.php @@ -7,9 +7,9 @@
@if (setting('general.invoice_logo')) - + @else - + @endif
diff --git a/resources/views/incomes/invoices/show.blade.php b/resources/views/incomes/invoices/show.blade.php index 583e86cc1..ff558f823 100644 --- a/resources/views/incomes/invoices/show.blade.php +++ b/resources/views/incomes/invoices/show.blade.php @@ -10,9 +10,9 @@
@if (setting('general.invoice_logo')) - + @else - + @endif
diff --git a/resources/views/settings/settings/edit.blade.php b/resources/views/settings/settings/edit.blade.php index b12fe9cd7..735654895 100644 --- a/resources/views/settings/settings/edit.blade.php +++ b/resources/views/settings/settings/edit.blade.php @@ -50,11 +50,11 @@
- {{ Form::textGroup('invoice_prefix', trans('settings.invoice.prefix'), 'font', []) }} + {{ Form::textGroup('invoice_number_prefix', trans('settings.invoice.prefix'), 'font', []) }} - {{ Form::textGroup('invoice_digit', trans('settings.invoice.digit'), 'text-width', []) }} + {{ Form::textGroup('invoice_number_digit', trans('settings.invoice.digit'), 'text-width', []) }} - {{ Form::textGroup('invoice_start', trans('settings.invoice.start'), 'chevron-right', []) }} + {{ Form::textGroup('invoice_number_next', trans('settings.invoice.next'), 'chevron-right', []) }} {{ Form::fileGroup('invoice_logo', trans('settings.invoice.logo')) }}