fix(core-flows,order): update action (#8333)
This commit is contained in:
committed by
GitHub
parent
42c80e4264
commit
ed67d44d28
@@ -383,8 +383,8 @@ medusaIntegrationTestRunner({
|
||||
)
|
||||
})
|
||||
|
||||
describe("Returns lifecycle", () => {
|
||||
it.only("Full flow with 2 orders", async () => {
|
||||
describe("Claims lifecycle", () => {
|
||||
it("Full flow with 2 orders", async () => {
|
||||
let result = await api.post(
|
||||
"/admin/claims",
|
||||
{
|
||||
|
||||
@@ -909,6 +909,24 @@ medusaIntegrationTestRunner({
|
||||
})
|
||||
)
|
||||
|
||||
const receiveItemActionId =
|
||||
result.data.order_preview.items[0].actions[0].id
|
||||
|
||||
// invalid update (quantity 0)
|
||||
result = await api
|
||||
.post(
|
||||
`/admin/returns/${returnId}/receive-items/${receiveItemActionId}`,
|
||||
{
|
||||
quantity: 0,
|
||||
},
|
||||
adminHeaders
|
||||
)
|
||||
.catch((e) => e)
|
||||
|
||||
expect(result.response.data.message).toEqual(
|
||||
`Quantity to receive return of item ${item.id} is required.`
|
||||
)
|
||||
|
||||
result = await api.post(
|
||||
`/admin/returns/${returnId}/dismiss-items`,
|
||||
{
|
||||
|
||||
@@ -4,10 +4,11 @@ import {
|
||||
UpdateOrderChangeDTO,
|
||||
} from "@medusajs/types"
|
||||
import {
|
||||
getSelectsAndRelationsFromObjectArray,
|
||||
ModuleRegistrationName,
|
||||
deduplicate,
|
||||
getSelectsAndRelationsFromObjectArray,
|
||||
} from "@medusajs/utils"
|
||||
import { createStep, StepResponse } from "@medusajs/workflows-sdk"
|
||||
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
|
||||
|
||||
export const cancelOrderChangeStepId = "cancel-order-change"
|
||||
export const cancelOrderChangeStep = createStep(
|
||||
@@ -22,8 +23,18 @@ export const cancelOrderChangeStep = createStep(
|
||||
{ objectFields: ["metadata"] }
|
||||
)
|
||||
|
||||
selects.push(
|
||||
"order_id",
|
||||
"return_id",
|
||||
"claim_id",
|
||||
"exchange_id",
|
||||
"version",
|
||||
"canceled_at",
|
||||
"cancelled_by"
|
||||
)
|
||||
|
||||
const dataBeforeUpdate = await service.retrieveOrderChange(data.id, {
|
||||
select: [...selects, "canceled_at"],
|
||||
select: deduplicate(selects),
|
||||
relations,
|
||||
})
|
||||
|
||||
|
||||
@@ -2,14 +2,14 @@ import { IOrderModuleService, OrderChangeActionDTO } from "@medusajs/types"
|
||||
import { ChangeActionType, ModuleRegistrationName } from "@medusajs/utils"
|
||||
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
|
||||
|
||||
type CreateOrderClaimItemsInput = {
|
||||
type CreateOrderClaimItemsFromActionsInput = {
|
||||
changes: OrderChangeActionDTO[]
|
||||
claimId: string
|
||||
}
|
||||
|
||||
export const createOrderClaimItemsStep = createStep(
|
||||
"create-claim-items",
|
||||
async (input: CreateOrderClaimItemsInput, { container }) => {
|
||||
export const createOrderClaimItemsFromActionsStep = createStep(
|
||||
"create-claim-items-from-change-actions",
|
||||
async (input: CreateOrderClaimItemsFromActionsInput, { container }) => {
|
||||
const orderModuleService = container.resolve<IOrderModuleService>(
|
||||
ModuleRegistrationName.ORDER
|
||||
)
|
||||
@@ -6,14 +6,14 @@ import {
|
||||
import { ModuleRegistrationName } from "@medusajs/utils"
|
||||
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
|
||||
|
||||
type CreateReturnItemsInput = {
|
||||
type CreateReturnItemsFromActionsInput = {
|
||||
changes: OrderChangeActionDTO[]
|
||||
returnId: string
|
||||
}
|
||||
|
||||
export const createReturnItemsStep = createStep(
|
||||
"create-return-items",
|
||||
async (input: CreateReturnItemsInput, { container }) => {
|
||||
export const createReturnItemsFromActionsStep = createStep(
|
||||
"create-return-items-from-change-actions",
|
||||
async (input: CreateReturnItemsFromActionsInput, { container }) => {
|
||||
const orderModuleService = container.resolve<IOrderModuleService>(
|
||||
ModuleRegistrationName.ORDER
|
||||
)
|
||||
@@ -4,10 +4,11 @@ import {
|
||||
UpdateOrderChangeDTO,
|
||||
} from "@medusajs/types"
|
||||
import {
|
||||
getSelectsAndRelationsFromObjectArray,
|
||||
ModuleRegistrationName,
|
||||
deduplicate,
|
||||
getSelectsAndRelationsFromObjectArray,
|
||||
} from "@medusajs/utils"
|
||||
import { createStep, StepResponse } from "@medusajs/workflows-sdk"
|
||||
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
|
||||
|
||||
export const declineOrderChangeStepId = "decline-order-change"
|
||||
export const declineOrderChangeStep = createStep(
|
||||
@@ -21,9 +22,19 @@ export const declineOrderChangeStep = createStep(
|
||||
[data],
|
||||
{ objectFields: ["metadata"] }
|
||||
)
|
||||
selects.push(
|
||||
"order_id",
|
||||
"return_id",
|
||||
"claim_id",
|
||||
"exchange_id",
|
||||
"version",
|
||||
"declined_at",
|
||||
"declined_by",
|
||||
"declined_reason"
|
||||
)
|
||||
|
||||
const dataBeforeUpdate = await service.retrieveOrderChange(data.id, {
|
||||
select: [...selects, "declined_at"],
|
||||
select: deduplicate(selects),
|
||||
relations,
|
||||
})
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ export * from "./cancel-order-change"
|
||||
export * from "./cancel-orders"
|
||||
export * from "./cancel-return"
|
||||
export * from "./complete-orders"
|
||||
export * from "./create-claim-items"
|
||||
export * from "./create-claim-items-from-actions"
|
||||
export * from "./create-claims"
|
||||
export * from "./create-complete-return"
|
||||
export * from "./create-exchanges"
|
||||
|
||||
@@ -3,10 +3,11 @@ import {
|
||||
UpdateOrderChangeActionDTO,
|
||||
} from "@medusajs/types"
|
||||
import {
|
||||
getSelectsAndRelationsFromObjectArray,
|
||||
ModuleRegistrationName,
|
||||
deduplicate,
|
||||
getSelectsAndRelationsFromObjectArray,
|
||||
} from "@medusajs/utils"
|
||||
import { createStep, StepResponse } from "@medusajs/workflows-sdk"
|
||||
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
|
||||
|
||||
export const updateOrderChangeActionsStepId = "update-order-change-actions"
|
||||
export const updateOrderChangeActionsStep = createStep(
|
||||
@@ -17,11 +18,20 @@ export const updateOrderChangeActionsStep = createStep(
|
||||
)
|
||||
|
||||
const { selects, relations } = getSelectsAndRelationsFromObjectArray(data, {
|
||||
objectFields: ["metadata"],
|
||||
objectFields: ["metadata", "details"],
|
||||
})
|
||||
selects.push(
|
||||
"order_id",
|
||||
"return_id",
|
||||
"claim_id",
|
||||
"exchange_id",
|
||||
"version",
|
||||
"order_change_id"
|
||||
)
|
||||
|
||||
const dataBeforeUpdate = await service.listOrderChangeActions(
|
||||
{ id: data.map((d) => d.id) },
|
||||
{ relations, select: selects }
|
||||
{ relations, select: deduplicate(selects) }
|
||||
)
|
||||
|
||||
const updated = await service.updateOrderChangeActions(data)
|
||||
|
||||
@@ -19,8 +19,8 @@ import { createFulfillmentWorkflow } from "../../../fulfillment/workflows/create
|
||||
import { createReturnFulfillmentWorkflow } from "../../../fulfillment/workflows/create-return-fulfillment"
|
||||
import { previewOrderChangeStep } from "../../steps"
|
||||
import { confirmOrderChanges } from "../../steps/confirm-order-changes"
|
||||
import { createOrderClaimItemsStep } from "../../steps/create-claim-items"
|
||||
import { createReturnItemsStep } from "../../steps/create-return-items"
|
||||
import { createOrderClaimItemsFromActionsStep } from "../../steps/create-claim-items-from-actions"
|
||||
import { createReturnItemsFromActionsStep } from "../../steps/create-return-items-from-actions"
|
||||
import {
|
||||
throwIfIsCancelled,
|
||||
throwIfOrderChangeIsNotActive,
|
||||
@@ -227,8 +227,8 @@ export const confirmClaimRequestWorkflow = createWorkflow(
|
||||
const orderPreview = previewOrderChangeStep(order.id)
|
||||
|
||||
const [createClaimItems, createdReturnItems] = parallelize(
|
||||
createOrderClaimItemsStep(claimItems),
|
||||
createReturnItemsStep(returnItems),
|
||||
createOrderClaimItemsFromActionsStep(claimItems),
|
||||
createReturnItemsFromActionsStep(returnItems),
|
||||
confirmOrderChanges({ changes: [orderChange], orderId: order.id })
|
||||
)
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ import { createRemoteLinkStep, useRemoteQueryStep } from "../../../common"
|
||||
import { createReturnFulfillmentWorkflow } from "../../../fulfillment/workflows/create-return-fulfillment"
|
||||
import { previewOrderChangeStep } from "../../steps"
|
||||
import { confirmOrderChanges } from "../../steps/confirm-order-changes"
|
||||
import { createReturnItemsStep } from "../../steps/create-return-items"
|
||||
import { createReturnItemsFromActionsStep } from "../../steps/create-return-items-from-actions"
|
||||
import {
|
||||
throwIfIsCancelled,
|
||||
throwIfOrderChangeIsNotActive,
|
||||
@@ -111,15 +111,12 @@ function extractReturnShippingOptionId({ orderPreview, orderReturn }) {
|
||||
continue
|
||||
}
|
||||
|
||||
for (const action of modifiedShippingMethod_.actions) {
|
||||
if (
|
||||
returnShippingMethod = modifiedShippingMethod_.actions.find((action) => {
|
||||
return (
|
||||
action.action === ChangeActionType.SHIPPING_ADD &&
|
||||
action.return_id === orderReturn.id
|
||||
) {
|
||||
returnShippingMethod = shippingMethod
|
||||
break
|
||||
}
|
||||
}
|
||||
)
|
||||
})
|
||||
}
|
||||
return returnShippingMethod.shipping_option_id
|
||||
}
|
||||
@@ -184,7 +181,7 @@ export const confirmReturnRequestWorkflow = createWorkflow(
|
||||
|
||||
const orderPreview = previewOrderChangeStep(order.id)
|
||||
|
||||
const createdReturnItems = createReturnItemsStep({
|
||||
const createdReturnItems = createReturnItemsFromActionsStep({
|
||||
returnId: orderReturn.id,
|
||||
changes: returnItemActions,
|
||||
})
|
||||
|
||||
@@ -7,6 +7,7 @@ import {
|
||||
AuthenticatedMedusaRequest,
|
||||
MedusaResponse,
|
||||
} from "../../../../../types/routing"
|
||||
import { defaultAdminDetailsReturnFields } from "../../../returns/query-config"
|
||||
|
||||
export const POST = async (
|
||||
req: AuthenticatedMedusaRequest,
|
||||
@@ -31,10 +32,27 @@ export const POST = async (
|
||||
fields: req.remoteQueryConfig.fields,
|
||||
})
|
||||
|
||||
const [orderClaim] = await remoteQuery(queryObject)
|
||||
const [orderClaim] = await remoteQuery(queryObject, undefined, {
|
||||
throwIfKeyNotFound: true,
|
||||
})
|
||||
|
||||
let orderReturn
|
||||
if (orderClaim.return_id) {
|
||||
const [orderReturnData] = await remoteQuery(
|
||||
remoteQueryObjectFromString({
|
||||
entryPoint: "return",
|
||||
variables: {
|
||||
id: orderClaim.return_id,
|
||||
},
|
||||
fields: defaultAdminDetailsReturnFields,
|
||||
})
|
||||
)
|
||||
orderReturn = orderReturnData
|
||||
}
|
||||
|
||||
res.json({
|
||||
order_preview: result,
|
||||
claim: orderClaim,
|
||||
return: orderReturn,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -28,7 +28,9 @@ export const GET = async (
|
||||
fields: req.remoteQueryConfig.fields,
|
||||
})
|
||||
|
||||
const [orderReturn] = await remoteQuery(queryObject)
|
||||
const [orderReturn] = await remoteQuery(queryObject, undefined, {
|
||||
throwIfKeyNotFound: true,
|
||||
})
|
||||
|
||||
res.json({
|
||||
return: orderReturn,
|
||||
|
||||
@@ -2,6 +2,7 @@ import { BigNumberRawValue, DAL } from "@medusajs/types"
|
||||
import {
|
||||
BigNumber,
|
||||
ClaimType,
|
||||
DALUtils,
|
||||
MikroOrmBigNumberProperty,
|
||||
createPsqlIndexStatementHelper,
|
||||
generateEntityId,
|
||||
@@ -12,6 +13,7 @@ import {
|
||||
Collection,
|
||||
Entity,
|
||||
Enum,
|
||||
Filter,
|
||||
ManyToOne,
|
||||
OnInit,
|
||||
OneToMany,
|
||||
@@ -54,6 +56,7 @@ const ReturnIdIndex = createPsqlIndexStatementHelper({
|
||||
})
|
||||
|
||||
@Entity({ tableName: "order_claim" })
|
||||
@Filter(DALUtils.mikroOrmSoftDeletableFilterOptions)
|
||||
export default class OrderClaim {
|
||||
[OptionalProps]?: OptionalOrderClaimProps
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { BigNumberRawValue, DAL } from "@medusajs/types"
|
||||
import {
|
||||
BigNumber,
|
||||
DALUtils,
|
||||
MikroOrmBigNumberProperty,
|
||||
createPsqlIndexStatementHelper,
|
||||
generateEntityId,
|
||||
@@ -10,6 +11,7 @@ import {
|
||||
Cascade,
|
||||
Collection,
|
||||
Entity,
|
||||
Filter,
|
||||
ManyToOne,
|
||||
OnInit,
|
||||
OneToMany,
|
||||
@@ -51,6 +53,7 @@ const ReturnIdIndex = createPsqlIndexStatementHelper({
|
||||
})
|
||||
|
||||
@Entity({ tableName: "order_exchange" })
|
||||
@Filter(DALUtils.mikroOrmSoftDeletableFilterOptions)
|
||||
export default class OrderExchange {
|
||||
[OptionalProps]?: OptionalOrderExchangeProps
|
||||
|
||||
|
||||
@@ -108,6 +108,7 @@ export default class OrderChangeAction {
|
||||
|
||||
@ManyToOne(() => Return, {
|
||||
persist: false,
|
||||
nullable: true,
|
||||
})
|
||||
return: Return
|
||||
|
||||
@@ -123,6 +124,7 @@ export default class OrderChangeAction {
|
||||
|
||||
@ManyToOne(() => OrderClaim, {
|
||||
persist: false,
|
||||
nullable: true,
|
||||
})
|
||||
claim: OrderClaim
|
||||
|
||||
@@ -138,6 +140,7 @@ export default class OrderChangeAction {
|
||||
|
||||
@ManyToOne(() => OrderExchange, {
|
||||
persist: false,
|
||||
nullable: true,
|
||||
})
|
||||
exchange: OrderExchange
|
||||
|
||||
|
||||
@@ -114,6 +114,7 @@ export default class OrderChange {
|
||||
|
||||
@ManyToOne(() => Return, {
|
||||
persist: false,
|
||||
nullable: true,
|
||||
})
|
||||
return: Rel<Return>
|
||||
|
||||
@@ -129,6 +130,7 @@ export default class OrderChange {
|
||||
|
||||
@ManyToOne(() => OrderClaim, {
|
||||
persist: false,
|
||||
nullable: true,
|
||||
})
|
||||
claim: OrderClaim
|
||||
|
||||
@@ -144,6 +146,7 @@ export default class OrderChange {
|
||||
|
||||
@ManyToOne(() => OrderExchange, {
|
||||
persist: false,
|
||||
nullable: true,
|
||||
})
|
||||
exchange: OrderExchange
|
||||
|
||||
|
||||
@@ -96,6 +96,7 @@ export default class OrderShippingMethod {
|
||||
|
||||
@ManyToOne(() => Return, {
|
||||
persist: false,
|
||||
nullable: true,
|
||||
})
|
||||
return: Rel<Return>
|
||||
|
||||
@@ -111,6 +112,7 @@ export default class OrderShippingMethod {
|
||||
|
||||
@ManyToOne(() => Exchange, {
|
||||
persist: false,
|
||||
nullable: true,
|
||||
})
|
||||
exchange: Rel<Exchange>
|
||||
|
||||
@@ -126,6 +128,7 @@ export default class OrderShippingMethod {
|
||||
|
||||
@ManyToOne(() => Claim, {
|
||||
persist: false,
|
||||
nullable: true,
|
||||
})
|
||||
claim: Rel<Claim>
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { BigNumberRawValue, DAL } from "@medusajs/types"
|
||||
import {
|
||||
BigNumber,
|
||||
DALUtils,
|
||||
MikroOrmBigNumberProperty,
|
||||
ReturnStatus,
|
||||
createPsqlIndexStatementHelper,
|
||||
@@ -12,6 +13,7 @@ import {
|
||||
Collection,
|
||||
Entity,
|
||||
Enum,
|
||||
Filter,
|
||||
ManyToOne,
|
||||
OnInit,
|
||||
OneToMany,
|
||||
@@ -60,6 +62,7 @@ const ClaimIdIndex = createPsqlIndexStatementHelper({
|
||||
})
|
||||
|
||||
@Entity({ tableName: "return" })
|
||||
@Filter(DALUtils.mikroOrmSoftDeletableFilterOptions)
|
||||
export default class Return {
|
||||
[OptionalProps]?: OptionalReturnProps
|
||||
|
||||
|
||||
@@ -108,6 +108,7 @@ export default class Transaction {
|
||||
|
||||
@ManyToOne(() => Return, {
|
||||
persist: false,
|
||||
nullable: true,
|
||||
})
|
||||
return: Rel<Return>
|
||||
|
||||
@@ -123,6 +124,7 @@ export default class Transaction {
|
||||
|
||||
@ManyToOne(() => Exchange, {
|
||||
persist: false,
|
||||
nullable: true,
|
||||
})
|
||||
exchange: Rel<Exchange>
|
||||
|
||||
@@ -138,6 +140,7 @@ export default class Transaction {
|
||||
|
||||
@ManyToOne(() => Claim, {
|
||||
persist: false,
|
||||
nullable: true,
|
||||
})
|
||||
claim: Rel<Claim>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user