From d054e085d678fb20e4bc9e2bb91b8715f8045fc0 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sat, 12 Mar 2016 07:02:39 +0100 Subject: [PATCH] This will make triggers check existing fields first. --- app/Models/TransactionJournal.php | 4 ++-- app/Rules/Triggers/AmountExactly.php | 2 +- app/Rules/Triggers/AmountLess.php | 2 +- app/Rules/Triggers/AmountMore.php | 2 +- app/Rules/Triggers/FromAccountContains.php | 2 +- app/Rules/Triggers/FromAccountEnds.php | 2 +- app/Rules/Triggers/FromAccountIs.php | 11 +++++------ app/Rules/Triggers/FromAccountStarts.php | 8 ++++---- app/Rules/Triggers/ToAccountContains.php | 2 +- app/Rules/Triggers/ToAccountEnds.php | 2 +- app/Rules/Triggers/ToAccountIs.php | 2 +- app/Rules/Triggers/ToAccountStarts.php | 2 +- app/Rules/Triggers/TransactionType.php | 2 +- 13 files changed, 21 insertions(+), 22 deletions(-) diff --git a/app/Models/TransactionJournal.php b/app/Models/TransactionJournal.php index 400c68dbb5..64545d5177 100644 --- a/app/Models/TransactionJournal.php +++ b/app/Models/TransactionJournal.php @@ -73,12 +73,12 @@ class TransactionJournal extends TransactionJournalSupport 'transaction_types.type AS transaction_type_type', // the other field is called "transaction_type_id" so this is pretty consistent. 'transaction_currencies.code AS transaction_currency_code', // all for destination: - 'destination.amount AS destination_amount', + 'destination.amount AS destination_amount', // is always positive 'destination_account.id AS destination_account_id', 'destination_account.name AS destination_account_name', 'destination_acct_type.type AS destination_account_type', // all for source: - 'source.amount AS source_amount', + 'source.amount AS source_amount', // is always negative 'source_account.id AS source_account_id', 'source_account.name AS source_account_name', 'source_acct_type.type AS source_account_type', diff --git a/app/Rules/Triggers/AmountExactly.php b/app/Rules/Triggers/AmountExactly.php index de16741252..850df26074 100644 --- a/app/Rules/Triggers/AmountExactly.php +++ b/app/Rules/Triggers/AmountExactly.php @@ -54,7 +54,7 @@ final class AmountExactly extends AbstractTrigger implements TriggerInterface */ public function triggered(TransactionJournal $journal) { - $amount = TransactionJournal::amountPositive($journal); + $amount = $journal->destination_amount ?? TransactionJournal::amountPositive($journal); $compare = $this->triggerValue; $result = bccomp($amount, $compare, 4); if ($result === 0) { diff --git a/app/Rules/Triggers/AmountLess.php b/app/Rules/Triggers/AmountLess.php index aae6245491..458f2ccb5c 100644 --- a/app/Rules/Triggers/AmountLess.php +++ b/app/Rules/Triggers/AmountLess.php @@ -54,7 +54,7 @@ final class AmountLess extends AbstractTrigger implements TriggerInterface */ public function triggered(TransactionJournal $journal) { - $amount = TransactionJournal::amountPositive($journal); + $amount = $journal->destination_amount ?? TransactionJournal::amountPositive($journal); $compare = $this->triggerValue; $result = bccomp($amount, $compare, 4); if ($result === -1) { diff --git a/app/Rules/Triggers/AmountMore.php b/app/Rules/Triggers/AmountMore.php index 697526194c..d0fd3ccdcb 100644 --- a/app/Rules/Triggers/AmountMore.php +++ b/app/Rules/Triggers/AmountMore.php @@ -54,7 +54,7 @@ final class AmountMore extends AbstractTrigger implements TriggerInterface */ public function triggered(TransactionJournal $journal) { - $amount = TransactionJournal::amountPositive($journal); + $amount = $journal->destination_amount ?? TransactionJournal::amountPositive($journal); $compare = $this->triggerValue; $result = bccomp($amount, $compare, 4); if ($result === 1) { diff --git a/app/Rules/Triggers/FromAccountContains.php b/app/Rules/Triggers/FromAccountContains.php index a204357270..970135a840 100644 --- a/app/Rules/Triggers/FromAccountContains.php +++ b/app/Rules/Triggers/FromAccountContains.php @@ -53,7 +53,7 @@ final class FromAccountContains extends AbstractTrigger implements TriggerInterf */ public function triggered(TransactionJournal $journal) { - $fromAccountName = strtolower(TransactionJournal::sourceAccount($journal)->name); + $fromAccountName = $journal->source_account_name ?? strtolower(TransactionJournal::sourceAccount($journal)->name); $search = strtolower($this->triggerValue); $strpos = strpos($fromAccountName, $search); diff --git a/app/Rules/Triggers/FromAccountEnds.php b/app/Rules/Triggers/FromAccountEnds.php index f35faa27c9..505cdcd88f 100644 --- a/app/Rules/Triggers/FromAccountEnds.php +++ b/app/Rules/Triggers/FromAccountEnds.php @@ -53,7 +53,7 @@ final class FromAccountEnds extends AbstractTrigger implements TriggerInterface */ public function triggered(TransactionJournal $journal) { - $name = strtolower(TransactionJournal::sourceAccount($journal)->name); + $name = $journal->source_account_name ?? strtolower(TransactionJournal::sourceAccount($journal)->name); $nameLength = strlen($name); $search = strtolower($this->triggerValue); $searchLength = strlen($search); diff --git a/app/Rules/Triggers/FromAccountIs.php b/app/Rules/Triggers/FromAccountIs.php index 0bfc4f8aed..cf19a75cbc 100644 --- a/app/Rules/Triggers/FromAccountIs.php +++ b/app/Rules/Triggers/FromAccountIs.php @@ -53,16 +53,15 @@ final class FromAccountIs extends AbstractTrigger implements TriggerInterface */ public function triggered(TransactionJournal $journal) { - $sourceAccount = $journal->transactions()->where('amount', '<', 0)->first()->account; - $fromAccountName = strtolower($sourceAccount->name); - $search = strtolower($this->triggerValue); + $name = $journal->source_account_name ?? strtolower(TransactionJournal::sourceAccount($journal)->name); + $search = strtolower($this->triggerValue); - if ($fromAccountName == $search) { - Log::debug('"' . $fromAccountName . '" equals "' . $search . '" exactly. Return true.'); + if ($name == $search) { + Log::debug('"' . $name . '" equals "' . $search . '" exactly. Return true.'); return true; } - Log::debug('"' . $fromAccountName . '" does not equal "' . $search . '". Return false.'); + Log::debug('"' . $name . '" does not equal "' . $search . '". Return false.'); return false; diff --git a/app/Rules/Triggers/FromAccountStarts.php b/app/Rules/Triggers/FromAccountStarts.php index a020b415e7..886cca8949 100644 --- a/app/Rules/Triggers/FromAccountStarts.php +++ b/app/Rules/Triggers/FromAccountStarts.php @@ -53,17 +53,17 @@ final class FromAccountStarts extends AbstractTrigger implements TriggerInterfac */ public function triggered(TransactionJournal $journal) { - $fromAccountName = strtolower(TransactionJournal::sourceAccount($journal)->name); + $name = $journal->source_account_name ?? strtolower(TransactionJournal::sourceAccount($journal)->name); $search = strtolower($this->triggerValue); - $part = substr($fromAccountName, 0, strlen($search)); + $part = substr($name, 0, strlen($search)); if ($part == $search) { - Log::debug('"' . $fromAccountName . '" starts with "' . $search . '". Return true.'); + Log::debug('"' . $name . '" starts with "' . $search . '". Return true.'); return true; } - Log::debug('"' . $fromAccountName . '" does not start with "' . $search . '". Return false.'); + Log::debug('"' . $name . '" does not start with "' . $search . '". Return false.'); return false; diff --git a/app/Rules/Triggers/ToAccountContains.php b/app/Rules/Triggers/ToAccountContains.php index dcaa85676f..bbc32c050b 100644 --- a/app/Rules/Triggers/ToAccountContains.php +++ b/app/Rules/Triggers/ToAccountContains.php @@ -53,7 +53,7 @@ final class ToAccountContains extends AbstractTrigger implements TriggerInterfac */ public function triggered(TransactionJournal $journal) { - $toAccountName = strtolower(TransactionJournal::destinationAccount($journal)->name); + $toAccountName = $journal->destination_account_name ?? strtolower(TransactionJournal::destinationAccount($journal)->name); $search = strtolower($this->triggerValue); $strpos = strpos($toAccountName, $search); diff --git a/app/Rules/Triggers/ToAccountEnds.php b/app/Rules/Triggers/ToAccountEnds.php index bba6cc7915..5660aad707 100644 --- a/app/Rules/Triggers/ToAccountEnds.php +++ b/app/Rules/Triggers/ToAccountEnds.php @@ -53,7 +53,7 @@ final class ToAccountEnds extends AbstractTrigger implements TriggerInterface */ public function triggered(TransactionJournal $journal) { - $toAccountName = strtolower(TransactionJournal::destinationAccount($journal)->name); + $toAccountName = $journal->destination_account_name ?? strtolower(TransactionJournal::destinationAccount($journal)->name); $toAccountNameLength = strlen($toAccountName); $search = strtolower($this->triggerValue); $searchLength = strlen($search); diff --git a/app/Rules/Triggers/ToAccountIs.php b/app/Rules/Triggers/ToAccountIs.php index 93fcd718ae..9fb9d75263 100644 --- a/app/Rules/Triggers/ToAccountIs.php +++ b/app/Rules/Triggers/ToAccountIs.php @@ -53,7 +53,7 @@ final class ToAccountIs extends AbstractTrigger implements TriggerInterface */ public function triggered(TransactionJournal $journal) { - $toAccountName = strtolower(TransactionJournal::destinationAccount($journal)->name); + $toAccountName = $journal->destination_account_name ?? strtolower(TransactionJournal::destinationAccount($journal)->name); $search = strtolower($this->triggerValue); if ($toAccountName == $search) { diff --git a/app/Rules/Triggers/ToAccountStarts.php b/app/Rules/Triggers/ToAccountStarts.php index ccc53f12fa..9beaf31ebb 100644 --- a/app/Rules/Triggers/ToAccountStarts.php +++ b/app/Rules/Triggers/ToAccountStarts.php @@ -53,7 +53,7 @@ final class ToAccountStarts extends AbstractTrigger implements TriggerInterface */ public function triggered(TransactionJournal $journal) { - $toAccountName = strtolower(TransactionJournal::destinationAccount($journal)->name); + $toAccountName = $journal->destination_account_name ?? strtolower(TransactionJournal::destinationAccount($journal)->name); $search = strtolower($this->triggerValue); $part = substr($toAccountName, 0, strlen($search)); diff --git a/app/Rules/Triggers/TransactionType.php b/app/Rules/Triggers/TransactionType.php index 90decda2b7..e17040f2bb 100644 --- a/app/Rules/Triggers/TransactionType.php +++ b/app/Rules/Triggers/TransactionType.php @@ -53,7 +53,7 @@ final class TransactionType extends AbstractTrigger implements TriggerInterface */ public function triggered(TransactionJournal $journal) { - $type = strtolower($journal->transactionType->type); + $type = !is_null($journal->transaction_type_type) ? $journal->transaction_type_type : strtolower($journal->transactionType->type); $search = strtolower($this->triggerValue); if ($type == $search) {