🤖 Auto commit for release 'develop' on 2026-02-06

This commit is contained in:
JC5
2026-02-06 13:55:17 +01:00
parent b4d01d464d
commit 2de9926db8
324 changed files with 14224 additions and 14136 deletions

View File

@@ -175,30 +175,41 @@ class ConvertToTransfer implements ActionInterface
return $res;
}
private function getSourceType(int $journalId): string
/**
* A deposit is from Revenue to Asset.
* We replace the Revenue with another asset.
*
* @throws FireflyException
*/
private function convertDepositArray(TransactionJournal $journal, Account $opposing): bool
{
/** @var null|TransactionJournal $journal */
$journal = TransactionJournal::find($journalId);
if (null === $journal) {
Log::error(sprintf('Journal #%d does not exist. Cannot convert to transfer.', $journalId));
$destAccount = $this->getDestinationAccount($journal);
if ($destAccount->id === $opposing->id) {
Log::error(vsprintf('Journal #%d has already has "%s" as a destination asset. ConvertToTransfer failed. (rule #%d).', [
$journal->id,
$opposing->name,
$this->action->rule_id,
]));
event(new RuleActionFailedOnObject($this->action, $journal, trans('rules.already_has_destination_asset', ['name' => $opposing->name])));
return '';
return false;
}
return (string) $journal->transactions()->where('amount', '<', 0)->first()?->account?->accountType?->type;
}
// update source transaction:
DB::table('transactions')
->where('transaction_journal_id', '=', $journal->id)
->where('amount', '<', 0)
->update(['account_id' => $opposing->id])
;
private function getDestinationType(int $journalId): string
{
/** @var null|TransactionJournal $journal */
$journal = TransactionJournal::find($journalId);
if (null === $journal) {
Log::error(sprintf('Journal #%d does not exist. Cannot convert to transfer.', $journalId));
// change transaction type of journal:
$newType = TransactionType::whereType(TransactionTypeEnum::TRANSFER->value)->first();
return '';
}
DB::table('transaction_journals')->where('id', '=', $journal->id)->update(['transaction_type_id' => $newType->id, 'bill_id' => null]);
return (string) $journal->transactions()->where('amount', '>', 0)->first()?->account?->accountType?->type;
Log::debug('Converted deposit to transfer.');
return true;
}
/**
@@ -283,6 +294,33 @@ class ConvertToTransfer implements ActionInterface
return true;
}
/**
* @throws FireflyException
*/
private function getDestinationAccount(TransactionJournal $journal): Account
{
/** @var null|Transaction $destAccount */
$destAccount = $journal->transactions()->where('amount', '>', 0)->first();
if (null === $destAccount) {
throw new FireflyException(sprintf('Cannot find destination transaction for journal #%d', $journal->id));
}
return $destAccount->account;
}
private function getDestinationType(int $journalId): string
{
/** @var null|TransactionJournal $journal */
$journal = TransactionJournal::find($journalId);
if (null === $journal) {
Log::error(sprintf('Journal #%d does not exist. Cannot convert to transfer.', $journalId));
return '';
}
return (string) $journal->transactions()->where('amount', '>', 0)->first()?->account?->accountType?->type;
}
/**
* @throws FireflyException
*/
@@ -297,54 +335,16 @@ class ConvertToTransfer implements ActionInterface
return $sourceTransaction->account;
}
/**
* A deposit is from Revenue to Asset.
* We replace the Revenue with another asset.
*
* @throws FireflyException
*/
private function convertDepositArray(TransactionJournal $journal, Account $opposing): bool
private function getSourceType(int $journalId): string
{
$destAccount = $this->getDestinationAccount($journal);
if ($destAccount->id === $opposing->id) {
Log::error(vsprintf('Journal #%d has already has "%s" as a destination asset. ConvertToTransfer failed. (rule #%d).', [
$journal->id,
$opposing->name,
$this->action->rule_id,
]));
event(new RuleActionFailedOnObject($this->action, $journal, trans('rules.already_has_destination_asset', ['name' => $opposing->name])));
/** @var null|TransactionJournal $journal */
$journal = TransactionJournal::find($journalId);
if (null === $journal) {
Log::error(sprintf('Journal #%d does not exist. Cannot convert to transfer.', $journalId));
return false;
return '';
}
// update source transaction:
DB::table('transactions')
->where('transaction_journal_id', '=', $journal->id)
->where('amount', '<', 0)
->update(['account_id' => $opposing->id])
;
// change transaction type of journal:
$newType = TransactionType::whereType(TransactionTypeEnum::TRANSFER->value)->first();
DB::table('transaction_journals')->where('id', '=', $journal->id)->update(['transaction_type_id' => $newType->id, 'bill_id' => null]);
Log::debug('Converted deposit to transfer.');
return true;
}
/**
* @throws FireflyException
*/
private function getDestinationAccount(TransactionJournal $journal): Account
{
/** @var null|Transaction $destAccount */
$destAccount = $journal->transactions()->where('amount', '>', 0)->first();
if (null === $destAccount) {
throw new FireflyException(sprintf('Cannot find destination transaction for journal #%d', $journal->id));
}
return $destAccount->account;
return (string) $journal->transactions()->where('amount', '<', 0)->first()?->account?->accountType?->type;
}
}