fix(core-flows): select stock locations for reservation from correct SC (#10661)
* fix: add stock location for reservations only if related to correct SC * fix: update spec * fix: wrong SC id get in OE flow * fix: ensure test case has multiple SC and SLs
This commit is contained in:
@@ -2116,6 +2116,7 @@ medusaIntegrationTestRunner({
|
||||
])
|
||||
|
||||
let cart = await cartModuleService.createCarts({
|
||||
sales_channel_id: salesChannel.id,
|
||||
currency_code: "usd",
|
||||
items: [
|
||||
{
|
||||
|
||||
@@ -1117,6 +1117,14 @@ medusaIntegrationTestRunner({
|
||||
)
|
||||
).data.sales_channel
|
||||
|
||||
const salesChannel2 = (
|
||||
await api.post(
|
||||
"/admin/sales-channels",
|
||||
{ name: "second channel", description: "channel" },
|
||||
adminHeaders
|
||||
)
|
||||
).data.sales_channel
|
||||
|
||||
stockLocation = (
|
||||
await api.post(
|
||||
`/admin/stock-locations`,
|
||||
@@ -1125,6 +1133,14 @@ medusaIntegrationTestRunner({
|
||||
)
|
||||
).data.stock_location
|
||||
|
||||
const stockLocation2 = (
|
||||
await api.post(
|
||||
`/admin/stock-locations`,
|
||||
{ name: "test location 2" },
|
||||
adminHeaders
|
||||
)
|
||||
).data.stock_location
|
||||
|
||||
inventoryItem = (
|
||||
await api.post(
|
||||
`/admin/inventory-items`,
|
||||
@@ -1144,12 +1160,27 @@ medusaIntegrationTestRunner({
|
||||
adminHeaders
|
||||
)
|
||||
|
||||
await api.post(
|
||||
`/admin/inventory-items/${inventoryItem.id}/location-levels`,
|
||||
{
|
||||
location_id: stockLocation2.id,
|
||||
stocked_quantity: 10,
|
||||
},
|
||||
adminHeaders
|
||||
)
|
||||
|
||||
await api.post(
|
||||
`/admin/stock-locations/${stockLocation.id}/sales-channels`,
|
||||
{ add: [salesChannel.id] },
|
||||
adminHeaders
|
||||
)
|
||||
|
||||
await api.post(
|
||||
`/admin/stock-locations/${stockLocation2.id}/sales-channels`,
|
||||
{ add: [salesChannel2.id] },
|
||||
adminHeaders
|
||||
)
|
||||
|
||||
shippingProfile = await fulfillmentModule.createShippingProfiles({
|
||||
name: "Test",
|
||||
type: "default",
|
||||
@@ -1210,6 +1241,23 @@ medusaIntegrationTestRunner({
|
||||
fulfillment_set_id: fulfillmentSet.id,
|
||||
},
|
||||
},
|
||||
{
|
||||
[Modules.PRODUCT]: {
|
||||
product_id: product.id,
|
||||
},
|
||||
[Modules.SALES_CHANNEL]: {
|
||||
sales_channel_id: salesChannel2.id,
|
||||
},
|
||||
},
|
||||
// Add product to 2 sales channels to test that the right stock location is selected for reservations
|
||||
{
|
||||
[Modules.PRODUCT]: {
|
||||
product_id: product.id,
|
||||
},
|
||||
[Modules.SALES_CHANNEL]: {
|
||||
sales_channel_id: salesChannel.id,
|
||||
},
|
||||
},
|
||||
])
|
||||
|
||||
promotion = (
|
||||
|
||||
@@ -67,7 +67,7 @@ export const prepareConfirmInventoryInput = (data: {
|
||||
hasSalesChannelStockLocation = true
|
||||
}
|
||||
|
||||
if (stock_locations) {
|
||||
if (stock_locations && sales_channels?.id === salesChannelId) {
|
||||
stockLocationIds.add(stock_locations.id)
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import {
|
||||
import {
|
||||
Modules,
|
||||
OrderStatus,
|
||||
OrderWorkflowEvents
|
||||
OrderWorkflowEvents,
|
||||
} from "@medusajs/framework/utils"
|
||||
import {
|
||||
createWorkflow,
|
||||
|
||||
@@ -215,7 +215,7 @@ export const confirmOrderEditRequestWorkflow = createWorkflow(
|
||||
const formatedInventoryItems = transform(
|
||||
{
|
||||
input: {
|
||||
sales_channel_id: (orderItems as any).order.sales_channel_id,
|
||||
sales_channel_id: (orderItems as any).sales_channel_id,
|
||||
variants,
|
||||
items,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user