From f2c0718fee696fdb9e43caf292b86ef3472e5e86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=BCneyt=20=C5=9Eent=C3=BCrk?= Date: Tue, 25 Oct 2022 11:21:05 +0300 Subject: [PATCH] The company form currency field support all currencies and create automatic new currency! --- app/Http/Controllers/Common/Companies.php | 21 ++++++++- app/Jobs/Common/CreateCompany.php | 44 +++++++++++++++++++ app/Jobs/Common/UpdateCompany.php | 38 ++++++++++++++++ app/View/Components/Form/Group/Currency.php | 4 ++ .../views/common/companies/create.blade.php | 2 +- .../views/common/companies/edit.blade.php | 2 +- 6 files changed, 107 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/Common/Companies.php b/app/Http/Controllers/Common/Companies.php index 2af344359..1155e5dcc 100644 --- a/app/Http/Controllers/Common/Companies.php +++ b/app/Http/Controllers/Common/Companies.php @@ -10,6 +10,7 @@ use App\Jobs\Common\UpdateCompany; use App\Models\Common\Company; use App\Traits\Uploads; use App\Traits\Users; +use Akaunting\Money\Currency as MoneyCurrency; class Companies extends Controller { @@ -44,7 +45,15 @@ class Companies extends Controller */ public function create() { - return view('common.companies.create'); + $money_currencies = MoneyCurrency::getCurrencies(); + + $currencies = []; + + foreach ($money_currencies as $key => $item) { + $currencies[$key] = $item['name']; + } + + return view('common.companies.create', compact('currencies')); } /** @@ -92,7 +101,15 @@ class Companies extends Controller return redirect()->route('companies.index'); } - return view('common.companies.edit', compact('company')); + $money_currencies = MoneyCurrency::getCurrencies(); + + $currencies = []; + + foreach ($money_currencies as $key => $item) { + $currencies[$key] = $item['name']; + } + + return view('common.companies.edit', compact('company', 'currencies')); } /** diff --git a/app/Jobs/Common/CreateCompany.php b/app/Jobs/Common/CreateCompany.php index 6991d641f..10c31c6ae 100644 --- a/app/Jobs/Common/CreateCompany.php +++ b/app/Jobs/Common/CreateCompany.php @@ -8,8 +8,12 @@ use App\Events\Common\CompanyCreating; use App\Interfaces\Job\HasOwner; use App\Interfaces\Job\HasSource; use App\Interfaces\Job\ShouldCreate; +use App\Models\Banking\Account; use App\Models\Common\Company; +use App\Models\Setting\Currency; +use Akaunting\Money\Currency as MoneyCurrency; use Illuminate\Support\Facades\Artisan; +use OutOfBoundsException; class CreateCompany extends Job implements HasOwner, HasSource, ShouldCreate { @@ -26,6 +30,8 @@ class CreateCompany extends Job implements HasOwner, HasSource, ShouldCreate $this->callSeeds(); + $this->updateCurrency(); + $this->updateSettings(); }); @@ -99,4 +105,42 @@ class CreateCompany extends Job implements HasOwner, HasSource, ShouldCreate setting()->save(); } + + protected function updateCurrency() + { + $currency_code = $this->request->get('currency'); + + if ($currency_code == 'USD') { + return; + } + + $currency = Currency::where('company_id', $this->model->id) + ->where('code', $currency_code) + ->first(); + + if ($currency) { + $currency->rate = '1'; + $currency->enabled = '1'; + + $currency->save(); + } else { + try { + $data = (new MoneyCurrency($currency_code))->toArray()[$currency_code]; + $data['rate'] = '1'; + $data['enabled'] = '1'; + $data['company_id'] = $this->model->id; + $data['code'] = $currency_code; + $data['created_from'] = 'core::ui'; + $data['created_by'] = user_id(); + + $currency = Currency::create($data); + } catch (OutOfBoundsException $e) { + } + } + + $account = Account::where('company_id', $this->model->id)->first(); + + $account->currency_code = $currency_code; + $account->save(); + } } diff --git a/app/Jobs/Common/UpdateCompany.php b/app/Jobs/Common/UpdateCompany.php index 901766769..db325a4eb 100644 --- a/app/Jobs/Common/UpdateCompany.php +++ b/app/Jobs/Common/UpdateCompany.php @@ -7,7 +7,10 @@ use App\Events\Common\CompanyUpdated; use App\Events\Common\CompanyUpdating; use App\Interfaces\Job\ShouldUpdate; use App\Models\Common\Company; +use App\Models\Setting\Currency; use App\Traits\Users; +use Akaunting\Money\Currency as MoneyCurrency; +use OutOfBoundsException; class UpdateCompany extends Job implements ShouldUpdate { @@ -86,6 +89,8 @@ class UpdateCompany extends Job implements ShouldUpdate } setting()->save(); + + $this->updateCurrency(); }); event(new CompanyUpdated($this->model, $this->request)); @@ -116,4 +121,37 @@ class UpdateCompany extends Job implements ShouldUpdate throw new \Exception($message); } } + + protected function updateCurrency() + { + $currency_code = $this->request->get('currency'); + + if (empty($currency_code)) { + return; + } + + $currency = Currency::where('company_id', $this->model->id) + ->where('code', $currency_code) + ->first(); + + if ($currency) { + $currency->rate = '1'; + $currency->enabled = '1'; + + $currency->save(); + } else { + try { + $data = (new MoneyCurrency($currency_code))->toArray()[$currency_code]; + $data['rate'] = '1'; + $data['enabled'] = '1'; + $data['company_id'] = $this->model->id; + $data['code'] = $currency_code; + $data['created_from'] = 'core::ui'; + $data['created_by'] = user_id(); + + $currency = Currency::create($data); + } catch (OutOfBoundsException $e) { + } + } + } } diff --git a/app/View/Components/Form/Group/Currency.php b/app/View/Components/Form/Group/Currency.php index 3b9a58e6c..007063492 100644 --- a/app/View/Components/Form/Group/Currency.php +++ b/app/View/Components/Form/Group/Currency.php @@ -35,6 +35,10 @@ class Currency extends Form $this->currencies = Model::enabled()->orderBy('name')->pluck('name', 'code'); + if (! empty($this->options)) { + $this->currencies = $this->options; + } + $currency_id = old('currency.id', old('currency_id', null)); if (! empty($currency_id)) { diff --git a/resources/views/common/companies/create.blade.php b/resources/views/common/companies/create.blade.php index f07513688..ee3d9f445 100644 --- a/resources/views/common/companies/create.blade.php +++ b/resources/views/common/companies/create.blade.php @@ -16,7 +16,7 @@ - + diff --git a/resources/views/common/companies/edit.blade.php b/resources/views/common/companies/edit.blade.php index ba100e804..65a18c600 100644 --- a/resources/views/common/companies/edit.blade.php +++ b/resources/views/common/companies/edit.blade.php @@ -14,7 +14,7 @@ - +