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 { OrderChangeDTO, OrderDTO } from "@medusajs/framework/types"
|
||||||
import { ChangeActionType, OrderChangeStatus } from "@medusajs/framework/utils"
|
import {
|
||||||
|
ChangeActionType,
|
||||||
|
OrderChangeStatus,
|
||||||
|
OrderEditWorkflowEvents,
|
||||||
|
} from "@medusajs/framework/utils"
|
||||||
import {
|
import {
|
||||||
WorkflowData,
|
WorkflowData,
|
||||||
createStep,
|
createStep,
|
||||||
@@ -7,7 +11,7 @@ import {
|
|||||||
parallelize,
|
parallelize,
|
||||||
transform,
|
transform,
|
||||||
} from "@medusajs/framework/workflows-sdk"
|
} from "@medusajs/framework/workflows-sdk"
|
||||||
import { useRemoteQueryStep } from "../../../common"
|
import { emitEventStep, useRemoteQueryStep } from "../../../common"
|
||||||
import { deleteOrderChangesStep, deleteOrderShippingMethods } from "../../steps"
|
import { deleteOrderChangesStep, deleteOrderShippingMethods } from "../../steps"
|
||||||
import {
|
import {
|
||||||
throwIfIsCancelled,
|
throwIfIsCancelled,
|
||||||
@@ -31,14 +35,14 @@ export type CancelBeginOrderEditValidationStepInput = {
|
|||||||
/**
|
/**
|
||||||
* This step validates that a requested order edit can be canceled.
|
* 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.
|
* If the order is canceled or the order change is not active, the step will throw an error.
|
||||||
*
|
*
|
||||||
* :::note
|
* :::note
|
||||||
*
|
*
|
||||||
* You can retrieve an order and order change details using [Query](https://docs.medusajs.com/learn/fundamentals/module-links/query),
|
* 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).
|
* or [useQueryGraphStep](https://docs.medusajs.com/resources/references/medusa-workflows/steps/useQueryGraphStep).
|
||||||
*
|
*
|
||||||
* :::
|
* :::
|
||||||
*
|
*
|
||||||
* @example
|
* @example
|
||||||
* const data = cancelBeginOrderEditValidationStep({
|
* const data = cancelBeginOrderEditValidationStep({
|
||||||
* order: {
|
* 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
|
* 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).
|
* [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
|
* You can use this workflow within your customizations or your own custom workflows, allowing you to cancel an order edit
|
||||||
* in your custom flow.
|
* in your custom flow.
|
||||||
*
|
*
|
||||||
* @example
|
* @example
|
||||||
* const { result } = await cancelBeginOrderEditWorkflow(container)
|
* const { result } = await cancelBeginOrderEditWorkflow(container)
|
||||||
* .run({
|
* .run({
|
||||||
@@ -87,9 +91,9 @@ export const cancelBeginOrderEditWorkflowId = "cancel-begin-order-edit"
|
|||||||
* order_id: "order_123",
|
* order_id: "order_123",
|
||||||
* }
|
* }
|
||||||
* })
|
* })
|
||||||
*
|
*
|
||||||
* @summary
|
* @summary
|
||||||
*
|
*
|
||||||
* Cancel a requested order edit.
|
* Cancel a requested order edit.
|
||||||
*/
|
*/
|
||||||
export const cancelBeginOrderEditWorkflow = createWorkflow(
|
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(
|
parallelize(
|
||||||
deleteOrderChangesStep({ ids: [orderChange.id] }),
|
deleteOrderChangesStep({ ids: [orderChange.id] }),
|
||||||
deleteOrderShippingMethods({ ids: shippingToRemove })
|
deleteOrderShippingMethods({ ids: shippingToRemove }),
|
||||||
|
emitEventStep({
|
||||||
|
eventName: OrderEditWorkflowEvents.CANCELED,
|
||||||
|
data: eventData,
|
||||||
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
+17
-1
@@ -8,6 +8,7 @@ import {
|
|||||||
ChangeActionType,
|
ChangeActionType,
|
||||||
MathBN,
|
MathBN,
|
||||||
OrderChangeStatus,
|
OrderChangeStatus,
|
||||||
|
OrderEditWorkflowEvents,
|
||||||
} from "@medusajs/framework/utils"
|
} from "@medusajs/framework/utils"
|
||||||
import {
|
import {
|
||||||
WorkflowResponse,
|
WorkflowResponse,
|
||||||
@@ -17,7 +18,7 @@ import {
|
|||||||
} from "@medusajs/framework/workflows-sdk"
|
} from "@medusajs/framework/workflows-sdk"
|
||||||
import { reserveInventoryStep } from "../../../cart/steps/reserve-inventory"
|
import { reserveInventoryStep } from "../../../cart/steps/reserve-inventory"
|
||||||
import { prepareConfirmInventoryInput } from "../../../cart/utils/prepare-confirm-inventory-input"
|
import { prepareConfirmInventoryInput } from "../../../cart/utils/prepare-confirm-inventory-input"
|
||||||
import { useRemoteQueryStep } from "../../../common"
|
import { emitEventStep, useRemoteQueryStep } from "../../../common"
|
||||||
import { deleteReservationsByLineItemsStep } from "../../../reservation"
|
import { deleteReservationsByLineItemsStep } from "../../../reservation"
|
||||||
import { previewOrderChangeStep } from "../../steps"
|
import { previewOrderChangeStep } from "../../steps"
|
||||||
import { confirmOrderChanges } from "../../steps/confirm-order-changes"
|
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)
|
return new WorkflowResponse(orderPreview)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@@ -3,14 +3,17 @@ import {
|
|||||||
OrderDTO,
|
OrderDTO,
|
||||||
OrderPreviewDTO,
|
OrderPreviewDTO,
|
||||||
} from "@medusajs/framework/types"
|
} from "@medusajs/framework/types"
|
||||||
import { OrderChangeStatus } from "@medusajs/framework/utils"
|
import {
|
||||||
|
OrderChangeStatus,
|
||||||
|
OrderEditWorkflowEvents,
|
||||||
|
} from "@medusajs/framework/utils"
|
||||||
import {
|
import {
|
||||||
WorkflowResponse,
|
WorkflowResponse,
|
||||||
createStep,
|
createStep,
|
||||||
createWorkflow,
|
createWorkflow,
|
||||||
transform,
|
transform,
|
||||||
} from "@medusajs/framework/workflows-sdk"
|
} from "@medusajs/framework/workflows-sdk"
|
||||||
import { useRemoteQueryStep } from "../../../common"
|
import { emitEventStep, useRemoteQueryStep } from "../../../common"
|
||||||
import { previewOrderChangeStep } from "../../steps"
|
import { previewOrderChangeStep } from "../../steps"
|
||||||
import { updateOrderChangesStep } from "../../steps/update-order-changes"
|
import { updateOrderChangesStep } from "../../steps/update-order-changes"
|
||||||
import {
|
import {
|
||||||
@@ -134,7 +137,7 @@ export const requestOrderEditRequestWorkflow = createWorkflow(
|
|||||||
|
|
||||||
const orderChange: OrderChangeDTO = useRemoteQueryStep({
|
const orderChange: OrderChangeDTO = useRemoteQueryStep({
|
||||||
entry_point: "order_change",
|
entry_point: "order_change",
|
||||||
fields: ["id", "canceled_at"],
|
fields: ["id", "canceled_at", "actions.*"],
|
||||||
variables: {
|
variables: {
|
||||||
filters: {
|
filters: {
|
||||||
order_id: input.order_id,
|
order_id: input.order_id,
|
||||||
@@ -152,6 +155,21 @@ export const requestOrderEditRequestWorkflow = createWorkflow(
|
|||||||
const updateOrderChangesData = getOrderChangesData({ input, orderChange })
|
const updateOrderChangesData = getOrderChangesData({ input, orderChange })
|
||||||
updateOrderChangesStep(updateOrderChangesData)
|
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))
|
return new WorkflowResponse(previewOrderChangeStep(order.id))
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@@ -31,6 +31,12 @@ export const OrderWorkflowEvents = {
|
|||||||
TRANSFER_REQUESTED: "order.transfer_requested",
|
TRANSFER_REQUESTED: "order.transfer_requested",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const OrderEditWorkflowEvents = {
|
||||||
|
REQUESTED: "order-edit.requested",
|
||||||
|
CONFIRMED: "order-edit.confirmed",
|
||||||
|
CANCELED: "order-edit.canceled",
|
||||||
|
}
|
||||||
|
|
||||||
export const UserWorkflowEvents = {
|
export const UserWorkflowEvents = {
|
||||||
CREATED: "user.created",
|
CREATED: "user.created",
|
||||||
UPDATED: "user.updated",
|
UPDATED: "user.updated",
|
||||||
|
|||||||
Reference in new issue
Block a user