fix(pricing): PriceLists of type Sale should not override lower prices (#10882)

Resolves CMRC-840
This commit is contained in:
Kasper Fabricius Kristensen
2025-01-09 10:07:15 +00:00
committed by GitHub
parent 3ee15f3b85
commit a625bce7b0
4 changed files with 320 additions and 4 deletions
@@ -1167,6 +1167,129 @@ moduleIntegrationTestRunner<IPricingModuleService>({
])
})
it("should return default prices when the price list price is higher than the default price when the price list is of type SALE", async () => {
await createPriceLists(service, undefined, undefined, [
{
amount: 2500,
currency_code: "PLN",
price_set_id: "price-set-PLN",
},
{
amount: 2500,
currency_code: "EUR",
price_set_id: "price-set-EUR",
},
])
const priceSetsResult = await service.calculatePrices(
{ id: ["price-set-EUR", "price-set-PLN"] },
{
context: {
currency_code: "PLN",
},
}
)
expect(priceSetsResult).toEqual([
{
id: "price-set-PLN",
is_calculated_price_price_list: false,
is_calculated_price_tax_inclusive: false,
calculated_amount: 1000,
raw_calculated_amount: {
value: "1000",
precision: 20,
},
is_original_price_price_list: false,
is_original_price_tax_inclusive: false,
original_amount: 1000,
raw_original_amount: {
value: "1000",
precision: 20,
},
currency_code: "PLN",
calculated_price: {
id: expect.any(String),
price_list_id: null,
price_list_type: null,
min_quantity: 1,
max_quantity: 10,
},
original_price: {
id: expect.any(String),
price_list_id: null,
price_list_type: null,
min_quantity: 1,
max_quantity: 10,
},
},
])
})
it("should return price list prices even if the price list price is higher than the default price when the price list is of type OVERRIDE", async () => {
await createPriceLists(
service,
{ type: PriceListType.OVERRIDE },
{},
[
{
amount: 2500,
currency_code: "PLN",
price_set_id: "price-set-PLN",
},
{
amount: 2500,
currency_code: "EUR",
price_set_id: "price-set-EUR",
},
]
)
const priceSetsResult = await service.calculatePrices(
{ id: ["price-set-EUR", "price-set-PLN"] },
{
context: {
currency_code: "PLN",
},
}
)
expect(priceSetsResult).toEqual([
{
id: "price-set-PLN",
is_calculated_price_price_list: true,
is_calculated_price_tax_inclusive: false,
calculated_amount: 2500,
raw_calculated_amount: {
value: "2500",
precision: 20,
},
is_original_price_price_list: true,
is_original_price_tax_inclusive: false,
original_amount: 2500,
raw_original_amount: {
value: "2500",
precision: 20,
},
currency_code: "PLN",
calculated_price: {
id: expect.any(String),
price_list_id: expect.any(String),
price_list_type: "override",
min_quantity: null,
max_quantity: null,
},
original_price: {
id: expect.any(String),
price_list_id: expect.any(String),
price_list_type: "override",
min_quantity: null,
max_quantity: null,
},
},
])
})
it("should return price list prices when price list conditions match for override", async () => {
await createPriceLists(service, { type: PriceListType.OVERRIDE })