From d640dc1f40dc7c4e6a5384eb300fe4884327eb30 Mon Sep 17 00:00:00 2001 From: Ahmed Bouhuolia Date: Thu, 12 Dec 2024 12:49:52 +0200 Subject: [PATCH] feat: add totalExcludingTax property and update GL entry calculations --- packages/server/src/interfaces/ItemEntry.ts | 2 ++ packages/server/src/models/ItemEntry.ts | 8 ++++++++ .../src/services/CreditNotes/CreditNoteGLEntries.ts | 4 ++-- .../src/services/Purchases/Bills/BillGLEntries.ts | 5 ++--- .../Purchases/VendorCredits/VendorCreditGLEntries.ts | 4 ++-- .../src/services/Sales/Invoices/InvoiceGLEntries.ts | 2 +- .../services/Sales/Receipts/SaleReceiptGLEntries.ts | 12 ++++++------ .../src/components/ReceiptPaperTemplate.tsx | 1 + 8 files changed, 24 insertions(+), 14 deletions(-) diff --git a/packages/server/src/interfaces/ItemEntry.ts b/packages/server/src/interfaces/ItemEntry.ts index e26b8cdba..a2693ab5c 100644 --- a/packages/server/src/interfaces/ItemEntry.ts +++ b/packages/server/src/interfaces/ItemEntry.ts @@ -20,6 +20,8 @@ export interface IItemEntry { amount: number; total: number; + totalExcludingTax?: number; + subtotalInclusingTax: number; subtotalExcludingTax: number; discountAmount: number; diff --git a/packages/server/src/models/ItemEntry.ts b/packages/server/src/models/ItemEntry.ts index 4df047cd3..3152779ce 100644 --- a/packages/server/src/models/ItemEntry.ts +++ b/packages/server/src/models/ItemEntry.ts @@ -68,6 +68,14 @@ export default class ItemEntry extends TenantModel { return this.subtotal - this.discountAmount; } + /** + * Total (excluding tax). + * @returns {number} + */ + get totalExcludingTax() { + return this.subtotalExcludingTax - this.discountAmount; + } + /** * Item entry amount. * Amount of item entry that may include or exclude tax. diff --git a/packages/server/src/services/CreditNotes/CreditNoteGLEntries.ts b/packages/server/src/services/CreditNotes/CreditNoteGLEntries.ts index 08734d37a..78bf7884f 100644 --- a/packages/server/src/services/CreditNotes/CreditNoteGLEntries.ts +++ b/packages/server/src/services/CreditNotes/CreditNoteGLEntries.ts @@ -210,11 +210,11 @@ export default class CreditNoteGLEntries { index: number ): ILedgerEntry => { const commonEntry = this.getCreditNoteCommonEntry(creditNote); - const localAmount = entry.amount * creditNote.exchangeRate; + const totalLocal = entry.totalExcludingTax * creditNote.exchangeRate; return { ...commonEntry, - debit: localAmount, + debit: totalLocal, accountId: entry.sellAccountId || entry.item.sellAccountId, note: entry.description, index: index + 2, diff --git a/packages/server/src/services/Purchases/Bills/BillGLEntries.ts b/packages/server/src/services/Purchases/Bills/BillGLEntries.ts index 7382a568d..a5daf87fe 100644 --- a/packages/server/src/services/Purchases/Bills/BillGLEntries.ts +++ b/packages/server/src/services/Purchases/Bills/BillGLEntries.ts @@ -139,13 +139,12 @@ export class BillGLEntries { private getBillItemEntry = R.curry( (bill: IBill, entry: IItemEntry, index: number): ILedgerEntry => { const commonJournalMeta = this.getBillCommonEntry(bill); - - const localAmount = bill.exchangeRate * entry.subtotalExcludingTax; + const totalLocal = bill.exchangeRate * entry.totalExcludingTax; const landedCostAmount = sumBy(entry.allocatedCostEntries, 'cost'); return { ...commonJournalMeta, - debit: localAmount + landedCostAmount, + debit: totalLocal + landedCostAmount, accountId: ['inventory'].indexOf(entry.item.type) !== -1 ? entry.item.inventoryAccountId diff --git a/packages/server/src/services/Purchases/VendorCredits/VendorCreditGLEntries.ts b/packages/server/src/services/Purchases/VendorCredits/VendorCreditGLEntries.ts index 0747a5845..eca22e2e5 100644 --- a/packages/server/src/services/Purchases/VendorCredits/VendorCreditGLEntries.ts +++ b/packages/server/src/services/Purchases/VendorCredits/VendorCreditGLEntries.ts @@ -77,11 +77,11 @@ export default class VendorCreditGLEntries { index: number ): ILedgerEntry => { const commonEntity = this.getVendorCreditGLCommonEntry(vendorCredit); - const localAmount = entry.amount * vendorCredit.exchangeRate; + const totalLocal = entry.totalExcludingTax * vendorCredit.exchangeRate; return { ...commonEntity, - credit: localAmount, + credit: totalLocal, index: index + 2, itemId: entry.itemId, itemQuantity: entry.quantity, diff --git a/packages/server/src/services/Sales/Invoices/InvoiceGLEntries.ts b/packages/server/src/services/Sales/Invoices/InvoiceGLEntries.ts index d141e5571..570da2566 100644 --- a/packages/server/src/services/Sales/Invoices/InvoiceGLEntries.ts +++ b/packages/server/src/services/Sales/Invoices/InvoiceGLEntries.ts @@ -199,7 +199,7 @@ export class SaleInvoiceGLEntries { index: number ): ILedgerEntry => { const commonEntry = this.getInvoiceGLCommonEntry(saleInvoice); - const localAmount = entry.total * saleInvoice.exchangeRate; + const localAmount = entry.totalExcludingTax * saleInvoice.exchangeRate; return { ...commonEntry, diff --git a/packages/server/src/services/Sales/Receipts/SaleReceiptGLEntries.ts b/packages/server/src/services/Sales/Receipts/SaleReceiptGLEntries.ts index 8dc7bf803..3cb4d9d0e 100644 --- a/packages/server/src/services/Sales/Receipts/SaleReceiptGLEntries.ts +++ b/packages/server/src/services/Sales/Receipts/SaleReceiptGLEntries.ts @@ -143,10 +143,10 @@ export class SaleReceiptGLEntries { }; /** - * Retrieve receipt income item GL entry. - * @param {ISaleReceipt} saleReceipt - - * @param {IItemEntry} entry - - * @param {number} index - + * Retrieve receipt income item G/L entry. + * @param {ISaleReceipt} saleReceipt - + * @param {IItemEntry} entry - + * @param {number} index - * @returns {ILedgerEntry} */ private getReceiptIncomeItemEntry = R.curry( @@ -156,11 +156,11 @@ export class SaleReceiptGLEntries { index: number ): ILedgerEntry => { const commonEntry = this.getIncomeGLCommonEntry(saleReceipt); - const itemIncome = entry.amount * saleReceipt.exchangeRate; + const totalLocal = entry.totalExcludingTax * saleReceipt.exchangeRate; return { ...commonEntry, - credit: itemIncome, + credit: totalLocal, accountId: entry.item.sellAccountId, note: entry.description, index: index + 2, diff --git a/shared/pdf-templates/src/components/ReceiptPaperTemplate.tsx b/shared/pdf-templates/src/components/ReceiptPaperTemplate.tsx index 76f3a38fa..f263d3952 100644 --- a/shared/pdf-templates/src/components/ReceiptPaperTemplate.tsx +++ b/shared/pdf-templates/src/components/ReceiptPaperTemplate.tsx @@ -232,6 +232,7 @@ export function ReceiptPaperTemplate({ ), + thStyle: { width: '60%' }, }, { label: lineQuantityLabel, accessor: 'quantity' }, { label: lineRateLabel, accessor: 'rate', align: 'right' },