mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-16 21:00:31 +00:00
251 lines
6.3 KiB
TypeScript
251 lines
6.3 KiB
TypeScript
import { Transformer } from '@/modules/Transformer/Transformer';
|
|
import { Bill } from '../models/Bill';
|
|
import { ItemEntryTransformer } from '@/modules/TransactionItemEntry/ItemEntry.transformer';
|
|
import { AttachmentTransformer } from '@/modules/Attachments/Attachment.transformer';
|
|
|
|
export class BillTransformer extends Transformer {
|
|
/**
|
|
* Include these attributes to sale bill object.
|
|
* @returns {Array}
|
|
*/
|
|
public includeAttributes = (): string[] => {
|
|
return [
|
|
'formattedBillDate',
|
|
'formattedDueDate',
|
|
'formattedCreatedAt',
|
|
'formattedAmount',
|
|
'formattedPaymentAmount',
|
|
'formattedBalance',
|
|
'formattedDueAmount',
|
|
'formattedExchangeRate',
|
|
'subtotalFormatted',
|
|
'subtotalLocalFormatted',
|
|
'subtotalExcludingTaxFormatted',
|
|
'taxAmountWithheldLocalFormatted',
|
|
'discountAmountFormatted',
|
|
'discountPercentageFormatted',
|
|
'adjustmentFormatted',
|
|
'totalFormatted',
|
|
'totalLocalFormatted',
|
|
'taxes',
|
|
'entries',
|
|
'attachments',
|
|
];
|
|
};
|
|
|
|
/**
|
|
* Excluded attributes.
|
|
* @returns {string[]}
|
|
*/
|
|
public excludeAttributes = (): string[] => {
|
|
return ['amount', 'amountLocal', 'localAmount'];
|
|
};
|
|
|
|
/**
|
|
* Retrieve formatted bill date.
|
|
* @param {IBill} bill
|
|
* @returns {String}
|
|
*/
|
|
protected formattedBillDate = (bill: Bill): string => {
|
|
return this.formatDate(bill.billDate);
|
|
};
|
|
|
|
/**
|
|
* Retrieve formatted bill date.
|
|
* @param {IBill} bill
|
|
* @returns {String}
|
|
*/
|
|
protected formattedDueDate = (bill: Bill): string => {
|
|
return this.formatDate(bill.dueDate);
|
|
};
|
|
|
|
/**
|
|
* Retrieve the formatted created at date.
|
|
* @param {IBill} bill
|
|
* @returns {string}
|
|
*/
|
|
protected formattedCreatedAt = (bill: Bill): string => {
|
|
return this.formatDate(bill.createdAt);
|
|
};
|
|
|
|
/**
|
|
* Retrieve formatted bill amount.
|
|
* @param {IBill} bill
|
|
* @returns {string}
|
|
*/
|
|
protected formattedAmount = (bill: Bill): string => {
|
|
return this.formatNumber(bill.amount, { currencyCode: bill.currencyCode });
|
|
};
|
|
|
|
/**
|
|
* Retrieve formatted bill amount.
|
|
* @param {IBill} bill
|
|
* @returns {string}
|
|
*/
|
|
protected formattedPaymentAmount = (bill: Bill): string => {
|
|
return this.formatNumber(bill.paymentAmount, {
|
|
currencyCode: bill.currencyCode,
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Retrieve formatted bill amount.
|
|
* @param {IBill} bill
|
|
* @returns {string}
|
|
*/
|
|
protected formattedDueAmount = (bill: Bill): string => {
|
|
return this.formatNumber(bill.dueAmount, {
|
|
currencyCode: bill.currencyCode,
|
|
money: true,
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Retrieve formatted bill balance.
|
|
* @param {IBill} bill
|
|
* @returns {string}
|
|
*/
|
|
protected formattedBalance = (bill: Bill): string => {
|
|
return this.formatNumber(bill.balance, { currencyCode: bill.currencyCode });
|
|
};
|
|
|
|
/**
|
|
* Retrieve the formatted exchange rate.
|
|
* @param {IBill} bill
|
|
* @returns {string}
|
|
*/
|
|
protected formattedExchangeRate = (bill: Bill): string => {
|
|
return this.formatNumber(bill.exchangeRate, {
|
|
currencyCode: this.context.organization.baseCurrency,
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Retrieves the formatted subtotal.
|
|
* @param {IBill} bill
|
|
* @returns {string}
|
|
*/
|
|
protected subtotalFormatted = (bill: Bill): string => {
|
|
return this.formatNumber(bill.subtotal, {
|
|
currencyCode: bill.currencyCode,
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Retrieves the local subtotal formatted.
|
|
* @param {IBill} bill
|
|
* @returns {string}
|
|
*/
|
|
protected subtotalLocalFormatted = (bill: Bill): string => {
|
|
return this.formatNumber(bill.subtotalLocal, {
|
|
currencyCode: this.context.organization.baseCurrency,
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Retrieves the formatted subtotal tax excluded.
|
|
* @param {IBill} bill
|
|
* @returns {string}
|
|
*/
|
|
protected subtotalExcludingTaxFormatted = (bill: Bill): string => {
|
|
return this.formatNumber(bill.subtotalExcludingTax, {
|
|
currencyCode: bill.currencyCode,
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Retrieves the local formatted tax amount withheld
|
|
* @param {IBill} bill
|
|
* @returns {string}
|
|
*/
|
|
protected taxAmountWithheldLocalFormatted = (bill: Bill): string => {
|
|
return this.formatNumber(bill.taxAmountWithheldLocal, {
|
|
currencyCode: this.context.organization.baseCurrency,
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Retrieves the total formatted.
|
|
* @param {IBill} bill
|
|
* @returns {string}
|
|
*/
|
|
protected totalFormatted = (bill: Bill): string => {
|
|
return this.formatNumber(bill.total, {
|
|
currencyCode: bill.currencyCode,
|
|
money: true,
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Retrieves the local total formatted.
|
|
* @param {IBill} bill
|
|
* @returns {string}
|
|
*/
|
|
protected totalLocalFormatted = (bill: Bill): string => {
|
|
return this.formatNumber(bill.totalLocal, {
|
|
currencyCode: this.context.organization.baseCurrency,
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Retrieves the formatted discount amount.
|
|
* @param {IBill} bill
|
|
* @returns {string}
|
|
*/
|
|
protected discountAmountFormatted = (bill: Bill): string => {
|
|
return this.formatNumber(bill.discountAmount, {
|
|
currencyCode: bill.currencyCode,
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Retrieves the formatted discount percentage.
|
|
* @param {IBill} bill
|
|
* @returns {string}
|
|
*/
|
|
protected discountPercentageFormatted = (bill: Bill): string => {
|
|
return bill.discountPercentage ? `${bill.discountPercentage}%` : '';
|
|
};
|
|
|
|
/**
|
|
* Retrieves the formatted adjustment amount.
|
|
* @param {IBill} bill
|
|
* @returns {string}
|
|
*/
|
|
protected adjustmentFormatted = (bill: Bill): string => {
|
|
return this.formatNumber(bill.adjustment, {
|
|
currencyCode: bill.currencyCode,
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Retrieve the taxes lines of bill.
|
|
* @param {Bill} bill
|
|
*/
|
|
// protected taxes = (bill: Bill) => {
|
|
// return this.item(bill.taxes, new SaleInvoiceTaxEntryTransformer(), {
|
|
// subtotal: bill.subtotal,
|
|
// isInclusiveTax: bill.isInclusiveTax,
|
|
// currencyCode: bill.currencyCode,
|
|
// });
|
|
// };
|
|
|
|
/**
|
|
* Retrieves the entries of the bill.
|
|
* @param {Bill} credit
|
|
*/
|
|
protected entries = (bill: Bill) => {
|
|
return this.item(bill.entries, new ItemEntryTransformer(), {
|
|
currencyCode: bill.currencyCode,
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Retrieves the bill attachments.
|
|
* @param {Bill} bill
|
|
*/
|
|
protected attachments = (bill: Bill) => {
|
|
return this.item(bill.attachments, new AttachmentTransformer());
|
|
};
|
|
}
|