This commit is contained in:
James Cole
2018-04-24 19:48:42 +02:00
parent 846df21764
commit 48357d1cc9
5 changed files with 58 additions and 56 deletions

View File

@@ -60,19 +60,30 @@ class JournalRepository implements JournalRepositoryInterface
*/
public function convert(TransactionJournal $journal, TransactionType $type, Account $source, Account $destination): MessageBag
{
// default message bag that shows errors for everything.
$messages = new MessageBag;
$messages->add('source_account_revenue', trans('firefly.invalid_convert_selection'));
$messages->add('destination_account_asset', trans('firefly.invalid_convert_selection'));
$messages->add('destination_account_expense', trans('firefly.invalid_convert_selection'));
$messages->add('source_account_asset', trans('firefly.invalid_convert_selection'));
if ($source->id === $destination->id || null === $source->id || null === $destination->id) {
// default message bag that shows errors for everything.
$messages = new MessageBag;
$messages->add('source_account_revenue', trans('firefly.invalid_convert_selection'));
$messages->add('destination_account_asset', trans('firefly.invalid_convert_selection'));
$messages->add('destination_account_expense', trans('firefly.invalid_convert_selection'));
$messages->add('source_account_asset', trans('firefly.invalid_convert_selection'));
return $messages;
}
$sourceTransaction = $journal->transactions()->where('amount', '<', 0)->first();
$destinationTransaction = $journal->transactions()->where('amount', '>', 0)->first();
$sourceTransaction = $journal->transactions()->where('amount', '<', 0)->first();
$destinationTransaction = $journal->transactions()->where('amount', '>', 0)->first();
if (null === $sourceTransaction || null === $destinationTransaction) {
// default message bag that shows errors for everything.
$messages = new MessageBag;
$messages->add('source_account_revenue', trans('firefly.source_or_dest_invalid'));
$messages->add('destination_account_asset', trans('firefly.source_or_dest_invalid'));
$messages->add('destination_account_expense', trans('firefly.source_or_dest_invalid'));
$messages->add('source_account_asset', trans('firefly.source_or_dest_invalid'));
return $messages;
}
$sourceTransaction->account_id = $source->id;
$sourceTransaction->save();
$destinationTransaction->account_id = $destination->id;
@@ -83,6 +94,10 @@ class JournalRepository implements JournalRepositoryInterface
// if journal is a transfer now, remove budget:
if (TransactionType::TRANSFER === $type->type) {
$journal->budgets()->detach();
// also from transactions:
foreach ($journal->transactions as $transaction) {
$transaction->budgets()->detach();
}
}
Preferences::mark();
@@ -137,8 +152,6 @@ class JournalRepository implements JournalRepositoryInterface
*
* @param int $journalId
*
* @deprecated
*
* @return TransactionJournal|null
*/
public function findNull(int $journalId): ?TransactionJournal