feature: add workflows hooks to the order module (#8496)
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import {
|
||||
AdditionalData,
|
||||
BigNumberInput,
|
||||
FulfillmentDTO,
|
||||
OrderDTO,
|
||||
@@ -7,6 +8,8 @@ import {
|
||||
import { MedusaError, Modules } from "@medusajs/utils"
|
||||
import {
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
createHook,
|
||||
createStep,
|
||||
createWorkflow,
|
||||
parallelize,
|
||||
@@ -109,8 +112,10 @@ export const cancelOrderFulfillmentWorkflowId = "cancel-order-fulfillment"
|
||||
export const cancelOrderFulfillmentWorkflow = createWorkflow(
|
||||
cancelOrderFulfillmentWorkflowId,
|
||||
(
|
||||
input: WorkflowData<OrderWorkflow.CancelOrderFulfillmentWorkflowInput>
|
||||
): WorkflowData<void> => {
|
||||
input: WorkflowData<
|
||||
OrderWorkflow.CancelOrderFulfillmentWorkflowInput & AdditionalData
|
||||
>
|
||||
) => {
|
||||
const order: OrderDTO & { fulfillments: FulfillmentDTO[] } =
|
||||
useRemoteQueryStep({
|
||||
entry_point: "orders",
|
||||
@@ -153,5 +158,14 @@ export const cancelOrderFulfillmentWorkflow = createWorkflow(
|
||||
id: input.fulfillment_id,
|
||||
},
|
||||
})
|
||||
|
||||
const orderFulfillmentCanceled = createHook("orderFulfillmentCanceled", {
|
||||
fulfillment,
|
||||
additional_data: input.additional_data,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(void 0, {
|
||||
hooks: [orderFulfillmentCanceled],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -7,6 +7,8 @@ import {
|
||||
import { MedusaError, deepFlatMap } from "@medusajs/utils"
|
||||
import {
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
createHook,
|
||||
createStep,
|
||||
createWorkflow,
|
||||
parallelize,
|
||||
@@ -77,9 +79,7 @@ const validateOrder = createStep(
|
||||
export const cancelOrderWorkflowId = "cancel-order"
|
||||
export const cancelOrderWorkflow = createWorkflow(
|
||||
cancelOrderWorkflowId,
|
||||
(
|
||||
input: WorkflowData<OrderWorkflow.CancelOrderWorkflowInput>
|
||||
): WorkflowData<void> => {
|
||||
(input: WorkflowData<OrderWorkflow.CancelOrderWorkflowInput>) => {
|
||||
const order: OrderDTO & { fulfillments: FulfillmentDTO[] } =
|
||||
useRemoteQueryStep({
|
||||
entry_point: "orders",
|
||||
@@ -118,5 +118,13 @@ export const cancelOrderWorkflow = createWorkflow(
|
||||
cancelPaymentStep({ paymentIds }),
|
||||
cancelOrdersStep({ orderIds: [order.id] })
|
||||
)
|
||||
|
||||
const orderCanceled = createHook("orderCanceled", {
|
||||
order,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(void 0, {
|
||||
hooks: [orderCanceled],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1,21 +1,28 @@
|
||||
import { OrderDTO } from "@medusajs/types"
|
||||
import {
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
createHook,
|
||||
createWorkflow,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { completeOrdersStep } from "../steps"
|
||||
import { AdditionalData } from "@medusajs/types"
|
||||
|
||||
type CompleteOrdersStepInput = {
|
||||
orderIds: string[]
|
||||
}
|
||||
} & AdditionalData
|
||||
|
||||
export const completeOrderWorkflowId = "complete-order-workflow"
|
||||
export const completeOrderWorkflow = createWorkflow(
|
||||
completeOrderWorkflowId,
|
||||
(
|
||||
input: WorkflowData<CompleteOrdersStepInput>
|
||||
): WorkflowResponse<OrderDTO[]> => {
|
||||
return new WorkflowResponse(completeOrdersStep(input))
|
||||
(input: WorkflowData<CompleteOrdersStepInput>) => {
|
||||
const completedOrders = completeOrdersStep(input)
|
||||
const ordersCompleted = createHook("ordersCompleted", {
|
||||
orders: completedOrders,
|
||||
additional_data: input.additional_data,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(completedOrders, {
|
||||
hooks: [ordersCompleted],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import {
|
||||
AdditionalData,
|
||||
BigNumberInput,
|
||||
FulfillmentDTO,
|
||||
FulfillmentWorkflow,
|
||||
OrderDTO,
|
||||
OrderLineItemDTO,
|
||||
@@ -11,6 +11,7 @@ import { MathBN, MedusaError, Modules } from "@medusajs/utils"
|
||||
import {
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
createHook,
|
||||
createStep,
|
||||
createWorkflow,
|
||||
parallelize,
|
||||
@@ -204,8 +205,10 @@ export const createOrderFulfillmentWorkflowId = "create-order-fulfillment"
|
||||
export const createOrderFulfillmentWorkflow = createWorkflow(
|
||||
createOrderFulfillmentWorkflowId,
|
||||
(
|
||||
input: WorkflowData<OrderWorkflow.CreateOrderFulfillmentWorkflowInput>
|
||||
): WorkflowResponse<FulfillmentDTO> => {
|
||||
input: WorkflowData<
|
||||
OrderWorkflow.CreateOrderFulfillmentWorkflowInput & AdditionalData
|
||||
>
|
||||
) => {
|
||||
const order: OrderDTO = useRemoteQueryStep({
|
||||
entry_point: "orders",
|
||||
fields: [
|
||||
@@ -323,7 +326,14 @@ export const createOrderFulfillmentWorkflow = createWorkflow(
|
||||
deleteReservationsStep(toDelete)
|
||||
)
|
||||
|
||||
const fulfillmentCreated = createHook("fulfillmentCreated", {
|
||||
fulfillment,
|
||||
additional_data: input.additional_data,
|
||||
})
|
||||
|
||||
// trigger event OrderModuleService.Events.FULFILLMENT_CREATED
|
||||
return new WorkflowResponse(fulfillment)
|
||||
return new WorkflowResponse(fulfillment, {
|
||||
hooks: [fulfillmentCreated],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import { CreateOrderDTO, OrderDTO } from "@medusajs/types"
|
||||
import { AdditionalData, CreateOrderDTO } from "@medusajs/types"
|
||||
import { MathBN, MedusaError, isPresent } from "@medusajs/utils"
|
||||
import {
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
createHook,
|
||||
createWorkflow,
|
||||
parallelize,
|
||||
transform,
|
||||
@@ -85,7 +86,7 @@ function getOrderInput(data) {
|
||||
export const createOrdersWorkflowId = "create-orders"
|
||||
export const createOrdersWorkflow = createWorkflow(
|
||||
createOrdersWorkflowId,
|
||||
(input: WorkflowData<CreateOrderDTO>): WorkflowResponse<OrderDTO> => {
|
||||
(input: WorkflowData<CreateOrderDTO & AdditionalData>) => {
|
||||
const variantIds = transform({ input }, (data) => {
|
||||
return (data.input.items ?? [])
|
||||
.map((item) => item.variant_id)
|
||||
@@ -176,7 +177,13 @@ export const createOrdersWorkflow = createWorkflow(
|
||||
*/
|
||||
|
||||
updateOrderTaxLinesStep({ order_id: order.id })
|
||||
const orderCreated = createHook("orderCreated", {
|
||||
order,
|
||||
additional_data: input.additional_data,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(order)
|
||||
return new WorkflowResponse(order, {
|
||||
hooks: [orderCreated],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1,7 +1,14 @@
|
||||
import { FulfillmentDTO, OrderDTO, OrderWorkflow } from "@medusajs/types"
|
||||
import {
|
||||
AdditionalData,
|
||||
FulfillmentDTO,
|
||||
OrderDTO,
|
||||
OrderWorkflow,
|
||||
} from "@medusajs/types"
|
||||
import { FulfillmentEvents, Modules } from "@medusajs/utils"
|
||||
import {
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
createHook,
|
||||
createStep,
|
||||
createWorkflow,
|
||||
parallelize,
|
||||
@@ -70,8 +77,10 @@ export const createOrderShipmentWorkflowId = "create-order-shipment"
|
||||
export const createOrderShipmentWorkflow = createWorkflow(
|
||||
createOrderShipmentWorkflowId,
|
||||
(
|
||||
input: WorkflowData<OrderWorkflow.CreateOrderShipmentWorkflowInput>
|
||||
): WorkflowData<void> => {
|
||||
input: WorkflowData<
|
||||
OrderWorkflow.CreateOrderShipmentWorkflowInput & AdditionalData
|
||||
>
|
||||
) => {
|
||||
const order: OrderDTO = useRemoteQueryStep({
|
||||
entry_point: "orders",
|
||||
fields: [
|
||||
@@ -112,5 +121,14 @@ export const createOrderShipmentWorkflow = createWorkflow(
|
||||
eventName: FulfillmentEvents.SHIPMENT_CREATED,
|
||||
data: { id: shipment.id },
|
||||
})
|
||||
|
||||
const shipmentCreated = createHook("shipmentCreated", {
|
||||
shipment,
|
||||
additional_data: input.additional_data,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(void 0, {
|
||||
hooks: [shipmentCreated],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user