From 398c8d38a6b75e68f7651ecb5ffb896a63e49e8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=BCneyt=20=C5=9Eent=C3=BCrk?= Date: Sat, 18 Aug 2018 17:16:19 +0300 Subject: [PATCH] refs #451 Items --- app/Http/Controllers/Common/Items.php | 13 ++++++++++ app/Http/Middleware/Money.php | 5 ++-- .../views/incomes/invoices/create.blade.php | 25 +++++++++++++++++++ .../views/incomes/invoices/edit.blade.php | 19 ++++++++++++++ routes/web.php | 2 +- 5 files changed, 60 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/Common/Items.php b/app/Http/Controllers/Common/Items.php index 6b0de6f2d..9e24c7df9 100644 --- a/app/Http/Controllers/Common/Items.php +++ b/app/Http/Controllers/Common/Items.php @@ -365,6 +365,19 @@ class Items extends Controller $json->grand_total = money($grand_total, $currency_code, true)->format(); + // Get currency object + $currency = Currency::where('code', $currency_code)->first(); + + $json->currency_name = $currency->name; + $json->currency_code = $currency_code; + $json->currency_rate = $currency->rate; + + $json->thousands_separator = $currency->thousands_separator; + $json->decimal_mark = $currency->decimal_mark; + $json->precision = (int) $currency->precision; + $json->symbol_first = $currency->symbol_first; + $json->symbol = $currency->symbol; + return response()->json($json); } diff --git a/app/Http/Middleware/Money.php b/app/Http/Middleware/Money.php index d322d0637..4694b71e2 100644 --- a/app/Http/Middleware/Money.php +++ b/app/Http/Middleware/Money.php @@ -23,6 +23,7 @@ class Money $purchase_price = $request->get('purchase_price'); $opening_balance = $request->get('opening_balance'); $currency_code = $request->get('currency_code'); + $items = $request->get('item'); if (empty($currency_code)) { $currency_code = setting('general.default_currency'); @@ -34,9 +35,7 @@ class Money $request->request->set('amount', $amount); } - if (isset($bill_number) || isset($invoice_number)) { - $items = $request->get('item'); - + if (isset($bill_number) || isset($invoice_number) || !empty($items)) { if (!empty($items)) { foreach ($items as $key => $item) { $items[$key]['price'] = money($item['price'], $currency_code)->getAmount(); diff --git a/resources/views/incomes/invoices/create.blade.php b/resources/views/incomes/invoices/create.blade.php index 2b58ecc35..e0b9d9e28 100644 --- a/resources/views/incomes/invoices/create.blade.php +++ b/resources/views/incomes/invoices/create.blade.php @@ -285,6 +285,7 @@ $('#item-tax-' + item_id).val(data.tax_id); // This event Select2 Stylesheet + $('#item-price-' + item_id).trigger('focusout'); $('#item-tax-' + item_id).trigger('change'); $('#item-total-' + item_id).html(data.total); @@ -400,6 +401,13 @@ dataType: 'JSON', data: $('#currency_code, #discount input[type=\'number\'], #items input[type=\'text\'],#items input[type=\'number\'],#items input[type=\'hidden\'], #items textarea, #items select'), headers: { 'X-CSRF-TOKEN': '{{ csrf_token() }}' }, + before: function () { + $('.input-price').each(function(){ + amount = $(this).maskMoney('unmasked')[0]; + + $(this).val(amount); + }); + }, success: function(data) { if (data) { $.each( data.items, function( key, value ) { @@ -412,6 +420,23 @@ $('#discount-total').html(data.discount_total); $('#tax-total').html(data.tax_total); $('#grand-total').html(data.grand_total); + + $('.input-price').each(function(){ + amount = $(this).maskMoney('unmasked')[0]; + + $(this).maskMoney({ + thousands : data.thousands_separator, + decimal : data.decimal_mark, + precision : data.precision, + allowZero : true, + prefix : (data.symbol_first) ? data.symbol : '', + suffix : (data.symbol_first) ? '' : data.symbol + }); + + $(this).val(amount); + + $(this).trigger('focusout'); + }); } } }); diff --git a/resources/views/incomes/invoices/edit.blade.php b/resources/views/incomes/invoices/edit.blade.php index 48f40f421..738e9eeb4 100644 --- a/resources/views/incomes/invoices/edit.blade.php +++ b/resources/views/incomes/invoices/edit.blade.php @@ -293,6 +293,7 @@ $('#item-tax-' + item_id).val(data.tax_id); // This event Select2 Stylesheet + $('#item-price-' + item_id).trigger('focusout'); $('#item-tax-' + item_id).trigger('change'); $('#item-total-' + item_id).html(data.total); @@ -402,6 +403,7 @@ }); function totalItem() { + $.ajax({ url: '{{ url("common/items/totalItem") }}', type: 'POST', @@ -420,6 +422,23 @@ $('#discount-total').html(data.discount_total); $('#tax-total').html(data.tax_total); $('#grand-total').html(data.grand_total); + + $('.input-price').each(function(){ + amount = $(this).maskMoney('unmasked')[0]; + + $(this).maskMoney({ + thousands : data.thousands_separator, + decimal : data.decimal_mark, + precision : data.precision, + allowZero : true, + prefix : (data.symbol_first) ? data.symbol : '', + suffix : (data.symbol_first) ? '' : data.symbol + }); + + $(this).val(amount); + + $(this).trigger('focusout'); + }); } } }); diff --git a/routes/web.php b/routes/web.php index 72beef45a..72e99172d 100644 --- a/routes/web.php +++ b/routes/web.php @@ -22,7 +22,7 @@ Route::group(['middleware' => 'language'], function () { Route::get('dashboard/cashflow', 'Common\Dashboard@cashFlow')->name('dashboard.cashflow'); Route::get('import/{group}/{type}', 'Common\Import@create')->name('import.create'); Route::get('items/autocomplete', 'Common\Items@autocomplete')->name('items.autocomplete'); - Route::post('items/totalItem', 'Common\Items@totalItem')->name('items.total'); + Route::post('items/totalItem', 'Common\Items@totalItem')->middleware(['money'])->name('items.total'); Route::get('items/{item}/duplicate', 'Common\Items@duplicate')->name('items.duplicate'); Route::post('items/import', 'Common\Items@import')->name('items.import'); Route::get('items/export', 'Common\Items@export')->name('items.export');