chore: add compare_at_unit_price when price list price is retrieved (#9564)

* chore: add compare_at_unit_price when price list price is retrieved

* chore: add test for update item + more fixes along the way

* chore: fix tests

* chore: add refresh spec

* Apply suggestions from code review

Co-authored-by: Adrien de Peretti <adrien.deperetti@gmail.com>

* chore: use undefined checker

* chore: switch to map

---------

Co-authored-by: Adrien de Peretti <adrien.deperetti@gmail.com>
This commit is contained in:
Riqwan Thamir
2024-10-15 13:05:14 +02:00
committed by GitHub
parent 827b32cffd
commit 537567b679
31 changed files with 2161 additions and 1772 deletions

View File

@@ -31,6 +31,7 @@ OrderChangeProcessing.registerActionType(ChangeActionType.ITEM_ADD, {
exchange_id: action.exchange_id,
unit_price: action.details.unit_price,
compare_at_unit_price: action.details.compare_at_unit_price,
quantity: action.details.quantity,
} as VirtualOrder["items"][0]

View File

@@ -1,5 +1,4 @@
import {
BigNumber,
ChangeActionType,
MathBN,
MedusaError,
@@ -13,36 +12,28 @@ OrderChangeProcessing.registerActionType(ChangeActionType.ITEM_UPDATE, {
(item) => item.id === action.details.reference_id
)
const unitPrice = action.details.unit_price
const existing = currentOrder.items[existingIndex]
existing.detail.quantity ??= 0
let quantityDiff = MathBN.sub(
action.details.quantity,
existing.detail.quantity
const originalQuantity = MathBN.convert(
existing.detail.quantity ?? existing.quantity
)
const originalUnitPrice = MathBN.convert(
existing.detail.unit_price ?? existing.unit_price
)
const quant = new BigNumber(action.details.quantity)
existing.quantity = quant
existing.detail.quantity = quant
const currentQuantity = MathBN.convert(action.details.quantity)
const quantityDiff = MathBN.sub(currentQuantity, originalQuantity)
if (unitPrice) {
const currentUnitPriceBN = MathBN.convert(unitPrice)
const originalUnitPriceBn = MathBN.convert(
existing.detail.unit_price ?? existing.unit_price
)
existing.quantity = currentQuantity
existing.detail.quantity = currentQuantity
const currentQuantityBn = MathBN.convert(action.details.quantity)
const originalQuantityBn = MathBN.convert(
existing.detail.quantity ?? existing.quantity
)
if (action.details.unit_price) {
const currentUnitPrice = MathBN.convert(action.details.unit_price)
const originalTotal = MathBN.mult(originalUnitPrice, originalQuantity)
const currentTotal = MathBN.mult(currentUnitPrice, currentQuantity)
const originalTotal = MathBN.mult(originalUnitPriceBn, originalQuantityBn)
const currentTotal = MathBN.mult(currentUnitPriceBN, currentQuantityBn)
existing.unit_price = currentUnitPriceBN
existing.detail.unit_price = currentUnitPriceBN
existing.unit_price = currentUnitPrice
existing.detail.unit_price = currentUnitPrice
setActionReference(existing, action, options)
@@ -50,6 +41,7 @@ OrderChangeProcessing.registerActionType(ChangeActionType.ITEM_UPDATE, {
}
setActionReference(existing, action, options)
return MathBN.mult(existing.unit_price, quantityDiff)
},
validate({ action, currentOrder }) {