mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-10-14 00:04:24 +00:00
@@ -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
|
||||
|
Reference in New Issue
Block a user