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:
Frane Polić
2024-12-20 09:25:19 +01:00
committed by GitHub
parent 8650e6178e
commit fc321e96ce
5 changed files with 52 additions and 3 deletions

View File

@@ -2116,6 +2116,7 @@ medusaIntegrationTestRunner({
])
let cart = await cartModuleService.createCarts({
sales_channel_id: salesChannel.id,
currency_code: "usd",
items: [
{

View File

@@ -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 = (

View File

@@ -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)
}

View File

@@ -5,7 +5,7 @@ import {
import {
Modules,
OrderStatus,
OrderWorkflowEvents
OrderWorkflowEvents,
} from "@medusajs/framework/utils"
import {
createWorkflow,

View File

@@ -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,
},