Skip to content

Commit

Permalink
fix(core-flows): select stock locations for reservation from correct …
Browse files Browse the repository at this point in the history
…SC (medusajs#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
  • Loading branch information
fPolic authored Dec 20, 2024
1 parent 8650e61 commit fc321e9
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2116,6 +2116,7 @@ medusaIntegrationTestRunner({
])

let cart = await cartModuleService.createCarts({
sales_channel_id: salesChannel.id,
currency_code: "usd",
items: [
{
Expand Down
48 changes: 48 additions & 0 deletions integration-tests/modules/__tests__/cart/store/carts.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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`,
Expand All @@ -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`,
Expand All @@ -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",
Expand Down Expand Up @@ -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 = (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
import {
Modules,
OrderStatus,
OrderWorkflowEvents
OrderWorkflowEvents,
} from "@medusajs/framework/utils"
import {
createWorkflow,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
},
Expand Down

0 comments on commit fc321e9

Please sign in to comment.