diff --git a/app/Http/Controllers/Json/RuleController.php b/app/Http/Controllers/Json/RuleController.php index c2e52d35f6..02febad313 100644 --- a/app/Http/Controllers/Json/RuleController.php +++ b/app/Http/Controllers/Json/RuleController.php @@ -70,7 +70,7 @@ class RuleController extends Controller public function trigger(Request $request): JsonResponse { $count = (int)$request->get('count') > 0 ? (int)$request->get('count') : 1; - $operators = config('firefly.search.operators'); + $operators = config('search.operators'); $triggers = []; foreach ($operators as $key => $operator) { if ('user_action' !== $key && false === $operator['alias']) { diff --git a/app/Http/Controllers/Rule/EditController.php b/app/Http/Controllers/Rule/EditController.php index 9c6021240c..11c97fbb73 100644 --- a/app/Http/Controllers/Rule/EditController.php +++ b/app/Http/Controllers/Rule/EditController.php @@ -144,7 +144,7 @@ class EditController extends Controller private function parseFromOperators(array $submittedOperators): array { // See reference nr. 65 - $operators = config('firefly.search.operators'); + $operators = config('search.operators'); $renderedEntries = []; $triggers = []; foreach ($operators as $key => $operator) { diff --git a/app/Support/Domain.php b/app/Support/Domain.php index 94beefa05e..ced5cd7ae7 100644 --- a/app/Support/Domain.php +++ b/app/Support/Domain.php @@ -50,6 +50,6 @@ class Domain */ public static function getRuleTriggers(): array { - return array_keys(config('firefly.search.operators')); + return array_keys(config('search.operators')); } } diff --git a/app/Support/Http/Controllers/ModelInformation.php b/app/Support/Http/Controllers/ModelInformation.php index 27cb567527..30d61b7fa2 100644 --- a/app/Support/Http/Controllers/ModelInformation.php +++ b/app/Support/Http/Controllers/ModelInformation.php @@ -116,7 +116,7 @@ trait ModelInformation protected function getTriggersForBill(Bill $bill): array // get info and augument { // See reference nr. 39 - $operators = config('firefly.search.operators'); + $operators = config('search.operators'); $triggers = []; foreach ($operators as $key => $operator) { if ('user_action' !== $key && false === $operator['alias']) { @@ -168,7 +168,7 @@ trait ModelInformation private function getTriggersForJournal(TransactionJournal $journal): array { // See reference nr. 40 - $operators = config('firefly.search.operators'); + $operators = config('search.operators'); $triggers = []; foreach ($operators as $key => $operator) { if ('user_action' !== $key && false === $operator['alias']) { diff --git a/app/Support/Http/Controllers/RenderPartialViews.php b/app/Support/Http/Controllers/RenderPartialViews.php index a6dec719a8..7d3d56da0f 100644 --- a/app/Support/Http/Controllers/RenderPartialViews.php +++ b/app/Support/Http/Controllers/RenderPartialViews.php @@ -299,7 +299,7 @@ trait RenderPartialViews protected function getCurrentTriggers(Rule $rule): array // get info from object and present. { // See reference nr. 38 - $operators = config('firefly.search.operators'); + $operators = config('search.operators'); $triggers = []; foreach ($operators as $key => $operator) { if ('user_action' !== $key && false === $operator['alias']) { diff --git a/app/Support/Http/Controllers/RuleManagement.php b/app/Support/Http/Controllers/RuleManagement.php index bc84899558..c83608c32a 100644 --- a/app/Support/Http/Controllers/RuleManagement.php +++ b/app/Support/Http/Controllers/RuleManagement.php @@ -79,7 +79,7 @@ trait RuleManagement protected function getPreviousTriggers(Request $request): array { // See reference nr. 34 - $operators = config('firefly.search.operators'); + $operators = config('search.operators'); $triggers = []; foreach ($operators as $key => $operator) { if ('user_action' !== $key && false === $operator['alias']) { @@ -124,7 +124,7 @@ trait RuleManagement protected function parseFromOperators(array $submittedOperators): array { // See reference nr. 35 - $operators = config('firefly.search.operators'); + $operators = config('search.operators'); $renderedEntries = []; $triggers = []; foreach ($operators as $key => $operator) { diff --git a/app/Support/Request/GetRuleConfiguration.php b/app/Support/Request/GetRuleConfiguration.php index 9826382f8a..9c7e8ef1fb 100644 --- a/app/Support/Request/GetRuleConfiguration.php +++ b/app/Support/Request/GetRuleConfiguration.php @@ -34,7 +34,7 @@ trait GetRuleConfiguration */ protected function getTriggers(): array { - return array_keys(config('firefly.search.operators')); + return array_keys(config('search.operators')); } /** @@ -42,7 +42,7 @@ trait GetRuleConfiguration */ protected function getTriggersWithContext(): array { - $list = config('firefly.search.operators'); + $list = config('search.operators'); $return = []; foreach ($list as $key => $info) { if (true === $info['needs_context']) { diff --git a/app/Support/Search/OperatorQuerySearch.php b/app/Support/Search/OperatorQuerySearch.php index 66b5274665..18206d9405 100644 --- a/app/Support/Search/OperatorQuerySearch.php +++ b/app/Support/Search/OperatorQuerySearch.php @@ -92,7 +92,7 @@ class OperatorQuerySearch implements SearchInterface $this->invalidOperators = []; $this->limit = 25; $this->date = today(config('app.timezone')); - $this->validOperators = array_keys(config('firefly.search.operators')); + $this->validOperators = array_keys(config('search.operators')); $this->startTime = microtime(true); $this->accountRepository = app(AccountRepositoryInterface::class); $this->categoryRepository = app(CategoryRepositoryInterface::class); diff --git a/app/Support/Twig/Rule.php b/app/Support/Twig/Rule.php index 45e197a9bd..f1543f01c9 100644 --- a/app/Support/Twig/Rule.php +++ b/app/Support/Twig/Rule.php @@ -67,7 +67,7 @@ class Rule extends AbstractExtension return new TwigFunction( 'allRuleTriggers', static function () { - $ruleTriggers = array_keys(config('firefly.search.operators')); + $ruleTriggers = array_keys(config('search.operators')); $possibleTriggers = []; foreach ($ruleTriggers as $key) { if ('user_action' !== $key) { diff --git a/config/firefly.php b/config/firefly.php index 2280cd53c4..90c3503bf4 100644 --- a/config/firefly.php +++ b/config/firefly.php @@ -205,9 +205,9 @@ return [ 'language' => 'en_US', 'locale' => 'equal', ], - 'default_currency' => 'EUR', - 'default_language' => envNonEmpty('DEFAULT_LANGUAGE', 'en_US'), - 'default_locale' => envNonEmpty('DEFAULT_LOCALE', 'equal'), + 'default_currency' => 'EUR', + 'default_language' => envNonEmpty('DEFAULT_LANGUAGE', 'en_US'), + 'default_locale' => envNonEmpty('DEFAULT_LOCALE', 'equal'), // "value must be in this list" values 'valid_attachment_models' => [ @@ -221,7 +221,7 @@ return [ TransactionJournal::class, Recurrence::class, ], - 'valid_view_ranges' => ['1D', '1W', '1M', '3M', '6M', '1Y',], + 'valid_view_ranges' => ['1D', '1W', '1M', '3M', '6M', '1Y',], 'allowedMimes' => [ /* plain files */ 'text/plain', @@ -390,7 +390,7 @@ return [ 'transfers' => 'fa-exchange', ], - 'bindables' => [ + 'bindables' => [ // models 'account' => Account::class, 'attachment' => Attachment::class, @@ -442,7 +442,7 @@ return [ 'eitherConfigKey' => EitherConfigKey::class, ], - 'rule-actions' => [ + 'rule-actions' => [ 'set_category' => SetCategory::class, 'clear_category' => ClearCategory::class, 'set_budget' => SetBudget::class, @@ -466,7 +466,7 @@ return [ 'update_piggy' => UpdatePiggybank::class, 'delete_transaction' => DeleteTransaction::class, ], - 'context-rule-actions' => [ + 'context-rule-actions' => [ 'set_category', 'set_budget', 'add_tag', @@ -485,181 +485,12 @@ return [ 'convert_transfer', ], - 'test-triggers' => [ + 'test-triggers' => [ 'limit' => 10, 'range' => 200, ], - 'search' => [ - 'operators' => [ - 'user_action' => ['alias' => false, 'needs_context' => true,], - 'description_starts' => ['alias' => false, 'needs_context' => true,], - 'description_ends' => ['alias' => false, 'needs_context' => true,], - 'description_contains' => ['alias' => false, 'needs_context' => true,], - 'description_is' => ['alias' => false, 'needs_context' => true,], - 'description' => ['alias' => true, 'alias_for' => 'description_contains', 'needs_context' => true,], - - 'currency_is' => ['alias' => false, 'needs_context' => true,], - 'foreign_currency_is' => ['alias' => false, 'needs_context' => true,], - - 'has_attachments' => ['alias' => false, 'needs_context' => false,], - 'has_no_category' => ['alias' => false, 'needs_context' => false,], - 'has_any_category' => ['alias' => false, 'needs_context' => false,], - 'has_no_budget' => ['alias' => false, 'needs_context' => false,], - 'has_any_budget' => ['alias' => false, 'needs_context' => false,], - 'has_no_bill' => ['alias' => false, 'needs_context' => false,], - 'has_any_bill' => ['alias' => false, 'needs_context' => false,], - 'has_no_tag' => ['alias' => false, 'needs_context' => false,], - 'has_any_tag' => ['alias' => false, 'needs_context' => false,], - 'notes_contain' => ['alias' => false, 'needs_context' => true,], - 'notes_start' => ['alias' => false, 'needs_context' => true,], - 'notes_end' => ['alias' => false, 'needs_context' => true,], - 'notes_are' => ['alias' => false, 'needs_context' => true,], - 'no_notes' => ['alias' => false, 'needs_context' => false,], - 'any_notes' => ['alias' => false, 'needs_context' => false,], - 'no_external_url' => ['alias' => false, 'needs_context' => false,], - 'any_external_url' => ['alias' => false, 'needs_context' => false,], - - // one exact (or array of) journals: - 'id' => ['alias' => false, 'trigger_class' => null, 'needs_context' => true,], - 'journal_id' => ['alias' => false, 'trigger_class' => null, 'needs_context' => true,], - - // exact amount - 'amount_exactly' => ['alias' => false, 'needs_context' => true,], - 'amount_is' => ['alias' => true, 'alias_for' => 'amount_exactly', 'needs_context' => true,], - 'amount' => ['alias' => true, 'alias_for' => 'amount_exactly', 'needs_context' => true,], - - // is less than - 'amount_less' => ['alias' => false, 'needs_context' => true,], - 'amount_max' => ['alias' => true, 'alias_for' => 'amount_less', 'needs_context' => true,], - - // is more than - 'amount_more' => ['alias' => false, 'needs_context' => true,], - 'amount_min' => ['alias' => true, 'alias_for' => 'amount_more', 'needs_context' => true,], - - // source account name is + alias: - 'source_account_is' => ['alias' => false, 'needs_context' => true,], - 'from_account_is' => ['alias' => true, 'alias_for' => 'source_account_is', 'needs_context' => true,], - - // source or dest is cash account? - 'source_is_cash' => ['alias' => false, 'needs_context' => false], - 'destination_is_cash' => ['alias' => false, 'needs_context' => false], - 'account_is_cash' => ['alias' => false, 'needs_context' => false], - - // source account name contains + alias - 'source_account_contains' => ['alias' => false, 'needs_context' => true,], - 'from_account_contains' => ['alias' => true, 'alias_for' => 'source_account_contains', 'needs_context' => true,], - 'source' => ['alias' => true, 'alias_for' => 'source_account_contains', 'needs_context' => true,], - 'from' => ['alias' => true, 'alias_for' => 'source_account_contains', 'needs_context' => true,], - - // source account name starts with + alias - 'source_account_starts' => ['alias' => false, 'needs_context' => true,], - 'from_account_starts' => ['alias' => true, 'alias_for' => 'source_account_starts', 'needs_context' => true,], - - // source account name ends with + alias - 'source_account_ends' => ['alias' => false, 'needs_context' => true,], - 'from_account_ends' => ['alias' => true, 'alias_for' => 'source_account_ends', 'needs_context' => true,], - - // source account ID + alias - 'source_account_id' => ['alias' => false, 'needs_context' => true,], - 'from_account_id' => ['alias' => true, 'alias_for' => 'source_account_id', 'needs_context' => true,], - - // source account number is - 'source_account_nr_is' => ['alias' => false, 'needs_context' => true,], - 'from_account_nr_is' => ['alias' => true, 'alias_for' => 'source_account_nr_is', 'needs_context' => true,], - - // source account number contains - 'source_account_nr_contains' => ['alias' => false, 'needs_context' => true,], - 'from_account_nr_contains' => ['alias' => true, 'alias_for' => 'source_account_nr_contains', 'needs_context' => true,], - - // source account number starts with - 'source_account_nr_starts' => ['alias' => false, 'needs_context' => true,], - 'from_account_nr_starts' => ['alias' => true, 'alias_for' => 'source_account_nr_starts', 'needs_context' => true,], - - // source account number ends with - 'source_account_nr_ends' => ['alias' => false, 'needs_context' => true,], - 'from_account_nr_ends' => ['alias' => true, 'alias_for' => 'source_account_nr_ends', 'needs_context' => true,], - - // destination account name is + alias - 'destination_account_is' => ['alias' => false, 'needs_context' => true,], - 'to_account_is' => ['alias' => true, 'alias_for' => 'destination_account_is', 'needs_context' => true,], - - // destination account name contains + alias - 'destination_account_contains' => ['alias' => false, 'needs_context' => true,], - 'to_account_contains' => ['alias' => true, 'alias_for' => 'destination_account_contains', 'needs_context' => true,], - 'destination' => ['alias' => true, 'alias_for' => 'destination_account_contains', 'needs_context' => true,], - 'to' => ['alias' => true, 'alias_for' => 'destination_account_contains', 'needs_context' => true,], - - // destination account name starts with + alias - 'destination_account_starts' => ['alias' => false, 'needs_context' => true,], - 'to_account_starts' => ['alias' => true, 'alias_for' => 'destination_account_starts', 'needs_context' => true,], - - // destination account name ends with + alias - 'destination_account_ends' => ['alias' => false, 'needs_context' => true,], - 'to_account_ends' => ['alias' => true, 'alias_for' => 'destination_account_ends', 'needs_context' => true,], - - // destination account ID + alias - 'destination_account_id' => ['alias' => false, 'needs_context' => true,], - 'to_account_id' => ['alias' => true, 'alias_for' => 'destination_account_id', 'needs_context' => true,], - - // destination account number is - 'destination_account_nr_is' => ['alias' => false, 'needs_context' => true,], - 'to_account_nr_is' => ['alias' => true, 'alias_for' => 'destination_account_nr_is', 'needs_context' => true,], - - // destination account number contains - 'destination_account_nr_contains' => ['alias' => false, 'needs_context' => true,], - 'to_account_nr_contains' => ['alias' => true, 'alias_for' => 'destination_account_nr_contains', 'needs_context' => true,], - - // destination account number starts with - 'destination_account_nr_starts' => ['alias' => false, 'needs_context' => true,], - 'to_account_nr_starts' => ['alias' => true, 'alias_for' => 'destination_account_nr_starts', 'needs_context' => true,], - - // destination account number ends with - 'destination_account_nr_ends' => ['alias' => false, 'needs_context' => true,], - 'to_account_nr_ends' => ['alias' => true, 'alias_for' => 'destination_account_nr_ends', 'needs_context' => true,], - - // any account id is - 'account_id' => ['alias' => false, 'needs_context' => true,], - - // category - 'category_is' => ['alias' => false, 'needs_context' => true,], - 'category' => ['alias' => true, 'alias_for' => 'category_is', 'needs_context' => true,], - - // budget - 'budget_is' => ['alias' => false, 'needs_context' => true,], - 'budget' => ['alias' => true, 'alias_for' => 'budget_is', 'needs_context' => true,], - - // bill - 'bill_is' => ['alias' => false, 'needs_context' => true,], - 'bill' => ['alias' => true, 'alias_for' => 'bill_is', 'needs_context' => true,], - - // type - 'transaction_type' => ['alias' => false, 'needs_context' => true,], - 'type' => ['alias' => true, 'alias_for' => 'transaction_type', 'needs_context' => true,], - - // date: - 'date_is' => ['alias' => false, 'needs_context' => true,], - 'date' => ['alias' => true, 'alias_for' => 'date_is', 'needs_context' => true,], - 'on' => ['alias' => true, 'alias_for' => 'date_is', 'needs_context' => true,], - 'date_before' => ['alias' => false, 'needs_context' => true,], - 'before' => ['alias' => true, 'alias_for' => 'date_before', 'needs_context' => true,], - 'date_after' => ['alias' => false, 'needs_context' => true,], - 'after' => ['alias' => true, 'alias_for' => 'date_after', 'needs_context' => true,], - - // other interesting fields - 'tag_is' => ['alias' => false, 'needs_context' => true,], - 'tag' => ['alias' => true, 'alias_for' => 'tag_is', 'needs_context' => true,], - 'created_on' => ['alias' => false, 'needs_context' => true,], - 'created_at' => ['alias' => true, 'alias_for' => 'created_on', 'needs_context' => true,], - 'updated_on' => ['alias' => false, 'needs_context' => true,], - 'updated_at' => ['alias' => true, 'alias_for' => 'updated_on', 'needs_context' => true,], - 'external_id' => ['alias' => false, 'needs_context' => true,], - 'internal_reference' => ['alias' => false, 'needs_context' => true,], - - ], - ], - // expected source types for each transaction type, in order of preference. 'expected_source_types' => [ 'source' => [ @@ -877,7 +708,7 @@ return [ 'import_hash', 'import_hash_v2', 'external_id', 'original_source', // recurring transactions - 'recurrence_total', 'recurrence_count', + 'recurrence_total', 'recurrence_count' ], 'webhooks' => [ 'max_attempts' => env('WEBHOOK_MAX_ATTEMPTS', 3), diff --git a/config/search.php b/config/search.php new file mode 100644 index 0000000000..93892aa218 --- /dev/null +++ b/config/search.php @@ -0,0 +1,190 @@ + [ + 'user_action' => ['alias' => false, 'needs_context' => true,], + 'account_id' => ['alias' => false, 'needs_context' => true,], + 'source_account_id' => ['alias' => false, 'needs_context' => true,], + 'destination_account_id' => ['alias' => false, 'needs_context' => true,], + 'transaction_type' => ['alias' => false, 'needs_context' => true,], + 'type' => ['alias' => true, 'alias_for' => 'transaction_type', 'needs_context' => true,], + 'tag_is' => ['alias' => false, 'needs_context' => true,], + 'tag_is_not' => ['alias' => false, 'needs_context' => true,], + 'tag' => ['alias' => true, 'alias_for' => 'tag_is', 'needs_context' => true,], + 'description_is' => ['alias' => false, 'needs_context' => true,], + 'description' => ['alias' => true, 'alias_for' => 'description_is', 'needs_context' => true,], + 'description_contains' => ['alias' => false, 'needs_context' => true,], + 'description_ends' => ['alias' => false, 'needs_context' => true,], + 'description_starts' => ['alias' => false, 'needs_context' => true,], + 'notes_is' => ['alias' => false, 'needs_context' => true,], + 'notes_contains' => ['alias' => false, 'needs_context' => true,], + 'notes' => ['alias' => true, 'alias_for' => 'notes_contains', 'needs_context' => true,], + 'notes_ends' => ['alias' => false, 'needs_context' => true,], + 'notes_starts' => ['alias' => false, 'needs_context' => true,], + 'source_account_is' => ['alias' => false, 'needs_context' => true,], + 'from_account_is' => ['alias' => true, 'alias_for' => 'source_account_is', 'needs_context' => true,], + 'source_account_contains' => ['alias' => false, 'needs_context' => true,], + 'source' => ['alias' => true, 'alias_for' => 'source_account_contains', 'needs_context' => true,], + 'from' => ['alias' => true, 'alias_for' => 'source_account_contains', 'needs_context' => true,], + 'from_account_contains' => ['alias' => true, 'alias_for' => 'source_account_contains', 'needs_context' => true,], + 'source_account_ends' => ['alias' => false, 'needs_context' => true,], + 'from_account_ends' => ['alias' => true, 'alias_for' => 'source_account_ends', 'needs_context' => true,], + 'source_account_starts' => ['alias' => false, 'needs_context' => true,], + 'from_account_starts' => ['alias' => true, 'alias_for' => 'source_account_starts', 'needs_context' => true,], + 'source_account_nr_is' => ['alias' => false, 'needs_context' => true,], + 'from_account_nr_is' => ['alias' => true, 'alias_for' => 'source_account_nr_is', 'needs_context' => true,], + 'source_account_nr_contains' => ['alias' => false, 'needs_context' => true,], + 'from_account_nr_contains' => ['alias' => true, 'alias_for' => 'source_account_nr_contains', 'needs_context' => true,], + 'source_account_nr_ends' => ['alias' => false, 'needs_context' => true,], + 'from_account_nr_ends' => ['alias' => true, 'alias_for' => 'source_account_nr_ends', 'needs_context' => true,], + 'source_account_nr_starts' => ['alias' => false, 'needs_context' => true,], + 'from_account_nr_starts' => ['alias' => true, 'alias_for' => 'source_account_nr_starts', 'needs_context' => true,], + 'destination_account_is' => ['alias' => false, 'needs_context' => true,], + 'to_account_is' => ['alias' => true, 'alias_for' => 'destination_account_is', 'needs_context' => true,], + 'destination_account_contains' => ['alias' => false, 'needs_context' => true,], + 'destination' => ['alias' => true, 'alias_for' => 'destination_account_contains', 'needs_context' => true,], + 'to' => ['alias' => true, 'alias_for' => 'destination_account_contains', 'needs_context' => true,], + 'to_account_contains' => ['alias' => true, 'alias_for' => 'destination_account_contains', 'needs_context' => true,], + 'destination_account_ends' => ['alias' => false, 'needs_context' => true,], + 'to_account_ends' => ['alias' => true, 'alias_for' => 'destination_account_ends', 'needs_context' => true,], + 'destination_account_starts' => ['alias' => false, 'needs_context' => true,], + 'to_account_starts' => ['alias' => true, 'alias_for' => 'destination_account_starts', 'needs_context' => true,], + 'destination_account_nr_is' => ['alias' => false, 'needs_context' => true,], + 'to_account_nr_is' => ['alias' => true, 'alias_for' => 'destination_account_nr_is', 'needs_context' => true,], + 'destination_account_nr_contains' => ['alias' => false, 'needs_context' => true,], + 'to_account_nr_contains' => ['alias' => true, 'alias_for' => 'destination_account_nr_contains', 'needs_context' => true,], + 'destination_account_nr_ends' => ['alias' => false, 'needs_context' => true,], + 'to_account_nr_ends' => ['alias' => true, 'alias_for' => 'destination_account_nr_ends', 'needs_context' => true,], + 'destination_account_nr_starts' => ['alias' => false, 'needs_context' => true,], + 'to_account_nr_starts' => ['alias' => true, 'alias_for' => 'destination_account_nr_starts', 'needs_context' => true,], + 'account_is' => ['alias' => false, 'needs_context' => true,], + 'account_contains' => ['alias' => false, 'needs_context' => true,], + 'account_ends' => ['alias' => false, 'needs_context' => true,], + 'account_starts' => ['alias' => false, 'needs_context' => true,], + 'account_nr_is' => ['alias' => false, 'needs_context' => true,], + 'account_nr_contains' => ['alias' => false, 'needs_context' => true,], + 'account_nr_ends' => ['alias' => false, 'needs_context' => true,], + 'account_nr_starts' => ['alias' => false, 'needs_context' => true,], + 'category_is' => ['alias' => false, 'needs_context' => true,], + 'category_contains' => ['alias' => false, 'needs_context' => true,], + 'category' => ['alias' => true, 'alias_for' => 'category_contains', 'needs_context' => true,], + 'category_ends' => ['alias' => false, 'needs_context' => true,], + 'category_starts' => ['alias' => false, 'needs_context' => true,], + 'budget_is' => ['alias' => false, 'needs_context' => true,], + 'budget_contains' => ['alias' => false, 'needs_context' => true,], + 'budget' => ['alias' => true, 'alias_for' => 'budget_contains', 'needs_context' => true,], + 'budget_ends' => ['alias' => false, 'needs_context' => true,], + 'budget_starts' => ['alias' => false, 'needs_context' => true,], + 'bill_is' => ['alias' => false, 'needs_context' => true,], + 'bill_contains' => ['alias' => false, 'needs_context' => true,], + 'bill' => ['alias' => true, 'alias_for' => 'bill_contains', 'needs_context' => true,], + 'bill_ends' => ['alias' => false, 'needs_context' => true,], + 'bill_starts' => ['alias' => false, 'needs_context' => true,], + 'external_id_is' => ['alias' => false, 'needs_context' => true,], + 'external_id_contains' => ['alias' => false, 'needs_context' => true,], + 'external_id' => ['alias' => true, 'alias_for' => 'external_id_contains', 'needs_context' => true,], + 'external_id_ends' => ['alias' => false, 'needs_context' => true,], + 'external_id_starts' => ['alias' => false, 'needs_context' => true,], + 'internal_reference_is' => ['alias' => false, 'needs_context' => true,], + 'internal_reference_contains' => ['alias' => false, 'needs_context' => true,], + 'internal_reference' => ['alias' => true, 'alias_for' => 'internal_reference_contains', 'needs_context' => true,], + 'internal_reference_ends' => ['alias' => false, 'needs_context' => true,], + 'internal_reference_starts' => ['alias' => false, 'needs_context' => true,], + 'external_url_is' => ['alias' => false, 'needs_context' => true,], + 'external_url_contains' => ['alias' => false, 'needs_context' => true,], + 'external_url' => ['alias' => true, 'alias_for' => 'external_url_contains', 'needs_context' => true,], + 'external_url_ends' => ['alias' => false, 'needs_context' => true,], + 'external_url_starts' => ['alias' => false, 'needs_context' => true,], + 'has_attachments' => ['alias' => false, 'needs_context' => false,], + 'has_any_category' => ['alias' => false, 'needs_context' => false,], + 'has_any_budget' => ['alias' => false, 'needs_context' => false,], + 'has_any_bill' => ['alias' => false, 'needs_context' => false,], + 'has_any_tag' => ['alias' => false, 'needs_context' => false,], + 'any_notes' => ['alias' => false, 'needs_context' => false,], + 'any_external_url' => ['alias' => false, 'needs_context' => false,], + 'has_no_attachments' => ['alias' => false, 'needs_context' => false,], + 'has_no_category' => ['alias' => false, 'needs_context' => false,], + 'has_no_budget' => ['alias' => false, 'needs_context' => false,], + 'has_no_bill' => ['alias' => false, 'needs_context' => false,], + 'has_no_tag' => ['alias' => false, 'needs_context' => false,], + 'no_notes' => ['alias' => false, 'needs_context' => false,], + 'no_external_url' => ['alias' => false, 'needs_context' => false,], + 'source_is_cash' => ['alias' => false, 'needs_context' => false,], + 'destination_is_cash' => ['alias' => false, 'needs_context' => false,], + 'account_is_cash' => ['alias' => false, 'needs_context' => false,], + 'currency_is' => ['alias' => false, 'needs_context' => true,], + 'foreign_currency_is' => ['alias' => false, 'needs_context' => true,], + 'id' => ['alias' => false, 'trigger_class' => '', 'needs_context' => true,], + 'journal_id' => ['alias' => false, 'trigger_class' => '', 'needs_context' => true,], + 'recurrence_id' => ['alias' => false, 'trigger_class' => '', 'needs_context' => true,], + 'date_on' => ['alias' => false, 'needs_context' => true,], + 'date' => ['alias' => true, 'alias_for' => 'date_on', 'needs_context' => true,], + 'date_is' => ['alias' => true, 'alias_for' => 'date_on', 'needs_context' => true,], + 'on' => ['alias' => true, 'alias_for' => 'date_on', 'needs_context' => true,], + 'date_before' => ['alias' => false, 'needs_context' => true,], + 'before' => ['alias' => true, 'alias_for' => 'date_before', 'needs_context' => true,], + 'date_after' => ['alias' => false, 'needs_context' => true,], + 'after' => ['alias' => true, 'alias_for' => 'date_after', 'needs_context' => true,], + 'interest_date_on' => ['alias' => false, 'needs_context' => true,], + 'interest_date' => ['alias' => true, 'alias_for' => 'interest_date_on', 'needs_context' => true,], + 'interest_date_is' => ['alias' => true, 'alias_for' => 'interest_date_on', 'needs_context' => true,], + 'interest_date_before' => ['alias' => false, 'needs_context' => true,], + 'interest_date_after' => ['alias' => false, 'needs_context' => true,], + 'book_date_on' => ['alias' => false, 'needs_context' => true,], + 'book_date' => ['alias' => true, 'alias_for' => 'book_date_on', 'needs_context' => true,], + 'book_date_is' => ['alias' => true, 'alias_for' => 'book_date_on', 'needs_context' => true,], + 'book_date_before' => ['alias' => false, 'needs_context' => true,], + 'book_date_after' => ['alias' => false, 'needs_context' => true,], + 'process_date_on' => ['alias' => false, 'needs_context' => true,], + 'process_date' => ['alias' => true, 'alias_for' => 'process_date_on', 'needs_context' => true,], + 'process_date_is' => ['alias' => true, 'alias_for' => 'process_date_on', 'needs_context' => true,], + 'process_date_before' => ['alias' => false, 'needs_context' => true,], + 'process_date_after' => ['alias' => false, 'needs_context' => true,], + 'due_date_on' => ['alias' => false, 'needs_context' => true,], + 'due_date' => ['alias' => true, 'alias_for' => 'due_date_on', 'needs_context' => true,], + 'due_date_is' => ['alias' => true, 'alias_for' => 'due_date_on', 'needs_context' => true,], + 'due_date_before' => ['alias' => false, 'needs_context' => true,], + 'due_date_after' => ['alias' => false, 'needs_context' => true,], + 'payment_date_on' => ['alias' => false, 'needs_context' => true,], + 'payment_date' => ['alias' => true, 'alias_for' => 'payment_date_on', 'needs_context' => true,], + 'payment_date_is' => ['alias' => true, 'alias_for' => 'payment_date_on', 'needs_context' => true,], + 'payment_date_before' => ['alias' => false, 'needs_context' => true,], + 'payment_date_after' => ['alias' => false, 'needs_context' => true,], + 'invoice_date_on' => ['alias' => false, 'needs_context' => true,], + 'invoice_date' => ['alias' => true, 'alias_for' => 'invoice_date_on', 'needs_context' => true,], + 'invoice_date_is' => ['alias' => true, 'alias_for' => 'invoice_date_on', 'needs_context' => true,], + 'invoice_date_before' => ['alias' => false, 'needs_context' => true,], + 'invoice_date_after' => ['alias' => false, 'needs_context' => true,], + 'created_at_on' => ['alias' => false, 'needs_context' => true,], + 'created_at' => ['alias' => true, 'alias_for' => 'created_at_on', 'needs_context' => true,], + 'created_at_is' => ['alias' => true, 'alias_for' => 'created_at_on', 'needs_context' => true,], + 'created_at_before' => ['alias' => false, 'needs_context' => true,], + 'created_at_after' => ['alias' => false, 'needs_context' => true,], + 'updated_at_on' => ['alias' => false, 'needs_context' => true,], + 'updated_at' => ['alias' => true, 'alias_for' => 'updated_at_on', 'needs_context' => true,], + 'updated_at_is' => ['alias' => true, 'alias_for' => 'updated_at_on', 'needs_context' => true,], + 'updated_at_before' => ['alias' => false, 'needs_context' => true,], + 'updated_at_after' => ['alias' => false, 'needs_context' => true,], + 'created_on_on' => ['alias' => true, 'alias_for' => 'created_at_on', 'needs_context' => true,], + 'created_on' => ['alias' => true, 'alias_for' => 'created_at', 'needs_context' => true,], + 'created_on_before' => ['alias' => true, 'alias_for' => 'created_at_before', 'needs_context' => true,], + 'created_on_after' => ['alias' => true, 'alias_for' => 'created_at_after', 'needs_context' => true,], + 'updated_on_on' => ['alias' => true, 'alias_for' => 'updated_at_on', 'needs_context' => true,], + 'updated_on' => ['alias' => true, 'alias_for' => 'updated_at', 'needs_context' => true,], + 'updated_on_before' => ['alias' => true, 'alias_for' => 'updated_at_before', 'needs_context' => true,], + 'updated_on_after' => ['alias' => true, 'alias_for' => 'updated_at_after', 'needs_context' => true,], + 'amount_is' => ['alias' => false, 'needs_context' => true,], + 'amount' => ['alias' => true, 'alias_for' => 'amount_is', 'needs_context' => true,], + 'amount_exactly' => ['alias' => true, 'alias_for' => 'amount_is', 'needs_context' => true,], + 'amount_less' => ['alias' => false, 'needs_context' => true,], + 'amount_max' => ['alias' => true, 'alias_for' => 'amount_less', 'needs_context' => true,], + 'amount_more' => ['alias' => false, 'needs_context' => true,], + 'amount_min' => ['alias' => true, 'alias_for' => 'amount_more', 'needs_context' => true,], + 'foreign_amount_is' => ['alias' => false, 'needs_context' => true,], + 'foreign_amount' => ['alias' => true, 'alias_for' => 'foreign_amount_is', 'needs_context' => true,], + 'foreign_amount_less' => ['alias' => false, 'needs_context' => true,], + 'foreign_amount_max' => ['alias' => true, 'alias_for' => 'foreign_amount_less', 'needs_context' => true,], + 'foreign_amount_more' => ['alias' => false, 'needs_context' => true,], + 'foreign_amount_min' => ['alias' => true, 'alias_for' => 'foreign_amount_more', 'needs_context' => true,], + ], +]; \ No newline at end of file diff --git a/resources/lang/en_US/firefly.php b/resources/lang/en_US/firefly.php index 6d63959d1f..9bdf0679c1 100644 --- a/resources/lang/en_US/firefly.php +++ b/resources/lang/en_US/firefly.php @@ -443,7 +443,12 @@ return [ 'applied_rule_group_selection' => 'Rule group ":title" has been applied to your selection.', // actions and triggers + 'rule_trigger_store_journal' => 'When a transaction is created', + 'rule_trigger_update_journal' => 'When a transaction is updated', 'rule_trigger_user_action' => 'User action is ":trigger_value"', + + + // OLD values (remove non-doubles later): 'rule_trigger_source_account_starts_choice' => 'Source account name starts with..', 'rule_trigger_source_account_starts' => 'Source account name starts with ":trigger_value"', 'rule_trigger_source_account_ends_choice' => 'Source account name ends with..', @@ -452,14 +457,14 @@ return [ 'rule_trigger_source_account_is' => 'Source account name is ":trigger_value"', 'rule_trigger_source_account_contains_choice' => 'Source account name contains..', 'rule_trigger_source_account_contains' => 'Source account name contains ":trigger_value"', - 'rule_trigger_account_id_choice' => 'Account ID (source/destination) is exactly..', - 'rule_trigger_account_id' => 'Account ID (source/destination) is exactly :trigger_value', + 'rule_trigger_account_id_choice' => 'Either account ID is exactly..', + 'rule_trigger_account_id' => 'Either account ID is exactly :trigger_value', 'rule_trigger_source_account_id_choice' => 'Source account ID is exactly..', 'rule_trigger_source_account_id' => 'Source account ID is exactly :trigger_value', 'rule_trigger_destination_account_id_choice' => 'Destination account ID is exactly..', 'rule_trigger_destination_account_id' => 'Destination account ID is exactly :trigger_value', - 'rule_trigger_account_is_cash_choice' => 'Account (source/destination) is (cash) account', - 'rule_trigger_account_is_cash' => 'Account (source/destination) is (cash) account', + 'rule_trigger_account_is_cash_choice' => 'Either account is cash', + 'rule_trigger_account_is_cash' => 'Either account is cash', 'rule_trigger_source_is_cash_choice' => 'Source account is (cash) account', 'rule_trigger_source_is_cash' => 'Source account is (cash) account', 'rule_trigger_destination_is_cash_choice' => 'Destination account is (cash) account', @@ -494,8 +499,8 @@ return [ 'rule_trigger_category_is' => 'Category is ":trigger_value"', 'rule_trigger_amount_less_choice' => 'Amount is less than..', 'rule_trigger_amount_less' => 'Amount is less than :trigger_value', - 'rule_trigger_amount_exactly_choice' => 'Amount is..', - 'rule_trigger_amount_exactly' => 'Amount is :trigger_value', + 'rule_trigger_amount_is_choice' => 'Amount is..', + 'rule_trigger_amount_is' => 'Amount is :trigger_value', 'rule_trigger_amount_more_choice' => 'Amount is more than..', 'rule_trigger_amount_more' => 'Amount is more than :trigger_value', 'rule_trigger_description_starts_choice' => 'Description starts with..', @@ -506,28 +511,26 @@ return [ 'rule_trigger_description_contains' => 'Description contains ":trigger_value"', 'rule_trigger_description_is_choice' => 'Description is..', 'rule_trigger_description_is' => 'Description is ":trigger_value"', - 'rule_trigger_date_is_choice' => 'Transaction date is..', - 'rule_trigger_date_is' => 'Transaction date is ":trigger_value"', + 'rule_trigger_date_on_choice' => 'Transaction date is..', + 'rule_trigger_date_on' => 'Transaction date is ":trigger_value"', 'rule_trigger_date_before_choice' => 'Transaction date is before..', 'rule_trigger_date_before' => 'Transaction date is before ":trigger_value"', 'rule_trigger_date_after_choice' => 'Transaction date is after..', 'rule_trigger_date_after' => 'Transaction date is after ":trigger_value"', - 'rule_trigger_created_on_choice' => 'Transaction was made on..', - 'rule_trigger_created_on' => 'Transaction was made on ":trigger_value"', - 'rule_trigger_updated_on_choice' => 'Transaction was last edited on..', - 'rule_trigger_updated_on' => 'Transaction was last edited on ":trigger_value"', + 'rule_trigger_created_at_on_choice' => 'Transaction was made on..', + 'rule_trigger_created_at_on' => 'Transaction was made on ":trigger_value"', + 'rule_trigger_updated_at_on_choice' => 'Transaction was last edited on..', + 'rule_trigger_updated_at_on' => 'Transaction was last edited on ":trigger_value"', 'rule_trigger_budget_is_choice' => 'Budget is..', 'rule_trigger_budget_is' => 'Budget is ":trigger_value"', - 'rule_trigger_tag_is_choice' => '(A) tag is..', - 'rule_trigger_tag_is' => 'A tag is ":trigger_value"', + 'rule_trigger_tag_is_choice' => 'Any tag is..', + 'rule_trigger_tag_is' => 'Any tag is ":trigger_value"', 'rule_trigger_currency_is_choice' => 'Transaction currency is..', 'rule_trigger_currency_is' => 'Transaction currency is ":trigger_value"', 'rule_trigger_foreign_currency_is_choice' => 'Transaction foreign currency is..', 'rule_trigger_foreign_currency_is' => 'Transaction foreign currency is ":trigger_value"', 'rule_trigger_has_attachments_choice' => 'Has at least this many attachments', 'rule_trigger_has_attachments' => 'Has at least :trigger_value attachment(s)', - 'rule_trigger_store_journal' => 'When a transaction is created', - 'rule_trigger_update_journal' => 'When a transaction is updated', 'rule_trigger_has_no_category_choice' => 'Has no category', 'rule_trigger_has_no_category' => 'Transaction has no category', 'rule_trigger_has_any_category_choice' => 'Has a (any) category', @@ -548,20 +551,20 @@ return [ 'rule_trigger_any_notes' => 'Transaction has (any) notes', 'rule_trigger_no_notes_choice' => 'Has no notes', 'rule_trigger_no_notes' => 'Transaction has no notes', - 'rule_trigger_notes_are_choice' => 'Notes are..', - 'rule_trigger_notes_are' => 'Notes are ":trigger_value"', - 'rule_trigger_notes_contain_choice' => 'Notes contain..', - 'rule_trigger_notes_contain' => 'Notes contain ":trigger_value"', - 'rule_trigger_notes_start_choice' => 'Notes start with..', - 'rule_trigger_notes_start' => 'Notes start with ":trigger_value"', - 'rule_trigger_notes_end_choice' => 'Notes end with..', - 'rule_trigger_notes_end' => 'Notes end with ":trigger_value"', + 'rule_trigger_notes_is_choice' => 'Notes are..', + 'rule_trigger_notes_is' => 'Notes are ":trigger_value"', + 'rule_trigger_notes_contains_choice' => 'Notes contain..', + 'rule_trigger_notes_contains' => 'Notes contain ":trigger_value"', + 'rule_trigger_notes_starts_choice' => 'Notes start with..', + 'rule_trigger_notes_starts' => 'Notes start with ":trigger_value"', + 'rule_trigger_notes_ends_choice' => 'Notes end with..', + 'rule_trigger_notes_ends' => 'Notes end with ":trigger_value"', 'rule_trigger_bill_is_choice' => 'Bill is..', 'rule_trigger_bill_is' => 'Bill is ":trigger_value"', - 'rule_trigger_external_id_choice' => 'External ID is..', - 'rule_trigger_external_id' => 'External ID is ":trigger_value"', - 'rule_trigger_internal_reference_choice' => 'Internal reference is..', - 'rule_trigger_internal_reference' => 'Internal reference is ":trigger_value"', + 'rule_trigger_external_id_is_choice' => 'External ID is..', + 'rule_trigger_external_id_is' => 'External ID is ":trigger_value"', + 'rule_trigger_internal_reference_is_choice' => 'Internal reference is..', + 'rule_trigger_internal_reference_is' => 'Internal reference is ":trigger_value"', 'rule_trigger_journal_id_choice' => 'Transaction journal ID is..', 'rule_trigger_journal_id' => 'Transaction journal ID is ":trigger_value"', 'rule_trigger_no_external_url' => 'Transaction has no external URL', @@ -571,6 +574,119 @@ return [ 'rule_trigger_id_choice' => 'Transaction ID is..', 'rule_trigger_id' => 'Transaction ID is ":trigger_value"', + // new values: + 'rule_trigger_user_action_choice' => 'User action is ":trigger_value"', + 'rule_trigger_tag_is_not_choice' => 'No tag is ":trigger_value"', + 'rule_trigger_tag_is_not' => 'No tag is..', + 'rule_trigger_account_is_choice' => 'Either account is exactly..', + 'rule_trigger_account_is' => 'Either account is exactly ":trigger_value"', + 'rule_trigger_account_contains_choice' => 'Either account contains..', + 'rule_trigger_account_contains' => 'Either account contains ":trigger_value"', + 'rule_trigger_account_ends_choice' => 'Either account ends with..', + 'rule_trigger_account_ends' => 'Either account ends with ":trigger_value"', + 'rule_trigger_account_starts_choice' => 'Either account starts with..', + 'rule_trigger_account_starts' => 'Either account starts with ":trigger_value"', + 'rule_trigger_account_nr_is_choice' => 'Either account number / IBAN is..', + 'rule_trigger_account_nr_is' => 'Either account number / IBAN is ":trigger_value"', + 'rule_trigger_account_nr_contains_choice' => 'Either account number / IBAN contains..', + 'rule_trigger_account_nr_contains' => 'Either account number / IBAN contains ":trigger_value"', + 'rule_trigger_account_nr_ends_choice' => 'Either account number / IBAN ends with..', + 'rule_trigger_account_nr_ends' => 'Either account number / IBAN ends with ":trigger_value"', + 'rule_trigger_account_nr_starts_choice' => 'Either account number / IBAN starts with..', + 'rule_trigger_account_nr_starts' => 'Either account number / IBAN starts with ":trigger_value"', + 'rule_trigger_category_contains_choice' => 'Category contains..', + 'rule_trigger_category_contains' => 'Category contains ":trigger_value"', + 'rule_trigger_category_ends_choice' => 'Category ends with..', + 'rule_trigger_category_ends' => 'Category ends with ":trigger_value"', + 'rule_trigger_category_starts_choice' => 'Category starts with..', + 'rule_trigger_category_starts' => 'Category starts with ":trigger_value"', + 'rule_trigger_budget_contains_choice' => 'Budget contains..', + 'rule_trigger_budget_contains' => 'Budget contains ":trigger_value"', + 'rule_trigger_budget_ends_choice' => 'Budget ends with..', + 'rule_trigger_budget_ends' => 'Budget ends with ":trigger_value"', + 'rule_trigger_budget_starts_choice' => 'Budget starts with..', + 'rule_trigger_budget_starts' => 'Budget starts with ":trigger_value"', + 'rule_trigger_bill_contains_choice' => 'Bill contains..', + 'rule_trigger_bill_contains' => 'Bill contains ":trigger_value"', + 'rule_trigger_bill_ends_choice' => 'Bill ends with..', + 'rule_trigger_bill_ends' => 'Bill ends with ":trigger_value"', + 'rule_trigger_bill_starts_choice' => 'Bill starts with..', + 'rule_trigger_bill_starts' => 'Bill starts with ":trigger_value"', + 'rule_trigger_external_id_contains_choice' => 'External ID contains..', + 'rule_trigger_external_id_contains' => 'External ID contains ":trigger_value"', + 'rule_trigger_external_id_ends_choice' => 'External ID ends with..', + 'rule_trigger_external_id_ends' => 'External ID ends with ":trigger_value"', + 'rule_trigger_external_id_starts_choice' => 'External ID starts with..', + 'rule_trigger_external_id_starts' => 'External ID starts with ":trigger_value"', + 'rule_trigger_internal_reference_contains_choice' => 'Internal reference contains..', + 'rule_trigger_internal_reference_contains' => 'Internal reference contains ":trigger_value"', + 'rule_trigger_internal_reference_ends_choice' => 'Internal reference ends with..', + 'rule_trigger_internal_reference_ends' => 'Internal reference ends with ":trigger_value"', + 'rule_trigger_internal_reference_starts_choice' => 'Internal reference starts with..', + 'rule_trigger_internal_reference_starts' => 'Internal reference starts with ":trigger_value"', + 'rule_trigger_external_url_is_choice' => 'External URL is..', + 'rule_trigger_external_url_is' => 'External URL is ":trigger_value"', + 'rule_trigger_external_url_contains_choice' => 'External URL contains..', + 'rule_trigger_external_url_contains' => 'External URL contains ":trigger_value"', + 'rule_trigger_external_url_ends_choice' => 'External URL ends with..', + 'rule_trigger_external_url_ends' => 'External URL ends with ":trigger_value"', + 'rule_trigger_external_url_starts_choice' => 'External URL starts with..', + 'rule_trigger_external_url_starts' => 'External URL starts with ":trigger_value"', + 'rule_trigger_has_no_attachments_choice' => 'Has no attachments', + 'rule_trigger_has_no_attachments' => 'Transaction has no attachments', + 'rule_trigger_recurrence_id_choice' => 'Recurring transaction ID is..', + 'rule_trigger_recurrence_id' => 'Recurring transaction ID is ":trigger_value"', + 'rule_trigger_interest_date_on_choice' => 'Interest date is on..', + 'rule_trigger_interest_date_on' => 'Interest date is on ":trigger_value"', + 'rule_trigger_interest_date_before_choice' => 'Interest date is before..', + 'rule_trigger_interest_date_before' => 'Interest date is on ":trigger_value"', + 'rule_trigger_interest_date_after_choice' => 'Interest date is after..', + 'rule_trigger_interest_date_after' => 'Interest date is on ":trigger_value"', + 'rule_trigger_book_date_on_choice' => 'Book date is on..', + 'rule_trigger_book_date_on' => 'Book date is on ":trigger_value"', + 'rule_trigger_book_date_before_choice' => 'Book date is before..', + 'rule_trigger_book_date_before' => 'Book date is before ":trigger_value"', + 'rule_trigger_book_date_after_choice' => 'Book date is after..', + 'rule_trigger_book_date_after' => 'Book date is after ":trigger_value"', + 'rule_trigger_process_date_on_choice' => 'Process date is on..', + 'rule_trigger_process_date_on' => 'Process date is ":trigger_value"', + 'rule_trigger_process_date_before_choice' => 'Process date is before..', + 'rule_trigger_process_date_before' => 'Process date is before ":trigger_value"', + 'rule_trigger_process_date_after_choice' => 'Process date is after..', + 'rule_trigger_process_date_after' => 'Process date is after ":trigger_value"', + 'rule_trigger_due_date_on_choice' => 'Due date is on..', + 'rule_trigger_due_date_on' => 'Due date is on ":trigger_value"', + 'rule_trigger_due_date_before_choice' => 'Due date is before..', + 'rule_trigger_due_date_before' => 'Due date is before ":trigger_value"', + 'rule_trigger_due_date_after_choice' => 'Due date is after..', + 'rule_trigger_due_date_after' => 'Due date is after ":trigger_value"', + 'rule_trigger_payment_date_on_choice' => 'Payment date is on..', + 'rule_trigger_payment_date_on' => 'Payment date is on ":trigger_value"', + 'rule_trigger_payment_date_before_choice' => 'Payment date is before..', + 'rule_trigger_payment_date_before' => 'Payment date is before ":trigger_value"', + 'rule_trigger_payment_date_after_choice' => 'Payment date is after..', + 'rule_trigger_payment_date_after' => 'Payment date is after ":trigger_value"', + 'rule_trigger_invoice_date_on_choice' => 'Invoice date is on..', + 'rule_trigger_invoice_date_on' => 'Invoice date is on ":trigger_value"', + 'rule_trigger_invoice_date_before_choice' => 'Invoice date is before..', + 'rule_trigger_invoice_date_before' => 'Invoice date is before ":trigger_value"', + 'rule_trigger_invoice_date_after_choice' => 'Invoice date is after..', + 'rule_trigger_invoice_date_after' => 'Invoice date is after ":trigger_value"', + 'rule_trigger_created_at_before_choice' => 'Transaction was created before..', + 'rule_trigger_created_at_before' => 'Transaction was created before ":trigger_value"', + 'rule_trigger_created_at_after_choice' => 'Transaction was created after..', + 'rule_trigger_created_at_after' => 'Transaction was created after ":trigger_value"', + 'rule_trigger_updated_at_before_choice' => 'Transaction was last updated before..', + 'rule_trigger_updated_at_before' => 'Transaction was last updated before ":trigger_value"', + 'rule_trigger_updated_at_after_choice' => 'Transaction was last updated after..', + 'rule_trigger_updated_at_after' => 'Transaction was last updated after ":trigger_value"', + 'rule_trigger_foreign_amount_is_choice' => 'Foreign amount is exactly..', + 'rule_trigger_foreign_amount_is' => 'Foreign amount is exactly ":trigger_value"', + 'rule_trigger_foreign_amount_less_choice' => 'Foreign amount is less than..', + 'rule_trigger_foreign_amount_less' => 'Foreign amount is less than ":trigger_value"', + 'rule_trigger_foreign_amount_more_choice' => 'Foreign amount is more than..', + 'rule_trigger_foreign_amount_more' => 'Foreign amount is more than ":trigger_value"', + // actions 'rule_action_delete_transaction_choice' => 'DELETE transaction (!)',