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 = (