UNPKG

@accounter/server

Version:

The test suite is split into three Vitest projects for efficiency and isolation:

67 lines 2.92 kB
import { TaxCategoriesProvider } from '../../financial-entities/providers/tax-categories.provider.js'; import { TransactionsProvider } from '../../transactions/providers/transactions.provider.js'; import { FinancialAccountsProvider } from '../providers/financial-accounts.provider.js'; function getPrivateOrBusinessType(privateOrBusiness) { switch (privateOrBusiness) { case 'PRIVATE': return 'PRIVATE'; case 'BUSINESS': return 'BUSINESS'; default: throw new Error(`Unknown privateOrBusiness type: ${privateOrBusiness}`); } } export const commonFinancialAccountFields = { id: DbAccount => DbAccount.id, type: DbAccount => DbAccount.type, number: DbAccount => DbAccount.account_number, privateOrBusiness: DbAccount => getPrivateOrBusinessType(DbAccount.private_business), accountTaxCategories: async (DbAccount, _, { injector }) => { const taxCategories = await injector .get(TaxCategoriesProvider) .taxCategoryByFinancialAccountIdsLoader.load(DbAccount.id) .then(categories => { return categories.map(category => ({ id: `${DbAccount.id}-${category.currency}`, currency: category.currency, taxCategory: category, })); }); return taxCategories; }, }; export const commonTransactionFields = { account: async (transactionId, _, { injector, adminContext: { defaultAdminBusinessId, foreignSecurities: { foreignSecuritiesBusinessId }, }, }) => { const transaction = await injector .get(TransactionsProvider) .transactionByIdLoader.load(transactionId); if (!transaction.account_id) { throw new Error(`Transaction ID="${transactionId}" is missing account_id`); } let account = undefined; if (!!foreignSecuritiesBusinessId && transaction.business_id === foreignSecuritiesBusinessId) { const accounts = await injector .get(FinancialAccountsProvider) .getFinancialAccountsByOwnerIdLoader.load(defaultAdminBusinessId); account = accounts.find(account => account.type === 'FOREIGN_SECURITIES'); } else { account = await injector .get(FinancialAccountsProvider) .getFinancialAccountByAccountIDLoader.load(transaction.account_id); } if (!account) { throw new Error(`Account ID "${transaction.account_id}" is missing`); } return account; }, }; export const commonFinancialEntityFields = { accounts: async (DbBusiness, _, { injector }) => { const accounts = await injector .get(FinancialAccountsProvider) .getFinancialAccountsByOwnerIdLoader.load(DbBusiness.id); return accounts; }, }; //# sourceMappingURL=common.js.map