fix(medusa): calculate sales channel availability correctly for variants (#10448)

* fix: calculate inventory quantities based on sales channel and locations

* Update packages/medusa/src/api/utils/middlewares/products/variant-inventory-quantity.ts

Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com>

* Update packages/medusa/src/api/utils/middlewares/products/variant-inventory-quantity.ts

Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com>

* Update packages/core/core-flows/src/product/steps/get-variant-availability.ts

Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com>

* fix: crk

---------

Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com>
This commit is contained in:
Sebastian Rindom
2024-12-05 19:29:47 +01:00
committed by GitHub
parent b160fd3cbf
commit 7ff3f15d6d
11 changed files with 418 additions and 121 deletions
@@ -0,0 +1,23 @@
import { createStep, StepResponse } from "@medusajs/framework/workflows-sdk"
import {
ContainerRegistrationKeys,
getVariantAvailability,
} from "@medusajs/framework/utils"
export type GetVariantAvailabilityStepInput = {
variant_ids: string[]
sales_channel_id: string
}
export const getVariantAvailabilityId = "get-variant-availability"
/**
* Computes the varaint availability for a list of variants in a given sales channel
*/
export const getVariantAvailabilityStep = createStep(
getVariantAvailabilityId,
async (data: GetVariantAvailabilityStepInput, { container }) => {
const query = container.resolve(ContainerRegistrationKeys.QUERY)
const availability = await getVariantAvailability(query, data)
return new StepResponse(availability)
}
)