diff --git a/app/Http/Controllers/Modals/Categories.php b/app/Http/Controllers/Modals/Categories.php index 19fda17b0..304bd010f 100644 --- a/app/Http/Controllers/Modals/Categories.php +++ b/app/Http/Controllers/Modals/Categories.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Modals; use App\Abstracts\Http\Controller; use App\Jobs\Setting\CreateCategory; use Illuminate\Http\Request as IRequest; +use App\Http\Requests\Setting\Category as Request; class Categories extends Controller { @@ -46,7 +47,7 @@ class Categories extends Controller * * @return Response */ - public function store(IRequest $request) + public function store(Request $request) { $request['enabled'] = 1; $request['type'] = $request->get('type', 'income'); diff --git a/app/Http/Controllers/Modals/Currencies.php b/app/Http/Controllers/Modals/Currencies.php new file mode 100644 index 000000000..617752733 --- /dev/null +++ b/app/Http/Controllers/Modals/Currencies.php @@ -0,0 +1,85 @@ +middleware('permission:create-settings-currencies')->only(['create', 'store', 'duplicate', 'import']); + $this->middleware('permission:read-settings-currencies')->only(['index', 'show', 'edit', 'export']); + $this->middleware('permission:update-settings-currencies')->only(['update', 'enable', 'disable']); + $this->middleware('permission:delete-settings-currencies')->only('destroy'); + } + + /** + * Show the form for creating a new resource. + * + * @return Response + */ + public function create() + { + // Get current currencies + $current = Currency::pluck('code')->toArray(); + + // Prepare codes + $codes = array(); + $currencies = MoneyCurrency::getCurrencies(); + foreach ($currencies as $key => $item) { + // Don't show if already available + if (in_array($key, $current)) { + continue; + } + + $codes[$key] = $key; + } + + $html = view('modals.currencies.create', compact('codes'))->render(); + + return response()->json([ + 'success' => true, + 'error' => false, + 'message' => 'null', + 'html' => $html, + ]); + } + + /** + * Store a newly created resource in storage. + * + * @param Request $request + * + * @return Response + */ + public function store(Request $request) + { + $currency = config('money.' . $request->get('code')); + + $request['precision'] = (int) $currency['precision']; + $request['symbol'] = $currency['symbol']; + $request['symbol_first'] = $currency['symbol_first'] ? 1 : 0; + $request['decimal_mark'] = $currency['decimal_mark']; + $request['thousands_separator'] = $currency['thousands_separator']; + + $request['enabled'] = 1; + $request['default_currency'] = false; + + $response = $this->ajaxDispatch(new CreateCurrency($request->all())); + + if ($response['success']) { + $response['message'] = trans('messages.success.added', ['type' => trans_choice('general.currencies', 1)]); + } + + return response()->json($response); + } +} diff --git a/resources/views/banking/accounts/create.blade.php b/resources/views/banking/accounts/create.blade.php index 57f60bafa..40a7308e8 100644 --- a/resources/views/banking/accounts/create.blade.php +++ b/resources/views/banking/accounts/create.blade.php @@ -21,7 +21,7 @@ {{ Form::textGroup('number', trans('accounts.number'), 'pencil-alt') }} - {{ Form::selectGroup('currency_code', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, setting('default.currency'), ['required' => 'required', 'change' => 'onChangeCurrency']) }} + {{ Form::selectAddNewGroup('currency_code', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, setting('default.currency'), ['required' => 'required', 'path' => route('modals.currencies.create'), 'change' => 'onChangeCurrency']) }} {{ Form::moneyGroup('opening_balance', trans('accounts.opening_balance'), 'balance-scale', ['required' => 'required', 'currency' => $currency], 0) }} diff --git a/resources/views/banking/accounts/edit.blade.php b/resources/views/banking/accounts/edit.blade.php index 8f50c5c75..21c0580b4 100644 --- a/resources/views/banking/accounts/edit.blade.php +++ b/resources/views/banking/accounts/edit.blade.php @@ -22,7 +22,7 @@ {{ Form::textGroup('number', trans('accounts.number'), 'pencil-alt') }} - {{ Form::selectGroup('currency_code', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, $account->currency_code, ['required' => 'required', 'change' => 'onChangeCurrency']) }} + {{ Form::selectAddNewGroup('currency_code', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, $account->currency_code, ['required' => 'required', 'path' => route('modals.currencies.create'), 'change' => 'onChangeCurrency']) }} {{ Form::moneyGroup('opening_balance', trans('accounts.opening_balance'), 'balance-scale', ['required' => 'required', 'currency' => $currency], $account->opening_balance) }} diff --git a/resources/views/modals/currencies/create.blade.php b/resources/views/modals/currencies/create.blade.php new file mode 100644 index 000000000..1565aa156 --- /dev/null +++ b/resources/views/modals/currencies/create.blade.php @@ -0,0 +1,20 @@ +{!! Form::open([ + 'id' => 'form-create-currency', + '@submit.prevent' => 'onSubmit', + '@keydown' => 'form.errors.clear($event.target.name)', + 'role' => 'form', + 'class' => 'form-loading-button', + 'route' => 'modals.currencies.store', + 'novalidate' => true +]) !!} +
+ {{ Form::textGroup('name', trans('general.name'), 'chart-bar') }} + + {{ Form::selectGroup('code', trans('currencies.code'), 'code', $codes) }} + + {{ Form::textGroup('rate', trans('currencies.rate'), 'sliders-h', ['@input' => 'onChangeRate', 'required' => 'required']) }} + + {!! Form::hidden('enabled', '1', []) !!} + {!! Form::hidden('default_currency', 'false', []) !!} +
+{!! Form::close() !!} diff --git a/resources/views/purchases/bills/create.blade.php b/resources/views/purchases/bills/create.blade.php index 98b413494..19fd9d449 100644 --- a/resources/views/purchases/bills/create.blade.php +++ b/resources/views/purchases/bills/create.blade.php @@ -19,7 +19,7 @@
{{ Form::selectAddNewGroup('contact_id', trans_choice('general.vendors', 1), 'user', $vendors, config('general.vendors'), ['required' => 'required', 'path' => route('modals.vendors.create'), 'change' => 'onChangeContact']) }} - {{ Form::selectGroup('currency_code', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, setting('default.currency'), ['required' => 'required', 'change' => 'onChangeCurrency']) }} + {{ Form::selectAddNewGroup('currency_code', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, setting('default.currency'), ['required' => 'required', 'path' => route('modals.currencies.create'), 'change' => 'onChangeCurrency']) }} {{ Form::dateGroup('billed_at', trans('bills.bill_date'), 'calendar', ['id' => 'billed_at', 'class' => 'form-control datepicker', 'required' => 'required', 'date-format' => 'Y-m-d', 'autocomplete' => 'off'], request()->get('billed_at', Date::now()->toDateString())) }} diff --git a/resources/views/purchases/bills/edit.blade.php b/resources/views/purchases/bills/edit.blade.php index a17105dbe..3bdbfd974 100644 --- a/resources/views/purchases/bills/edit.blade.php +++ b/resources/views/purchases/bills/edit.blade.php @@ -20,7 +20,7 @@
{{ Form::selectAddNewGroup('contact_id', trans_choice('general.vendors', 1), 'user', $vendors, $bill->contact_id, ['required' => 'required', 'path' => route('modals.vendors.create'), 'change' => 'onChangeContact']) }} - {{ Form::selectGroup('currency_code', trans_choice('general.currencies', 1), 'exchange', $currencies, $bill->currency_code, ['required' => 'required', 'change' => 'onChangeCurrency']) }} + {{ Form::selectAddNewGroup('currency_code', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, $bill->currency_code, ['required' => 'required', 'path' => route('modals.currencies.create'), 'change' => 'onChangeCurrency']) }} {{ Form::dateGroup('billed_at', trans('bills.bill_date'), 'calendar', ['id' => 'billed_at', 'class' => 'form-control datepicker', 'required' => 'required', 'date-format' => 'Y-m-d', 'autocomplete' => 'off'], Date::parse($bill->billed_at)->toDateString()) }} diff --git a/resources/views/purchases/vendors/create.blade.php b/resources/views/purchases/vendors/create.blade.php index 51a1b0313..8fa818de3 100644 --- a/resources/views/purchases/vendors/create.blade.php +++ b/resources/views/purchases/vendors/create.blade.php @@ -23,7 +23,7 @@ {{ Form::textGroup('tax_number', trans('general.tax_number'), 'percent', []) }} - {{ Form::selectGroup('currency_code', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, setting('default.currency')) }} + {{ Form::selectAddNewGroup('currency_code', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, setting('default.currency'), ['required' => 'required', 'path' => route('modals.currencies.create')]) }} {{ Form::textGroup('phone', trans('general.phone'), 'phone', []) }} diff --git a/resources/views/purchases/vendors/edit.blade.php b/resources/views/purchases/vendors/edit.blade.php index 90c5ad305..6de2ac84c 100644 --- a/resources/views/purchases/vendors/edit.blade.php +++ b/resources/views/purchases/vendors/edit.blade.php @@ -24,7 +24,7 @@ {{ Form::textGroup('tax_number', trans('general.tax_number'), 'percent', []) }} - {{ Form::selectGroup('currency_code', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, $vendor->currency_code) }} + {{ Form::selectAddNewGroup('currency_code', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, $vendor->currency_code, ['required' => 'required', 'path' => route('modals.currencies.create')]) }} {{ Form::textGroup('phone', trans('general.phone'), 'phone', []) }} diff --git a/resources/views/sales/customers/create.blade.php b/resources/views/sales/customers/create.blade.php index 713ac7cf7..439c3068b 100644 --- a/resources/views/sales/customers/create.blade.php +++ b/resources/views/sales/customers/create.blade.php @@ -24,7 +24,7 @@ {{ Form::textGroup('tax_number', trans('general.tax_number'), 'percent', []) }} - {{ Form::selectGroup('currency_code', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, setting('default.currency')) }} + {{ Form::selectAddNewGroup('currency_code', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, setting('default.currency'), ['required' => 'required', 'path' => route('modals.currencies.create')]) }} {{ Form::textGroup('phone', trans('general.phone'), 'phone', []) }} diff --git a/resources/views/sales/customers/edit.blade.php b/resources/views/sales/customers/edit.blade.php index a498a7325..92530f6e0 100644 --- a/resources/views/sales/customers/edit.blade.php +++ b/resources/views/sales/customers/edit.blade.php @@ -23,7 +23,7 @@ {{ Form::textGroup('tax_number', trans('general.tax_number'), 'percent', []) }} - {{ Form::selectGroup('currency_code', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, $customer->currency_code) }} + {{ Form::selectAddNewGroup('currency_code', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, $customer->currency_code, ['required' => 'required', 'path' => route('modals.currencies.create')]) }} {{ Form::textGroup('phone', trans('general.phone'), 'phone', []) }} diff --git a/resources/views/sales/invoices/create.blade.php b/resources/views/sales/invoices/create.blade.php index 16c4174d0..92e0b3e40 100644 --- a/resources/views/sales/invoices/create.blade.php +++ b/resources/views/sales/invoices/create.blade.php @@ -19,7 +19,7 @@
{{ Form::selectAddNewGroup('contact_id', trans_choice('general.customers', 1), 'user', $customers, config('general.customers'), ['required' => 'required', 'path' => route('modals.customers.create'), 'change' => 'onChangeContact']) }} - {{ Form::selectGroup('currency_code', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, setting('default.currency'), ['required' => 'required', 'change' => 'onChangeCurrency']) }} + {{ Form::selectAddNewGroup('currency_code', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, setting('default.currency'), ['required' => 'required', 'path' => route('modals.currencies.create'), 'change' => 'onChangeCurrency']) }} {{ Form::dateGroup('invoiced_at', trans('invoices.invoice_date'), 'calendar', ['id' => 'invoiced_at', 'class' => 'form-control datepicker', 'required' => 'required', 'date-format' => 'Y-m-d', 'autocomplete' => 'off'], request()->get('invoiced_at', Date::now()->toDateString())) }} diff --git a/resources/views/sales/invoices/edit.blade.php b/resources/views/sales/invoices/edit.blade.php index 86e8509e3..586428b3f 100644 --- a/resources/views/sales/invoices/edit.blade.php +++ b/resources/views/sales/invoices/edit.blade.php @@ -20,7 +20,7 @@
{{ Form::selectAddNewGroup('contact_id', trans_choice('general.customers', 1), 'user', $customers, $invoice->contact_id, ['required' => 'required', 'path' => route('modals.customers.create'), 'change' => 'onChangeContact']) }} - {{ Form::selectGroup('currency_code', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, $invoice->currency_code, ['required' => 'required', 'change' => 'onChangeCurrency']) }} + {{ Form::selectAddNewGroup('currency_code', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, $invoice->currency_code, ['required' => 'required', 'path' => route('modals.currencies.create'), 'change' => 'onChangeCurrency']) }} {{ Form::dateGroup('invoiced_at', trans('invoices.invoice_date'), 'calendar', ['id' => 'invoiced_at', 'class' => 'form-control datepicker', 'required' => 'required', 'date-format' => 'Y-m-d', 'autocomplete' => 'off'], Date::parse($invoice->invoiced_at)->toDateString()) }} diff --git a/routes/admin.php b/routes/admin.php index c4f476ba1..55ec8076a 100644 --- a/routes/admin.php +++ b/routes/admin.php @@ -214,6 +214,7 @@ Route::group(['prefix' => 'install'], function () { Route::group(['as' => 'modals.', 'prefix' => 'modals'], function () { Route::resource('categories', 'Modals\Categories'); + Route::resource('currencies', 'Modals\Currencies'); Route::resource('customers', 'Modals\Customers'); Route::resource('vendors', 'Modals\Vendors'); Route::resource('items', 'Modals\Items');