Expand search and add operators.

This commit is contained in:
James Cole
2022-09-28 07:35:57 +02:00
parent 6eaed9829b
commit 9b7285ea84
7 changed files with 865 additions and 118 deletions

View File

@@ -327,14 +327,17 @@ return [
'search_modifier_reconciled' => 'Transaction is reconciled',
'search_modifier_not_reconciled' => 'Transaction is not reconciled',
'search_modifier_id' => 'Transaction ID is ":value"',
'search_modifier_not_id' => 'Transaction ID is not ":value"',
'search_modifier_date_before' => 'Transaction date is before or on ":value"',
'search_modifier_date_after' => 'Transaction date is after or on ":value"',
'search_modifier_external_id_is' => 'External ID is ":value"',
'search_modifier_not_external_id_is' => 'External ID is not ":value"',
'search_modifier_no_external_url' => 'The transaction has no external URL',
'search_modifier_not_any_external_url' => 'The transaction has no external URL',
'search_modifier_any_external_url' => 'The transaction must have a (any) external URL',
'search_modifier_not_no_external_url' => 'The transaction must have a (any) external URL',
'search_modifier_internal_reference_is' => 'Internal reference is ":value"',
'search_modifier_not_internal_reference_is' => 'Internal reference is not ":value"',
'search_modifier_description_starts' => 'Description starts with ":value"',
'search_modifier_not_description_starts' => 'Description does not start with ":value"',
'search_modifier_description_ends' => 'Description ends on ":value"',
@@ -395,6 +398,7 @@ return [
'search_modifier_source_account_nr_is' => 'Source account number (IBAN) is ":value"',
'search_modifier_not_source_account_nr_is' => 'Source account number (IBAN) is not ":value"',
'search_modifier_source_account_nr_contains' => 'Source account number (IBAN) contains ":value"',
'search_modifier_not_source_account_nr_contains' => 'Source account number (IBAN) does not contain ":value"',
'search_modifier_source_account_nr_starts' => 'Source account number (IBAN) starts with ":value"',
'search_modifier_not_source_account_nr_starts' => 'Source account number (IBAN) does not start with ":value"',
'search_modifier_source_account_nr_ends' => 'Source account number (IBAN) ends on ":value"',
@@ -414,6 +418,7 @@ return [
'search_modifier_source_is_cash' => 'Source account is the "(cash)" account',
'search_modifier_not_source_is_cash' => 'Source account is not the "(cash)" account',
'search_modifier_destination_account_nr_is' => 'Destination account number (IBAN) is ":value"',
'search_modifier_not_destination_account_nr_is' => 'Destination account number (IBAN) is ":value"',
'search_modifier_destination_account_nr_contains' => 'Destination account number (IBAN) contains ":value"',
'search_modifier_not_destination_account_nr_contains' => 'Destination account number (IBAN) does not contain ":value"',
'search_modifier_destination_account_nr_starts' => 'Destination account number (IBAN) starts with ":value"',
@@ -429,6 +434,7 @@ return [
'search_modifier_bill_is' => 'Bill is ":value"',
'search_modifier_not_bill_is' => 'Bill is not ":value"',
'search_modifier_transaction_type' => 'Transaction type is ":value"',
'search_modifier_not_transaction_type' => 'Transaction type is not ":value"',
'search_modifier_tag_is' => 'Tag is ":value"',
'search_modifier_not_tag_is' => 'No tag is ":value"',
'search_modifier_date_on_year' => 'Transaction is in year ":value"',
@@ -469,6 +475,7 @@ return [
'search_modifier_category_ends' => 'Category ends on ":value"',
'search_modifier_not_category_ends' => 'Category does not end on ":value"',
'search_modifier_category_starts' => 'Category starts with ":value"',
'search_modifier_not_category_starts' => 'Category does not start with ":value"',
'search_modifier_budget_contains' => 'Budget contains ":value"',
'search_modifier_not_budget_contains' => 'Budget does not contain ":value"',
'search_modifier_budget_ends' => 'Budget ends with ":value"',
@@ -482,15 +489,25 @@ return [
'search_modifier_bill_starts' => 'Bill starts with ":value"',
'search_modifier_not_bill_starts' => 'Bill does not start with ":value"',
'search_modifier_external_id_contains' => 'External ID contains ":value"',
'search_modifier_not_external_id_contains' => 'External ID does not contain ":value"',
'search_modifier_external_id_ends' => 'External ID ends with ":value"',
'search_modifier_not_external_id_ends' => 'External ID does not end with ":value"',
'search_modifier_external_id_starts' => 'External ID starts with ":value"',
'search_modifier_not_external_id_starts' => 'External ID does not start with ":value"',
'search_modifier_internal_reference_contains' => 'Internal reference contains ":value"',
'search_modifier_not_internal_reference_contains' => 'Internal reference does not contain ":value"',
'search_modifier_internal_reference_ends' => 'Internal reference ends with ":value"',
'search_modifier_internal_reference_starts' => 'Internal reference starts with ":value"',
'search_modifier_not_internal_reference_ends' => 'Internal reference does not end with ":value"',
'search_modifier_not_internal_reference_starts' => 'Internal reference does not start with ":value"',
'search_modifier_external_url_is' => 'External URL is ":value"',
'search_modifier_not_external_url_is' => 'External URL is not ":value"',
'search_modifier_external_url_contains' => 'External URL contains ":value"',
'search_modifier_not_external_url_contains' => 'External URL does not ":value"',
'search_modifier_external_url_ends' => 'External URL ends with ":value"',
'search_modifier_not_external_url_ends' => 'External URL does not end with ":value"',
'search_modifier_external_url_starts' => 'External URL starts with ":value"',
'search_modifier_not_external_url_starts' => 'External URL does not start with ":value"',
'search_modifier_has_no_attachments' => 'Transaction has no attachments',
'search_modifier_not_has_no_attachments' => 'Transaction has attachments',
'search_modifier_not_has_attachments' => 'Transaction has no attachments',
@@ -499,12 +516,15 @@ return [
'search_modifier_journal_id' => 'The journal ID is ":value"',
'search_modifier_not_journal_id' => 'The journal ID is not ":value"',
'search_modifier_recurrence_id' => 'The recurring transaction ID is ":value"',
'search_modifier_not_recurrence_id' => 'The recurring transaction ID is not ":value"',
'search_modifier_foreign_amount_is' => 'The foreign amount is ":value"',
'search_modifier_not_foreign_amount_is' => 'The foreign amount is not ":value"',
'search_modifier_foreign_amount_less' => 'The foreign amount is less than ":value"',
'search_modifier_not_foreign_amount_more' => 'The foreign amount is less than ":value"',
'search_modifier_not_foreign_amount_less' => 'The foreign amount is more than ":value"',
'search_modifier_foreign_amount_more' => 'The foreign amount is more than ":value"',
'search_modifier_exists' => 'Transaction exists (any transaction)',
'search_modifier_not_exists' => 'Transaction does not exist (no transaction)',
// date fields
'search_modifier_interest_date_on' => 'Transaction interest date is ":value"',
@@ -644,7 +664,15 @@ return [
'search_modifier_attachment_notes_are' => 'Any attachment\'s notes are ":value"',
'search_modifier_attachment_notes_contains' => 'Any attachment\'s notes contain ":value"',
'search_modifier_attachment_notes_starts' => 'Any attachment\'s notes start with ":value"',
'search_modifier_attachment_notes_ends' => 'Any attachment\'s notes end is ":value"',
'search_modifier_attachment_notes_ends' => 'Any attachment\'s notes end with ":value"',
'search_modifier_not_attachment_name_is' => 'Any attachment\'s name is not ":value"',
'search_modifier_not_attachment_name_contains' => 'Any attachment\'s name does not contain ":value"',
'search_modifier_not_attachment_name_starts' => 'Any attachment\'s name does not start with ":value"',
'search_modifier_not_attachment_name_ends' => 'Any attachment\'s name does not end with ":value"',
'search_modifier_not_attachment_notes_are' => 'Any attachment\'s notes are not ":value"',
'search_modifier_not_attachment_notes_contains' => 'Any attachment\'s notes do not contain ":value"',
'search_modifier_not_attachment_notes_starts' => 'Any attachment\'s notes start with ":value"',
'search_modifier_not_attachment_notes_ends' => 'Any attachment\'s notes do not end with ":value"',
'update_rule_from_query' => 'Update rule ":rule" from search query',
'create_rule_from_query' => 'Create new rule from search query',
'rule_from_search_words' => 'The rule engine has a hard time handling ":string". The suggested rule that fits your search query may give different results. Please verify the rule triggers carefully.',
@@ -1001,6 +1029,136 @@ return [
'rule_trigger_exists_choice' => 'Any transaction matches(!)',
'rule_trigger_exists' => 'Any transaction matches',
// more values for new types:
'rule_trigger_not_account_id' => 'Account ID is not ":trigger_value"',
'rule_trigger_not_source_account_id' => 'Source account ID is not ":trigger_value"',
'rule_trigger_not_destination_account_id' => 'Destination account ID is not ":trigger_value"',
'rule_trigger_not_transaction_type' => 'Transaction type is not ":trigger_value"',
'rule_trigger_not_tag_is' => 'Tag is not ":trigger_value"',
'rule_trigger_not_tag_is_not' => 'Tag is ":trigger_value"',
'rule_trigger_not_description_is' => 'Description is not ":trigger_value"',
'rule_trigger_not_description_contains' => 'Description does not contain',
'rule_trigger_not_description_ends' => 'Description does not end with ":trigger_value"',
'rule_trigger_not_description_starts' => 'Description does not start with ":trigger_value"',
'rule_trigger_not_notes_is' => 'Notes are not ":trigger_value"',
'rule_trigger_not_notes_contains' => 'Notes do not contain ":trigger_value"',
'rule_trigger_not_notes_ends' => 'Notes do not end on ":trigger_value"',
'rule_trigger_not_notes_starts' => 'Notes do not start with ":trigger_value"',
'rule_trigger_not_source_account_is' => 'Source account is not ":trigger_value"',
'rule_trigger_not_source_account_contains' => 'Source account does not contain ":trigger_value"',
'rule_trigger_not_source_account_ends' => 'Source account does not end on ":trigger_value"',
'rule_trigger_not_source_account_starts' => 'Source account does not start with ":trigger_value"',
'rule_trigger_not_source_account_nr_is' => 'Source account number / IBAN is not ":trigger_value"',
'rule_trigger_not_source_account_nr_contains' => 'Source account number / IBAN does not contain ":trigger_value"',
'rule_trigger_not_source_account_nr_ends' => 'Source account number / IBAN does not end on ":trigger_value"',
'rule_trigger_not_source_account_nr_starts' => 'Source account number / IBAN does not start with ":trigger_value"',
'rule_trigger_not_destination_account_is' => 'Destination account is not ":trigger_value"',
'rule_trigger_not_destination_account_contains' => 'Destination account does not contain ":trigger_value"',
'rule_trigger_not_destination_account_ends' => 'Destination account does not end on ":trigger_value"',
'rule_trigger_not_destination_account_starts' => 'Destination account does not start with ":trigger_value"',
'rule_trigger_not_destination_account_nr_is' => 'Destination account number / IBAN is not ":trigger_value"',
'rule_trigger_not_destination_account_nr_contains' => 'Destination account number / IBAN does not contain ":trigger_value"',
'rule_trigger_not_destination_account_nr_ends' => 'Destination account number / IBAN does not end on ":trigger_value"',
'rule_trigger_not_destination_account_nr_starts' => 'Destination account number / IBAN does not start with ":trigger_value"',
'rule_trigger_not_account_is' => 'Neither account is ":trigger_value"',
'rule_trigger_not_account_contains' => 'Neither account contains ":trigger_value"',
'rule_trigger_not_account_ends' => 'Neither account ends on ":trigger_value"',
'rule_trigger_not_account_starts' => 'Neither account starts with ":trigger_value"',
'rule_trigger_not_account_nr_is' => 'Neither account number / IBAN is ":trigger_value"',
'rule_trigger_not_account_nr_contains' => 'Neither account number / IBAN contains ":trigger_value"',
'rule_trigger_not_account_nr_ends' => 'Neither account number / IBAN ends on ":trigger_value"',
'rule_trigger_not_account_nr_starts' => 'Neither account number / IBAN starts with ":trigger_value"',
'rule_trigger_not_category_is' => 'Neither category is ":trigger_value"',
'rule_trigger_not_category_contains' => 'Neither category contains ":trigger_value"',
'rule_trigger_not_category_ends' => 'Neither category ends on ":trigger_value"',
'rule_trigger_not_category_starts' => 'Neither category starts with ":trigger_value"',
'rule_trigger_not_budget_is' => 'Neither budget is ":trigger_value"',
'rule_trigger_not_budget_contains' => 'Neither budget contains ":trigger_value"',
'rule_trigger_not_budget_ends' => 'Neither budget ends on ":trigger_value"',
'rule_trigger_not_budget_starts' => 'Neither budget starts with ":trigger_value"',
'rule_trigger_not_bill_is' => 'Neither bill is ":trigger_value"',
'rule_trigger_not_bill_contains' => 'Neither bill contains ":trigger_value"',
'rule_trigger_not_bill_ends' => 'Neither bill ends on ":trigger_value"',
'rule_trigger_not_bill_starts' => 'Neither bill starts with ":trigger_value"',
'rule_trigger_not_external_id_is' => 'External ID is not ":trigger_value"',
'rule_trigger_not_external_id_contains' => 'External ID does not contain ":trigger_value"',
'rule_trigger_not_external_id_ends' => 'External ID does not end on ":trigger_value"',
'rule_trigger_not_external_id_starts' => 'External ID does not start with ":trigger_value"',
'rule_trigger_not_internal_reference_is' => 'Internal reference is not ":trigger_value"',
'rule_trigger_not_internal_reference_contains' => 'Internal reference does not contain ":trigger_value"',
'rule_trigger_not_internal_reference_ends' => 'Internal reference does not end on ":trigger_value"',
'rule_trigger_not_internal_reference_starts' => 'Internal reference does not start with ":trigger_value"',
'rule_trigger_not_external_url_is' => 'External URL is not ":trigger_value"',
'rule_trigger_not_external_url_contains' => 'External URL does not contain ":trigger_value"',
'rule_trigger_not_external_url_ends' => 'External URL does not end on ":trigger_value"',
'rule_trigger_not_external_url_starts' => 'External URL does not start with ":trigger_value"',
'rule_trigger_not_currency_is' => 'Currency is not ":trigger_value"',
'rule_trigger_not_foreign_currency_is' => 'Foreign currency is not ":trigger_value"',
'rule_trigger_not_id' => 'Transaction ID is not ":trigger_value"',
'rule_trigger_not_journal_id' => 'Transaction journal ID is not ":trigger_value"',
'rule_trigger_not_recurrence_id' => 'Recurrence ID is not ":trigger_value"',
'rule_trigger_not_date_on' => 'Date is not on ":trigger_value"',
'rule_trigger_not_date_before' => 'Date is not before ":trigger_value"',
'rule_trigger_not_date_after' => 'Date is not after ":trigger_value"',
'rule_trigger_not_interest_date_on' => 'Interest date is not on ":trigger_value"',
'rule_trigger_not_interest_date_before' => 'Interest date is not before ":trigger_value"',
'rule_trigger_not_interest_date_after' => 'Interest date is not after ":trigger_value"',
'rule_trigger_not_book_date_on' => 'Book date is not on ":trigger_value"',
'rule_trigger_not_book_date_before' => 'Book date is not before ":trigger_value"',
'rule_trigger_not_book_date_after' => 'Book date is not after ":trigger_value"',
'rule_trigger_not_process_date_on' => 'Process date is not on ":trigger_value"',
'rule_trigger_not_process_date_before' => 'Process date is not before ":trigger_value"',
'rule_trigger_not_process_date_after' => 'Process date is not after ":trigger_value"',
'rule_trigger_not_due_date_on' => 'Due date is not on ":trigger_value"',
'rule_trigger_not_due_date_before' => 'Due date is not before ":trigger_value"',
'rule_trigger_not_due_date_after' => 'Due date is not after ":trigger_value"',
'rule_trigger_not_payment_date_on' => 'Payment date is not on ":trigger_value"',
'rule_trigger_not_payment_date_before' => 'Payment date is not before ":trigger_value"',
'rule_trigger_not_payment_date_after' => 'Payment date is not after ":trigger_value"',
'rule_trigger_not_invoice_date_on' => 'Invoice date is not on ":trigger_value"',
'rule_trigger_not_invoice_date_before' => 'Invoice date is not before ":trigger_value"',
'rule_trigger_not_invoice_date_after' => 'Invoice date is not after ":trigger_value"',
'rule_trigger_not_created_at_on' => 'Transaction is not created on ":trigger_value"',
'rule_trigger_not_created_at_before' => 'Transaction is not created before ":trigger_value"',
'rule_trigger_not_created_at_after' => 'Transaction is not created after ":trigger_value"',
'rule_trigger_not_updated_at_on' => 'Transaction is not updated on ":trigger_value"',
'rule_trigger_not_updated_at_before' => 'Transaction is not updated before ":trigger_value"',
'rule_trigger_not_updated_at_after' => 'Transaction is not updated after ":trigger_value"',
'rule_trigger_not_amount_is' => 'Transaction amount is not ":trigger_value"',
'rule_trigger_not_amount_less' => 'Transaction amount is more than ":trigger_value"',
'rule_trigger_not_amount_more' => 'Transaction amount is less than ":trigger_value"',
'rule_trigger_not_foreign_amount_is' => 'Foreign transaction amount is not ":trigger_value"',
'rule_trigger_not_foreign_amount_less' => 'Foreign transaction amount is more than ":trigger_value"',
'rule_trigger_not_foreign_amount_more' => 'Foreign transaction amount is less than ":trigger_value"',
'rule_trigger_not_attachment_name_is' => 'No attachment is named ":trigger_value"',
'rule_trigger_not_attachment_name_contains' => 'No attachment name contains ":trigger_value"',
'rule_trigger_not_attachment_name_starts' => 'No attachment name starts with ":trigger_value"',
'rule_trigger_not_attachment_name_ends' => 'No attachment name ends on ":trigger_value"',
'rule_trigger_not_attachment_notes_are' => 'No attachment notes are ":trigger_value"',
'rule_trigger_not_attachment_notes_contains' => 'No attachment notes contain ":trigger_value"',
'rule_trigger_not_attachment_notes_starts' => 'No attachment notes start with ":trigger_value"',
'rule_trigger_not_attachment_notes_ends' => 'No attachment notes end on ":trigger_value"',
'rule_trigger_not_reconciled' => 'Transaction is not reconciled',
'rule_trigger_not_exists' => 'Transaction does not exist',
'rule_trigger_not_has_attachments' => 'Transaction has no attachments',
'rule_trigger_not_has_any_category' => 'Transaction has no category',
'rule_trigger_not_has_any_budget' => 'Transaction has no category',
'rule_trigger_not_has_any_bill' => 'Transaction has no bill',
'rule_trigger_not_has_any_tag' => 'Transaction has no tags',
'rule_trigger_not_any_notes' => 'Transaction has no notes',
'rule_trigger_not_any_external_url' => 'Transaction has no external URL',
'rule_trigger_not_has_no_attachments' => 'Transaction has a (any) attachment(s)',
'rule_trigger_not_has_no_category' => 'Transaction has a (any) category',
'rule_trigger_not_has_no_budget' => 'Transaction has a (any) budget',
'rule_trigger_not_has_no_bill' => 'Transaction has a (any) bill',
'rule_trigger_not_has_no_tag' => 'Transaction has a (any) tag',
'rule_trigger_not_no_notes' => 'Transaction has any notes',
'rule_trigger_not_no_external_url' => 'Transaction has an external URL',
'rule_trigger_not_source_is_cash' => 'Source account is a not a cash account',
'rule_trigger_not_destination_is_cash' => 'Destination account is a not a cash account',
'rule_trigger_not_account_is_cash' => 'Neither account is a cash account',
// actions
'rule_action_delete_transaction_choice' => 'DELETE transaction(!)',
'rule_action_delete_transaction' => 'DELETE transaction(!)',