import { ACCOUNT_TYPE } from '@/data/AccountTypes'; export const ERRORS = { CASHFLOW_TRANSACTION_TYPE_INVALID: 'CASHFLOW_TRANSACTION_TYPE_INVALID', CASHFLOW_ACCOUNTS_HAS_INVALID_TYPE: 'CASHFLOW_ACCOUNTS_HAS_INVALID_TYPE', CASHFLOW_TRANSACTION_NOT_FOUND: 'CASHFLOW_TRANSACTION_NOT_FOUND', CASHFLOW_ACCOUNTS_IDS_NOT_FOUND: 'CASHFLOW_ACCOUNTS_IDS_NOT_FOUND', CREDIT_ACCOUNTS_IDS_NOT_FOUND: 'CREDIT_ACCOUNTS_IDS_NOT_FOUND', CREDIT_ACCOUNTS_HAS_INVALID_TYPE: 'CREDIT_ACCOUNTS_HAS_INVALID_TYPE', ACCOUNT_ID_HAS_INVALID_TYPE: 'ACCOUNT_ID_HAS_INVALID_TYPE', ACCOUNT_HAS_ASSOCIATED_TRANSACTIONS: 'account_has_associated_transactions' }; export enum CASHFLOW_DIRECTION { IN = 'In', OUT = 'Out', } export enum CASHFLOW_TRANSACTION_TYPE { ONWERS_DRAWING = 'OwnerDrawing', OWNER_CONTRIBUTION = 'OwnerContribution', OTHER_INCOME = 'OtherIncome', TRANSFER_FROM_ACCOUNT = 'TransferFromAccount', TRANSFER_TO_ACCOUNT = 'TransferToAccount', OTHER_EXPENSE = 'OtherExpense', } export const CASHFLOW_TRANSACTION_TYPE_META = { [`${CASHFLOW_TRANSACTION_TYPE.ONWERS_DRAWING}`]: { type: 'OwnerDrawing', direction: CASHFLOW_DIRECTION.OUT, creditType: [ACCOUNT_TYPE.EQUITY], }, [`${CASHFLOW_TRANSACTION_TYPE.OWNER_CONTRIBUTION}`]: { type: 'OwnerContribution', direction: CASHFLOW_DIRECTION.IN, creditType: [ACCOUNT_TYPE.EQUITY], }, [`${CASHFLOW_TRANSACTION_TYPE.OTHER_INCOME}`]: { type: 'OtherIncome', direction: CASHFLOW_DIRECTION.IN, creditType: [ACCOUNT_TYPE.INCOME, ACCOUNT_TYPE.OTHER_INCOME], }, [`${CASHFLOW_TRANSACTION_TYPE.TRANSFER_FROM_ACCOUNT}`]: { type: 'TransferFromAccount', direction: CASHFLOW_DIRECTION.IN, creditType: [ ACCOUNT_TYPE.CASH, ACCOUNT_TYPE.BANK, ACCOUNT_TYPE.CREDIT_CARD, ], }, [`${CASHFLOW_TRANSACTION_TYPE.TRANSFER_TO_ACCOUNT}`]: { type: 'TransferToAccount', direction: CASHFLOW_DIRECTION.OUT, creditType: [ ACCOUNT_TYPE.CASH, ACCOUNT_TYPE.BANK, ACCOUNT_TYPE.CREDIT_CARD, ], }, [`${CASHFLOW_TRANSACTION_TYPE.OTHER_EXPENSE}`]: { type: 'OtherExpense', direction: CASHFLOW_DIRECTION.OUT, creditType: [ACCOUNT_TYPE.EXPENSE, ACCOUNT_TYPE.OTHER_EXPENSE], }, }; export interface ICashflowTransactionTypeMeta { type: string; direction: CASHFLOW_DIRECTION; creditType: string[]; }