From 4eaf2692aa1373af7221c5c804584a868d971261 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Batuhan=20Ba=C5=9F?= Date: Wed, 17 Oct 2018 20:58:46 +0300 Subject: [PATCH] Invoice customization added --- app/Http/Controllers/Settings/Settings.php | 21 ++++++++ app/Http/ViewComposers/InvoiceText.php | 49 +++++++++++++++++++ app/Providers/FormServiceProvider.php | 4 ++ app/Providers/ViewComposerServiceProvider.php | 5 ++ resources/lang/en-GB/settings.php | 10 ++++ .../views/incomes/invoices/create.blade.php | 6 +-- .../views/incomes/invoices/edit.blade.php | 6 +-- .../views/incomes/invoices/invoice.blade.php | 6 +-- .../views/incomes/invoices/show.blade.php | 6 +-- .../partials/form/invoice_text.blade.php | 20 ++++++++ .../views/settings/settings/edit.blade.php | 6 +++ 11 files changed, 127 insertions(+), 12 deletions(-) create mode 100644 app/Http/ViewComposers/InvoiceText.php create mode 100644 resources/views/partials/form/invoice_text.blade.php diff --git a/app/Http/Controllers/Settings/Settings.php b/app/Http/Controllers/Settings/Settings.php index 59dddca44..0f3006fd3 100644 --- a/app/Http/Controllers/Settings/Settings.php +++ b/app/Http/Controllers/Settings/Settings.php @@ -67,6 +67,24 @@ class Settings extends Controller 'space' => trans('settings.localisation.date.space'), ]; + $item_names = [ + 'settings.invoice.item' => trans('settings.invoice.item'), + 'settings.invoice.product' => trans('settings.invoice.product'), + 'settings.invoice.service' => trans('settings.invoice.service'), + 'custom' => trans('settings.invoice.custom'), + ]; + + $price_names = [ + 'settings.invoice.price' => trans('settings.invoice.price'), + 'settings.invoice.rate' => trans('settings.invoice.rate'), + 'custom' => trans('settings.invoice.custom'), + ]; + + $quantity_names = [ + 'settings.invoice.quantity' => trans('settings.invoice.quantity'), + 'custom' => trans('settings.invoice.custom'), + ]; + $email_protocols = [ 'mail' => trans('settings.email.php'), 'smtp' => trans('settings.email.smtp.name'), @@ -88,6 +106,9 @@ class Settings extends Controller 'payment_methods', 'date_formats', 'date_separators', + 'item_names', + 'price_names', + 'quantity_names', 'email_protocols', 'percent_positions' )); diff --git a/app/Http/ViewComposers/InvoiceText.php b/app/Http/ViewComposers/InvoiceText.php new file mode 100644 index 000000000..b9af97141 --- /dev/null +++ b/app/Http/ViewComposers/InvoiceText.php @@ -0,0 +1,49 @@ + trans_choice('general.items', 2), + 'quantity' => trans('invoices.quantity'), + 'price' => trans('invoices.price'), + ]; + + $text_items = setting('general.invoice_item'); + + if ($text_items == 'custom') { + $text_items = setting('general.invoice_item_input'); + } + + $text_quantity = setting('general.invoice_quantity'); + + if ($text_quantity == 'custom') { + $text_quantity = setting('general.invoice_quantity_input'); + } + + $text_price = setting('general.invoice_price'); + + if ($text_price == 'custom') { + $text_price = setting('general.invoice_price_input'); + } + + $text_override['items'] = $text_items; + $text_override['quantity'] = $text_quantity; + $text_override['price'] = $text_price; + + $view->with(['text_override' => $text_override]); + } + +} \ No newline at end of file diff --git a/app/Providers/FormServiceProvider.php b/app/Providers/FormServiceProvider.php index 47c07b08e..fe4d30725 100644 --- a/app/Providers/FormServiceProvider.php +++ b/app/Providers/FormServiceProvider.php @@ -67,6 +67,10 @@ class FormServiceProvider extends ServiceProvider 'page', 'model' => null, ]); + Form::component('invoice_text', 'partials.form.invoice_text', [ + 'name', 'text', 'icon', 'values', 'selected' => null, 'attributes' => ['required' => 'required'], 'input_name', 'input_value', 'col' => 'col-md-6', + ]); + Form::component('dateRange', 'partials.form.date_range', [ 'name', 'text', 'icon', 'attributes' => ['required' => 'required'], 'value' => null, 'col' => 'col-md-6', ]); diff --git a/app/Providers/ViewComposerServiceProvider.php b/app/Providers/ViewComposerServiceProvider.php index 689827c36..7cd15d6ac 100644 --- a/app/Providers/ViewComposerServiceProvider.php +++ b/app/Providers/ViewComposerServiceProvider.php @@ -53,6 +53,11 @@ class ViewComposerServiceProvider extends ServiceProvider View::composer( ['incomes.invoices.invoice', 'expenses.bills.bill'], 'App\Http\ViewComposers\Logo' ); + + // Add Invoice Text + View::composer( + ['incomes.invoices.*'], 'App\Http\ViewComposers\InvoiceText' + ); } /** diff --git a/resources/lang/en-GB/settings.php b/resources/lang/en-GB/settings.php index 0b4bec21b..8d80e67cb 100644 --- a/resources/lang/en-GB/settings.php +++ b/resources/lang/en-GB/settings.php @@ -33,6 +33,16 @@ return [ 'digit' => 'Number Digit', 'next' => 'Next Number', 'logo' => 'Logo', + 'custom' => 'Custom', + 'item_name' => 'Item Name', + 'item' => 'Item (Default)', + 'product' => 'Product', + 'service' => 'Service', + 'price_name' => 'Price Name', + 'price' => 'Price (Default)', + 'rate' => 'Rate', + 'quantity_name' => 'Quantity Name', + 'quantity' => 'Quantity (Default)', ], 'default' => [ 'tab' => 'Defaults', diff --git a/resources/views/incomes/invoices/create.blade.php b/resources/views/incomes/invoices/create.blade.php index 52bb40641..4934d672a 100644 --- a/resources/views/incomes/invoices/create.blade.php +++ b/resources/views/incomes/invoices/create.blade.php @@ -33,7 +33,7 @@ {{ Form::textGroup('order_number', trans('invoices.order_number'), 'shopping-cart', []) }}
- {!! Form::label('items', trans_choice('general.items', 2), ['class' => 'control-label']) !!} + {!! Form::label('items', trans_choice($text_override['items'], 2), ['class' => 'control-label']) !!}
@@ -45,10 +45,10 @@ @stack('name_th_end') @stack('quantity_th_start') - + @stack('quantity_th_end') @stack('price_th_start') - + @stack('price_th_end') @stack('taxes_th_start') diff --git a/resources/views/incomes/invoices/edit.blade.php b/resources/views/incomes/invoices/edit.blade.php index 149d15f5c..d860032c8 100644 --- a/resources/views/incomes/invoices/edit.blade.php +++ b/resources/views/incomes/invoices/edit.blade.php @@ -21,7 +21,7 @@ {{ Form::textGroup('order_number', trans('invoices.order_number'), 'shopping-cart',[]) }}
- {!! Form::label('items', trans_choice('general.items', 2), ['class' => 'control-label']) !!} + {!! Form::label('items', trans_choice($text_override['items'], 2), ['class' => 'control-label']) !!}
{{ trans('general.name') }}{{ trans('invoices.quantity') }}{{ trans($text_override['quantity']) }}{{ trans('invoices.price') }}{{ trans($text_override['price']) }}{{ trans_choice('general.taxes', 1) }}
@@ -33,10 +33,10 @@ @stack('name_th_end') @stack('quantity_th_start') - + @stack('quantity_th_end') @stack('price_th_start') - + @stack('price_th_end') @stack('taxes_th_start') diff --git a/resources/views/incomes/invoices/invoice.blade.php b/resources/views/incomes/invoices/invoice.blade.php index 132a635b0..cf6d31f6c 100644 --- a/resources/views/incomes/invoices/invoice.blade.php +++ b/resources/views/incomes/invoices/invoice.blade.php @@ -72,9 +72,9 @@
{{ trans('general.name') }}{{ trans('invoices.quantity') }}{{ trans($text_override['quantity']) }}{{ trans('invoices.price') }}{{ trans($text_override['price']) }}{{ trans_choice('general.taxes', 1) }}
- - - + + + diff --git a/resources/views/incomes/invoices/show.blade.php b/resources/views/incomes/invoices/show.blade.php index 031d1c557..32a90a996 100644 --- a/resources/views/incomes/invoices/show.blade.php +++ b/resources/views/incomes/invoices/show.blade.php @@ -98,9 +98,9 @@
{{ trans_choice('general.items', 1) }}{{ trans('invoices.quantity') }}{{ trans('invoices.price') }}{{ trans_choice($text_override['items'], 2) }}{{ trans($text_override['quantity']) }}{{ trans($text_override['price']) }} {{ trans('invoices.total') }}
- - - + + + @foreach($invoice->items as $item) diff --git a/resources/views/partials/form/invoice_text.blade.php b/resources/views/partials/form/invoice_text.blade.php new file mode 100644 index 000000000..a479d8bea --- /dev/null +++ b/resources/views/partials/form/invoice_text.blade.php @@ -0,0 +1,20 @@ +@stack($name . '_input_start') + +
+
+ {!! Form::label($name, $text, ['class' => 'control-label']) !!} +
+
+ {!! Form::select($name, $values, $selected, array_merge(['class' => 'form-control', 'placeholder' => trans('general.form.select.field', ['field' => $text])], $attributes)) !!} +
+ {!! $errors->first($name, '

:message

') !!} +
+ +
+ {!! Form::label($input_name, trans('settings.invoice.custom'), ['class' => 'control-label']) !!} + {!! Form::text($input_name, $input_value, ['class' => 'form-control']) !!} + {!! $errors->first($input_name, '

:message

') !!} +
+
+ +@stack($name . '_input_end') diff --git a/resources/views/settings/settings/edit.blade.php b/resources/views/settings/settings/edit.blade.php index 360678323..8b8d99f91 100644 --- a/resources/views/settings/settings/edit.blade.php +++ b/resources/views/settings/settings/edit.blade.php @@ -58,6 +58,12 @@ {{ Form::textGroup('invoice_number_next', trans('settings.invoice.next'), 'chevron-right', []) }} + {{ Form::invoice_text('invoice_item', trans('settings.invoice.item_name'), 'font', $item_names, null, [], 'invoice_item_input', null) }} + + {{ Form::invoice_text('invoice_price', trans('settings.invoice.price_name'), 'font', $price_names, null, [], 'invoice_price_input', null) }} + + {{ Form::invoice_text('invoice_quantity', trans('settings.invoice.quantity_name'), 'font', $quantity_names, null, [], 'invoice_quantity_input', null) }} + {{ Form::fileGroup('invoice_logo', trans('settings.invoice.logo')) }}
{{ trans_choice('general.items', 1) }}{{ trans('invoices.quantity') }}{{ trans('invoices.price') }}{{ trans_choice($text_override['items'], 2) }}{{ trans($text_override['quantity']) }}{{ trans($text_override['price']) }} {{ trans('invoices.total') }}