diff --git a/app/TransactionRules/Actions/ConvertToDeposit.php b/app/TransactionRules/Actions/ConvertToDeposit.php index 70b78f862a..5419dc9f1b 100644 --- a/app/TransactionRules/Actions/ConvertToDeposit.php +++ b/app/TransactionRules/Actions/ConvertToDeposit.php @@ -28,6 +28,7 @@ use FireflyIII\Exceptions\FireflyException; use FireflyIII\Factory\AccountFactory; use FireflyIII\Models\AccountType; use FireflyIII\Models\RuleAction; +use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionType; use FireflyIII\User; use Log; @@ -56,6 +57,12 @@ class ConvertToDeposit implements ActionInterface */ public function actOnArray(array $journal): bool { + $groupCount = TransactionJournal::where('transaction_group_id', $journal['transaction_group_id'])->count(); + if($groupCount > 1) { + Log::error(sprintf('Group #%d has more than one transaction in it, cannot convert to deposit.', $journal['transaction_group_id'])); + return false; + } + Log::debug(sprintf('Convert journal #%d to deposit.', $journal['transaction_journal_id'])); $type = $journal['transaction_type_type']; if (TransactionType::DEPOSIT === $type) { diff --git a/app/TransactionRules/Actions/ConvertToTransfer.php b/app/TransactionRules/Actions/ConvertToTransfer.php index 4d9f3063a4..718ea1953e 100644 --- a/app/TransactionRules/Actions/ConvertToTransfer.php +++ b/app/TransactionRules/Actions/ConvertToTransfer.php @@ -27,6 +27,7 @@ use DB; use FireflyIII\Models\Account; use FireflyIII\Models\AccountType; use FireflyIII\Models\RuleAction; +use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionType; use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\User; @@ -55,6 +56,13 @@ class ConvertToTransfer implements ActionInterface */ public function actOnArray(array $journal): bool { + $groupCount = TransactionJournal::where('transaction_group_id', $journal['transaction_group_id'])->count(); + if($groupCount > 1) { + Log::error(sprintf('Group #%d has more than one transaction in it, cannot convert to transfer.', $journal['transaction_group_id'])); + return false; + } + + $type = $journal['transaction_type_type']; $user = User::find($journal['user_id']); if (TransactionType::TRANSFER === $type) { diff --git a/app/TransactionRules/Actions/ConvertToWithdrawal.php b/app/TransactionRules/Actions/ConvertToWithdrawal.php index ea9faf6ec4..540b99f8e3 100644 --- a/app/TransactionRules/Actions/ConvertToWithdrawal.php +++ b/app/TransactionRules/Actions/ConvertToWithdrawal.php @@ -28,6 +28,7 @@ use FireflyIII\Exceptions\FireflyException; use FireflyIII\Factory\AccountFactory; use FireflyIII\Models\AccountType; use FireflyIII\Models\RuleAction; +use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionType; use FireflyIII\User; use Log; @@ -55,6 +56,12 @@ class ConvertToWithdrawal implements ActionInterface */ public function actOnArray(array $journal): bool { + $groupCount = TransactionJournal::where('transaction_group_id', $journal['transaction_group_id'])->count(); + if($groupCount > 1) { + Log::error(sprintf('Group #%d has more than one transaction in it, cannot convert to withdrawal.', $journal['transaction_group_id'])); + return false; + } + $type = $journal['transaction_type_type']; if (TransactionType::WITHDRAWAL === $type) { Log::error(sprintf('Journal #%d is already a withdrawal (rule #%d).', $journal['transaction_journal_id'], $this->action->rule_id));