This will make triggers check existing fields first.

This commit is contained in:
James Cole 2016-03-12 07:02:39 +01:00
parent 59cdfa6fe6
commit d054e085d6
13 changed files with 21 additions and 22 deletions

View File

@ -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_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', 'transaction_currencies.code AS transaction_currency_code',
// all for destination: // 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.id AS destination_account_id',
'destination_account.name AS destination_account_name', 'destination_account.name AS destination_account_name',
'destination_acct_type.type AS destination_account_type', 'destination_acct_type.type AS destination_account_type',
// all for source: // 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.id AS source_account_id',
'source_account.name AS source_account_name', 'source_account.name AS source_account_name',
'source_acct_type.type AS source_account_type', 'source_acct_type.type AS source_account_type',

View File

@ -54,7 +54,7 @@ final class AmountExactly extends AbstractTrigger implements TriggerInterface
*/ */
public function triggered(TransactionJournal $journal) public function triggered(TransactionJournal $journal)
{ {
$amount = TransactionJournal::amountPositive($journal); $amount = $journal->destination_amount ?? TransactionJournal::amountPositive($journal);
$compare = $this->triggerValue; $compare = $this->triggerValue;
$result = bccomp($amount, $compare, 4); $result = bccomp($amount, $compare, 4);
if ($result === 0) { if ($result === 0) {

View File

@ -54,7 +54,7 @@ final class AmountLess extends AbstractTrigger implements TriggerInterface
*/ */
public function triggered(TransactionJournal $journal) public function triggered(TransactionJournal $journal)
{ {
$amount = TransactionJournal::amountPositive($journal); $amount = $journal->destination_amount ?? TransactionJournal::amountPositive($journal);
$compare = $this->triggerValue; $compare = $this->triggerValue;
$result = bccomp($amount, $compare, 4); $result = bccomp($amount, $compare, 4);
if ($result === -1) { if ($result === -1) {

View File

@ -54,7 +54,7 @@ final class AmountMore extends AbstractTrigger implements TriggerInterface
*/ */
public function triggered(TransactionJournal $journal) public function triggered(TransactionJournal $journal)
{ {
$amount = TransactionJournal::amountPositive($journal); $amount = $journal->destination_amount ?? TransactionJournal::amountPositive($journal);
$compare = $this->triggerValue; $compare = $this->triggerValue;
$result = bccomp($amount, $compare, 4); $result = bccomp($amount, $compare, 4);
if ($result === 1) { if ($result === 1) {

View File

@ -53,7 +53,7 @@ final class FromAccountContains extends AbstractTrigger implements TriggerInterf
*/ */
public function triggered(TransactionJournal $journal) 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); $search = strtolower($this->triggerValue);
$strpos = strpos($fromAccountName, $search); $strpos = strpos($fromAccountName, $search);

View File

@ -53,7 +53,7 @@ final class FromAccountEnds extends AbstractTrigger implements TriggerInterface
*/ */
public function triggered(TransactionJournal $journal) public function triggered(TransactionJournal $journal)
{ {
$name = strtolower(TransactionJournal::sourceAccount($journal)->name); $name = $journal->source_account_name ?? strtolower(TransactionJournal::sourceAccount($journal)->name);
$nameLength = strlen($name); $nameLength = strlen($name);
$search = strtolower($this->triggerValue); $search = strtolower($this->triggerValue);
$searchLength = strlen($search); $searchLength = strlen($search);

View File

@ -53,16 +53,15 @@ final class FromAccountIs extends AbstractTrigger implements TriggerInterface
*/ */
public function triggered(TransactionJournal $journal) public function triggered(TransactionJournal $journal)
{ {
$sourceAccount = $journal->transactions()->where('amount', '<', 0)->first()->account; $name = $journal->source_account_name ?? strtolower(TransactionJournal::sourceAccount($journal)->name);
$fromAccountName = strtolower($sourceAccount->name); $search = strtolower($this->triggerValue);
$search = strtolower($this->triggerValue);
if ($fromAccountName == $search) { if ($name == $search) {
Log::debug('"' . $fromAccountName . '" equals "' . $search . '" exactly. Return true.'); Log::debug('"' . $name . '" equals "' . $search . '" exactly. Return true.');
return true; return true;
} }
Log::debug('"' . $fromAccountName . '" does not equal "' . $search . '". Return false.'); Log::debug('"' . $name . '" does not equal "' . $search . '". Return false.');
return false; return false;

View File

@ -53,17 +53,17 @@ final class FromAccountStarts extends AbstractTrigger implements TriggerInterfac
*/ */
public function triggered(TransactionJournal $journal) 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); $search = strtolower($this->triggerValue);
$part = substr($fromAccountName, 0, strlen($search)); $part = substr($name, 0, strlen($search));
if ($part == $search) { if ($part == $search) {
Log::debug('"' . $fromAccountName . '" starts with "' . $search . '". Return true.'); Log::debug('"' . $name . '" starts with "' . $search . '". Return true.');
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; return false;

View File

@ -53,7 +53,7 @@ final class ToAccountContains extends AbstractTrigger implements TriggerInterfac
*/ */
public function triggered(TransactionJournal $journal) 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); $search = strtolower($this->triggerValue);
$strpos = strpos($toAccountName, $search); $strpos = strpos($toAccountName, $search);

View File

@ -53,7 +53,7 @@ final class ToAccountEnds extends AbstractTrigger implements TriggerInterface
*/ */
public function triggered(TransactionJournal $journal) public function triggered(TransactionJournal $journal)
{ {
$toAccountName = strtolower(TransactionJournal::destinationAccount($journal)->name); $toAccountName = $journal->destination_account_name ?? strtolower(TransactionJournal::destinationAccount($journal)->name);
$toAccountNameLength = strlen($toAccountName); $toAccountNameLength = strlen($toAccountName);
$search = strtolower($this->triggerValue); $search = strtolower($this->triggerValue);
$searchLength = strlen($search); $searchLength = strlen($search);

View File

@ -53,7 +53,7 @@ final class ToAccountIs extends AbstractTrigger implements TriggerInterface
*/ */
public function triggered(TransactionJournal $journal) 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); $search = strtolower($this->triggerValue);
if ($toAccountName == $search) { if ($toAccountName == $search) {

View File

@ -53,7 +53,7 @@ final class ToAccountStarts extends AbstractTrigger implements TriggerInterface
*/ */
public function triggered(TransactionJournal $journal) 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); $search = strtolower($this->triggerValue);
$part = substr($toAccountName, 0, strlen($search)); $part = substr($toAccountName, 0, strlen($search));

View File

@ -53,7 +53,7 @@ final class TransactionType extends AbstractTrigger implements TriggerInterface
*/ */
public function triggered(TransactionJournal $journal) 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); $search = strtolower($this->triggerValue);
if ($type == $search) { if ($type == $search) {