diff --git a/packages/modules/pricing/integration-tests/__tests__/services/pricing-module/calculate-price.spec.ts b/packages/modules/pricing/integration-tests/__tests__/services/pricing-module/calculate-price.spec.ts index 915c0d9107..99ea1a4d3b 100644 --- a/packages/modules/pricing/integration-tests/__tests__/services/pricing-module/calculate-price.spec.ts +++ b/packages/modules/pricing/integration-tests/__tests__/services/pricing-module/calculate-price.spec.ts @@ -897,6 +897,61 @@ moduleIntegrationTestRunner({ ]) }) + it("should return a price of 0", async () => { + const priceSet = await service.createPriceSets({ + prices: [ + { + amount: 0, + currency_code: "USD", + }, + ], + }) + + const priceSetsResult = await service.calculatePrices( + { id: [priceSet.id] }, + { + context: { + currency_code: "USD", + }, + } + ) + + expect(priceSetsResult).toEqual([ + { + id: priceSet.id, + is_calculated_price_price_list: false, + is_calculated_price_tax_inclusive: false, + calculated_amount: 0, + raw_calculated_amount: { + value: "0", + precision: 20, + }, + is_original_price_price_list: false, + is_original_price_tax_inclusive: false, + original_amount: 0, + raw_original_amount: { + value: "0", + precision: 20, + }, + currency_code: "USD", + calculated_price: { + id: expect.any(String), + price_list_id: null, + price_list_type: null, + min_quantity: null, + max_quantity: null, + }, + original_price: { + id: expect.any(String), + price_list_id: null, + price_list_type: null, + min_quantity: null, + max_quantity: null, + }, + }, + ]) + }) + describe("Price Lists", () => { it("should return price list prices when price list conditions match", async () => { await createPriceLists(service) diff --git a/packages/modules/pricing/src/services/pricing-module.ts b/packages/modules/pricing/src/services/pricing-module.ts index 65c6896bdb..420988ae41 100644 --- a/packages/modules/pricing/src/services/pricing-module.ts +++ b/packages/modules/pricing/src/services/pricing-module.ts @@ -272,6 +272,7 @@ export default class PricingModuleService defaultPrice let originalPrice: PricingTypes.CalculatedPriceSetDTO | undefined = defaultPrice + if (priceListPrice) { calculatedPrice = priceListPrice @@ -338,8 +339,9 @@ export default class PricingModuleService calculatedPrice.currency_code!, pricingContext.context?.region_id as string ), - calculated_amount: - parseFloat((calculatedPrice?.amount as string) || "") || null, + calculated_amount: isPresent(calculatedPrice?.amount) + ? parseFloat(calculatedPrice?.amount as string) + : null, raw_calculated_amount: calculatedPrice?.raw_amount || null, is_original_price_price_list: !!originalPrice?.price_list_id, @@ -351,8 +353,9 @@ export default class PricingModuleService pricingContext.context?.region_id as string ) : false, - original_amount: - parseFloat((originalPrice?.amount as string) || "") || null, + original_amount: isPresent(originalPrice?.amount) + ? parseFloat(originalPrice?.amount as string) + : null, raw_original_amount: originalPrice?.raw_amount || null, currency_code: calculatedPrice?.currency_code || null,