This commit is contained in:
James Cole 2017-12-30 21:04:04 +01:00
parent 6d9baaa499
commit d9dd00eb39
No known key found for this signature in database
GPG Key ID: C16961E655E74B5E
10 changed files with 77 additions and 3 deletions

View File

@ -29,6 +29,7 @@ use FireflyIII\Helpers\Collector\JournalCollectorInterface;
use FireflyIII\Http\Requests\AccountFormRequest; use FireflyIII\Http\Requests\AccountFormRequest;
use FireflyIII\Models\Account; use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType; use FireflyIII\Models\AccountType;
use FireflyIII\Models\Note;
use FireflyIII\Models\Transaction; use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionType; use FireflyIII\Models\TransactionType;
use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Account\AccountRepositoryInterface;
@ -195,7 +196,15 @@ class AccountController extends Controller
'openingBalance' => $openingBalanceAmount, 'openingBalance' => $openingBalanceAmount,
'virtualBalance' => $account->virtual_balance, 'virtualBalance' => $account->virtual_balance,
'currency_id' => $currency->id, 'currency_id' => $currency->id,
'notes' => '',
]; ];
/** @var Note $note */
$note = $account->notes()->first();
if (null !== $note) {
$preFilled['notes'] = $note->text;
}
$request->session()->flash('preFilled', $preFilled); $request->session()->flash('preFilled', $preFilled);
return view( return view(

View File

@ -57,6 +57,7 @@ class AccountFormRequest extends Request
'openingBalanceDate' => $this->date('openingBalanceDate'), 'openingBalanceDate' => $this->date('openingBalanceDate'),
'ccType' => $this->string('ccType'), 'ccType' => $this->string('ccType'),
'ccMonthlyPaymentDate' => $this->string('ccMonthlyPaymentDate'), 'ccMonthlyPaymentDate' => $this->string('ccMonthlyPaymentDate'),
'notes' => $this->string('notes'),
]; ];
} }

View File

@ -345,6 +345,15 @@ class Account extends Model
$this->attributes['iban'] = Crypt::encrypt($value); $this->attributes['iban'] = Crypt::encrypt($value);
} }
/**
* @codeCoverageIgnore
* Get all of the notes.
*/
public function notes()
{
return $this->morphMany(Note::class, 'noteable');
}
/** /**
* @codeCoverageIgnore * @codeCoverageIgnore
* *

View File

@ -132,7 +132,7 @@ class Bill extends Model
*/ */
public function notes() public function notes()
{ {
return $this->morphMany('FireflyIII\Models\Note', 'noteable'); return $this->morphMany(Note::class, 'noteable');
} }
/** /**

View File

@ -57,8 +57,8 @@ class Note extends Model
/** /**
* @codeCoverageIgnore * @codeCoverageIgnore
* Get all of the owning noteable models. Currently piggy bank and *
* transaction journal. * Get all of the owning noteable models.
*/ */
public function noteable() public function noteable()
{ {

View File

@ -29,6 +29,7 @@ use FireflyIII\Models\Account;
use FireflyIII\Models\AccountMeta; use FireflyIII\Models\AccountMeta;
use FireflyIII\Models\AccountType; use FireflyIII\Models\AccountType;
use FireflyIII\Models\Category; use FireflyIII\Models\Category;
use FireflyIII\Models\Note;
use FireflyIII\Models\Tag; use FireflyIII\Models\Tag;
use FireflyIII\Models\Transaction; use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionJournal;
@ -176,6 +177,11 @@ class AccountRepository implements AccountRepositoryInterface
} }
$this->deleteInitialBalance($newAccount); $this->deleteInitialBalance($newAccount);
// update note:
if (isset($data['notes'])) {
$this->updateNote($newAccount, $data['notes']);
}
return $newAccount; return $newAccount;
} }
@ -199,6 +205,12 @@ class AccountRepository implements AccountRepositoryInterface
$this->updateInitialBalance($account, $data); $this->updateInitialBalance($account, $data);
} }
// update note:
if (isset($data['notes']) && null !== $data['notes']) {
$this->updateNote($account, strval($data['notes']));
}
return $account; return $account;
} }
@ -507,6 +519,33 @@ class AccountRepository implements AccountRepositoryInterface
} }
} }
/**
* @param Account $account
* @param string $note
*
* @return bool
*/
protected function updateNote(Account $account, string $note): bool
{
if (0 === strlen($note)) {
$dbNote = $account->notes()->first();
if (null !== $dbNote) {
$dbNote->delete();
}
return true;
}
$dbNote = $account->notes()->first();
if (null === $dbNote) {
$dbNote = new Note();
$dbNote->noteable()->associate($account);
}
$dbNote->text = trim($note);
$dbNote->save();
return true;
}
/** /**
* @param Account $account * @param Account $account
* @param TransactionJournal $journal * @param TransactionJournal $journal

View File

@ -746,6 +746,7 @@ return [
'opt_group_savingAsset' => 'Savings accounts', 'opt_group_savingAsset' => 'Savings accounts',
'opt_group_sharedAsset' => 'Shared asset accounts', 'opt_group_sharedAsset' => 'Shared asset accounts',
'opt_group_ccAsset' => 'Credit cards', 'opt_group_ccAsset' => 'Credit cards',
'notes' => 'Notes',
// new user: // new user:
'welcome' => 'Welcome to Firefly!', 'welcome' => 'Welcome to Firefly!',

View File

@ -44,6 +44,7 @@
{{ ExpandedForm.select('accountRole', roles,null,{'helpText' : 'asset_account_role_help'|_}) }} {{ ExpandedForm.select('accountRole', roles,null,{'helpText' : 'asset_account_role_help'|_}) }}
{{ ExpandedForm.nonSelectableBalance('virtualBalance') }} {{ ExpandedForm.nonSelectableBalance('virtualBalance') }}
{% endif %} {% endif %}
{{ ExpandedForm.textarea('notes',null,{helpText: trans('firefly.field_supports_markdown')}) }}
</div> </div>
</div> </div>

View File

@ -48,6 +48,7 @@
{{ ExpandedForm.nonSelectableBalance('virtualBalance',null, {'currency' : currency }) }} {{ ExpandedForm.nonSelectableBalance('virtualBalance',null, {'currency' : currency }) }}
{% endif %} {% endif %}
{{ ExpandedForm.textarea('notes',null,{helpText: trans('firefly.field_supports_markdown')}) }}
{{ ExpandedForm.checkbox('active','1') }} {{ ExpandedForm.checkbox('active','1') }}
</div> </div>
</div> </div>

View File

@ -70,6 +70,19 @@
</div> </div>
</div> </div>
</div> </div>
{% if account.notes.count == 1 %}
<div class="row">
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">{{ 'notes'|_ }}</h3>
</div>
<div class="box-body">
{{ account.notes.first.text|markdown }}
</div>
</div>
</div>
{% endif %}
{% if periods.count > 0 %} {% if periods.count > 0 %}
<div class="row"> <div class="row">
<div class="col-lg-offset-10 col-lg-2 col-md-offset-8 col-md-4 col-sm-12 col-xs-12"> <div class="col-lg-offset-10 col-lg-2 col-md-offset-8 col-md-4 col-sm-12 col-xs-12">