diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index fef73a1085..daa6ff16ed 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -101,7 +101,8 @@ class AccountController extends Controller $preFilled = [ 'accountRole' => $account->getMeta('accountRole'), 'openingBalanceDate' => $openingBalance ? $openingBalance->date->format('Y-m-d') : null, - 'openingBalance' => $openingBalanceAmount + 'openingBalance' => $openingBalanceAmount, + 'virtualBalance' => floatval($account->virtual_balance) ]; Session::flash('preFilled', $preFilled); @@ -185,6 +186,7 @@ class AccountController extends Controller $accountData = [ 'name' => $request->input('name'), 'accountType' => $request->input('what'), + 'virtualBalance' => floatval($request->input('virtualBalance')), 'active' => true, 'user' => Auth::user()->id, 'accountRole' => $request->input('accountRole'), @@ -220,6 +222,7 @@ class AccountController extends Controller 'active' => $request->input('active'), 'user' => Auth::user()->id, 'accountRole' => $request->input('accountRole'), + 'virtualBalance' => floatval($request->input('virtualBalance')), 'openingBalance' => floatval($request->input('openingBalance')), 'openingBalanceDate' => new Carbon($request->input('openingBalanceDate')), 'openingBalanceCurrency' => intval($request->input('balance_currency_id')), diff --git a/app/Http/Requests/AccountFormRequest.php b/app/Http/Requests/AccountFormRequest.php index bd3c6780f5..0c3a23937a 100644 --- a/app/Http/Requests/AccountFormRequest.php +++ b/app/Http/Requests/AccountFormRequest.php @@ -32,16 +32,17 @@ class AccountFormRequest extends Request $types = join(',', array_keys(Config::get('firefly.subTitlesByIdentifier'))); $nameRule = 'required|between:1,100|uniqueAccountForUser'; - $idRule = ''; + $idRule = ''; if (Account::find(Input::get('id'))) { - $idRule = 'belongsToUser:accounts'; + $idRule = 'belongsToUser:accounts'; $nameRule = 'required|between:1,100|uniqueAccountForUser:' . Input::get('id'); } return [ - 'id' => $idRule, + 'id' => $idRule, 'name' => $nameRule, 'openingBalance' => 'numeric', + 'virtualBalance' => 'numeric', 'openingBalanceDate' => 'date', 'accountRole' => 'in:' . $accountRoles, 'active' => 'boolean', diff --git a/app/Models/Account.php b/app/Models/Account.php index 00bf153516..e3589ed0dc 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -15,7 +15,7 @@ class Account extends Model { use SoftDeletes, ValidatingTrait; - protected $fillable = ['user_id', 'account_type_id', 'name', 'active']; + protected $fillable = ['user_id', 'account_type_id', 'name', 'active','virtual_balance']; protected $rules = [ 'user_id' => 'required|exists:users,id', diff --git a/app/Repositories/Account/AccountRepository.php b/app/Repositories/Account/AccountRepository.php index 9fc94b9bdf..48b913bd7a 100644 --- a/app/Repositories/Account/AccountRepository.php +++ b/app/Repositories/Account/AccountRepository.php @@ -208,10 +208,11 @@ class AccountRepository implements AccountRepositoryInterface if ($data['openingBalance'] != 0) { $type = $data['openingBalance'] < 0 ? 'expense' : 'revenue'; $opposingData = [ - 'user' => $data['user'], - 'accountType' => $type, - 'name' => $data['name'] . ' initial balance', - 'active' => false, + 'user' => $data['user'], + 'accountType' => $type, + 'virtual_balance' => $data['virtualBalance'], + 'name' => $data['name'] . ' initial balance', + 'active' => false, ]; $opposing = $this->storeAccount($opposingData); $this->storeInitialBalance($newAccount, $opposing, $data); @@ -229,8 +230,9 @@ class AccountRepository implements AccountRepositoryInterface public function update(Account $account, array $data) { // update the account: - $account->name = $data['name']; - $account->active = $data['active'] == '1' ? true : false; + $account->name = $data['name']; + $account->active = $data['active'] == '1' ? true : false; + $account->virtual_balance = $data['virtualBalance']; $account->save(); // update meta data: diff --git a/app/Support/ExpandedForm.php b/app/Support/ExpandedForm.php index 99c28470ed..4ef41d059b 100644 --- a/app/Support/ExpandedForm.php +++ b/app/Support/ExpandedForm.php @@ -62,6 +62,8 @@ class ExpandedForm 'account_id' => 'Asset account', 'budget_id' => 'Budget', 'openingBalance' => 'Opening balance', + 'virtualBalance' => 'Virtual balance', + 'targetamount' => 'Target amount', 'accountRole' => 'Account role', 'openingBalanceDate' => 'Opening balance date', 'piggy_bank_id' => 'Piggy bank']; diff --git a/app/Support/Steam.php b/app/Support/Steam.php index 1fa262cbfd..d8b42ed5b6 100644 --- a/app/Support/Steam.php +++ b/app/Support/Steam.php @@ -47,6 +47,7 @@ class Steam 'transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id' )->where('transaction_journals.date', '<=', $date->format('Y-m-d'))->sum('transactions.amount') ); + $balance += floatval($account->virtual_balance); return $balance; } diff --git a/database/migrations/2015_03_29_174140_changes_for_v336.php b/database/migrations/2015_03_29_174140_changes_for_v336.php index d932054042..bd15dfcc89 100644 --- a/database/migrations/2015_03_29_174140_changes_for_v336.php +++ b/database/migrations/2015_03_29_174140_changes_for_v336.php @@ -32,6 +32,7 @@ class ChangesForV336 extends Migration Schema::table( 'accounts', function (Blueprint $table) { $table->string('name', 255)->change(); + $table->dropColumn('virtual_balance'); // recreate foreign key $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); @@ -94,6 +95,7 @@ class ChangesForV336 extends Migration Schema::table( 'accounts', function (Blueprint $table) { $table->text('name')->change(); + $table->decimal('virtual_balance',10,2)->default(0); $table->foreign('user_id', 'account_user_id')->references('id')->on('users')->onDelete('cascade'); } ); diff --git a/resources/views/accounts/create.blade.php b/resources/views/accounts/create.blade.php index e6ae51dd37..36de7c194a 100644 --- a/resources/views/accounts/create.blade.php +++ b/resources/views/accounts/create.blade.php @@ -37,6 +37,7 @@ {!! ExpandedForm::balance('openingBalance') !!} {!! ExpandedForm::date('openingBalanceDate', date('Y-m-d')) !!} {!! ExpandedForm::select('accountRole',Config::get('firefly.accountRoles')) !!} + {!! ExpandedForm::balance('virtualBalance') !!} diff --git a/resources/views/accounts/edit.blade.php b/resources/views/accounts/edit.blade.php index 8240143ea6..b5c8465a95 100644 --- a/resources/views/accounts/edit.blade.php +++ b/resources/views/accounts/edit.blade.php @@ -31,6 +31,7 @@ {!! ExpandedForm::balance('openingBalance',null, ['currency' => $openingBalance ? $openingBalance->transactionCurrency : null]) !!} {!! ExpandedForm::date('openingBalanceDate') !!} {!! ExpandedForm::select('accountRole',Config::get('firefly.accountRoles')) !!} + {!! ExpandedForm::balance('virtualBalance',null) !!} {!! Form::hidden('id',$account->id) !!} @endif {!! ExpandedForm::checkbox('active','1') !!}