Replace constants with enums.

This commit is contained in:
James Cole
2024-11-27 08:08:52 +01:00
parent 4ba1c5bcfc
commit c25c0d37c5
2 changed files with 317 additions and 317 deletions

View File

@@ -44,7 +44,7 @@ class AccountType extends Model
#[\Deprecated] #[\Deprecated]
public const string CASH = 'Cash account'; public const string CASH = 'Cash account';
#[\Deprecated] #[\Deprecated] /** @deprecated */
public const string CREDITCARD = 'Credit card'; public const string CREDITCARD = 'Credit card';
#[\Deprecated] #[\Deprecated]

View File

@@ -22,9 +22,9 @@
declare(strict_types=1); declare(strict_types=1);
use FireflyIII\Enums\AccountTypeEnum;
use FireflyIII\Enums\TransactionTypeEnum; use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Models\Account; use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType;
use FireflyIII\Models\Attachment; use FireflyIII\Models\Attachment;
use FireflyIII\Models\AvailableBudget; use FireflyIII\Models\AvailableBudget;
use FireflyIII\Models\Bill; use FireflyIII\Models\Bill;
@@ -226,14 +226,14 @@ return [
// account types that may have or set a currency // account types that may have or set a currency
'valid_currency_account_types' => [ 'valid_currency_account_types' => [
AccountType::ASSET, AccountTypeEnum::ASSET->value,
AccountType::LOAN, AccountTypeEnum::LOAN->value,
AccountType::DEBT, AccountTypeEnum::DEBT->value,
AccountType::MORTGAGE, AccountTypeEnum::MORTGAGE->value,
AccountType::CASH, AccountTypeEnum::CASH->value,
AccountType::INITIAL_BALANCE, AccountTypeEnum::INITIAL_BALANCE->value,
AccountType::LIABILITY_CREDIT, AccountTypeEnum::LIABILITY_CREDIT->value,
AccountType::RECONCILIATION, AccountTypeEnum::RECONCILIATION->value,
], ],
// "value must be in this list" values // "value must be in this list" values
@@ -324,7 +324,7 @@ return [
'application/json', 'application/json',
], ],
'accountRoles' => ['defaultAsset', 'sharedAsset', 'savingAsset', 'ccAsset', 'cashWalletAsset'], 'accountRoles' => ['defaultAsset', 'sharedAsset', 'savingAsset', 'ccAsset', 'cashWalletAsset'],
'valid_liabilities' => [AccountType::DEBT, AccountType::LOAN, AccountType::MORTGAGE], 'valid_liabilities' => [AccountTypeEnum::DEBT->value, AccountTypeEnum::LOAN->value, AccountTypeEnum::MORTGAGE->value],
'ccTypes' => ['monthlyFull' => 'Full payment every month'], 'ccTypes' => ['monthlyFull' => 'Full payment every month'],
'credit_card_types' => ['monthlyFull'], 'credit_card_types' => ['monthlyFull'],
@@ -351,60 +351,60 @@ return [
'liability' => 'Liabilities', 'liability' => 'Liabilities',
], ],
'subIconsByIdentifier' => [ 'subIconsByIdentifier' => [
'asset' => 'fa-money', 'asset' => 'fa-money',
AccountType::ASSET => 'fa-money', AccountTypeEnum::ASSET->value => 'fa-money',
AccountType::DEFAULT => 'fa-money', AccountTypeEnum::DEFAULT->value => 'fa-money',
AccountType::CASH => 'fa-money', AccountTypeEnum::CASH->value => 'fa-money',
'expense' => 'fa-shopping-cart', 'expense' => 'fa-shopping-cart',
AccountType::EXPENSE => 'fa-shopping-cart', AccountTypeEnum::EXPENSE->value => 'fa-shopping-cart',
AccountType::BENEFICIARY => 'fa-shopping-cart', AccountTypeEnum::BENEFICIARY->value => 'fa-shopping-cart',
'revenue' => 'fa-download', 'revenue' => 'fa-download',
AccountType::REVENUE => 'fa-download', AccountTypeEnum::REVENUE->value => 'fa-download',
'import' => 'fa-download', 'import' => 'fa-download',
AccountType::IMPORT => 'fa-download', AccountTypeEnum::IMPORT->value => 'fa-download',
'liabilities' => 'fa-ticket', 'liabilities' => 'fa-ticket',
], ],
'accountTypesByIdentifier' => [ 'accountTypesByIdentifier' => [
'asset' => [AccountType::DEFAULT, AccountType::ASSET], 'asset' => [AccountTypeEnum::DEFAULT->value, AccountTypeEnum::ASSET->value],
'expense' => [AccountType::EXPENSE, AccountType::BENEFICIARY], 'expense' => [AccountTypeEnum::EXPENSE->value, AccountTypeEnum::BENEFICIARY->value],
'revenue' => [AccountType::REVENUE], 'revenue' => [AccountTypeEnum::REVENUE->value],
'import' => [AccountType::IMPORT], 'import' => [AccountTypeEnum::IMPORT->value],
'liabilities' => [AccountType::LOAN, AccountType::DEBT, AccountType::CREDITCARD, AccountType::MORTGAGE], 'liabilities' => [AccountTypeEnum::LOAN->value, AccountTypeEnum::DEBT->value, AccountTypeEnum::CREDITCARD->value, AccountTypeEnum::MORTGAGE->value],
], ],
'accountTypeByIdentifier' => [ 'accountTypeByIdentifier' => [
'asset' => [AccountType::ASSET], 'asset' => [AccountTypeEnum::ASSET->value],
'expense' => [AccountType::EXPENSE], 'expense' => [AccountTypeEnum::EXPENSE->value],
'revenue' => [AccountType::REVENUE], 'revenue' => [AccountTypeEnum::REVENUE->value],
'opening' => [AccountType::INITIAL_BALANCE], 'opening' => [AccountTypeEnum::INITIAL_BALANCE->value],
'initial' => [AccountType::INITIAL_BALANCE], 'initial' => [AccountTypeEnum::INITIAL_BALANCE->value],
'import' => [AccountType::IMPORT], 'import' => [AccountTypeEnum::IMPORT->value],
'reconcile' => [AccountType::RECONCILIATION], 'reconcile' => [AccountTypeEnum::RECONCILIATION->value],
'loan' => [AccountType::LOAN], 'loan' => [AccountTypeEnum::LOAN->value],
'debt' => [AccountType::DEBT], 'debt' => [AccountTypeEnum::DEBT->value],
'mortgage' => [AccountType::MORTGAGE], 'mortgage' => [AccountTypeEnum::MORTGAGE->value],
'liabilities' => [AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE, AccountType::CREDITCARD], 'liabilities' => [AccountTypeEnum::LOAN->value, AccountTypeEnum::DEBT->value, AccountTypeEnum::MORTGAGE->value, AccountTypeEnum::CREDITCARD->value],
'liability' => [AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE, AccountType::CREDITCARD], 'liability' => [AccountTypeEnum::LOAN->value, AccountTypeEnum::DEBT->value, AccountTypeEnum::MORTGAGE->value, AccountTypeEnum::CREDITCARD->value],
], ],
'shortNamesByFullName' => [ 'shortNamesByFullName' => [
AccountType::DEFAULT => 'asset', AccountTypeEnum::DEFAULT->value => 'asset',
AccountType::ASSET => 'asset', AccountTypeEnum::ASSET->value => 'asset',
AccountType::IMPORT => 'import', AccountTypeEnum::IMPORT->value => 'import',
AccountType::EXPENSE => 'expense', AccountTypeEnum::EXPENSE->value => 'expense',
AccountType::BENEFICIARY => 'expense', AccountTypeEnum::BENEFICIARY->value => 'expense',
AccountType::REVENUE => 'revenue', AccountTypeEnum::REVENUE->value => 'revenue',
AccountType::CASH => 'cash', AccountTypeEnum::CASH->value => 'cash',
AccountType::INITIAL_BALANCE => 'initial-balance', AccountTypeEnum::INITIAL_BALANCE->value => 'initial-balance',
AccountType::RECONCILIATION => 'reconciliation', AccountTypeEnum::RECONCILIATION->value => 'reconciliation',
AccountType::CREDITCARD => 'liabilities', AccountTypeEnum::CREDITCARD->value => 'liabilities',
AccountType::LOAN => 'liabilities', AccountTypeEnum::LOAN->value => 'liabilities',
AccountType::DEBT => 'liabilities', AccountTypeEnum::DEBT->value => 'liabilities',
AccountType::MORTGAGE => 'liabilities', AccountTypeEnum::MORTGAGE->value => 'liabilities',
], ],
'shortLiabilityNameByFullName' => [ 'shortLiabilityNameByFullName' => [
AccountType::CREDITCARD => 'creditcard', AccountTypeEnum::CREDITCARD->value => 'creditcard',
AccountType::LOAN => AccountType::LOAN, AccountTypeEnum::LOAN->value => AccountTypeEnum::LOAN->value,
AccountType::DEBT => AccountType::DEBT, AccountTypeEnum::DEBT->value => AccountTypeEnum::DEBT->value,
AccountType::MORTGAGE => AccountType::MORTGAGE, AccountTypeEnum::MORTGAGE->value => AccountTypeEnum::MORTGAGE->value,
], ],
'transactionTypesByType' => [ 'transactionTypesByType' => [
'expenses' => ['Withdrawal'], 'expenses' => ['Withdrawal'],
@@ -430,7 +430,7 @@ return [
'transfers' => 'fa-exchange', 'transfers' => 'fa-exchange',
], ],
'bindables' => [ 'bindables' => [
// models // models
'account' => Account::class, 'account' => Account::class,
'attachment' => Attachment::class, 'attachment' => Attachment::class,
@@ -488,7 +488,7 @@ return [
'userGroupBill' => UserGroupBill::class, 'userGroupBill' => UserGroupBill::class,
'userGroup' => UserGroup::class, 'userGroup' => UserGroup::class,
], ],
'rule-actions' => [ 'rule-actions' => [
'set_category' => SetCategory::class, 'set_category' => SetCategory::class,
'clear_category' => ClearCategory::class, 'clear_category' => ClearCategory::class,
'set_budget' => SetBudget::class, 'set_budget' => SetBudget::class,
@@ -522,7 +522,7 @@ return [
// 'set_foreign_amount' => SetForeignAmount::class, // 'set_foreign_amount' => SetForeignAmount::class,
// 'set_foreign_currency' => SetForeignCurrency::class, // 'set_foreign_currency' => SetForeignCurrency::class,
], ],
'context-rule-actions' => [ 'context-rule-actions' => [
'set_category', 'set_category',
'set_budget', 'set_budget',
'add_tag', 'add_tag',
@@ -541,321 +541,321 @@ return [
'convert_transfer', 'convert_transfer',
], ],
'test-triggers' => [ 'test-triggers' => [
'limit' => 10, 'limit' => 10,
'range' => 200, 'range' => 200,
], ],
// expected source types for each transaction type, in order of preference. // expected source types for each transaction type, in order of preference.
'expected_source_types' => [ 'expected_source_types' => [
'source' => [ 'source' => [
TransactionTypeModel::WITHDRAWAL => [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE], TransactionTypeEnum::WITHDRAWAL->value => [AccountTypeEnum::ASSET->value, AccountTypeEnum::LOAN->value, AccountTypeEnum::DEBT->value, AccountTypeEnum::MORTGAGE->value],
TransactionTypeEnum::DEPOSIT->value => [AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE, AccountType::REVENUE, AccountType::CASH], TransactionTypeEnum::DEPOSIT->value => [AccountTypeEnum::LOAN->value, AccountTypeEnum::DEBT->value, AccountTypeEnum::MORTGAGE->value, AccountTypeEnum::REVENUE->value, AccountTypeEnum::CASH->value],
TransactionTypeModel::TRANSFER => [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE], TransactionTypeEnum::TRANSFER->value => [AccountTypeEnum::ASSET->value, AccountTypeEnum::LOAN->value, AccountTypeEnum::DEBT->value, AccountTypeEnum::MORTGAGE->value],
TransactionTypeModel::OPENING_BALANCE => [ TransactionTypeEnum::OPENING_BALANCE->value => [
AccountType::INITIAL_BALANCE, AccountTypeEnum::INITIAL_BALANCE->value,
AccountType::ASSET, AccountTypeEnum::ASSET->value,
AccountType::LOAN, AccountTypeEnum::LOAN->value,
AccountType::DEBT, AccountTypeEnum::DEBT->value,
AccountType::MORTGAGE, AccountTypeEnum::MORTGAGE->value,
], ],
TransactionTypeModel::RECONCILIATION => [AccountType::RECONCILIATION, AccountType::ASSET], TransactionTypeEnum::RECONCILIATION->value => [AccountTypeEnum::RECONCILIATION->value, AccountTypeEnum::ASSET->value],
TransactionTypeModel::LIABILITY_CREDIT => [AccountType::LIABILITY_CREDIT, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE], TransactionTypeEnum::LIABILITY_CREDIT->value => [AccountTypeEnum::LIABILITY_CREDIT->value, AccountTypeEnum::LOAN->value, AccountTypeEnum::DEBT->value, AccountTypeEnum::MORTGAGE->value],
// in case no transaction type is known yet, it could be anything. // in case no transaction type is known yet, it could be anything.
'none' => [ 'none' => [
AccountType::ASSET, AccountTypeEnum::ASSET->value,
AccountType::EXPENSE, AccountTypeEnum::EXPENSE->value,
AccountType::REVENUE, AccountTypeEnum::REVENUE->value,
AccountType::LOAN, AccountTypeEnum::LOAN->value,
AccountType::DEBT, AccountTypeEnum::DEBT->value,
AccountType::MORTGAGE, AccountTypeEnum::MORTGAGE->value,
], ],
], ],
'destination' => [ 'destination' => [
TransactionTypeModel::WITHDRAWAL => [ TransactionTypeEnum::WITHDRAWAL->value => [
AccountType::LOAN, AccountTypeEnum::LOAN->value,
AccountType::DEBT, AccountTypeEnum::DEBT->value,
AccountType::MORTGAGE, AccountTypeEnum::MORTGAGE->value,
AccountType::EXPENSE, AccountTypeEnum::EXPENSE->value,
AccountType::CASH, AccountTypeEnum::CASH->value,
], ],
TransactionTypeEnum::DEPOSIT->value => [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE], TransactionTypeEnum::DEPOSIT->value => [AccountTypeEnum::ASSET->value, AccountTypeEnum::LOAN->value, AccountTypeEnum::DEBT->value, AccountTypeEnum::MORTGAGE->value],
TransactionTypeModel::TRANSFER => [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE], TransactionTypeEnum::TRANSFER->value => [AccountTypeEnum::ASSET->value, AccountTypeEnum::LOAN->value, AccountTypeEnum::DEBT->value, AccountTypeEnum::MORTGAGE->value],
TransactionTypeModel::OPENING_BALANCE => [ TransactionTypeEnum::OPENING_BALANCE->value => [
AccountType::INITIAL_BALANCE, AccountTypeEnum::INITIAL_BALANCE->value,
AccountType::ASSET, AccountTypeEnum::ASSET->value,
AccountType::LOAN, AccountTypeEnum::LOAN->value,
AccountType::DEBT, AccountTypeEnum::DEBT->value,
AccountType::MORTGAGE, AccountTypeEnum::MORTGAGE->value,
], ],
TransactionTypeModel::RECONCILIATION => [AccountType::RECONCILIATION, AccountType::ASSET], TransactionTypeEnum::RECONCILIATION->value => [AccountTypeEnum::RECONCILIATION->value, AccountTypeEnum::ASSET->value],
TransactionTypeModel::LIABILITY_CREDIT => [AccountType::LIABILITY_CREDIT, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE], TransactionTypeEnum::LIABILITY_CREDIT->value => [AccountTypeEnum::LIABILITY_CREDIT->value, AccountTypeEnum::LOAN->value, AccountTypeEnum::DEBT->value, AccountTypeEnum::MORTGAGE->value],
], ],
], ],
'allowed_opposing_types' => [ 'allowed_opposing_types' => [
'source' => [ 'source' => [
AccountType::ASSET => [ AccountTypeEnum::ASSET->value => [
AccountType::ASSET, AccountTypeEnum::ASSET->value,
AccountType::CASH, AccountTypeEnum::CASH->value,
AccountType::DEBT, AccountTypeEnum::DEBT->value,
AccountType::EXPENSE, AccountTypeEnum::EXPENSE->value,
AccountType::INITIAL_BALANCE, AccountTypeEnum::INITIAL_BALANCE->value,
AccountType::LOAN, AccountTypeEnum::LOAN->value,
AccountType::RECONCILIATION, AccountTypeEnum::RECONCILIATION->value,
AccountType::MORTGAGE, AccountTypeEnum::MORTGAGE->value,
], ],
AccountType::CASH => [AccountType::ASSET], AccountTypeEnum::CASH->value => [AccountTypeEnum::ASSET->value],
AccountType::DEBT => [ AccountTypeEnum::DEBT->value => [
AccountType::ASSET, AccountTypeEnum::ASSET->value,
AccountType::DEBT, AccountTypeEnum::DEBT->value,
AccountType::EXPENSE, AccountTypeEnum::EXPENSE->value,
AccountType::INITIAL_BALANCE, AccountTypeEnum::INITIAL_BALANCE->value,
AccountType::LOAN, AccountTypeEnum::LOAN->value,
AccountType::MORTGAGE, AccountTypeEnum::MORTGAGE->value,
AccountType::LIABILITY_CREDIT, AccountTypeEnum::LIABILITY_CREDIT->value,
], ],
AccountType::EXPENSE => [], // is not allowed as a source. AccountTypeEnum::EXPENSE->value => [], // is not allowed as a source.
AccountType::INITIAL_BALANCE => [AccountType::ASSET, AccountType::DEBT, AccountType::LOAN, AccountType::MORTGAGE], AccountTypeEnum::INITIAL_BALANCE->value => [AccountTypeEnum::ASSET->value, AccountTypeEnum::DEBT->value, AccountTypeEnum::LOAN->value, AccountTypeEnum::MORTGAGE->value],
AccountType::LOAN => [ AccountTypeEnum::LOAN->value => [
AccountType::ASSET, AccountTypeEnum::ASSET->value,
AccountType::DEBT, AccountTypeEnum::DEBT->value,
AccountType::EXPENSE, AccountTypeEnum::EXPENSE->value,
AccountType::INITIAL_BALANCE, AccountTypeEnum::INITIAL_BALANCE->value,
AccountType::LOAN, AccountTypeEnum::LOAN->value,
AccountType::MORTGAGE, AccountTypeEnum::MORTGAGE->value,
AccountType::LIABILITY_CREDIT, AccountTypeEnum::LIABILITY_CREDIT->value,
], ],
AccountType::MORTGAGE => [ AccountTypeEnum::MORTGAGE->value => [
AccountType::ASSET, AccountTypeEnum::ASSET->value,
AccountType::DEBT, AccountTypeEnum::DEBT->value,
AccountType::EXPENSE, AccountTypeEnum::EXPENSE->value,
AccountType::INITIAL_BALANCE, AccountTypeEnum::INITIAL_BALANCE->value,
AccountType::LOAN, AccountTypeEnum::LOAN->value,
AccountType::MORTGAGE, AccountTypeEnum::MORTGAGE->value,
AccountType::LIABILITY_CREDIT, AccountTypeEnum::LIABILITY_CREDIT->value,
], ],
AccountType::RECONCILIATION => [AccountType::ASSET], AccountTypeEnum::RECONCILIATION->value => [AccountTypeEnum::ASSET->value],
AccountType::REVENUE => [AccountType::ASSET, AccountType::DEBT, AccountType::LOAN, AccountType::MORTGAGE], AccountTypeEnum::REVENUE->value => [AccountTypeEnum::ASSET->value, AccountTypeEnum::DEBT->value, AccountTypeEnum::LOAN->value, AccountTypeEnum::MORTGAGE->value],
AccountType::LIABILITY_CREDIT => [AccountType::DEBT, AccountType::LOAN, AccountType::MORTGAGE], AccountTypeEnum::LIABILITY_CREDIT->value => [AccountTypeEnum::DEBT->value, AccountTypeEnum::LOAN->value, AccountTypeEnum::MORTGAGE->value],
], ],
'destination' => [ 'destination' => [
AccountType::ASSET => [ AccountTypeEnum::ASSET->value => [
AccountType::ASSET, AccountTypeEnum::ASSET->value,
AccountType::CASH, AccountTypeEnum::CASH->value,
AccountType::DEBT, AccountTypeEnum::DEBT->value,
AccountType::INITIAL_BALANCE, AccountTypeEnum::INITIAL_BALANCE->value,
AccountType::LOAN, AccountTypeEnum::LOAN->value,
AccountType::MORTGAGE, AccountTypeEnum::MORTGAGE->value,
AccountType::RECONCILIATION, AccountTypeEnum::RECONCILIATION->value,
AccountType::REVENUE, AccountTypeEnum::REVENUE->value,
], ],
AccountType::CASH => [AccountType::ASSET], AccountTypeEnum::CASH->value => [AccountTypeEnum::ASSET->value],
AccountType::DEBT => [ AccountTypeEnum::DEBT->value => [
AccountType::ASSET, AccountTypeEnum::ASSET->value,
AccountType::DEBT, AccountTypeEnum::DEBT->value,
AccountType::INITIAL_BALANCE, AccountTypeEnum::INITIAL_BALANCE->value,
AccountType::LOAN, AccountTypeEnum::LOAN->value,
AccountType::MORTGAGE, AccountTypeEnum::MORTGAGE->value,
AccountType::REVENUE, AccountTypeEnum::REVENUE->value,
], ],
AccountType::EXPENSE => [AccountType::ASSET, AccountType::DEBT, AccountType::LOAN, AccountType::MORTGAGE], AccountTypeEnum::EXPENSE->value => [AccountTypeEnum::ASSET->value, AccountTypeEnum::DEBT->value, AccountTypeEnum::LOAN->value, AccountTypeEnum::MORTGAGE->value],
AccountType::INITIAL_BALANCE => [AccountType::ASSET, AccountType::DEBT, AccountType::LOAN, AccountType::MORTGAGE], AccountTypeEnum::INITIAL_BALANCE->value => [AccountTypeEnum::ASSET->value, AccountTypeEnum::DEBT->value, AccountTypeEnum::LOAN->value, AccountTypeEnum::MORTGAGE->value],
AccountType::LOAN => [ AccountTypeEnum::LOAN->value => [
AccountType::ASSET, AccountTypeEnum::ASSET->value,
AccountType::DEBT, AccountTypeEnum::DEBT->value,
AccountType::INITIAL_BALANCE, AccountTypeEnum::INITIAL_BALANCE->value,
AccountType::LOAN, AccountTypeEnum::LOAN->value,
AccountType::MORTGAGE, AccountTypeEnum::MORTGAGE->value,
AccountType::REVENUE, AccountTypeEnum::REVENUE->value,
], ],
AccountType::MORTGAGE => [ AccountTypeEnum::MORTGAGE->value => [
AccountType::ASSET, AccountTypeEnum::ASSET->value,
AccountType::DEBT, AccountTypeEnum::DEBT->value,
AccountType::INITIAL_BALANCE, AccountTypeEnum::INITIAL_BALANCE->value,
AccountType::LOAN, AccountTypeEnum::LOAN->value,
AccountType::MORTGAGE, AccountTypeEnum::MORTGAGE->value,
AccountType::REVENUE, AccountTypeEnum::REVENUE->value,
], ],
AccountType::RECONCILIATION => [AccountType::ASSET], AccountTypeEnum::RECONCILIATION->value => [AccountTypeEnum::ASSET->value],
AccountType::REVENUE => [], // is not allowed as a destination AccountTypeEnum::REVENUE->value => [], // is not allowed as a destination
AccountType::LIABILITY_CREDIT => [], // is not allowed as a destination AccountTypeEnum::LIABILITY_CREDIT->value => [], // is not allowed as a destination
], ],
], ],
// depending on the account type, return the allowed transaction types: // depending on the account type, return the allowed transaction types:
'allowed_transaction_types' => [ 'allowed_transaction_types' => [
'source' => [ 'source' => [
AccountType::ASSET => [ AccountTypeEnum::ASSET->value => [
TransactionTypeModel::WITHDRAWAL, TransactionTypeEnum::WITHDRAWAL->value,
TransactionTypeModel::TRANSFER, TransactionTypeEnum::TRANSFER->value,
TransactionTypeModel::OPENING_BALANCE, TransactionTypeEnum::OPENING_BALANCE->value,
TransactionTypeModel::RECONCILIATION, TransactionTypeEnum::RECONCILIATION->value,
], ],
AccountType::EXPENSE => [], // is not allowed as a source. AccountTypeEnum::EXPENSE->value => [], // is not allowed as a source.
AccountType::REVENUE => [TransactionTypeEnum::DEPOSIT->value], AccountTypeEnum::REVENUE->value => [TransactionTypeEnum::DEPOSIT->value],
AccountType::LOAN => [ AccountTypeEnum::LOAN->value => [
TransactionTypeModel::WITHDRAWAL, TransactionTypeEnum::WITHDRAWAL->value,
TransactionTypeEnum::DEPOSIT->value, TransactionTypeEnum::DEPOSIT->value,
TransactionTypeModel::TRANSFER, TransactionTypeEnum::TRANSFER->value,
TransactionTypeModel::OPENING_BALANCE, TransactionTypeEnum::OPENING_BALANCE->value,
TransactionTypeModel::LIABILITY_CREDIT, TransactionTypeEnum::LIABILITY_CREDIT->value,
], ],
AccountType::DEBT => [ AccountTypeEnum::DEBT->value => [
TransactionTypeModel::WITHDRAWAL, TransactionTypeEnum::WITHDRAWAL->value,
TransactionTypeEnum::DEPOSIT->value, TransactionTypeEnum::DEPOSIT->value,
TransactionTypeModel::TRANSFER, TransactionTypeEnum::TRANSFER->value,
TransactionTypeModel::OPENING_BALANCE, TransactionTypeEnum::OPENING_BALANCE->value,
TransactionTypeModel::LIABILITY_CREDIT, TransactionTypeEnum::LIABILITY_CREDIT->value,
], ],
AccountType::MORTGAGE => [ AccountTypeEnum::MORTGAGE->value => [
TransactionTypeModel::WITHDRAWAL, TransactionTypeEnum::WITHDRAWAL->value,
TransactionTypeEnum::DEPOSIT->value, TransactionTypeEnum::DEPOSIT->value,
TransactionTypeModel::TRANSFER, TransactionTypeEnum::TRANSFER->value,
TransactionTypeModel::OPENING_BALANCE, TransactionTypeEnum::OPENING_BALANCE->value,
TransactionTypeModel::LIABILITY_CREDIT, TransactionTypeEnum::LIABILITY_CREDIT->value,
], ],
AccountType::INITIAL_BALANCE => [TransactionTypeModel::OPENING_BALANCE], AccountTypeEnum::INITIAL_BALANCE->value => [TransactionTypeEnum::OPENING_BALANCE->value],
AccountType::RECONCILIATION => [TransactionTypeModel::RECONCILIATION], AccountTypeEnum::RECONCILIATION->value => [TransactionTypeEnum::RECONCILIATION->value],
AccountType::LIABILITY_CREDIT => [TransactionTypeModel::LIABILITY_CREDIT], AccountTypeEnum::LIABILITY_CREDIT->value => [TransactionTypeEnum::LIABILITY_CREDIT->value],
], ],
'destination' => [ 'destination' => [
AccountType::ASSET => [ AccountTypeEnum::ASSET->value => [
TransactionTypeEnum::DEPOSIT->value, TransactionTypeEnum::DEPOSIT->value,
TransactionTypeModel::TRANSFER, TransactionTypeEnum::TRANSFER->value,
TransactionTypeModel::OPENING_BALANCE, TransactionTypeEnum::OPENING_BALANCE->value,
TransactionTypeModel::RECONCILIATION, TransactionTypeEnum::RECONCILIATION->value,
], ],
AccountType::EXPENSE => [TransactionTypeModel::WITHDRAWAL], AccountTypeEnum::EXPENSE->value => [TransactionTypeEnum::WITHDRAWAL->value],
AccountType::REVENUE => [], // is not allowed as destination. AccountTypeEnum::REVENUE->value => [], // is not allowed as destination.
AccountType::LOAN => [ AccountTypeEnum::LOAN->value => [
TransactionTypeModel::WITHDRAWAL, TransactionTypeEnum::WITHDRAWAL->value,
TransactionTypeEnum::DEPOSIT->value, TransactionTypeEnum::DEPOSIT->value,
TransactionTypeModel::TRANSFER, TransactionTypeEnum::TRANSFER->value,
TransactionTypeModel::OPENING_BALANCE, TransactionTypeEnum::OPENING_BALANCE->value,
], ],
AccountType::DEBT => [ AccountTypeEnum::DEBT->value => [
TransactionTypeModel::WITHDRAWAL, TransactionTypeEnum::WITHDRAWAL->value,
TransactionTypeEnum::DEPOSIT->value, TransactionTypeEnum::DEPOSIT->value,
TransactionTypeModel::TRANSFER, TransactionTypeEnum::TRANSFER->value,
TransactionTypeModel::OPENING_BALANCE, TransactionTypeEnum::OPENING_BALANCE->value,
], ],
AccountType::MORTGAGE => [ AccountTypeEnum::MORTGAGE->value => [
TransactionTypeModel::WITHDRAWAL, TransactionTypeEnum::WITHDRAWAL->value,
TransactionTypeEnum::DEPOSIT->value, TransactionTypeEnum::DEPOSIT->value,
TransactionTypeModel::TRANSFER, TransactionTypeEnum::TRANSFER->value,
TransactionTypeModel::OPENING_BALANCE, TransactionTypeEnum::OPENING_BALANCE->value,
], ],
AccountType::INITIAL_BALANCE => [TransactionTypeModel::OPENING_BALANCE], AccountTypeEnum::INITIAL_BALANCE->value => [TransactionTypeEnum::OPENING_BALANCE->value],
AccountType::RECONCILIATION => [TransactionTypeModel::RECONCILIATION], AccountTypeEnum::RECONCILIATION->value => [TransactionTypeEnum::RECONCILIATION->value],
AccountType::LIABILITY_CREDIT => [], // is not allowed as a destination AccountTypeEnum::LIABILITY_CREDIT->value => [], // is not allowed as a destination
], ],
], ],
// having the source + dest will tell you the transaction type. // having the source + dest will tell you the transaction type.
'account_to_transaction' => [ 'account_to_transaction' => [
AccountType::ASSET => [ AccountTypeEnum::ASSET->value => [
AccountType::ASSET => TransactionTypeModel::TRANSFER, AccountTypeEnum::ASSET->value => TransactionTypeEnum::TRANSFER->value,
AccountType::CASH => TransactionTypeModel::WITHDRAWAL, AccountTypeEnum::CASH->value => TransactionTypeEnum::WITHDRAWAL->value,
AccountType::DEBT => TransactionTypeModel::WITHDRAWAL, AccountTypeEnum::DEBT->value => TransactionTypeEnum::WITHDRAWAL->value,
AccountType::EXPENSE => TransactionTypeModel::WITHDRAWAL, AccountTypeEnum::EXPENSE->value => TransactionTypeEnum::WITHDRAWAL->value,
AccountType::INITIAL_BALANCE => TransactionTypeModel::OPENING_BALANCE, AccountTypeEnum::INITIAL_BALANCE->value => TransactionTypeEnum::OPENING_BALANCE->value,
AccountType::LOAN => TransactionTypeModel::WITHDRAWAL, AccountTypeEnum::LOAN->value => TransactionTypeEnum::WITHDRAWAL->value,
AccountType::MORTGAGE => TransactionTypeModel::WITHDRAWAL, AccountTypeEnum::MORTGAGE->value => TransactionTypeEnum::WITHDRAWAL->value,
AccountType::RECONCILIATION => TransactionTypeModel::RECONCILIATION, AccountTypeEnum::RECONCILIATION->value => TransactionTypeEnum::RECONCILIATION->value,
], ],
AccountType::CASH => [ AccountTypeEnum::CASH->value => [
AccountType::ASSET => TransactionTypeModel::DEPOSIT, AccountTypeEnum::ASSET->value => TransactionTypeEnum::DEPOSIT->value,
AccountType::LOAN => TransactionTypeModel::DEPOSIT, AccountTypeEnum::LOAN->value => TransactionTypeEnum::DEPOSIT->value,
AccountType::DEBT => TransactionTypeModel::DEPOSIT, AccountTypeEnum::DEBT->value => TransactionTypeEnum::DEPOSIT->value,
AccountType::MORTGAGE => TransactionTypeModel::DEPOSIT, AccountTypeEnum::MORTGAGE->value => TransactionTypeEnum::DEPOSIT->value,
], ],
AccountType::DEBT => [ AccountTypeEnum::DEBT->value => [
AccountType::ASSET => TransactionTypeEnum::DEPOSIT->value, AccountTypeEnum::ASSET->value => TransactionTypeEnum::DEPOSIT->value,
AccountType::DEBT => TransactionTypeModel::TRANSFER, AccountTypeEnum::DEBT->value => TransactionTypeEnum::TRANSFER->value,
AccountType::EXPENSE => TransactionTypeModel::WITHDRAWAL, AccountTypeEnum::EXPENSE->value => TransactionTypeEnum::WITHDRAWAL->value,
AccountType::INITIAL_BALANCE => TransactionTypeModel::OPENING_BALANCE, AccountTypeEnum::INITIAL_BALANCE->value => TransactionTypeEnum::OPENING_BALANCE->value,
AccountType::LOAN => TransactionTypeModel::TRANSFER, AccountTypeEnum::LOAN->value => TransactionTypeEnum::TRANSFER->value,
AccountType::MORTGAGE => TransactionTypeModel::TRANSFER, AccountTypeEnum::MORTGAGE->value => TransactionTypeEnum::TRANSFER->value,
], ],
AccountType::INITIAL_BALANCE => [ AccountTypeEnum::INITIAL_BALANCE->value => [
AccountType::ASSET => TransactionTypeModel::OPENING_BALANCE, AccountTypeEnum::ASSET->value => TransactionTypeEnum::OPENING_BALANCE->value,
AccountType::DEBT => TransactionTypeModel::OPENING_BALANCE, AccountTypeEnum::DEBT->value => TransactionTypeEnum::OPENING_BALANCE->value,
AccountType::LOAN => TransactionTypeModel::OPENING_BALANCE, AccountTypeEnum::LOAN->value => TransactionTypeEnum::OPENING_BALANCE->value,
AccountType::MORTGAGE => TransactionTypeModel::OPENING_BALANCE, AccountTypeEnum::MORTGAGE->value => TransactionTypeEnum::OPENING_BALANCE->value,
], ],
AccountType::LOAN => [ AccountTypeEnum::LOAN->value => [
AccountType::ASSET => TransactionTypeEnum::DEPOSIT->value, AccountTypeEnum::ASSET->value => TransactionTypeEnum::DEPOSIT->value,
AccountType::DEBT => TransactionTypeModel::TRANSFER, AccountTypeEnum::DEBT->value => TransactionTypeEnum::TRANSFER->value,
AccountType::EXPENSE => TransactionTypeModel::WITHDRAWAL, AccountTypeEnum::EXPENSE->value => TransactionTypeEnum::WITHDRAWAL->value,
AccountType::INITIAL_BALANCE => TransactionTypeModel::OPENING_BALANCE, AccountTypeEnum::INITIAL_BALANCE->value => TransactionTypeEnum::OPENING_BALANCE->value,
AccountType::LOAN => TransactionTypeModel::TRANSFER, AccountTypeEnum::LOAN->value => TransactionTypeEnum::TRANSFER->value,
AccountType::MORTGAGE => TransactionTypeModel::TRANSFER, AccountTypeEnum::MORTGAGE->value => TransactionTypeEnum::TRANSFER->value,
], ],
AccountType::MORTGAGE => [ AccountTypeEnum::MORTGAGE->value => [
AccountType::ASSET => TransactionTypeEnum::DEPOSIT->value, AccountTypeEnum::ASSET->value => TransactionTypeEnum::DEPOSIT->value,
AccountType::DEBT => TransactionTypeModel::TRANSFER, AccountTypeEnum::DEBT->value => TransactionTypeEnum::TRANSFER->value,
AccountType::EXPENSE => TransactionTypeModel::WITHDRAWAL, AccountTypeEnum::EXPENSE->value => TransactionTypeEnum::WITHDRAWAL->value,
AccountType::INITIAL_BALANCE => TransactionTypeModel::OPENING_BALANCE, AccountTypeEnum::INITIAL_BALANCE->value => TransactionTypeEnum::OPENING_BALANCE->value,
AccountType::LOAN => TransactionTypeModel::TRANSFER, AccountTypeEnum::LOAN->value => TransactionTypeEnum::TRANSFER->value,
AccountType::MORTGAGE => TransactionTypeModel::TRANSFER, AccountTypeEnum::MORTGAGE->value => TransactionTypeEnum::TRANSFER->value,
], ],
AccountType::RECONCILIATION => [ AccountTypeEnum::RECONCILIATION->value => [
AccountType::ASSET => TransactionTypeModel::RECONCILIATION, AccountTypeEnum::ASSET->value => TransactionTypeEnum::RECONCILIATION->value,
], ],
AccountType::REVENUE => [ AccountTypeEnum::REVENUE->value => [
AccountType::ASSET => TransactionTypeEnum::DEPOSIT->value, AccountTypeEnum::ASSET->value => TransactionTypeEnum::DEPOSIT->value,
AccountType::DEBT => TransactionTypeEnum::DEPOSIT->value, AccountTypeEnum::DEBT->value => TransactionTypeEnum::DEPOSIT->value,
AccountType::LOAN => TransactionTypeEnum::DEPOSIT->value, AccountTypeEnum::LOAN->value => TransactionTypeEnum::DEPOSIT->value,
AccountType::MORTGAGE => TransactionTypeEnum::DEPOSIT->value, AccountTypeEnum::MORTGAGE->value => TransactionTypeEnum::DEPOSIT->value,
], ],
AccountType::LIABILITY_CREDIT => [ AccountTypeEnum::LIABILITY_CREDIT->value => [
AccountType::DEBT => TransactionTypeModel::LIABILITY_CREDIT, AccountTypeEnum::DEBT->value => TransactionTypeEnum::LIABILITY_CREDIT->value,
AccountType::LOAN => TransactionTypeModel::LIABILITY_CREDIT, AccountTypeEnum::LOAN->value => TransactionTypeEnum::LIABILITY_CREDIT->value,
AccountType::MORTGAGE => TransactionTypeModel::LIABILITY_CREDIT, AccountTypeEnum::MORTGAGE->value => TransactionTypeEnum::LIABILITY_CREDIT->value,
], ],
// AccountType::EXPENSE unlisted because it cant be a source // AccountTypeEnum::EXPENSE->value unlisted because it cant be a source
], ],
// allowed source -> destination accounts. // allowed source -> destination accounts.
'source_dests' => [ 'source_dests' => [
TransactionTypeModel::WITHDRAWAL => [ TransactionTypeEnum::WITHDRAWAL->value => [
AccountType::ASSET => [AccountType::EXPENSE, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE, AccountType::CASH], AccountTypeEnum::ASSET->value => [AccountTypeEnum::EXPENSE->value, AccountTypeEnum::LOAN->value, AccountTypeEnum::DEBT->value, AccountTypeEnum::MORTGAGE->value, AccountTypeEnum::CASH->value],
AccountType::LOAN => [AccountType::EXPENSE, AccountType::CASH], AccountTypeEnum::LOAN->value => [AccountTypeEnum::EXPENSE->value, AccountTypeEnum::CASH->value],
AccountType::DEBT => [AccountType::EXPENSE, AccountType::CASH], AccountTypeEnum::DEBT->value => [AccountTypeEnum::EXPENSE->value, AccountTypeEnum::CASH->value],
AccountType::MORTGAGE => [AccountType::EXPENSE, AccountType::CASH], AccountTypeEnum::MORTGAGE->value => [AccountTypeEnum::EXPENSE->value, AccountTypeEnum::CASH->value],
], ],
TransactionTypeEnum::DEPOSIT->value => [ TransactionTypeEnum::DEPOSIT->value => [
AccountType::REVENUE => [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE], AccountTypeEnum::REVENUE->value => [AccountTypeEnum::ASSET->value, AccountTypeEnum::LOAN->value, AccountTypeEnum::DEBT->value, AccountTypeEnum::MORTGAGE->value],
AccountType::CASH => [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE], AccountTypeEnum::CASH->value => [AccountTypeEnum::ASSET->value, AccountTypeEnum::LOAN->value, AccountTypeEnum::DEBT->value, AccountTypeEnum::MORTGAGE->value],
AccountType::LOAN => [AccountType::ASSET], AccountTypeEnum::LOAN->value => [AccountTypeEnum::ASSET->value],
AccountType::DEBT => [AccountType::ASSET], AccountTypeEnum::DEBT->value => [AccountTypeEnum::ASSET->value],
AccountType::MORTGAGE => [AccountType::ASSET], AccountTypeEnum::MORTGAGE->value => [AccountTypeEnum::ASSET->value],
], ],
TransactionTypeModel::TRANSFER => [ TransactionTypeEnum::TRANSFER->value => [
AccountType::ASSET => [AccountType::ASSET], AccountTypeEnum::ASSET->value => [AccountTypeEnum::ASSET->value],
AccountType::LOAN => [AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE], AccountTypeEnum::LOAN->value => [AccountTypeEnum::LOAN->value, AccountTypeEnum::DEBT->value, AccountTypeEnum::MORTGAGE->value],
AccountType::DEBT => [AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE], AccountTypeEnum::DEBT->value => [AccountTypeEnum::LOAN->value, AccountTypeEnum::DEBT->value, AccountTypeEnum::MORTGAGE->value],
AccountType::MORTGAGE => [AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE], AccountTypeEnum::MORTGAGE->value => [AccountTypeEnum::LOAN->value, AccountTypeEnum::DEBT->value, AccountTypeEnum::MORTGAGE->value],
], ],
TransactionTypeModel::OPENING_BALANCE => [ TransactionTypeEnum::OPENING_BALANCE->value => [
AccountType::ASSET => [AccountType::INITIAL_BALANCE], AccountTypeEnum::ASSET->value => [AccountTypeEnum::INITIAL_BALANCE->value],
AccountType::LOAN => [AccountType::INITIAL_BALANCE], AccountTypeEnum::LOAN->value => [AccountTypeEnum::INITIAL_BALANCE->value],
AccountType::DEBT => [AccountType::INITIAL_BALANCE], AccountTypeEnum::DEBT->value => [AccountTypeEnum::INITIAL_BALANCE->value],
AccountType::MORTGAGE => [AccountType::INITIAL_BALANCE], AccountTypeEnum::MORTGAGE->value => [AccountTypeEnum::INITIAL_BALANCE->value],
AccountType::INITIAL_BALANCE => [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE], AccountTypeEnum::INITIAL_BALANCE->value => [AccountTypeEnum::ASSET->value, AccountTypeEnum::LOAN->value, AccountTypeEnum::DEBT->value, AccountTypeEnum::MORTGAGE->value],
], ],
TransactionTypeModel::RECONCILIATION => [ TransactionTypeEnum::RECONCILIATION->value => [
AccountType::RECONCILIATION => [AccountType::ASSET], AccountTypeEnum::RECONCILIATION->value => [AccountTypeEnum::ASSET->value],
AccountType::ASSET => [AccountType::RECONCILIATION], AccountTypeEnum::ASSET->value => [AccountTypeEnum::RECONCILIATION->value],
], ],
TransactionTypeModel::LIABILITY_CREDIT => [ TransactionTypeEnum::LIABILITY_CREDIT->value => [
AccountType::LOAN => [AccountType::LIABILITY_CREDIT], AccountTypeEnum::LOAN->value => [AccountTypeEnum::LIABILITY_CREDIT->value],
AccountType::DEBT => [AccountType::LIABILITY_CREDIT], AccountTypeEnum::DEBT->value => [AccountTypeEnum::LIABILITY_CREDIT->value],
AccountType::MORTGAGE => [AccountType::LIABILITY_CREDIT], AccountTypeEnum::MORTGAGE->value => [AccountTypeEnum::LIABILITY_CREDIT->value],
AccountType::LIABILITY_CREDIT => [AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE], AccountTypeEnum::LIABILITY_CREDIT->value => [AccountTypeEnum::LOAN->value, AccountTypeEnum::DEBT->value, AccountTypeEnum::MORTGAGE->value],
], ],
], ],
// if you add fields to this array, don't forget to update the export routine (ExportDataGenerator). // if you add fields to this array, don't forget to update the export routine (ExportDataGenerator).
'journal_meta_fields' => [ 'journal_meta_fields' => [
// sepa // sepa
'sepa_cc', 'sepa_cc',
'sepa_ct_op', 'sepa_ct_op',
@@ -889,28 +889,28 @@ return [
'recurrence_count', 'recurrence_count',
'recurrence_date', 'recurrence_date',
], ],
'webhooks' => [ 'webhooks' => [
'max_attempts' => env('WEBHOOK_MAX_ATTEMPTS', 3), 'max_attempts' => env('WEBHOOK_MAX_ATTEMPTS', 3),
], ],
'can_have_virtual_amounts' => [AccountType::ASSET], 'can_have_virtual_amounts' => [AccountTypeEnum::ASSET->value],
'can_have_opening_balance' => [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE], 'can_have_opening_balance' => [AccountTypeEnum::ASSET->value, AccountTypeEnum::LOAN->value, AccountTypeEnum::DEBT->value, AccountTypeEnum::MORTGAGE->value],
'dynamic_creation_allowed' => [ 'dynamic_creation_allowed' => [
AccountType::EXPENSE, AccountTypeEnum::EXPENSE->value,
AccountType::REVENUE, AccountTypeEnum::REVENUE->value,
AccountType::INITIAL_BALANCE, AccountTypeEnum::INITIAL_BALANCE->value,
AccountType::RECONCILIATION, AccountTypeEnum::RECONCILIATION->value,
AccountType::LIABILITY_CREDIT, AccountTypeEnum::LIABILITY_CREDIT->value,
], ],
'valid_asset_fields' => ['account_role', 'account_number', 'currency_id', 'BIC', 'include_net_worth'], 'valid_asset_fields' => ['account_role', 'account_number', 'currency_id', 'BIC', 'include_net_worth'],
'valid_cc_fields' => ['account_role', 'cc_monthly_payment_date', 'cc_type', 'account_number', 'currency_id', 'BIC', 'include_net_worth'], 'valid_cc_fields' => ['account_role', 'cc_monthly_payment_date', 'cc_type', 'account_number', 'currency_id', 'BIC', 'include_net_worth'],
'valid_account_fields' => ['account_number', 'currency_id', 'BIC', 'interest', 'interest_period', 'include_net_worth', 'liability_direction'], 'valid_account_fields' => ['account_number', 'currency_id', 'BIC', 'interest', 'interest_period', 'include_net_worth', 'liability_direction'],
// dynamic date ranges are as follows: // dynamic date ranges are as follows:
'dynamic_date_ranges' => ['last7', 'last30', 'last90', 'last365', 'MTD', 'QTD', 'YTD'], 'dynamic_date_ranges' => ['last7', 'last30', 'last90', 'last365', 'MTD', 'QTD', 'YTD'],
// only used in v1 // only used in v1
'allowed_sort_parameters' => ['order', 'name', 'iban'], 'allowed_sort_parameters' => ['order', 'name', 'iban'],
// preselected account lists possibilities: // preselected account lists possibilities:
'preselected_accounts' => ['all', 'assets', 'liabilities'], 'preselected_accounts' => ['all', 'assets', 'liabilities'],
]; ];