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_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',

View File

@ -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) {

View File

@ -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) {

View File

@ -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) {

View File

@ -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);

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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);

View File

@ -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);

View File

@ -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) {

View File

@ -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));

View File

@ -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) {