diff --git a/app/Http/Controllers/Settings/Defaults.php b/app/Http/Controllers/Settings/Defaults.php index 6be3afb9e..818cfaf8c 100644 --- a/app/Http/Controllers/Settings/Defaults.php +++ b/app/Http/Controllers/Settings/Defaults.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers\Settings; use App\Abstracts\Http\Controller; use App\Models\Banking\Account; +use App\Models\Setting\Category; use App\Models\Setting\Currency; use App\Models\Setting\Tax; use App\Utilities\Modules; @@ -16,6 +17,9 @@ class Defaults extends Controller $currencies = Currency::enabled()->orderBy('name')->pluck('name', 'code'); + $sales_categories = Category::income()->enabled()->orderBy('name')->pluck('name', 'id'); + $purchases_categories = Category::expense()->enabled()->orderBy('name')->pluck('name', 'id'); + $taxes = Tax::enabled()->orderBy('name')->get()->pluck('title', 'id'); $payment_methods = Modules::getPaymentMethods(); @@ -23,6 +27,8 @@ class Defaults extends Controller return view('settings.default.edit', compact( 'accounts', 'currencies', + 'sales_categories', + 'purchases_categories', 'taxes', 'payment_methods' )); diff --git a/app/Listeners/Update/V21/Version210.php b/app/Listeners/Update/V21/Version210.php index eb5bd4107..cacf6257e 100644 --- a/app/Listeners/Update/V21/Version210.php +++ b/app/Listeners/Update/V21/Version210.php @@ -4,6 +4,9 @@ namespace App\Listeners\Update\V21; use App\Abstracts\Listeners\Update as Listener; use App\Events\Install\UpdateFinished as Event; +use App\Models\Setting\Category; +use App\Models\Common\Company; +use App\Utilities\Overrider; use Illuminate\Support\Facades\Artisan; class Version210 extends Listener @@ -24,6 +27,42 @@ class Version210 extends Listener return; } + $this->updateCompanies(); + Artisan::call('migrate', ['--force' => true]); } + protected function updateCompanies() + { + $company_id = session('company_id'); + + $companies = Company::cursor(); + + foreach ($companies as $company) { + session(['company_id' => $company->id]); + + $this->updateSettings($company); + } + + setting()->forgetAll(); + + session(['company_id' => $company_id]); + + Overrider::load('settings'); + } + + public function updateSettings($company) + { + $sales_category = Category::income()->enabled()->first(); + $purchases_category = Category::expense()->enabled()->first(); + + // Set the active company settings + setting()->setExtraColumns(['company_id' => $company->id]); + setting()->forgetAll(); + setting()->load(true); + + setting()->set(['default.sales_category' => setting('default.sales_category', $sales_category->id)]); + setting()->set(['default.purchases_category' => setting('default.purchases_category', $purchases_category->id)]); + + setting()->save(); + } } diff --git a/database/seeds/Categories.php b/database/seeds/Categories.php index c74833575..463f84f85 100644 --- a/database/seeds/Categories.php +++ b/database/seeds/Categories.php @@ -64,8 +64,26 @@ class Categories extends Seeder ], ]; + $sales_category = $purchases_category = false; + foreach ($rows as $row) { - Category::create($row); + $category = Category::create($row); + + switch ($category->type) { + case 'income': + if (empty($sales_category)) { + $sales_category = $category; + } + break; + case 'expense': + if (empty($purchases_category)) { + $purchases_category = $category; + } + break; + } } + + setting()->set('default.sales_category', $sales_category->id); + setting()->set('default.purchases_category', $purchases_category->id); } } diff --git a/resources/lang/en-GB/settings.php b/resources/lang/en-GB/settings.php index 394c2910d..3a6f8335a 100644 --- a/resources/lang/en-GB/settings.php +++ b/resources/lang/en-GB/settings.php @@ -68,6 +68,8 @@ return [ 'description' => 'Default account, currency, language of your company', 'list_limit' => 'Records Per Page', 'use_gravatar' => 'Use Gravatar', + 'sales_category' => 'Sales Category', + 'purchases_category'=> 'Purchases Category', ], 'email' => [ diff --git a/resources/views/purchases/bills/create.blade.php b/resources/views/purchases/bills/create.blade.php index b0fe97801..19ebd4c6d 100644 --- a/resources/views/purchases/bills/create.blade.php +++ b/resources/views/purchases/bills/create.blade.php @@ -194,7 +194,7 @@ {{ Form::textareaGroup('notes', trans_choice('general.notes', 2)) }} - {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('default.category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=expense']) }} + {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('default.purchases_category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=expense']) }} {{ Form::recurring('create') }} diff --git a/resources/views/purchases/payments/create.blade.php b/resources/views/purchases/payments/create.blade.php index 57fc19ec6..46844b047 100644 --- a/resources/views/purchases/payments/create.blade.php +++ b/resources/views/purchases/payments/create.blade.php @@ -30,7 +30,7 @@ {{ Form::textareaGroup('description', trans('general.description')) }} - {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('default.category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=expense']) }} + {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('default.purchases_category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=expense']) }} {{ Form::recurring('create') }} diff --git a/resources/views/sales/invoices/create.blade.php b/resources/views/sales/invoices/create.blade.php index defccec38..68de6d3ec 100644 --- a/resources/views/sales/invoices/create.blade.php +++ b/resources/views/sales/invoices/create.blade.php @@ -196,7 +196,7 @@ {{ Form::textareaGroup('footer', trans('general.footer'), '', setting('invoice.footer'), ['rows' => '3'], 'col-md-6') }} - {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('defaults.category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=income']) }} + {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('default.sales_category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=income']) }} {{ Form::recurring('create') }} diff --git a/resources/views/sales/revenues/create.blade.php b/resources/views/sales/revenues/create.blade.php index c1c23ab06..dbbb3495d 100644 --- a/resources/views/sales/revenues/create.blade.php +++ b/resources/views/sales/revenues/create.blade.php @@ -30,7 +30,7 @@ {{ Form::textareaGroup('description', trans('general.description')) }} - {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('default.category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=income']) }} + {{ Form::selectAddNewGroup('category_id', trans_choice('general.categories', 1), 'folder', $categories, setting('default.sales_category'), ['required' => 'required', 'path' => route('modals.categories.create') . '?type=income']) }} {{ Form::recurring('create') }} diff --git a/resources/views/settings/default/edit.blade.php b/resources/views/settings/default/edit.blade.php index e18c01914..b5c8bbc46 100644 --- a/resources/views/settings/default/edit.blade.php +++ b/resources/views/settings/default/edit.blade.php @@ -22,6 +22,10 @@ {{ Form::selectGroup('currency', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, setting('default.currency'), []) }} + {{ Form::selectGroup('sales_category', trans('settings.default.sales_category'), 'folder', $sales_categories, setting('default.sales_category'), []) }} + + {{ Form::selectGroup('purchases_category', trans('settings.default.purchases_category'), 'folder', $purchases_categories, setting('default.purchases_category'), []) }} + {{ Form::selectGroup('tax', trans_choice('general.taxes', 1), 'percent', $taxes, setting('default.tax'), []) }} {{ Form::selectGroup('payment_method', trans_choice('general.payment_methods', 1), 'credit-card', $payment_methods, setting('default.payment_method'), []) }}