From 73ceeaee463374d037897f77f64b04fb1ea097ac Mon Sep 17 00:00:00 2001 From: Ahmed Bouhuolia Date: Wed, 20 Sep 2023 00:42:03 +0200 Subject: [PATCH] fix(server): [Sales Tax Liability Report] filter non-transactions tax rates --- .../SalesTaxLiabilitySummary.ts | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/packages/server/src/services/FinancialStatements/SalesTaxLiabilitySummary/SalesTaxLiabilitySummary.ts b/packages/server/src/services/FinancialStatements/SalesTaxLiabilitySummary/SalesTaxLiabilitySummary.ts index 9a84849a2..375905639 100644 --- a/packages/server/src/services/FinancialStatements/SalesTaxLiabilitySummary/SalesTaxLiabilitySummary.ts +++ b/packages/server/src/services/FinancialStatements/SalesTaxLiabilitySummary/SalesTaxLiabilitySummary.ts @@ -1,3 +1,5 @@ +import * as R from 'ramda'; +import { isEmpty, sumBy } from 'lodash'; import { ITaxRate } from '@/interfaces'; import { SalesTaxLiabilitySummaryPayableById, @@ -7,7 +9,6 @@ import { SalesTaxLiabilitySummarySalesById, SalesTaxLiabilitySummaryTotal, } from '@/interfaces/SalesTaxLiabilitySummary'; -import { sumBy } from 'lodash'; import FinancialSheet from '../FinancialSheet'; export class SalesTaxLiabilitySummary extends FinancialSheet { @@ -61,6 +62,7 @@ export class SalesTaxLiabilitySummary extends FinancialSheet { const collectedTaxAmount = payableTax ? payableTax.debit : 0; return { + id: taxRate.id, taxName: `${taxRate.name} (${taxRate.rate}%)`, taxableAmount: this.getAmountMeta(salesTaxAmount), taxAmount: this.getAmountMeta(payableTaxAmount), @@ -69,12 +71,31 @@ export class SalesTaxLiabilitySummary extends FinancialSheet { }; }; + /** + * Filters the non-transactions tax rates. + * @param {SalesTaxLiabilitySummaryRate[]} nodes + * @returns {SalesTaxLiabilitySummaryRate[]} + */ + private filterNonTransactionsTaxRates = ( + nodes: SalesTaxLiabilitySummaryRate[] + ): SalesTaxLiabilitySummaryRate[] => { + return nodes.filter((node) => { + const salesTrxs = this.salesTaxesById[node.id]; + const payableTrxs = this.payableTaxesById[node.id]; + + return !isEmpty(salesTrxs) || !isEmpty(payableTrxs); + }); + }; + /** * Retrieves the tax rates liability nodes. * @returns {SalesTaxLiabilitySummaryRate[]} */ private taxRatesLiability = (): SalesTaxLiabilitySummaryRate[] => { - return this.taxRates.map(this.taxRateLiability); + return R.compose( + this.filterNonTransactionsTaxRates, + R.map(this.taxRateLiability) + )(this.taxRates); }; /**