From 83962d6e936a54d4f4c8fcb076d9396bd40095ec Mon Sep 17 00:00:00 2001 From: poulch Date: Mon, 30 Jan 2023 14:49:08 +0100 Subject: [PATCH] Fix cut numbers (#3072) --- .../components/ProductUpdatePage/utils.test.ts | 12 ++++++++++++ src/products/components/ProductUpdatePage/utils.ts | 8 +++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/products/components/ProductUpdatePage/utils.test.ts b/src/products/components/ProductUpdatePage/utils.test.ts index 9486e55fb..08c12688b 100644 --- a/src/products/components/ProductUpdatePage/utils.test.ts +++ b/src/products/components/ProductUpdatePage/utils.test.ts @@ -64,4 +64,16 @@ describe("parseCurrency", () => { // Assert expect(parsed).toBe(2.07); }); + it("should not trim price without decimal", () => { + // Arrange + const value = "2123"; + const currency = "EUR"; + const locale = Locale.PL; + + // Act + const parsed = parseCurrency(value, locale, currency); + + // Assert + expect(parsed).toBe(2123); + }); }); diff --git a/src/products/components/ProductUpdatePage/utils.ts b/src/products/components/ProductUpdatePage/utils.ts index 6388d8769..b657d75be 100644 --- a/src/products/components/ProductUpdatePage/utils.ts +++ b/src/products/components/ProductUpdatePage/utils.ts @@ -26,12 +26,10 @@ export const parseCurrency = ( // Thousand seperators are not allowedd const number = value.replace(/,/, "."); const fractionDigits = getFractionDigits(locale, currency); - const trimmedNumber = number.slice( - 0, - number.lastIndexOf(".") + 1 + fractionDigits, - ); + const lastDecimalPoint = number.lastIndexOf("."); + const trimmedNumber = number.slice(0, lastDecimalPoint + 1 + fractionDigits); - return parseFloat(trimmedNumber); + return parseFloat(lastDecimalPoint !== -1 ? trimmedNumber : number); }; export const prepareVariantChangeData = (