feat(core-flows, utils): add OrderEdit events (#12320)
* feat(core-flows, utils): add OrderEdit events * fix: typo
This commit is contained in:
1 parent
90c61d1898
commit
8985998756
5 files changed
+79
-15
No files matched your search
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@medusajs/core-flows": patch
|
||||
"@medusajs/utils": patch
|
||||
---
|
||||
|
||||
feat(core-flows,utils): add Order Edit events
|
||||
+29
-11
@@ -1,5 +1,9 @@
|
||||
import { OrderChangeDTO, OrderDTO } from "@medusajs/framework/types"
|
||||
import { ChangeActionType, OrderChangeStatus } from "@medusajs/framework/utils"
|
||||
import {
|
||||
ChangeActionType,
|
||||
OrderChangeStatus,
|
||||
OrderEditWorkflowEvents,
|
||||
} from "@medusajs/framework/utils"
|
||||
import {
|
||||
WorkflowData,
|
||||
createStep,
|
||||
@@ -7,7 +11,7 @@ import {
|
||||
parallelize,
|
||||
transform,
|
||||
} from "@medusajs/framework/workflows-sdk"
|
||||
import { useRemoteQueryStep } from "../../../common"
|
||||
import { emitEventStep, useRemoteQueryStep } from "../../../common"
|
||||
import { deleteOrderChangesStep, deleteOrderShippingMethods } from "../../steps"
|
||||
import {
|
||||
throwIfIsCancelled,
|
||||
@@ -31,14 +35,14 @@ export type CancelBeginOrderEditValidationStepInput = {
|
||||
/**
|
||||
* This step validates that a requested order edit can be canceled.
|
||||
* If the order is canceled or the order change is not active, the step will throw an error.
|
||||
*
|
||||
*
|
||||
* :::note
|
||||
*
|
||||
*
|
||||
* You can retrieve an order and order change details using [Query](https://docs.medusajs.com/learn/fundamentals/module-links/query),
|
||||
* or [useQueryGraphStep](https://docs.medusajs.com/resources/references/medusa-workflows/steps/useQueryGraphStep).
|
||||
*
|
||||
*
|
||||
* :::
|
||||
*
|
||||
*
|
||||
* @example
|
||||
* const data = cancelBeginOrderEditValidationStep({
|
||||
* order: {
|
||||
@@ -76,10 +80,10 @@ export const cancelBeginOrderEditWorkflowId = "cancel-begin-order-edit"
|
||||
/**
|
||||
* This workflow cancels a requested edit for an order. It's used by the
|
||||
* [Cancel Order Edit Admin API Route](https://docs.medusajs.com/api/admin#order-edits_deleteordereditsid).
|
||||
*
|
||||
*
|
||||
* You can use this workflow within your customizations or your own custom workflows, allowing you to cancel an order edit
|
||||
* in your custom flow.
|
||||
*
|
||||
*
|
||||
* @example
|
||||
* const { result } = await cancelBeginOrderEditWorkflow(container)
|
||||
* .run({
|
||||
@@ -87,9 +91,9 @@ export const cancelBeginOrderEditWorkflowId = "cancel-begin-order-edit"
|
||||
* order_id: "order_123",
|
||||
* }
|
||||
* })
|
||||
*
|
||||
*
|
||||
* @summary
|
||||
*
|
||||
*
|
||||
* Cancel a requested order edit.
|
||||
*/
|
||||
export const cancelBeginOrderEditWorkflow = createWorkflow(
|
||||
@@ -128,9 +132,23 @@ export const cancelBeginOrderEditWorkflow = createWorkflow(
|
||||
}
|
||||
)
|
||||
|
||||
const eventData = transform(
|
||||
{ order, orderChange },
|
||||
({ order, orderChange }) => {
|
||||
return {
|
||||
order_id: order.id,
|
||||
actions: orderChange.actions,
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
parallelize(
|
||||
deleteOrderChangesStep({ ids: [orderChange.id] }),
|
||||
deleteOrderShippingMethods({ ids: shippingToRemove })
|
||||
deleteOrderShippingMethods({ ids: shippingToRemove }),
|
||||
emitEventStep({
|
||||
eventName: OrderEditWorkflowEvents.CANCELED,
|
||||
data: eventData,
|
||||
})
|
||||
)
|
||||
}
|
||||
)
|
||||
+17
-1
@@ -8,6 +8,7 @@ import {
|
||||
ChangeActionType,
|
||||
MathBN,
|
||||
OrderChangeStatus,
|
||||
OrderEditWorkflowEvents,
|
||||
} from "@medusajs/framework/utils"
|
||||
import {
|
||||
WorkflowResponse,
|
||||
@@ -17,7 +18,7 @@ import {
|
||||
} from "@medusajs/framework/workflows-sdk"
|
||||
import { reserveInventoryStep } from "../../../cart/steps/reserve-inventory"
|
||||
import { prepareConfirmInventoryInput } from "../../../cart/utils/prepare-confirm-inventory-input"
|
||||
import { useRemoteQueryStep } from "../../../common"
|
||||
import { emitEventStep, useRemoteQueryStep } from "../../../common"
|
||||
import { deleteReservationsByLineItemsStep } from "../../../reservation"
|
||||
import { previewOrderChangeStep } from "../../steps"
|
||||
import { confirmOrderChanges } from "../../steps/confirm-order-changes"
|
||||
@@ -287,6 +288,21 @@ export const confirmOrderEditRequestWorkflow = createWorkflow(
|
||||
},
|
||||
})
|
||||
|
||||
const eventData = transform(
|
||||
{ order, orderChange },
|
||||
({ order, orderChange }) => {
|
||||
return {
|
||||
order_id: order.id,
|
||||
actions: orderChange.actions,
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
emitEventStep({
|
||||
eventName: OrderEditWorkflowEvents.CONFIRMED,
|
||||
data: eventData,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(orderPreview)
|
||||
}
|
||||
)
|
||||
@@ -3,14 +3,17 @@ import {
|
||||
OrderDTO,
|
||||
OrderPreviewDTO,
|
||||
} from "@medusajs/framework/types"
|
||||
import { OrderChangeStatus } from "@medusajs/framework/utils"
|
||||
import {
|
||||
OrderChangeStatus,
|
||||
OrderEditWorkflowEvents,
|
||||
} from "@medusajs/framework/utils"
|
||||
import {
|
||||
WorkflowResponse,
|
||||
createStep,
|
||||
createWorkflow,
|
||||
transform,
|
||||
} from "@medusajs/framework/workflows-sdk"
|
||||
import { useRemoteQueryStep } from "../../../common"
|
||||
import { emitEventStep, useRemoteQueryStep } from "../../../common"
|
||||
import { previewOrderChangeStep } from "../../steps"
|
||||
import { updateOrderChangesStep } from "../../steps/update-order-changes"
|
||||
import {
|
||||
@@ -134,7 +137,7 @@ export const requestOrderEditRequestWorkflow = createWorkflow(
|
||||
|
||||
const orderChange: OrderChangeDTO = useRemoteQueryStep({
|
||||
entry_point: "order_change",
|
||||
fields: ["id", "canceled_at"],
|
||||
fields: ["id", "canceled_at", "actions.*"],
|
||||
variables: {
|
||||
filters: {
|
||||
order_id: input.order_id,
|
||||
@@ -152,6 +155,21 @@ export const requestOrderEditRequestWorkflow = createWorkflow(
|
||||
const updateOrderChangesData = getOrderChangesData({ input, orderChange })
|
||||
updateOrderChangesStep(updateOrderChangesData)
|
||||
|
||||
const eventData = transform(
|
||||
{ order, orderChange },
|
||||
({ order, orderChange }) => {
|
||||
return {
|
||||
order_id: order.id,
|
||||
actions: orderChange.actions,
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
emitEventStep({
|
||||
eventName: OrderEditWorkflowEvents.REQUESTED,
|
||||
data: eventData,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(previewOrderChangeStep(order.id))
|
||||
}
|
||||
)
|
||||
@@ -31,6 +31,12 @@ export const OrderWorkflowEvents = {
|
||||
TRANSFER_REQUESTED: "order.transfer_requested",
|
||||
}
|
||||
|
||||
export const OrderEditWorkflowEvents = {
|
||||
REQUESTED: "order-edit.requested",
|
||||
CONFIRMED: "order-edit.confirmed",
|
||||
CANCELED: "order-edit.canceled",
|
||||
}
|
||||
|
||||
export const UserWorkflowEvents = {
|
||||
CREATED: "user.created",
|
||||
UPDATED: "user.updated",
|
||||
|
||||
Reference in new issue
Block a user