@accounter/server
Version:
Accounter GraphQL server
28 lines (26 loc) • 1.26 kB
text/typescript
import { AdminContext } from '../../admin-context/types.js';
import type { IGetTransactionsByChargeIdsResult } from '../../transactions/types.js';
import { splitFeeTransactions } from './fee-transactions.js';
export function splitDividendTransactions(
transactions: Array<IGetTransactionsByChargeIdsResult>,
dividends: AdminContext['dividends'],
) {
const { dividendWithholdingTaxBusinessId, dividendPaymentBusinessIds } = dividends;
if (!dividendWithholdingTaxBusinessId) {
throw new Error('Dividend withholding tax business ID is not set');
}
const { mainTransactions, feeTransactions } = splitFeeTransactions(transactions);
const withholdingTaxTransactions = [];
const paymentsTransactions = [];
const errors: string[] = [];
for (const transaction of mainTransactions) {
if (transaction.business_id === dividendWithholdingTaxBusinessId) {
withholdingTaxTransactions.push(transaction);
} else if (dividendPaymentBusinessIds.includes(transaction.business_id as string)) {
paymentsTransactions.push(transaction);
} else {
errors.push(`Transaction ID: ${transaction.id} is not a dividend transaction`);
}
}
return { withholdingTaxTransactions, paymentsTransactions, feeTransactions, errors };
}