From df3e4a65548c9d7479e55033b27350c6ae5cfc44 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 12 Oct 2025 12:25:21 +0200 Subject: [PATCH] Fix #11054 --- app/Factory/TransactionJournalFactory.php | 5 +++++ app/Services/Internal/Support/JournalServiceTrait.php | 3 +++ 2 files changed, 8 insertions(+) diff --git a/app/Factory/TransactionJournalFactory.php b/app/Factory/TransactionJournalFactory.php index d11753a2bf..f7dfa70f5c 100644 --- a/app/Factory/TransactionJournalFactory.php +++ b/app/Factory/TransactionJournalFactory.php @@ -225,6 +225,11 @@ class TransactionJournalFactory $destinationAccount = $this->getAccount($type->type, 'destination', $destInfo, $sourceAccount); Log::debug('Done with getAccount(2x)'); + // there is a safety catch here. If either account is NULL, they will be replaced with the cash account. + if(null === $destinationAccount) { + Log::warning('Destination account is NULL, will replace with cash account.'); + $destinationAccount = $this->accountRepository->getCashAccount(); + } // this is the moment for a reconciliation sanity check (again). if (TransactionTypeEnum::RECONCILIATION->value === $type->type) { diff --git a/app/Services/Internal/Support/JournalServiceTrait.php b/app/Services/Internal/Support/JournalServiceTrait.php index a4ce044ebf..992aa8777d 100644 --- a/app/Services/Internal/Support/JournalServiceTrait.php +++ b/app/Services/Internal/Support/JournalServiceTrait.php @@ -88,6 +88,7 @@ trait JournalServiceTrait // the account that Firefly III creates must be "creatable", aka select the one we can create from the list just in case $creatableType = $this->getCreatableType($expectedTypes[$transactionType]); + Log::debug(sprintf('Creatable type is "%s"', $creatableType ), $expectedTypes[$transactionType]); // if the result is NULL but the ID is set, an account could exist of the wrong type. // that data can be used to create a new account of the right type. @@ -227,9 +228,11 @@ trait JournalServiceTrait } // find by preferred type. + Log::debug('Find by preferred type.'); $result = $this->accountRepository->findByName($data['name'], [$types[0]]); // or any expected type. + Log::debug('Find by any expected type.'); $result ??= $this->accountRepository->findByName($data['name'], $types); if (null !== $result) {