From 67aaa3538e65b0a1e82ff1d1b3bf6560967cb76b Mon Sep 17 00:00:00 2001 From: Lukasz Ostrowski Date: Thu, 23 Jan 2025 09:59:17 +0100 Subject: [PATCH] extra logs for lines + tests --- .changeset/purple-shirts-listen.md | 5 +++ .../avatax-calculate-taxes-adapter.test.ts | 35 +++++++++++++++++++ .../avatax-calculate-taxes-adapter.ts | 22 +++++++++--- ...culate-taxes-response-lines-transformer.ts | 2 ++ 4 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 .changeset/purple-shirts-listen.md create mode 100644 apps/avatax/src/modules/avatax/calculate-taxes/avatax-calculate-taxes-adapter.test.ts diff --git a/.changeset/purple-shirts-listen.md b/.changeset/purple-shirts-listen.md new file mode 100644 index 000000000..1fe618f1d --- /dev/null +++ b/.changeset/purple-shirts-listen.md @@ -0,0 +1,5 @@ +--- +"app-avatax": patch +--- + +Added test for suspicious line+tax calculation checker and additional debugging logs diff --git a/apps/avatax/src/modules/avatax/calculate-taxes/avatax-calculate-taxes-adapter.test.ts b/apps/avatax/src/modules/avatax/calculate-taxes/avatax-calculate-taxes-adapter.test.ts new file mode 100644 index 000000000..64ae93573 --- /dev/null +++ b/apps/avatax/src/modules/avatax/calculate-taxes/avatax-calculate-taxes-adapter.test.ts @@ -0,0 +1,35 @@ +import { describe, expect, it } from "vitest"; + +import { suspiciousLineCalculationCheck } from "@/modules/avatax/calculate-taxes/avatax-calculate-taxes-adapter"; + +describe("suspiciousLineCalculationCheck", () => { + it("Returns false if line is zero", () => { + expect( + suspiciousLineCalculationCheck({ + total_gross_amount: 0, + total_net_amount: 0, + tax_rate: 0.2, // If its zero-line, it doesn matter + }), + ).toBe(false); + }); + + it("Returns true if net & gross is the same, but rate is not: 1.00 + 1.00 + rate 0.08", () => { + expect( + suspiciousLineCalculationCheck({ + total_gross_amount: 1, + total_net_amount: 1, + tax_rate: 0.08, // If its zero-line, it doesn matter + }), + ).toBe(true); + }); + + it("Returns true for small numbers: 0.06 + 0.06 + rate 0.07", () => { + expect( + suspiciousLineCalculationCheck({ + total_gross_amount: 0.06, + total_net_amount: 0.06, + tax_rate: 0.07, // If its zero-line, it doesn matter + }), + ).toBe(true); + }); +}); diff --git a/apps/avatax/src/modules/avatax/calculate-taxes/avatax-calculate-taxes-adapter.ts b/apps/avatax/src/modules/avatax/calculate-taxes/avatax-calculate-taxes-adapter.ts index 8ecd68b37..9883ae688 100644 --- a/apps/avatax/src/modules/avatax/calculate-taxes/avatax-calculate-taxes-adapter.ts +++ b/apps/avatax/src/modules/avatax/calculate-taxes/avatax-calculate-taxes-adapter.ts @@ -10,6 +10,22 @@ export type AvataxCalculateTaxesResponse = CalculateTaxesResponse; const errorParser = new AvataxErrorsParser(); +export function suspiciousLineCalculationCheck(line: { + total_gross_amount: number; + total_net_amount: number; + tax_rate: number; +}) { + const tax = line.total_gross_amount - line.total_net_amount; + const rate = line.tax_rate; + const lineIsZero = line.total_net_amount === 0 ?? line.total_gross_amount === 0; + + if (tax === 0 && rate !== 0 && !lineIsZero) { + return true; + } + + return false; +} + export class AvataxCalculateTaxesAdapter { private logger = createLogger("AvataxCalculateTaxesAdapter"); @@ -38,11 +54,9 @@ export class AvataxCalculateTaxesAdapter { const transformedResponse = this.avataxCalculateTaxesResponseTransformer.transform(response); transformedResponse.lines.forEach((l) => { - const tax = l.total_gross_amount - l.total_net_amount; - const rate = l.tax_rate; - const lineIsZero = l.total_net_amount === 0 ?? l.total_gross_amount === 0; + const isSuspiciousLine = suspiciousLineCalculationCheck(l); - if (tax === 0 && rate !== 0 && !lineIsZero) { + if (isSuspiciousLine) { this.logger.warn("Non-zero line has zero tax, but rate is not zero", { taxCalculationSummary: response.summary, }); diff --git a/apps/avatax/src/modules/avatax/calculate-taxes/avatax-calculate-taxes-response-lines-transformer.ts b/apps/avatax/src/modules/avatax/calculate-taxes/avatax-calculate-taxes-response-lines-transformer.ts index eacfd995e..1751be821 100644 --- a/apps/avatax/src/modules/avatax/calculate-taxes/avatax-calculate-taxes-response-lines-transformer.ts +++ b/apps/avatax/src/modules/avatax/calculate-taxes/avatax-calculate-taxes-response-lines-transformer.ts @@ -76,6 +76,8 @@ export class AvataxCalculateTaxesResponseLinesTransformer { total_net_amount: lineTotalNetAmount, tax_code: line.taxCode, tax_rate: rate, + line_taxable_amount: line.taxableAmount, + line_tax_calculated: line.taxCalculated, }, );