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 @@
-
+