chore(inventory, core-flows): big number support (#8204)
This commit is contained in:
committed by
GitHub
parent
c307972a99
commit
fb29b958fa
@@ -1,7 +1,7 @@
|
||||
import { IInventoryService, InventoryTypes } from "@medusajs/types"
|
||||
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
|
||||
|
||||
import { ModuleRegistrationName } from "@medusajs/utils"
|
||||
import { MathBN, ModuleRegistrationName } from "@medusajs/utils"
|
||||
|
||||
export const adjustInventoryLevelsStepId = "adjust-inventory-levels-step"
|
||||
export const adjustInventoryLevelsStep = createStep(
|
||||
@@ -30,7 +30,7 @@ export const adjustInventoryLevelsStep = createStep(
|
||||
input.map((item) => {
|
||||
return {
|
||||
...item,
|
||||
adjustment: item.adjustment * -1,
|
||||
adjustment: MathBN.mult(item.adjustment, -1),
|
||||
}
|
||||
})
|
||||
)
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
import { FulfillmentDTO, OrderDTO, OrderWorkflow } from "@medusajs/types"
|
||||
import {
|
||||
BigNumberInput,
|
||||
FulfillmentDTO,
|
||||
OrderDTO,
|
||||
OrderWorkflow,
|
||||
} from "@medusajs/types"
|
||||
import { MedusaError, Modules } from "@medusajs/utils"
|
||||
import {
|
||||
WorkflowData,
|
||||
createStep,
|
||||
createWorkflow,
|
||||
parallelize,
|
||||
transform,
|
||||
WorkflowData,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { useRemoteQueryStep } from "../../common"
|
||||
import { cancelFulfillmentWorkflow } from "../../fulfillment"
|
||||
@@ -82,7 +87,7 @@ function prepareInventoryUpdate({
|
||||
const inventoryAdjustment: {
|
||||
inventory_item_id: string
|
||||
location_id: string
|
||||
adjustment: number // TODO: BigNumberInput
|
||||
adjustment: BigNumberInput
|
||||
}[] = []
|
||||
|
||||
for (const item of fulfillment.items) {
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
import {
|
||||
BigNumberInput,
|
||||
FulfillmentDTO,
|
||||
FulfillmentWorkflow,
|
||||
OrderDTO,
|
||||
OrderWorkflow,
|
||||
ReservationItemDTO,
|
||||
} from "@medusajs/types"
|
||||
import { MedusaError, Modules } from "@medusajs/utils"
|
||||
import { MathBN, MedusaError, Modules } from "@medusajs/utils"
|
||||
import {
|
||||
WorkflowData,
|
||||
createStep,
|
||||
@@ -68,6 +69,7 @@ function prepareFulfillmentData({
|
||||
order,
|
||||
input,
|
||||
shippingOption,
|
||||
shippingMethod,
|
||||
reservations,
|
||||
}: {
|
||||
order: OrderDTO
|
||||
@@ -77,6 +79,7 @@ function prepareFulfillmentData({
|
||||
provider_id: string
|
||||
service_zone: { fulfillment_set: { location?: { id: string } } }
|
||||
}
|
||||
shippingMethod: { data?: Record<string, unknown> | null }
|
||||
reservations: ReservationItemDTO[]
|
||||
}) {
|
||||
const inputItems = input.items
|
||||
@@ -120,8 +123,9 @@ function prepareFulfillmentData({
|
||||
location_id: locationId,
|
||||
provider_id: shippingOption.provider_id,
|
||||
shipping_option_id: shippingOption.id,
|
||||
data: shippingMethod.data,
|
||||
items: fulfillmentItems,
|
||||
labels: [] as FulfillmentWorkflow.CreateFulfillmentLabelWorkflowDTO[], // TODO: shipping labels
|
||||
labels: input.labels ?? [],
|
||||
delivery_address: shippingAddress as any,
|
||||
},
|
||||
}
|
||||
@@ -136,13 +140,13 @@ function prepareInventoryUpdate({ reservations, order, input, inputItemsMap }) {
|
||||
const toDelete: string[] = []
|
||||
const toUpdate: {
|
||||
id: string
|
||||
quantity: number // TODO: BigNumberInput
|
||||
quantity: BigNumberInput
|
||||
location_id: string
|
||||
}[] = []
|
||||
const inventoryAdjustment: {
|
||||
inventory_item_id: string
|
||||
location_id: string
|
||||
adjustment: number // TODO: BigNumberInput
|
||||
adjustment: BigNumberInput
|
||||
}[] = []
|
||||
|
||||
for (const item of order.items) {
|
||||
@@ -163,7 +167,7 @@ function prepareInventoryUpdate({ reservations, order, input, inputItemsMap }) {
|
||||
inventoryAdjustment.push({
|
||||
inventory_item_id: reservation.inventory_item_id,
|
||||
location_id: input.location_id ?? reservation.location_id,
|
||||
adjustment: -item.quantity, // TODO: MathBN.mul(-1, item.quantity)
|
||||
adjustment: MathBN.mult(item.quantity, -1),
|
||||
})
|
||||
|
||||
if (quantity === 0) {
|
||||
@@ -201,6 +205,7 @@ export const createOrderFulfillmentWorkflow = createWorkflow(
|
||||
"items.variant.manage_inventory",
|
||||
"shipping_address.*",
|
||||
"shipping_methods.shipping_option_id", // TODO: which shipping method to use when multiple?
|
||||
"shipping_methods.data",
|
||||
],
|
||||
variables: { id: input.order_id },
|
||||
list: false,
|
||||
@@ -216,6 +221,10 @@ export const createOrderFulfillmentWorkflow = createWorkflow(
|
||||
}, {})
|
||||
})
|
||||
|
||||
const shippingMethod = transform(order, (data) => {
|
||||
return { data: data.shipping_methods?.[0].data }
|
||||
})
|
||||
|
||||
const shippingOptionId = transform(order, (data) => {
|
||||
return data.shipping_methods?.[0]?.shipping_option_id
|
||||
})
|
||||
@@ -250,7 +259,7 @@ export const createOrderFulfillmentWorkflow = createWorkflow(
|
||||
}).config({ name: "get-reservations" })
|
||||
|
||||
const fulfillmentData = transform(
|
||||
{ order, input, shippingOption, reservations },
|
||||
{ order, input, shippingOption, shippingMethod, reservations },
|
||||
prepareFulfillmentData
|
||||
)
|
||||
|
||||
@@ -278,12 +287,12 @@ export const createOrderFulfillmentWorkflow = createWorkflow(
|
||||
prepareInventoryUpdate
|
||||
)
|
||||
|
||||
adjustInventoryLevelsStep(inventoryAdjustment)
|
||||
parallelize(
|
||||
registerOrderFulfillmentStep(registerOrderFulfillmentData),
|
||||
createRemoteLinkStep(link),
|
||||
updateReservationsStep(toUpdate),
|
||||
deleteReservationsStep(toDelete),
|
||||
adjustInventoryLevelsStep(inventoryAdjustment)
|
||||
deleteReservationsStep(toDelete)
|
||||
)
|
||||
|
||||
// trigger event OrderModuleService.Events.FULFILLMENT_CREATED
|
||||
|
||||
@@ -92,7 +92,7 @@ export const createOrderShipmentWorkflow = createWorkflow(
|
||||
const fulfillmentData = transform({ input }, ({ input }) => {
|
||||
return {
|
||||
id: input.fulfillment_id,
|
||||
labels: input.labels,
|
||||
labels: input.labels ?? [],
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@@ -161,7 +161,7 @@ function prepareFulfillmentData({
|
||||
provider_id: returnShippingOption.provider_id,
|
||||
shipping_option_id: input.return_shipping?.option_id,
|
||||
items: fulfillmentItems,
|
||||
labels: [] as FulfillmentWorkflow.CreateFulfillmentLabelWorkflowDTO[],
|
||||
labels: input.return_shipping?.labels ?? [],
|
||||
delivery_address: order.shipping_address ?? ({} as any), // TODO: should it be the stock location address?
|
||||
order: order,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user