mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-18 10:39:28 +00:00
Rule engine and search engine now use the same operators; making them interchangeable.
This commit is contained in:
@@ -25,6 +25,7 @@ namespace FireflyIII\Api\V1\Requests;
|
||||
|
||||
use FireflyIII\Rules\IsBoolean;
|
||||
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||
use FireflyIII\Support\Request\GetRuleConfiguration;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Validation\Validator;
|
||||
use function is_array;
|
||||
@@ -35,7 +36,8 @@ use function is_array;
|
||||
*/
|
||||
class RuleStoreRequest extends FormRequest
|
||||
{
|
||||
use ConvertsDataTypes;
|
||||
use ConvertsDataTypes, GetRuleConfiguration;
|
||||
|
||||
/**
|
||||
* Authorize logged in users.
|
||||
*
|
||||
@@ -88,11 +90,11 @@ class RuleStoreRequest extends FormRequest
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
$validTriggers = array_keys(config('firefly.rule-triggers'));
|
||||
$validTriggers = $this->getTriggers();
|
||||
$validActions = array_keys(config('firefly.rule-actions'));
|
||||
|
||||
// some triggers and actions require text:
|
||||
$contextTriggers = implode(',', config('firefly.context-rule-triggers'));
|
||||
$contextTriggers = implode(',', $this->getTriggersWithContext());
|
||||
$contextActions = implode(',', config('firefly.context-rule-actions'));
|
||||
|
||||
return [
|
||||
|
@@ -25,6 +25,7 @@ namespace FireflyIII\Api\V1\Requests;
|
||||
|
||||
use FireflyIII\Rules\IsBoolean;
|
||||
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||
use FireflyIII\Support\Request\GetRuleConfiguration;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Validation\Validator;
|
||||
use function is_array;
|
||||
@@ -35,7 +36,7 @@ use function is_array;
|
||||
*/
|
||||
class RuleUpdateRequest extends FormRequest
|
||||
{
|
||||
use ConvertsDataTypes;
|
||||
use ConvertsDataTypes, GetRuleConfiguration;
|
||||
/**
|
||||
* Authorize logged in users.
|
||||
*
|
||||
@@ -88,12 +89,12 @@ class RuleUpdateRequest extends FormRequest
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
$validTriggers = array_keys(config('firefly.rule-triggers'));
|
||||
$validTriggers = $this->getTriggers();
|
||||
$validActions = array_keys(config('firefly.rule-actions'));
|
||||
$rule = $this->route()->parameter('rule');
|
||||
|
||||
// some triggers and actions require text:
|
||||
$contextTriggers = implode(',', config('firefly.context-rule-triggers'));
|
||||
$contextTriggers = implode(',', $this->getTriggersWithContext());
|
||||
$contextActions = implode(',', config('firefly.context-rule-actions'));
|
||||
|
||||
return [
|
||||
|
@@ -73,7 +73,7 @@ class RuleController extends Controller
|
||||
public function trigger(Request $request): JsonResponse
|
||||
{
|
||||
$count = (int) $request->get('count') > 0 ? (int) $request->get('count') : 1;
|
||||
$keys = array_keys(config('firefly.rule-triggers'));
|
||||
$keys = array_keys(config('firefly.search.operators'));
|
||||
$triggers = [];
|
||||
foreach ($keys as $key) {
|
||||
if ('user_action' !== $key) {
|
||||
|
@@ -24,6 +24,7 @@ namespace FireflyIII\Http\Requests;
|
||||
|
||||
use FireflyIII\Models\Rule;
|
||||
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||
use FireflyIII\Support\Request\GetRuleConfiguration;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
/**
|
||||
@@ -31,7 +32,7 @@ use Illuminate\Foundation\Http\FormRequest;
|
||||
*/
|
||||
class RuleFormRequest extends FormRequest
|
||||
{
|
||||
use ConvertsDataTypes;
|
||||
use ConvertsDataTypes, GetRuleConfiguration;
|
||||
/**
|
||||
* Verify the request.
|
||||
*
|
||||
@@ -73,14 +74,14 @@ class RuleFormRequest extends FormRequest
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
$validTriggers = array_keys(config('firefly.rule-triggers'));
|
||||
$validTriggers = $this->getTriggers();
|
||||
$validActions = array_keys(config('firefly.rule-actions'));
|
||||
|
||||
// some actions require text (aka context):
|
||||
$contextActions = implode(',', config('firefly.context-rule-actions'));
|
||||
|
||||
// some triggers require text (aka context):
|
||||
$contextTriggers = implode(',', config('firefly.context-rule-triggers'));
|
||||
$contextTriggers = implode(',', $this->getTriggersWithContext());
|
||||
|
||||
// initial set of rules:
|
||||
$rules = [
|
||||
|
@@ -22,6 +22,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Http\Requests;
|
||||
|
||||
use FireflyIII\Support\Request\GetRuleConfiguration;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
/**
|
||||
@@ -31,6 +32,7 @@ use Illuminate\Foundation\Http\FormRequest;
|
||||
*/
|
||||
class TestRuleFormRequest extends FormRequest
|
||||
{
|
||||
use GetRuleConfiguration;
|
||||
/**
|
||||
* Verify the request.
|
||||
*
|
||||
@@ -51,7 +53,7 @@ class TestRuleFormRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
// fixed
|
||||
$validTriggers = array_keys(config('firefly.rule-triggers'));
|
||||
$validTriggers = $this->getTriggers();
|
||||
$rules = [
|
||||
'rule-trigger.*' => 'required|min:1|in:' . implode(',', $validTriggers),
|
||||
'rule-trigger-value.*' => 'required|min:1|ruleTriggerValue',
|
||||
|
@@ -49,6 +49,6 @@ class Domain
|
||||
*/
|
||||
public static function getRuleTriggers(): array
|
||||
{
|
||||
return config('firefly.rule-triggers');
|
||||
return array_keys(config('firefly.search.operators'));
|
||||
}
|
||||
}
|
||||
|
52
app/Support/Request/GetRuleConfiguration.php
Normal file
52
app/Support/Request/GetRuleConfiguration.php
Normal file
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
/*
|
||||
* GetRuleConfiguration.php
|
||||
* Copyright (c) 2020 james@firefly-iii.org
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
namespace FireflyIII\Support\Request;
|
||||
|
||||
/**
|
||||
* Trait GetRuleConfiguration
|
||||
*/
|
||||
trait GetRuleConfiguration
|
||||
{
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function getTriggers(): array
|
||||
{
|
||||
return array_keys(config('firefly.search.operators'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function getTriggersWithContext(): array
|
||||
{
|
||||
$list = config('firefly.search.operators');
|
||||
$return = [];
|
||||
foreach ($list as $key => $info) {
|
||||
if (true === $info['needs_context']) {
|
||||
$return[] = $key;
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
}
|
@@ -77,7 +77,7 @@ class Rule extends AbstractExtension
|
||||
return new TwigFunction(
|
||||
'allRuleTriggers',
|
||||
static function () {
|
||||
$ruleTriggers = array_keys(Config::get('firefly.rule-triggers'));
|
||||
$ruleTriggers = array_keys(config('firefly.search.operators'));;
|
||||
$possibleTriggers = [];
|
||||
foreach ($ruleTriggers as $key) {
|
||||
if ('user_action' !== $key) {
|
||||
|
@@ -37,7 +37,7 @@ use Log;
|
||||
class TriggerFactory
|
||||
{
|
||||
/** @var array array with trigger types */
|
||||
protected static $triggerTypes = [];
|
||||
protected static array $triggerTypes = [];
|
||||
|
||||
/**
|
||||
* Returns the trigger for the given type and journal. This method returns the actual implementation
|
||||
|
@@ -351,7 +351,7 @@ class FireflyValidator extends Validator
|
||||
}
|
||||
|
||||
// and finally a "will match everything check":
|
||||
$classes = app('config')->get('firefly.rule-triggers');
|
||||
$classes = array_keys(config('firefly.search.operators'));;
|
||||
/** @var TriggerInterface $class */
|
||||
$class = $classes[$triggerType] ?? false;
|
||||
if (false === $class) {
|
||||
|
@@ -445,59 +445,6 @@ return [
|
||||
'configName' => ConfigurationName::class,
|
||||
|
||||
],
|
||||
'rule-triggers' => [
|
||||
'user_action' => UserAction::class,
|
||||
'from_account_starts' => FromAccountStarts::class,
|
||||
'from_account_ends' => FromAccountEnds::class,
|
||||
'from_account_is' => FromAccountIs::class,
|
||||
'from_account_contains' => FromAccountContains::class,
|
||||
'from_account_nr_starts' => FromAccountNumberStarts::class,
|
||||
'from_account_nr_ends' => FromAccountNumberEnds::class,
|
||||
'from_account_nr_is' => FromAccountNumberIs::class,
|
||||
'from_account_nr_contains' => FromAccountNumberContains::class,
|
||||
'to_account_starts' => ToAccountStarts::class,
|
||||
'to_account_ends' => ToAccountEnds::class,
|
||||
'to_account_is' => ToAccountIs::class,
|
||||
'to_account_contains' => ToAccountContains::class,
|
||||
'to_account_nr_starts' => ToAccountNumberStarts::class,
|
||||
'to_account_nr_ends' => ToAccountNumberEnds::class,
|
||||
'to_account_nr_is' => ToAccountNumberIs::class,
|
||||
'to_account_nr_contains' => ToAccountNumberContains::class,
|
||||
'amount_less' => AmountLess::class,
|
||||
'amount_exactly' => AmountExactly::class,
|
||||
'amount_more' => AmountMore::class,
|
||||
'description_starts' => DescriptionStarts::class,
|
||||
'description_ends' => DescriptionEnds::class,
|
||||
'description_contains' => DescriptionContains::class,
|
||||
'description_is' => DescriptionIs::class,
|
||||
'date_is' => DateIs::class,
|
||||
'date_before' => DateBefore::class,
|
||||
'date_after' => DateAfter::class,
|
||||
'transaction_type' => TransactionType::class,
|
||||
'category_is' => CategoryIs::class,
|
||||
'budget_is' => BudgetIs::class,
|
||||
'tag_is' => TagIs::class,
|
||||
'currency_is' => CurrencyIs::class,
|
||||
'foreign_currency_is' => ForeignCurrencyIs::class,
|
||||
'has_attachments' => HasAttachment::class,
|
||||
'has_no_category' => HasNoCategory::class,
|
||||
'has_any_category' => HasAnyCategory::class,
|
||||
'has_no_budget' => HasNoBudget::class,
|
||||
'has_any_budget' => HasAnyBudget::class,
|
||||
'has_no_tag' => HasNoTag::class,
|
||||
'has_any_tag' => HasAnyTag::class,
|
||||
'notes_contain' => NotesContain::class,
|
||||
'notes_start' => NotesStart::class,
|
||||
'notes_end' => NotesEnd::class,
|
||||
'notes_are' => NotesAre::class,
|
||||
'no_notes' => NotesEmpty::class,
|
||||
'any_notes' => NotesAny::class,
|
||||
'bill_is' => BillIs::class, // TODO
|
||||
'created_on' => CreatedOn::class, // TODO
|
||||
'updated_on' => UpdatedOn::class,// TODO
|
||||
'external_id' => ExternalId::class,// TODO
|
||||
'internal_reference' => InternalReference::class, // TODO
|
||||
],
|
||||
'rule-actions' => [
|
||||
'set_category' => SetCategory::class,
|
||||
'clear_category' => ClearCategory::class,
|
||||
@@ -540,35 +487,6 @@ return [
|
||||
//'convert_deposit',
|
||||
'convert_transfer',
|
||||
],
|
||||
'context-rule-triggers' => [
|
||||
'from_account_starts',
|
||||
'from_account_ends',
|
||||
'from_account_is',
|
||||
'from_account_contains',
|
||||
'to_account_starts',
|
||||
'to_account_ends',
|
||||
'to_account_is',
|
||||
'to_account_contains',
|
||||
'amount_less',
|
||||
'amount_exactly',
|
||||
'amount_more',
|
||||
'description_starts',
|
||||
'description_ends',
|
||||
'description_contains',
|
||||
'description_is',
|
||||
'transaction_type',
|
||||
'category_is',
|
||||
'budget_is',
|
||||
'tag_is',
|
||||
'currency_is',
|
||||
'notes_contain',
|
||||
'notes_start',
|
||||
'notes_end',
|
||||
'notes_are',
|
||||
'date_is',
|
||||
'date_before',
|
||||
'date_after',
|
||||
],
|
||||
|
||||
'test-triggers' => [
|
||||
'limit' => 10,
|
||||
@@ -580,95 +498,95 @@ return [
|
||||
|
||||
'search' => [
|
||||
'operators' => [
|
||||
'user_action' => ['alias' => false, 'trigger_class' => UserAction::class],
|
||||
'from_account_starts' => ['alias' => false, 'trigger_class' => FromAccountStarts::class],
|
||||
'from_account_ends' => ['alias' => false, 'trigger_class' => FromAccountEnds::class],
|
||||
'from_account_contains' => ['alias' => false, 'trigger_class' => FromAccountContains::class],
|
||||
'from_account_nr_starts' => ['alias' => false, 'trigger_class' => FromAccountNumberStarts::class],
|
||||
'from_account_nr_ends' => ['alias' => false, 'trigger_class' => FromAccountNumberEnds::class],
|
||||
'from_account_nr_is' => ['alias' => false, 'trigger_class' => FromAccountNumberIs::class],
|
||||
'from_account_nr_contains' => ['alias' => false, 'trigger_class' => FromAccountNumberContains::class],
|
||||
'to_account_starts' => ['alias' => false, 'trigger_class' => ToAccountStarts::class],
|
||||
'to_account_ends' => ['alias' => false, 'trigger_class' => ToAccountEnds::class],
|
||||
'to_account_contains' => ['alias' => false, 'trigger_class' => ToAccountContains::class],
|
||||
'to_account_nr_starts' => ['alias' => false, 'trigger_class' => ToAccountNumberStarts::class],
|
||||
'to_account_nr_ends' => ['alias' => false, 'trigger_class' => ToAccountNumberEnds::class],
|
||||
'to_account_nr_is' => ['alias' => false, 'trigger_class' => ToAccountNumberIs::class],
|
||||
'to_account_nr_contains' => ['alias' => false, 'trigger_class' => ToAccountNumberContains::class],
|
||||
'description_starts' => ['alias' => false, 'trigger_class' => DescriptionStarts::class],
|
||||
'description_ends' => ['alias' => false, 'trigger_class' => DescriptionEnds::class],
|
||||
'description_contains' => ['alias' => false, 'trigger_class' => DescriptionContains::class],
|
||||
'description_is' => ['alias' => false, 'trigger_class' => DescriptionIs::class],
|
||||
'currency_is' => ['alias' => false, 'trigger_class' => CurrencyIs::class],
|
||||
'foreign_currency_is' => ['alias' => false, 'trigger_class' => ForeignCurrencyIs::class],
|
||||
'has_attachments' => ['alias' => false, 'trigger_class' => HasAttachment::class],
|
||||
'has_no_category' => ['alias' => false, 'trigger_class' => HasNoCategory::class],
|
||||
'has_any_category' => ['alias' => false, 'trigger_class' => HasAnyCategory::class],
|
||||
'has_no_budget' => ['alias' => false, 'trigger_class' => HasNoBudget::class],
|
||||
'has_any_budget' => ['alias' => false, 'trigger_class' => HasAnyBudget::class],
|
||||
'has_no_tag' => ['alias' => false, 'trigger_class' => HasNoTag::class],
|
||||
'has_any_tag' => ['alias' => false, 'trigger_class' => HasAnyTag::class],
|
||||
'notes_contain' => ['alias' => false, 'trigger_class' => NotesContain::class],
|
||||
'notes_start' => ['alias' => false, 'trigger_class' => NotesStart::class],
|
||||
'notes_end' => ['alias' => false, 'trigger_class' => NotesEnd::class],
|
||||
'notes_are' => ['alias' => false, 'trigger_class' => NotesAre::class],
|
||||
'no_notes' => ['alias' => false, 'trigger_class' => NotesEmpty::class],
|
||||
'any_notes' => ['alias' => false, 'trigger_class' => NotesAny::class],
|
||||
'user_action' => ['alias' => false, 'trigger_class' => UserAction::class, 'needs_context' => true,],
|
||||
'from_account_starts' => ['alias' => false, 'trigger_class' => FromAccountStarts::class, 'needs_context' => true,],
|
||||
'from_account_ends' => ['alias' => false, 'trigger_class' => FromAccountEnds::class, 'needs_context' => true,],
|
||||
'from_account_contains' => ['alias' => false, 'trigger_class' => FromAccountContains::class, 'needs_context' => true,],
|
||||
'from_account_nr_starts' => ['alias' => false, 'trigger_class' => FromAccountNumberStarts::class, 'needs_context' => true,],
|
||||
'from_account_nr_ends' => ['alias' => false, 'trigger_class' => FromAccountNumberEnds::class, 'needs_context' => true,],
|
||||
'from_account_nr_is' => ['alias' => false, 'trigger_class' => FromAccountNumberIs::class, 'needs_context' => true,],
|
||||
'from_account_nr_contains' => ['alias' => false, 'trigger_class' => FromAccountNumberContains::class, 'needs_context' => true,],
|
||||
'to_account_starts' => ['alias' => false, 'trigger_class' => ToAccountStarts::class, 'needs_context' => true,],
|
||||
'to_account_ends' => ['alias' => false, 'trigger_class' => ToAccountEnds::class, 'needs_context' => true,],
|
||||
'to_account_contains' => ['alias' => false, 'trigger_class' => ToAccountContains::class, 'needs_context' => true,],
|
||||
'to_account_nr_starts' => ['alias' => false, 'trigger_class' => ToAccountNumberStarts::class, 'needs_context' => true,],
|
||||
'to_account_nr_ends' => ['alias' => false, 'trigger_class' => ToAccountNumberEnds::class, 'needs_context' => true,],
|
||||
'to_account_nr_is' => ['alias' => false, 'trigger_class' => ToAccountNumberIs::class, 'needs_context' => true,],
|
||||
'to_account_nr_contains' => ['alias' => false, 'trigger_class' => ToAccountNumberContains::class, 'needs_context' => true,],
|
||||
'description_starts' => ['alias' => false, 'trigger_class' => DescriptionStarts::class, 'needs_context' => true,],
|
||||
'description_ends' => ['alias' => false, 'trigger_class' => DescriptionEnds::class, 'needs_context' => true,],
|
||||
'description_contains' => ['alias' => false, 'trigger_class' => DescriptionContains::class, 'needs_context' => true,],
|
||||
'description_is' => ['alias' => false, 'trigger_class' => DescriptionIs::class, 'needs_context' => true,],
|
||||
'currency_is' => ['alias' => false, 'trigger_class' => CurrencyIs::class, 'needs_context' => true,],
|
||||
'foreign_currency_is' => ['alias' => false, 'trigger_class' => ForeignCurrencyIs::class, 'needs_context' => true,],
|
||||
'has_attachments' => ['alias' => false, 'trigger_class' => HasAttachment::class, 'needs_context' => false,],
|
||||
'has_no_category' => ['alias' => false, 'trigger_class' => HasNoCategory::class, 'needs_context' => false,],
|
||||
'has_any_category' => ['alias' => false, 'trigger_class' => HasAnyCategory::class, 'needs_context' => false,],
|
||||
'has_no_budget' => ['alias' => false, 'trigger_class' => HasNoBudget::class, 'needs_context' => false,],
|
||||
'has_any_budget' => ['alias' => false, 'trigger_class' => HasAnyBudget::class, 'needs_context' => false,],
|
||||
'has_no_tag' => ['alias' => false, 'trigger_class' => HasNoTag::class, 'needs_context' => false,],
|
||||
'has_any_tag' => ['alias' => false, 'trigger_class' => HasAnyTag::class, 'needs_context' => false,],
|
||||
'notes_contain' => ['alias' => false, 'trigger_class' => NotesContain::class, 'needs_context' => true,],
|
||||
'notes_start' => ['alias' => false, 'trigger_class' => NotesStart::class, 'needs_context' => true,],
|
||||
'notes_end' => ['alias' => false, 'trigger_class' => NotesEnd::class, 'needs_context' => true,],
|
||||
'notes_are' => ['alias' => false, 'trigger_class' => NotesAre::class, 'needs_context' => true,],
|
||||
'no_notes' => ['alias' => false, 'trigger_class' => NotesEmpty::class, 'needs_context' => false,],
|
||||
'any_notes' => ['alias' => false, 'trigger_class' => NotesAny::class, 'needs_context' => false,],
|
||||
|
||||
// exact amount
|
||||
'amount_exactly' => ['alias' => false, 'trigger_class' => AmountExactly::class],
|
||||
'amount_is' => ['alias' => true, 'alias_for' => 'amount_exactly'],
|
||||
'amount' => ['alias' => true, 'alias_for' => 'amount_exactly'],
|
||||
'amount_exactly' => ['alias' => false, 'trigger_class' => AmountExactly::class, '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, 'trigger_class' => AmountLess::class],
|
||||
'amount_max' => ['alias' => true, 'alias_for' => 'amount_less'],
|
||||
'amount_less' => ['alias' => false, 'trigger_class' => AmountLess::class, 'needs_context' => true,],
|
||||
'amount_max' => ['alias' => true, 'alias_for' => 'amount_less', 'needs_context' => true,],
|
||||
|
||||
// is more than
|
||||
'amount_more' => ['alias' => false, 'trigger_class' => AmountMore::class],
|
||||
'amount_min' => ['alias' => true, 'alias_for' => 'amount_more'],
|
||||
'amount_more' => ['alias' => false, 'trigger_class' => AmountMore::class, 'needs_context' => true,],
|
||||
'amount_min' => ['alias' => true, 'alias_for' => 'amount_more', 'needs_context' => true,],
|
||||
|
||||
// source account
|
||||
'from_account_is' => ['alias' => false, 'trigger_class' => FromAccountIs::class],
|
||||
'source' => ['alias' => true, 'alias_for' => 'from_account_is'],
|
||||
'from' => ['alias' => true, 'alias_for' => 'from_account_is'],
|
||||
'from_account_is' => ['alias' => false, 'trigger_class' => FromAccountIs::class, 'needs_context' => true,],
|
||||
'source' => ['alias' => true, 'alias_for' => 'from_account_is', 'needs_context' => true,],
|
||||
'from' => ['alias' => true, 'alias_for' => 'from_account_is', 'needs_context' => true,],
|
||||
|
||||
// destination account
|
||||
'to_account_is' => ['alias' => false, 'trigger_class' => ToAccountIs::class],
|
||||
'destination' => ['alias' => true, 'alias_for' => 'to_account_is'],
|
||||
'to' => ['alias' => true, 'alias_for' => 'to_account_is'],
|
||||
'to_account_is' => ['alias' => false, 'trigger_class' => ToAccountIs::class, 'needs_context' => true,],
|
||||
'destination' => ['alias' => true, 'alias_for' => 'to_account_is', 'needs_context' => true,],
|
||||
'to' => ['alias' => true, 'alias_for' => 'to_account_is', 'needs_context' => true,],
|
||||
|
||||
// category
|
||||
'category_is' => ['alias' => false, 'trigger_class' => CategoryIs::class],
|
||||
'category' => ['alias' => true, 'alias_for' => 'category_is'],
|
||||
'category_is' => ['alias' => false, 'trigger_class' => CategoryIs::class, 'needs_context' => true,],
|
||||
'category' => ['alias' => true, 'alias_for' => 'category_is', 'needs_context' => true,],
|
||||
|
||||
// budget
|
||||
'budget_is' => ['alias' => false, 'trigger_class' => BudgetIs::class],
|
||||
'budget' => ['alias' => true, 'alias_for' => 'budget_is'],
|
||||
'budget_is' => ['alias' => false, 'trigger_class' => BudgetIs::class, 'needs_context' => true,],
|
||||
'budget' => ['alias' => true, 'alias_for' => 'budget_is', 'needs_context' => true,],
|
||||
|
||||
// bill
|
||||
'bill_is' => ['alias' => false, 'trigger_class' => BillIs::class], // TODO
|
||||
'bill' => ['alias' => true, 'alias_for' => 'bill_is'],
|
||||
'bill_is' => ['alias' => false, 'trigger_class' => BillIs::class, 'needs_context' => true,], // TODO
|
||||
'bill' => ['alias' => true, 'alias_for' => 'bill_is', 'needs_context' => true,],
|
||||
|
||||
// type
|
||||
'transaction_type' => ['alias' => false, 'trigger_class' => TransactionType::class],
|
||||
'type' => ['alias' => true, 'alias_for' => 'transaction_type'],
|
||||
'transaction_type' => ['alias' => false, 'trigger_class' => TransactionType::class, 'needs_context' => true,],
|
||||
'type' => ['alias' => true, 'alias_for' => 'transaction_type', 'needs_context' => true,],
|
||||
|
||||
// date:
|
||||
'date_is' => ['alias' => false, 'trigger_class' => DateIs::class],
|
||||
'date' => ['alias' => true, 'alias_for' => 'date_is'],
|
||||
'on' => ['alias' => true, 'alias_for' => 'date_is'],
|
||||
'date_before' => ['alias' => false, 'trigger_class' => DateBefore::class],
|
||||
'before' => ['alias' => true, 'alias_for' => 'date_before'],
|
||||
'date_after' => ['alias' => false, 'trigger_class' => DateAfter::class],
|
||||
'after' => ['alias' => true, 'alias_for' => 'date_after'],
|
||||
'date_is' => ['alias' => false, 'trigger_class' => DateIs::class, '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, 'trigger_class' => DateBefore::class, 'needs_context' => true,],
|
||||
'before' => ['alias' => true, 'alias_for' => 'date_before', 'needs_context' => true,],
|
||||
'date_after' => ['alias' => false, 'trigger_class' => DateAfter::class, 'needs_context' => true,],
|
||||
'after' => ['alias' => true, 'alias_for' => 'date_after', 'needs_context' => true,],
|
||||
// other interesting fields
|
||||
'tag_is' => ['alias' => false, 'trigger_class' => TagIs::class],
|
||||
'tag' => ['alias' => true, 'alias_for' => 'tag'],
|
||||
'created_on' => ['alias' => false, 'trigger_class' => CreatedOn::class], // TODO
|
||||
'updated_on' => ['alias' => false, 'trigger_class' => UpdatedOn::class], // TODO
|
||||
'external_id' => ['alias' => false, 'trigger_class' => ExternalId::class], // TODO
|
||||
'internal_reference' => ['alias' => false, 'trigger_class' => InternalReference::class], // TODO
|
||||
'tag_is' => ['alias' => false, 'trigger_class' => TagIs::class, 'needs_context' => true,],
|
||||
'tag' => ['alias' => true, 'alias_for' => 'tag', 'needs_context' => true,],
|
||||
'created_on' => ['alias' => false, 'trigger_class' => CreatedOn::class, 'needs_context' => true,], // TODO
|
||||
'updated_on' => ['alias' => false, 'trigger_class' => UpdatedOn::class, 'needs_context' => true,], // TODO
|
||||
'external_id' => ['alias' => false, 'trigger_class' => ExternalId::class, 'needs_context' => true,], // TODO
|
||||
'internal_reference' => ['alias' => false, 'trigger_class' => InternalReference::class, 'needs_context' => true,], // TODO
|
||||
|
||||
],
|
||||
],
|
||||
|
Reference in New Issue
Block a user