feat(medusa, types, utils, core-flows, order) request & accept order transfer (#10106)
**What** - add request order transfer workflow - add admin endpoint for transferring an order to a customer - accept order transfer storefront endpoint - accept transfer workflow - changes in the order module to introduce new change and action types --- **Note** - we return 400 instead 409 currently if there is already an active order edit, I will revisit this in a followup - endpoint for requesting order transfer from the storefront will be added in a separate PR --- RESOLVES CMRC-701 RESOLVES CMRC-703 RESOLVES CMRC-704 RESOLVES CMRC-705
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
import { AuthenticatedMedusaRequest, MedusaResponse } from "@medusajs/framework"
|
||||
import { HttpTypes } from "@medusajs/framework/types"
|
||||
import {
|
||||
acceptOrderTransferWorkflow,
|
||||
getOrderDetailWorkflow,
|
||||
} from "@medusajs/core-flows"
|
||||
|
||||
import { StoreAcceptOrderTransferType } from "../../../validators"
|
||||
|
||||
export const POST = async (
|
||||
req: AuthenticatedMedusaRequest<StoreAcceptOrderTransferType>,
|
||||
res: MedusaResponse<HttpTypes.StoreOrderResponse>
|
||||
) => {
|
||||
await acceptOrderTransferWorkflow(req.scope).run({
|
||||
input: {
|
||||
order_id: req.params.id,
|
||||
token: req.validatedBody.token,
|
||||
},
|
||||
})
|
||||
|
||||
const { result } = await getOrderDetailWorkflow(req.scope).run({
|
||||
input: {
|
||||
fields: req.remoteQueryConfig.fields,
|
||||
order_id: req.params.id,
|
||||
},
|
||||
})
|
||||
|
||||
res.status(200).json({ order: result as HttpTypes.StoreOrder })
|
||||
}
|
||||
@@ -1,8 +1,15 @@
|
||||
import { MiddlewareRoute } from "@medusajs/framework/http"
|
||||
import {
|
||||
MiddlewareRoute,
|
||||
validateAndTransformBody,
|
||||
} from "@medusajs/framework/http"
|
||||
import { authenticate } from "../../../utils/middlewares/authenticate-middleware"
|
||||
import { validateAndTransformQuery } from "@medusajs/framework"
|
||||
import * as QueryConfig from "./query-config"
|
||||
import { StoreGetOrderParams, StoreGetOrdersParams } from "./validators"
|
||||
import {
|
||||
StoreGetOrderParams,
|
||||
StoreGetOrdersParams,
|
||||
StoreAcceptOrderTransfer,
|
||||
} from "./validators"
|
||||
|
||||
export const storeOrderRoutesMiddlewares: MiddlewareRoute[] = [
|
||||
{
|
||||
@@ -26,4 +33,15 @@ export const storeOrderRoutesMiddlewares: MiddlewareRoute[] = [
|
||||
),
|
||||
],
|
||||
},
|
||||
{
|
||||
method: ["POST"],
|
||||
matcher: "/store/orders/:id/transfer/accept",
|
||||
middlewares: [
|
||||
validateAndTransformBody(StoreAcceptOrderTransfer),
|
||||
validateAndTransformQuery(
|
||||
StoreGetOrderParams,
|
||||
QueryConfig.retrieveTransformQueryConfig
|
||||
),
|
||||
],
|
||||
},
|
||||
]
|
||||
|
||||
@@ -18,3 +18,11 @@ export const StoreGetOrdersParams = createFindParams({
|
||||
.merge(applyAndAndOrOperators(StoreGetOrdersParamsFields))
|
||||
|
||||
export type StoreGetOrdersParamsType = z.infer<typeof StoreGetOrdersParams>
|
||||
|
||||
export const StoreAcceptOrderTransfer = z.object({
|
||||
token: z.string().min(1),
|
||||
})
|
||||
|
||||
export type StoreAcceptOrderTransferType = z.infer<
|
||||
typeof StoreAcceptOrderTransfer
|
||||
>
|
||||
|
||||
Reference in New Issue
Block a user