mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-17 21:30:31 +00:00
82 lines
2.4 KiB
TypeScript
82 lines
2.4 KiB
TypeScript
import {
|
|
IAccount,
|
|
IAccountTransaction,
|
|
INumberFormatQuery,
|
|
ITransactionsByReferenceQuery,
|
|
ITransactionsByReferenceTransaction,
|
|
} from '@/interfaces';
|
|
import FinancialSheet from '../FinancialSheet';
|
|
|
|
export default class TransactionsByReference extends FinancialSheet {
|
|
readonly transactions: IAccountTransaction[];
|
|
readonly query: ITransactionsByReferenceQuery;
|
|
readonly baseCurrency: string;
|
|
readonly numberFormat: INumberFormatQuery;
|
|
|
|
/**
|
|
* Constructor method.
|
|
* @param {IAccountTransaction[]} transactions
|
|
* @param {ITransactionsByReferenceQuery} query
|
|
* @param {string} baseCurrency
|
|
*/
|
|
constructor(
|
|
transactions: (IAccountTransaction & { account: IAccount }) [],
|
|
query: ITransactionsByReferenceQuery,
|
|
baseCurrency: string
|
|
) {
|
|
super();
|
|
|
|
this.transactions = transactions;
|
|
this.query = query;
|
|
this.baseCurrency = baseCurrency;
|
|
this.numberFormat = this.query.numberFormat;
|
|
}
|
|
|
|
/**
|
|
* Mappes the given account transaction to report transaction.
|
|
* @param {IAccountTransaction} transaction
|
|
* @returns {ITransactionsByReferenceTransaction}
|
|
*/
|
|
private transactionMapper = (
|
|
transaction: IAccountTransaction
|
|
): ITransactionsByReferenceTransaction => {
|
|
return {
|
|
date: this.getDateMeta(transaction.date),
|
|
|
|
credit: this.getAmountMeta(transaction.credit, { money: false }),
|
|
debit: this.getAmountMeta(transaction.debit, { money: false }),
|
|
|
|
referenceTypeFormatted: transaction.referenceTypeFormatted,
|
|
referenceType: transaction.referenceType,
|
|
referenceId: transaction.referenceId,
|
|
|
|
contactId: transaction.contactId,
|
|
contactType: transaction.contactType,
|
|
contactTypeFormatted: transaction.contactType,
|
|
|
|
accountName: transaction.account.name,
|
|
accountCode: transaction.account.code,
|
|
accountId: transaction.accountId,
|
|
};
|
|
};
|
|
|
|
/**
|
|
* Mappes the given accounts transactions to report transactions.
|
|
* @param {IAccountTransaction} transaction
|
|
* @returns {ITransactionsByReferenceTransaction}
|
|
*/
|
|
private transactionsMapper = (
|
|
transactions: IAccountTransaction[]
|
|
): ITransactionsByReferenceTransaction[] => {
|
|
return transactions.map(this.transactionMapper);
|
|
};
|
|
|
|
/**
|
|
* Retrieve the report data.
|
|
* @returns {ITransactionsByReferenceTransaction}
|
|
*/
|
|
public reportData(): ITransactionsByReferenceTransaction[] {
|
|
return this.transactionsMapper(this.transactions);
|
|
}
|
|
}
|