fix(core-flows): item id in reservations (#9097)
**What** - on cart completion, when creating reservations, use line item id instead of cart item id - NOTE: inventory reservation is now done after we create the order --- FIXES CC-448
This commit is contained in:
1 parent
512c6fc8ab
commit
9db334554f
4 files changed
+31
-23
No files matched your search
@@ -2238,7 +2238,7 @@ medusaIntegrationTestRunner({
|
|||||||
location_id: stockLocation.id,
|
location_id: stockLocation.id,
|
||||||
inventory_item_id: inventoryItem.id,
|
inventory_item_id: inventoryItem.id,
|
||||||
quantity: cart.items[0].quantity,
|
quantity: cart.items[0].quantity,
|
||||||
line_item_id: cart.items[0].id,
|
line_item_id: response.data.order.items[0].id,
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ interface ConfirmInventoryPreparationInput {
|
|||||||
}[]
|
}[]
|
||||||
items: {
|
items: {
|
||||||
id?: string
|
id?: string
|
||||||
variant_id?: string
|
variant_id?: string | null
|
||||||
quantity: BigNumberInput
|
quantity: BigNumberInput
|
||||||
}[]
|
}[]
|
||||||
variants: {
|
variants: {
|
||||||
|
|||||||
@@ -84,26 +84,12 @@ export const completeCartWorkflow = createWorkflow(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
const formatedInventoryItems = transform(
|
const finalCart = useRemoteQueryStep({
|
||||||
{
|
entry_point: "cart",
|
||||||
input: {
|
fields: completeCartFields,
|
||||||
sales_channel_id,
|
variables: { id: input.id },
|
||||||
variants,
|
list: false,
|
||||||
items,
|
}).config({ name: "final-cart" })
|
||||||
},
|
|
||||||
},
|
|
||||||
prepareConfirmInventoryInput
|
|
||||||
)
|
|
||||||
|
|
||||||
const [, finalCart] = parallelize(
|
|
||||||
reserveInventoryStep(formatedInventoryItems),
|
|
||||||
useRemoteQueryStep({
|
|
||||||
entry_point: "cart",
|
|
||||||
fields: completeCartFields,
|
|
||||||
variables: { id: input.id },
|
|
||||||
list: false,
|
|
||||||
}).config({ name: "final-cart" })
|
|
||||||
)
|
|
||||||
|
|
||||||
const cartToOrder = transform({ cart }, ({ cart }) => {
|
const cartToOrder = transform({ cart }, ({ cart }) => {
|
||||||
const allItems = (cart.items ?? []).map((item) => {
|
const allItems = (cart.items ?? []).map((item) => {
|
||||||
@@ -162,11 +148,31 @@ export const completeCartWorkflow = createWorkflow(
|
|||||||
})
|
})
|
||||||
|
|
||||||
const createdOrders = createOrdersStep([cartToOrder])
|
const createdOrders = createOrdersStep([cartToOrder])
|
||||||
|
|
||||||
const order = transform(
|
const order = transform(
|
||||||
{ createdOrders },
|
{ createdOrders },
|
||||||
({ createdOrders }) => createdOrders[0]
|
({ createdOrders }) => createdOrders[0]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const reservationItemsData = transform({ order }, ({ order }) =>
|
||||||
|
order.items!.map((i) => ({
|
||||||
|
variant_id: i.variant_id,
|
||||||
|
quantity: i.quantity,
|
||||||
|
id: i.id,
|
||||||
|
}))
|
||||||
|
)
|
||||||
|
|
||||||
|
const formatedInventoryItems = transform(
|
||||||
|
{
|
||||||
|
input: {
|
||||||
|
sales_channel_id,
|
||||||
|
variants,
|
||||||
|
items: reservationItemsData,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
prepareConfirmInventoryInput
|
||||||
|
)
|
||||||
|
|
||||||
const updateCompletedAt = transform({ cart }, ({ cart }) => {
|
const updateCompletedAt = transform({ cart }, ({ cart }) => {
|
||||||
return {
|
return {
|
||||||
id: cart.id,
|
id: cart.id,
|
||||||
@@ -188,6 +194,7 @@ export const completeCartWorkflow = createWorkflow(
|
|||||||
},
|
},
|
||||||
]),
|
]),
|
||||||
updateCartsStep([updateCompletedAt]),
|
updateCartsStep([updateCompletedAt]),
|
||||||
|
reserveInventoryStep(formatedInventoryItems),
|
||||||
emitEventStep({
|
emitEventStep({
|
||||||
eventName: OrderWorkflowEvents.PLACED,
|
eventName: OrderWorkflowEvents.PLACED,
|
||||||
data: { id: order.id },
|
data: { id: order.id },
|
||||||
|
|||||||
@@ -143,8 +143,9 @@ export interface ConfirmVariantInventoryWorkflowInputDTO {
|
|||||||
}[]
|
}[]
|
||||||
}[]
|
}[]
|
||||||
items: {
|
items: {
|
||||||
variant_id?: string
|
variant_id?: string | null
|
||||||
quantity: BigNumberInput
|
quantity: BigNumberInput
|
||||||
|
id?: string
|
||||||
}[]
|
}[]
|
||||||
itemsToUpdate?: {
|
itemsToUpdate?: {
|
||||||
data: {
|
data: {
|
||||||
|
|||||||
Reference in new issue
Block a user