diff --git a/app/lib/FireflyIII/Database/Account/Account.php b/app/lib/FireflyIII/Database/Account/Account.php index b794db802b..4edfed9116 100644 --- a/app/lib/FireflyIII/Database/Account/Account.php +++ b/app/lib/FireflyIII/Database/Account/Account.php @@ -52,7 +52,7 @@ class Account implements CUDInterface, CommonDatabaseCallsInterface, AccountInte * Basic query: */ $query = $this->getUser()->accounts()->accountTypeIn($types)->withMeta()->orderBy('name', 'ASC');; - $set = $query->get(['accounts.*']); + $set = $query->get(['accounts.*', 'account_meta.data as accountRole']); $set->each( function (\Account $account) { @@ -60,6 +60,7 @@ class Account implements CUDInterface, CommonDatabaseCallsInterface, AccountInte * Get last activity date. */ $account->lastActivityDate = $this->getLastActivity($account); + $account->accountRole = \Config::get('firefly.accountRoles.' . json_decode($account->accountRole)); } ); @@ -197,19 +198,19 @@ class Account implements CUDInterface, CommonDatabaseCallsInterface, AccountInte } \Event::fire('account.destroy', [$model]); \Account:: - leftJoin('account_types', 'account_types.id', '=', 'accounts.account_type_id') - ->where( - function (EloquentBuilder $q) use ($model) { - $q->where('id', $model->id); - $q->orWhere( + leftJoin('account_types', 'account_types.id', '=', 'accounts.account_type_id') + ->where( function (EloquentBuilder $q) use ($model) { - $q->where('accounts.name', 'LIKE', '%' . $model->name . '%'); - $q->where('account_types.type', 'Initial balance account'); - $q->where('accounts.active', 0); + $q->where('id', $model->id); + $q->orWhere( + function (EloquentBuilder $q) use ($model) { + $q->where('accounts.name', 'LIKE', '%' . $model->name . '%'); + $q->where('account_types.type', 'Initial balance account'); + $q->where('accounts.active', 0); + } + ); } - ); - } - )->delete(); + )->delete(); return true; diff --git a/app/models/Account.php b/app/models/Account.php index 667aae069e..ad2f43d875 100644 --- a/app/models/Account.php +++ b/app/models/Account.php @@ -1,10 +1,10 @@ ['required', 'between:1,100'], 'user_id' => 'required|exists:users,id', 'account_type_id' => 'required|exists:account_types,id', 'active' => 'required|boolean' ]; - protected $dates = ['deleted_at', 'created_at', 'updated_at']; - protected $fillable = ['name', 'user_id', 'account_type_id', 'active']; + protected $dates = ['deleted_at', 'created_at', 'updated_at']; + protected $fillable = ['name', 'user_id', 'account_type_id', 'active']; /** * Account type. @@ -67,7 +67,7 @@ class Account extends Eloquent /** * * @param EloquentBuilder $query - * @param array $types + * @param array $types */ public function scopeAccountTypeIn(EloquentBuilder $query, array $types) { @@ -82,9 +82,13 @@ class Account extends Eloquent * * @param EloquentBuilder $query */ - public function scopeWithMeta(EloquentBuilder $query) + public function scopeWithMeta(EloquentBuilder $query, $field = 'accountRole') { - $query->with(['accountmeta']); + $query->leftJoin( + 'account_meta', function (JoinClause $join) use ($field) { + $join->on('account_meta.account_id', '=', 'accounts.id')->where('account_meta.name', '=', $field); + } + ); } /** diff --git a/app/views/accounts/create.blade.php b/app/views/accounts/create.blade.php index 8fc3f78c5a..1a65eee009 100644 --- a/app/views/accounts/create.blade.php +++ b/app/views/accounts/create.blade.php @@ -31,7 +31,7 @@ @if($what == 'asset') {{Form::ffBalance('openingbalance')}} {{Form::ffDate('openingbalancedate', date('Y-m-d'))}} - @endif + @endif {{Form::ffCheckbox('active','1',true)}} {{Form::ffSelect('account_role',Config::get('firefly.accountRoles'))}}