fix(server): add formatted values to responses transformers

This commit is contained in:
Ahmed Bouhuolia
2023-12-04 08:21:06 +02:00
parent 0f39cfb3af
commit fb70c94465
12 changed files with 189 additions and 13 deletions

View File

@@ -1,5 +1,7 @@
import { Transformer } from '@/lib/Transformer/Transformer'; import { Transformer } from '@/lib/Transformer/Transformer';
import { formatNumber } from 'utils'; import { formatNumber } from 'utils';
import { ItemEntryTransformer } from '../Sales/Invoices/ItemEntryTransformer';
import { ICreditNote } from '@/interfaces';
export class CreditNoteTransformer extends Transformer { export class CreditNoteTransformer extends Transformer {
/** /**
@@ -11,7 +13,8 @@ export class CreditNoteTransformer extends Transformer {
'formattedCreditsRemaining', 'formattedCreditsRemaining',
'formattedCreditNoteDate', 'formattedCreditNoteDate',
'formattedAmount', 'formattedAmount',
'formattedCreditsUsed' 'formattedCreditsUsed',
'entries',
]; ];
}; };
@@ -51,9 +54,20 @@ export class CreditNoteTransformer extends Transformer {
* @param {ICreditNote} credit * @param {ICreditNote} credit
* @returns {string} * @returns {string}
*/ */
protected formattedCreditsUsed = (credit) => { protected formattedCreditsUsed = (credit) => {
return formatNumber(credit.creditsUsed, { return formatNumber(credit.creditsUsed, {
currencyCode: credit.currencyCode, currencyCode: credit.currencyCode,
}); });
}; };
/**
* Retrieves the entries of the credit note.
* @param {ICreditNote} credit
* @returns {}
*/
protected entries = (credit) => {
return this.item(credit.entries, new ItemEntryTransformer(), {
currencyCode: credit.currencyCode,
});
};
} }

View File

@@ -0,0 +1,20 @@
import { Transformer } from '@/lib/Transformer/Transformer';
import { formatNumber } from '@/utils';
export class BillPaymentEntryTransformer extends Transformer {
/**
* Include these attributes to bill payment object.
* @returns {Array}
*/
public includeAttributes = (): string[] => {
return ['paymentAmountFormatted'];
};
/**
* Retreives the payment amount formatted.
* @returns {string}
*/
protected paymentAmountFormatted(entry) {
return formatNumber(entry.paymentAmount, { money: false });
}
}

View File

@@ -1,6 +1,7 @@
import { IBillPayment } from '@/interfaces'; import { IBillPayment } from '@/interfaces';
import { Transformer } from '@/lib/Transformer/Transformer'; import { Transformer } from '@/lib/Transformer/Transformer';
import { formatNumber } from 'utils'; import { formatNumber } from 'utils';
import { BillPaymentEntryTransformer } from './BillPaymentEntryTransformer';
export class BillPaymentTransformer extends Transformer { export class BillPaymentTransformer extends Transformer {
/** /**
@@ -8,7 +9,7 @@ export class BillPaymentTransformer extends Transformer {
* @returns {Array} * @returns {Array}
*/ */
public includeAttributes = (): string[] => { public includeAttributes = (): string[] => {
return ['formattedPaymentDate', 'formattedAmount']; return ['formattedPaymentDate', 'formattedAmount', 'entries'];
}; };
/** /**
@@ -30,4 +31,11 @@ export class BillPaymentTransformer extends Transformer {
currencyCode: billPayment.currencyCode, currencyCode: billPayment.currencyCode,
}); });
}; };
/**
* Retreives the bill payment entries.
*/
protected entries = (billPayment) => {
return this.item(billPayment.entries, new BillPaymentEntryTransformer());
};
} }

View File

@@ -1,5 +1,6 @@
import { IBill } from '@/interfaces'; import { IBill } from '@/interfaces';
import { Transformer } from '@/lib/Transformer/Transformer'; import { Transformer } from '@/lib/Transformer/Transformer';
import { ItemEntryTransformer } from '@/services/Sales/Invoices/ItemEntryTransformer';
import { SaleInvoiceTaxEntryTransformer } from '@/services/Sales/Invoices/SaleInvoiceTaxEntryTransformer'; import { SaleInvoiceTaxEntryTransformer } from '@/services/Sales/Invoices/SaleInvoiceTaxEntryTransformer';
import { formatNumber } from 'utils'; import { formatNumber } from 'utils';
@@ -23,6 +24,7 @@ export class PurchaseInvoiceTransformer extends Transformer {
'totalFormatted', 'totalFormatted',
'totalLocalFormatted', 'totalLocalFormatted',
'taxes', 'taxes',
'entries',
]; ];
}; };
@@ -178,4 +180,15 @@ export class PurchaseInvoiceTransformer extends Transformer {
currencyCode: bill.currencyCode, currencyCode: bill.currencyCode,
}); });
}; };
/**
* Retrieves the entries of the bill.
* @param {Bill} credit
* @returns {}
*/
protected entries = (bill) => {
return this.item(bill.entries, new ItemEntryTransformer(), {
currencyCode: bill.currencyCode,
});
};
} }

View File

@@ -1,4 +1,6 @@
import { IVendorCredit } from '@/interfaces';
import { Transformer } from '@/lib/Transformer/Transformer'; import { Transformer } from '@/lib/Transformer/Transformer';
import { ItemEntryTransformer } from '@/services/Sales/Invoices/ItemEntryTransformer';
import { formatNumber } from 'utils'; import { formatNumber } from 'utils';
export class VendorCreditTransformer extends Transformer { export class VendorCreditTransformer extends Transformer {
@@ -8,9 +10,10 @@ export class VendorCreditTransformer extends Transformer {
*/ */
public includeAttributes = (): string[] => { public includeAttributes = (): string[] => {
return [ return [
'formattedVendorCreditDate',
'formattedAmount', 'formattedAmount',
'formattedVendorCreditDate',
'formattedCreditsRemaining', 'formattedCreditsRemaining',
'entries',
]; ];
}; };
@@ -44,4 +47,15 @@ export class VendorCreditTransformer extends Transformer {
currencyCode: credit.currencyCode, currencyCode: credit.currencyCode,
}); });
}; };
/**
* Retrieves the entries of the bill.
* @param {IVendorCredit} vendorCredit
* @returns {}
*/
protected entries = (vendorCredit) => {
return this.item(vendorCredit.entries, new ItemEntryTransformer(), {
currencyCode: vendorCredit.currencyCode,
});
};
} }

View File

@@ -1,7 +1,7 @@
import { Service } from 'typedi';
import { ISaleEstimate } from '@/interfaces'; import { ISaleEstimate } from '@/interfaces';
import { Transformer } from '@/lib/Transformer/Transformer'; import { Transformer } from '@/lib/Transformer/Transformer';
import { formatNumber } from 'utils'; import { formatNumber } from 'utils';
import { ItemEntryTransformer } from '../Invoices/ItemEntryTransformer';
export class SaleEstimateTransfromer extends Transformer { export class SaleEstimateTransfromer extends Transformer {
/** /**
@@ -16,6 +16,7 @@ export class SaleEstimateTransfromer extends Transformer {
'formattedDeliveredAtDate', 'formattedDeliveredAtDate',
'formattedApprovedAtDate', 'formattedApprovedAtDate',
'formattedRejectedAtDate', 'formattedRejectedAtDate',
'entries',
]; ];
}; };
@@ -74,4 +75,15 @@ export class SaleEstimateTransfromer extends Transformer {
currencyCode: estimate.currencyCode, currencyCode: estimate.currencyCode,
}); });
}; };
/**
* Retrieves the entries of the sale estimate.
* @param {ISaleEstimate} estimate
* @returns {}
*/
protected entries = (estimate) => {
return this.item(estimate.entries, new ItemEntryTransformer(), {
currencyCode: estimate.currencyCode,
});
};
} }

View File

@@ -0,0 +1,37 @@
import { IItemEntry } from '@/interfaces';
import { Transformer } from '@/lib/Transformer/Transformer';
import { formatNumber } from '@/utils';
export class ItemEntryTransformer extends Transformer {
/**
* Include these attributes to item entry object.
* @returns {Array}
*/
public includeAttributes = (): string[] => {
return ['rateFormatted', 'totalFormatted'];
};
/**
* Retrieves the formatted rate of item entry.
* @param {IItemEntry} itemEntry -
* @returns {string}
*/
protected rateFormatted = (entry: IItemEntry): string => {
return formatNumber(entry.rate, {
currencyCode: this.context.currencyCode,
money: false,
});
};
/**
* Retrieves the formatted total of item entry.
* @param {IItemEntry} entry
* @returns {string}
*/
protected totalFormatted = (entry: IItemEntry): string => {
return formatNumber(entry.total, {
currencyCode: this.context.currencyCode,
money: false,
});
};
}

View File

@@ -1,6 +1,7 @@
import { Transformer } from '@/lib/Transformer/Transformer'; import { Transformer } from '@/lib/Transformer/Transformer';
import { formatNumber } from 'utils'; import { formatNumber } from 'utils';
import { SaleInvoiceTaxEntryTransformer } from './SaleInvoiceTaxEntryTransformer'; import { SaleInvoiceTaxEntryTransformer } from './SaleInvoiceTaxEntryTransformer';
import { ItemEntryTransformer } from './ItemEntryTransformer';
export class SaleInvoiceTransformer extends Transformer { export class SaleInvoiceTransformer extends Transformer {
/** /**
@@ -23,6 +24,7 @@ export class SaleInvoiceTransformer extends Transformer {
'totalFormatted', 'totalFormatted',
'totalLocalFormatted', 'totalLocalFormatted',
'taxes', 'taxes',
'entries',
]; ];
}; };
@@ -95,6 +97,7 @@ export class SaleInvoiceTransformer extends Transformer {
protected subtotalFormatted = (invoice): string => { protected subtotalFormatted = (invoice): string => {
return formatNumber(invoice.subtotal, { return formatNumber(invoice.subtotal, {
currencyCode: this.context.organization.baseCurrency, currencyCode: this.context.organization.baseCurrency,
money: false,
}); });
}; };
@@ -176,4 +179,15 @@ export class SaleInvoiceTransformer extends Transformer {
currencyCode: invoice.currencyCode, currencyCode: invoice.currencyCode,
}); });
}; };
/**
* Retrieves the entries of the sale invoice.
* @param {ISaleInvoice} invoice
* @returns {}
*/
protected entries = (invoice) => {
return this.item(invoice.entries, new ItemEntryTransformer(), {
currencyCode: invoice.currencyCode,
});
};
} }

View File

@@ -1,5 +1,5 @@
import HasTenancyService from '@/services/Tenancy/TenancyService';
import { Inject, Service } from 'typedi'; import { Inject, Service } from 'typedi';
import HasTenancyService from '@/services/Tenancy/TenancyService';
import { PaymentReceiveValidators } from './PaymentReceiveValidators'; import { PaymentReceiveValidators } from './PaymentReceiveValidators';
@Service() @Service()

View File

@@ -0,0 +1,29 @@
import { Transformer } from '@/lib/Transformer/Transformer';
import { SaleInvoiceTransformer } from '../Invoices/SaleInvoiceTransformer';
import { formatNumber } from '@/utils';
export class PaymentReceiveEntryTransfromer extends Transformer {
/**
* Include these attributes to payment receive entry object.
* @returns {Array}
*/
public includeAttributes = (): string[] => {
return ['paymentAmountFormatted', 'entry'];
};
/**
* Retreives the payment amount formatted.
* @param entry
* @returns {string}
*/
protected paymentAmountFormatted(entry) {
return formatNumber(entry.paymentAmount, { money: false });
}
/**
* Retreives the transformed invoice.
*/
protected invoice(entry) {
return this.item(entry.invoice, new SaleInvoiceTransformer());
}
}

View File

@@ -2,6 +2,7 @@ import { IPaymentReceive, IPaymentReceiveEntry } from '@/interfaces';
import { Transformer } from '@/lib/Transformer/Transformer'; import { Transformer } from '@/lib/Transformer/Transformer';
import { formatNumber } from 'utils'; import { formatNumber } from 'utils';
import { SaleInvoiceTransformer } from '../Invoices/SaleInvoiceTransformer'; import { SaleInvoiceTransformer } from '../Invoices/SaleInvoiceTransformer';
import { PaymentReceiveEntryTransfromer } from './PaymentReceiveEntryTransformer';
export class PaymentReceiveTransfromer extends Transformer { export class PaymentReceiveTransfromer extends Transformer {
/** /**
@@ -45,14 +46,11 @@ export class PaymentReceiveTransfromer extends Transformer {
}; };
/** /**
* Retrieves the * Retrieves the payment entries.
* @param {IPaymentReceive} payment * @param {IPaymentReceive} payment
* @returns {IPaymentReceiveEntry[]} * @returns {IPaymentReceiveEntry[]}
*/ */
protected entries = (payment: IPaymentReceive): IPaymentReceiveEntry[] => { protected entries = (payment: IPaymentReceive): IPaymentReceiveEntry[] => {
return payment?.entries?.map((entry) => ({ return this.item(payment.entries, new PaymentReceiveEntryTransfromer());
...entry,
invoice: this.item(entry.invoice, new SaleInvoiceTransformer()),
}));
}; };
} }

View File

@@ -2,6 +2,7 @@ import { Service } from 'typedi';
import { ISaleReceipt } from '@/interfaces'; import { ISaleReceipt } from '@/interfaces';
import { Transformer } from '@/lib/Transformer/Transformer'; import { Transformer } from '@/lib/Transformer/Transformer';
import { formatNumber } from 'utils'; import { formatNumber } from 'utils';
import { ItemEntryTransformer } from '../Invoices/ItemEntryTransformer';
@Service() @Service()
export class SaleReceiptTransformer extends Transformer { export class SaleReceiptTransformer extends Transformer {
@@ -10,7 +11,12 @@ export class SaleReceiptTransformer extends Transformer {
* @returns {Array} * @returns {Array}
*/ */
public includeAttributes = (): string[] => { public includeAttributes = (): string[] => {
return ['formattedAmount', 'formattedReceiptDate', 'formattedClosedAtDate']; return [
'formattedAmount',
'formattedReceiptDate',
'formattedClosedAtDate',
'entries',
];
}; };
/** /**
@@ -41,4 +47,15 @@ export class SaleReceiptTransformer extends Transformer {
currencyCode: receipt.currencyCode, currencyCode: receipt.currencyCode,
}); });
}; };
/**
* Retrieves the entries of the credit note.
* @param {ISaleReceipt} credit
* @returns {}
*/
protected entries = (receipt) => {
return this.item(receipt.entries, new ItemEntryTransformer(), {
currencyCode: receipt.currencyCode,
});
};
} }