From fb70c9446523e48ae72cac2b149ef88ceb02f65a Mon Sep 17 00:00:00 2001 From: Ahmed Bouhuolia Date: Mon, 4 Dec 2023 08:21:06 +0200 Subject: [PATCH] fix(server): add formatted values to responses transformers --- .../CreditNotes/CreditNoteTransformer.ts | 18 ++++++++- .../BillPaymentEntryTransformer.ts | 20 ++++++++++ .../BillPayments/BillPaymentTransformer.ts | 10 ++++- .../Bills/PurchaseInvoiceTransformer.ts | 13 +++++++ .../VendorCredits/VendorCreditTransformer.ts | 16 +++++++- .../Estimates/SaleEstimateTransformer.ts | 14 ++++++- .../Sales/Invoices/ItemEntryTransformer.ts | 37 +++++++++++++++++++ .../Sales/Invoices/SaleInvoiceTransformer.ts | 14 +++++++ .../GetPaymentReceiveInvoices.ts | 2 +- .../PaymentReceiveEntryTransformer.ts | 29 +++++++++++++++ .../PaymentReceiveTransformer.ts | 10 ++--- .../Sales/Receipts/SaleReceiptTransformer.ts | 19 +++++++++- 12 files changed, 189 insertions(+), 13 deletions(-) create mode 100644 packages/server/src/services/Purchases/BillPayments/BillPaymentEntryTransformer.ts create mode 100644 packages/server/src/services/Sales/Invoices/ItemEntryTransformer.ts create mode 100644 packages/server/src/services/Sales/PaymentReceives/PaymentReceiveEntryTransformer.ts diff --git a/packages/server/src/services/CreditNotes/CreditNoteTransformer.ts b/packages/server/src/services/CreditNotes/CreditNoteTransformer.ts index 79d731ce3..f532c2eab 100644 --- a/packages/server/src/services/CreditNotes/CreditNoteTransformer.ts +++ b/packages/server/src/services/CreditNotes/CreditNoteTransformer.ts @@ -1,5 +1,7 @@ import { Transformer } from '@/lib/Transformer/Transformer'; import { formatNumber } from 'utils'; +import { ItemEntryTransformer } from '../Sales/Invoices/ItemEntryTransformer'; +import { ICreditNote } from '@/interfaces'; export class CreditNoteTransformer extends Transformer { /** @@ -11,7 +13,8 @@ export class CreditNoteTransformer extends Transformer { 'formattedCreditsRemaining', 'formattedCreditNoteDate', 'formattedAmount', - 'formattedCreditsUsed' + 'formattedCreditsUsed', + 'entries', ]; }; @@ -51,9 +54,20 @@ export class CreditNoteTransformer extends Transformer { * @param {ICreditNote} credit * @returns {string} */ - protected formattedCreditsUsed = (credit) => { + protected formattedCreditsUsed = (credit) => { return formatNumber(credit.creditsUsed, { 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, + }); + }; } diff --git a/packages/server/src/services/Purchases/BillPayments/BillPaymentEntryTransformer.ts b/packages/server/src/services/Purchases/BillPayments/BillPaymentEntryTransformer.ts new file mode 100644 index 000000000..19dcbacb5 --- /dev/null +++ b/packages/server/src/services/Purchases/BillPayments/BillPaymentEntryTransformer.ts @@ -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 }); + } +} diff --git a/packages/server/src/services/Purchases/BillPayments/BillPaymentTransformer.ts b/packages/server/src/services/Purchases/BillPayments/BillPaymentTransformer.ts index 4345f028b..a6662dc2d 100644 --- a/packages/server/src/services/Purchases/BillPayments/BillPaymentTransformer.ts +++ b/packages/server/src/services/Purchases/BillPayments/BillPaymentTransformer.ts @@ -1,6 +1,7 @@ import { IBillPayment } from '@/interfaces'; import { Transformer } from '@/lib/Transformer/Transformer'; import { formatNumber } from 'utils'; +import { BillPaymentEntryTransformer } from './BillPaymentEntryTransformer'; export class BillPaymentTransformer extends Transformer { /** @@ -8,7 +9,7 @@ export class BillPaymentTransformer extends Transformer { * @returns {Array} */ public includeAttributes = (): string[] => { - return ['formattedPaymentDate', 'formattedAmount']; + return ['formattedPaymentDate', 'formattedAmount', 'entries']; }; /** @@ -30,4 +31,11 @@ export class BillPaymentTransformer extends Transformer { currencyCode: billPayment.currencyCode, }); }; + + /** + * Retreives the bill payment entries. + */ + protected entries = (billPayment) => { + return this.item(billPayment.entries, new BillPaymentEntryTransformer()); + }; } diff --git a/packages/server/src/services/Purchases/Bills/PurchaseInvoiceTransformer.ts b/packages/server/src/services/Purchases/Bills/PurchaseInvoiceTransformer.ts index 07d3a78d6..4ec163d8b 100644 --- a/packages/server/src/services/Purchases/Bills/PurchaseInvoiceTransformer.ts +++ b/packages/server/src/services/Purchases/Bills/PurchaseInvoiceTransformer.ts @@ -1,5 +1,6 @@ import { IBill } from '@/interfaces'; import { Transformer } from '@/lib/Transformer/Transformer'; +import { ItemEntryTransformer } from '@/services/Sales/Invoices/ItemEntryTransformer'; import { SaleInvoiceTaxEntryTransformer } from '@/services/Sales/Invoices/SaleInvoiceTaxEntryTransformer'; import { formatNumber } from 'utils'; @@ -23,6 +24,7 @@ export class PurchaseInvoiceTransformer extends Transformer { 'totalFormatted', 'totalLocalFormatted', 'taxes', + 'entries', ]; }; @@ -178,4 +180,15 @@ export class PurchaseInvoiceTransformer extends Transformer { 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, + }); + }; } diff --git a/packages/server/src/services/Purchases/VendorCredits/VendorCreditTransformer.ts b/packages/server/src/services/Purchases/VendorCredits/VendorCreditTransformer.ts index f4d75409e..3d74ee770 100644 --- a/packages/server/src/services/Purchases/VendorCredits/VendorCreditTransformer.ts +++ b/packages/server/src/services/Purchases/VendorCredits/VendorCreditTransformer.ts @@ -1,4 +1,6 @@ +import { IVendorCredit } from '@/interfaces'; import { Transformer } from '@/lib/Transformer/Transformer'; +import { ItemEntryTransformer } from '@/services/Sales/Invoices/ItemEntryTransformer'; import { formatNumber } from 'utils'; export class VendorCreditTransformer extends Transformer { @@ -8,9 +10,10 @@ export class VendorCreditTransformer extends Transformer { */ public includeAttributes = (): string[] => { return [ - 'formattedVendorCreditDate', 'formattedAmount', + 'formattedVendorCreditDate', 'formattedCreditsRemaining', + 'entries', ]; }; @@ -44,4 +47,15 @@ export class VendorCreditTransformer extends Transformer { 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, + }); + }; } diff --git a/packages/server/src/services/Sales/Estimates/SaleEstimateTransformer.ts b/packages/server/src/services/Sales/Estimates/SaleEstimateTransformer.ts index 770a13c3c..1102f7bd0 100644 --- a/packages/server/src/services/Sales/Estimates/SaleEstimateTransformer.ts +++ b/packages/server/src/services/Sales/Estimates/SaleEstimateTransformer.ts @@ -1,7 +1,7 @@ -import { Service } from 'typedi'; import { ISaleEstimate } from '@/interfaces'; import { Transformer } from '@/lib/Transformer/Transformer'; import { formatNumber } from 'utils'; +import { ItemEntryTransformer } from '../Invoices/ItemEntryTransformer'; export class SaleEstimateTransfromer extends Transformer { /** @@ -16,6 +16,7 @@ export class SaleEstimateTransfromer extends Transformer { 'formattedDeliveredAtDate', 'formattedApprovedAtDate', 'formattedRejectedAtDate', + 'entries', ]; }; @@ -74,4 +75,15 @@ export class SaleEstimateTransfromer extends Transformer { 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, + }); + }; } diff --git a/packages/server/src/services/Sales/Invoices/ItemEntryTransformer.ts b/packages/server/src/services/Sales/Invoices/ItemEntryTransformer.ts new file mode 100644 index 000000000..ad0d88525 --- /dev/null +++ b/packages/server/src/services/Sales/Invoices/ItemEntryTransformer.ts @@ -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, + }); + }; +} diff --git a/packages/server/src/services/Sales/Invoices/SaleInvoiceTransformer.ts b/packages/server/src/services/Sales/Invoices/SaleInvoiceTransformer.ts index 979b312a9..878160b96 100644 --- a/packages/server/src/services/Sales/Invoices/SaleInvoiceTransformer.ts +++ b/packages/server/src/services/Sales/Invoices/SaleInvoiceTransformer.ts @@ -1,6 +1,7 @@ import { Transformer } from '@/lib/Transformer/Transformer'; import { formatNumber } from 'utils'; import { SaleInvoiceTaxEntryTransformer } from './SaleInvoiceTaxEntryTransformer'; +import { ItemEntryTransformer } from './ItemEntryTransformer'; export class SaleInvoiceTransformer extends Transformer { /** @@ -23,6 +24,7 @@ export class SaleInvoiceTransformer extends Transformer { 'totalFormatted', 'totalLocalFormatted', 'taxes', + 'entries', ]; }; @@ -95,6 +97,7 @@ export class SaleInvoiceTransformer extends Transformer { protected subtotalFormatted = (invoice): string => { return formatNumber(invoice.subtotal, { currencyCode: this.context.organization.baseCurrency, + money: false, }); }; @@ -176,4 +179,15 @@ export class SaleInvoiceTransformer extends Transformer { 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, + }); + }; } diff --git a/packages/server/src/services/Sales/PaymentReceives/GetPaymentReceiveInvoices.ts b/packages/server/src/services/Sales/PaymentReceives/GetPaymentReceiveInvoices.ts index 48629770c..901c6b492 100644 --- a/packages/server/src/services/Sales/PaymentReceives/GetPaymentReceiveInvoices.ts +++ b/packages/server/src/services/Sales/PaymentReceives/GetPaymentReceiveInvoices.ts @@ -1,5 +1,5 @@ -import HasTenancyService from '@/services/Tenancy/TenancyService'; import { Inject, Service } from 'typedi'; +import HasTenancyService from '@/services/Tenancy/TenancyService'; import { PaymentReceiveValidators } from './PaymentReceiveValidators'; @Service() diff --git a/packages/server/src/services/Sales/PaymentReceives/PaymentReceiveEntryTransformer.ts b/packages/server/src/services/Sales/PaymentReceives/PaymentReceiveEntryTransformer.ts new file mode 100644 index 000000000..fe9fe9b67 --- /dev/null +++ b/packages/server/src/services/Sales/PaymentReceives/PaymentReceiveEntryTransformer.ts @@ -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()); + } +} diff --git a/packages/server/src/services/Sales/PaymentReceives/PaymentReceiveTransformer.ts b/packages/server/src/services/Sales/PaymentReceives/PaymentReceiveTransformer.ts index 0cb45a973..afce4203b 100644 --- a/packages/server/src/services/Sales/PaymentReceives/PaymentReceiveTransformer.ts +++ b/packages/server/src/services/Sales/PaymentReceives/PaymentReceiveTransformer.ts @@ -2,6 +2,7 @@ import { IPaymentReceive, IPaymentReceiveEntry } from '@/interfaces'; import { Transformer } from '@/lib/Transformer/Transformer'; import { formatNumber } from 'utils'; import { SaleInvoiceTransformer } from '../Invoices/SaleInvoiceTransformer'; +import { PaymentReceiveEntryTransfromer } from './PaymentReceiveEntryTransformer'; export class PaymentReceiveTransfromer extends Transformer { /** @@ -45,14 +46,11 @@ export class PaymentReceiveTransfromer extends Transformer { }; /** - * Retrieves the - * @param {IPaymentReceive} payment + * Retrieves the payment entries. + * @param {IPaymentReceive} payment * @returns {IPaymentReceiveEntry[]} */ protected entries = (payment: IPaymentReceive): IPaymentReceiveEntry[] => { - return payment?.entries?.map((entry) => ({ - ...entry, - invoice: this.item(entry.invoice, new SaleInvoiceTransformer()), - })); + return this.item(payment.entries, new PaymentReceiveEntryTransfromer()); }; } diff --git a/packages/server/src/services/Sales/Receipts/SaleReceiptTransformer.ts b/packages/server/src/services/Sales/Receipts/SaleReceiptTransformer.ts index 0469adfa0..c8b950711 100644 --- a/packages/server/src/services/Sales/Receipts/SaleReceiptTransformer.ts +++ b/packages/server/src/services/Sales/Receipts/SaleReceiptTransformer.ts @@ -2,6 +2,7 @@ import { Service } from 'typedi'; import { ISaleReceipt } from '@/interfaces'; import { Transformer } from '@/lib/Transformer/Transformer'; import { formatNumber } from 'utils'; +import { ItemEntryTransformer } from '../Invoices/ItemEntryTransformer'; @Service() export class SaleReceiptTransformer extends Transformer { @@ -10,7 +11,12 @@ export class SaleReceiptTransformer extends Transformer { * @returns {Array} */ public includeAttributes = (): string[] => { - return ['formattedAmount', 'formattedReceiptDate', 'formattedClosedAtDate']; + return [ + 'formattedAmount', + 'formattedReceiptDate', + 'formattedClosedAtDate', + 'entries', + ]; }; /** @@ -41,4 +47,15 @@ export class SaleReceiptTransformer extends Transformer { 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, + }); + }; }