Feat(order): return reason and transaction methods (#7303)
This commit is contained in:
1 parent
8958214350
commit
6c94d0205c
23 files changed
+1036
-6
No files matched your search
@@ -8,7 +8,7 @@ import {
|
||||
getSelectsAndRelationsFromObjectArray,
|
||||
promiseAll,
|
||||
} from "@medusajs/utils"
|
||||
import { createStep, StepResponse } from "@medusajs/workflows-sdk"
|
||||
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
|
||||
|
||||
type UpdateCustomerGroupStepInput = {
|
||||
selector: FilterableCustomerGroupProps
|
||||
@@ -51,6 +51,7 @@ export const updateCustomerGroupsStep = createStep(
|
||||
prevCustomerGroups.map((c) =>
|
||||
service.updateCustomerGroups(c.id, {
|
||||
name: c.name,
|
||||
metadata: c.metadata,
|
||||
})
|
||||
)
|
||||
)
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
export * from "./workflows"
|
||||
export * from "./steps"
|
||||
@@ -0,0 +1,36 @@
|
||||
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
|
||||
import {
|
||||
CreateOrderReturnReasonDTO,
|
||||
IOrderModuleService,
|
||||
} from "@medusajs/types"
|
||||
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
|
||||
|
||||
export const createReturnReasonsStepId = "create-return-reasons"
|
||||
export const createReturnReasonsStep = createStep(
|
||||
createReturnReasonsStepId,
|
||||
async (data: CreateOrderReturnReasonDTO[], { container }) => {
|
||||
const service = container.resolve<IOrderModuleService>(
|
||||
ModuleRegistrationName.ORDER
|
||||
)
|
||||
|
||||
const createdReturnReasons = await service.createReturnReasons(data)
|
||||
|
||||
return new StepResponse(
|
||||
createdReturnReasons,
|
||||
createdReturnReasons.map(
|
||||
(createdReturnReasons) => createdReturnReasons.id
|
||||
)
|
||||
)
|
||||
},
|
||||
async (createdReturnReasonIds, { container }) => {
|
||||
if (!createdReturnReasonIds?.length) {
|
||||
return
|
||||
}
|
||||
|
||||
const service = container.resolve<IOrderModuleService>(
|
||||
ModuleRegistrationName.ORDER
|
||||
)
|
||||
|
||||
await service.deleteReturnReasons(createdReturnReasonIds)
|
||||
}
|
||||
)
|
||||
@@ -0,0 +1,30 @@
|
||||
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
|
||||
import { IOrderModuleService } from "@medusajs/types"
|
||||
import { createStep, StepResponse } from "@medusajs/workflows-sdk"
|
||||
|
||||
type DeleteReturnReasonStepInput = string[]
|
||||
|
||||
export const deleteReturnReasonStepId = "delete-return-reasons"
|
||||
export const deleteReturnReasonStep = createStep(
|
||||
deleteReturnReasonStepId,
|
||||
async (ids: DeleteReturnReasonStepInput, { container }) => {
|
||||
const service = container.resolve<IOrderModuleService>(
|
||||
ModuleRegistrationName.ORDER
|
||||
)
|
||||
|
||||
await service.softDeleteReturnReasons(ids)
|
||||
|
||||
return new StepResponse(void 0, ids)
|
||||
},
|
||||
async (prevReturnReasons, { container }) => {
|
||||
if (!prevReturnReasons) {
|
||||
return
|
||||
}
|
||||
|
||||
const service = container.resolve<IOrderModuleService>(
|
||||
ModuleRegistrationName.ORDER
|
||||
)
|
||||
|
||||
await service.restoreReturnReasons(prevReturnReasons)
|
||||
}
|
||||
)
|
||||
@@ -0,0 +1,3 @@
|
||||
export * from "./create-return-reasons"
|
||||
export * from "./delete-return-reasons"
|
||||
export * from "./update-return-resons"
|
||||
@@ -0,0 +1,61 @@
|
||||
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
|
||||
import {
|
||||
FilterableOrderReturnReasonProps,
|
||||
IOrderModuleService,
|
||||
ReturnReasonUpdatableFields,
|
||||
} from "@medusajs/types"
|
||||
import {
|
||||
getSelectsAndRelationsFromObjectArray,
|
||||
promiseAll,
|
||||
} from "@medusajs/utils"
|
||||
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
|
||||
|
||||
type UpdateReturnReasonStepInput = {
|
||||
selector: FilterableOrderReturnReasonProps
|
||||
update: ReturnReasonUpdatableFields
|
||||
}
|
||||
|
||||
export const updateReturnReasonStepId = "update-return-reasons"
|
||||
export const updateReturnReasonsStep = createStep(
|
||||
updateReturnReasonStepId,
|
||||
async (data: UpdateReturnReasonStepInput, { container }) => {
|
||||
const service = container.resolve<IOrderModuleService>(
|
||||
ModuleRegistrationName.ORDER
|
||||
)
|
||||
|
||||
const { selects, relations } = getSelectsAndRelationsFromObjectArray([
|
||||
data.update,
|
||||
])
|
||||
const prevReturnReasons = await service.listReturnReasons(data.selector, {
|
||||
select: selects,
|
||||
relations,
|
||||
})
|
||||
|
||||
const reasons = await service.updateReturnReasons(
|
||||
data.selector,
|
||||
data.update
|
||||
)
|
||||
|
||||
return new StepResponse(reasons, prevReturnReasons)
|
||||
},
|
||||
async (prevReturnReasons, { container }) => {
|
||||
if (!prevReturnReasons) {
|
||||
return
|
||||
}
|
||||
|
||||
const service = container.resolve<IOrderModuleService>(
|
||||
ModuleRegistrationName.ORDER
|
||||
)
|
||||
|
||||
await promiseAll(
|
||||
prevReturnReasons.map((c) =>
|
||||
service.updateReturnReasons(c.id, {
|
||||
value: c.value,
|
||||
label: c.label,
|
||||
description: c.description,
|
||||
metadata: c.metadata,
|
||||
})
|
||||
)
|
||||
)
|
||||
}
|
||||
)
|
||||
@@ -0,0 +1,18 @@
|
||||
import {
|
||||
CreateOrderReturnReasonDTO,
|
||||
OrderReturnReasonDTO,
|
||||
} from "@medusajs/types"
|
||||
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
|
||||
import { createReturnReasonsStep } from "../steps"
|
||||
|
||||
type WorkflowInput = { data: CreateOrderReturnReasonDTO[] }
|
||||
|
||||
export const createReturnReasonsWorkflowId = "create-return-reasons"
|
||||
export const createReturnReasonsWorkflow = createWorkflow(
|
||||
createReturnReasonsWorkflowId,
|
||||
(
|
||||
input: WorkflowData<WorkflowInput>
|
||||
): WorkflowData<OrderReturnReasonDTO[]> => {
|
||||
return createReturnReasonsStep(input.data)
|
||||
}
|
||||
)
|
||||
@@ -0,0 +1,12 @@
|
||||
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
|
||||
import { deleteReturnReasonStep } from "../steps"
|
||||
|
||||
type WorkflowInput = { ids: string[] }
|
||||
|
||||
export const deleteReturnReasonsWorkflowId = "delete-return-reasons"
|
||||
export const deleteReturnReasonsWorkflow = createWorkflow(
|
||||
deleteReturnReasonsWorkflowId,
|
||||
(input: WorkflowData<WorkflowInput>): WorkflowData<void> => {
|
||||
return deleteReturnReasonStep(input.ids)
|
||||
}
|
||||
)
|
||||
@@ -0,0 +1,3 @@
|
||||
export * from "./create-return-reasons"
|
||||
export * from "./delete-return-reasons"
|
||||
export * from "./update-return-reasons"
|
||||
@@ -0,0 +1,22 @@
|
||||
import {
|
||||
FilterableOrderReturnReasonProps,
|
||||
OrderReturnReasonDTO,
|
||||
ReturnReasonUpdatableFields,
|
||||
} from "@medusajs/types"
|
||||
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
|
||||
import { updateReturnReasonsStep } from "../steps"
|
||||
|
||||
type WorkflowInput = {
|
||||
selector: FilterableOrderReturnReasonProps
|
||||
update: ReturnReasonUpdatableFields
|
||||
}
|
||||
|
||||
export const updateReturnReasonsWorkflowId = "update-return-reasons"
|
||||
export const updateReturnReasonsWorkflow = createWorkflow(
|
||||
updateReturnReasonsWorkflowId,
|
||||
(
|
||||
input: WorkflowData<WorkflowInput>
|
||||
): WorkflowData<OrderReturnReasonDTO[]> => {
|
||||
return updateReturnReasonsStep(input)
|
||||
}
|
||||
)
|
||||
@@ -1255,6 +1255,95 @@ export interface OrderTransactionDTO {
|
||||
updated_at: Date | string
|
||||
}
|
||||
|
||||
export interface OrderTransactionDTO {
|
||||
/**
|
||||
* The ID of the transaction
|
||||
*/
|
||||
id: string
|
||||
/**
|
||||
* The ID of the associated order
|
||||
*/
|
||||
order_id: string
|
||||
/**
|
||||
* The associated order
|
||||
*
|
||||
* @expandable
|
||||
*/
|
||||
order: OrderDTO
|
||||
/**
|
||||
* The amount of the transaction
|
||||
*/
|
||||
amount: BigNumberValue
|
||||
/**
|
||||
* The raw amount of the transaction
|
||||
*/
|
||||
raw_amount: BigNumberRawValue
|
||||
/**
|
||||
* The currency code of the transaction
|
||||
*/
|
||||
currency_code: string
|
||||
/**
|
||||
* The reference of the transaction
|
||||
*/
|
||||
reference: string
|
||||
/**
|
||||
* The ID of the reference
|
||||
*/
|
||||
reference_id: string
|
||||
/**
|
||||
* The metadata of the transaction
|
||||
*/
|
||||
metadata: Record<string, unknown> | null
|
||||
/**
|
||||
* When the transaction was created
|
||||
*/
|
||||
created_at: Date | string
|
||||
/**
|
||||
* When the transaction was updated
|
||||
*/
|
||||
updated_at: Date | string
|
||||
}
|
||||
|
||||
export interface OrderReturnReasonDTO {
|
||||
/**
|
||||
* The ID of the return reason
|
||||
*/
|
||||
id: string
|
||||
/**
|
||||
* The unique value of the return reason
|
||||
*/
|
||||
value: string
|
||||
/**
|
||||
* The label of the return reason
|
||||
*/
|
||||
label: string
|
||||
/**
|
||||
* The description of the return reason
|
||||
*/
|
||||
description?: string
|
||||
/**
|
||||
* The parent return reason ID
|
||||
*/
|
||||
parent_return_reason_id?: string
|
||||
|
||||
parent_return_reason?: OrderReturnReasonDTO
|
||||
|
||||
return_reason_children?: OrderReturnReasonDTO[]
|
||||
|
||||
/**
|
||||
* The metadata of the return reason
|
||||
*/
|
||||
metadata: Record<string, unknown> | null
|
||||
/**
|
||||
* When the return reason was created
|
||||
*/
|
||||
created_at: Date | string
|
||||
/**
|
||||
* When the return reason was updated
|
||||
*/
|
||||
updated_at: Date | string
|
||||
}
|
||||
|
||||
export interface FilterableOrderProps
|
||||
extends BaseFilterable<FilterableOrderProps> {
|
||||
id?: string | string[]
|
||||
@@ -1369,3 +1458,10 @@ export interface FilterableOrderItemProps
|
||||
version?: string | string[] | OperatorMap<string>
|
||||
item_id?: string | string[] | OperatorMap<string>
|
||||
}
|
||||
|
||||
export interface FilterableOrderReturnReasonProps {
|
||||
id?: string | string[]
|
||||
value?: string | string[]
|
||||
label?: string
|
||||
description?: string
|
||||
}
|
||||
@@ -1,5 +1,10 @@
|
||||
import { BigNumberInput } from "../totals"
|
||||
import { OrderItemDTO, OrderLineItemDTO } from "./common"
|
||||
import {
|
||||
OrderItemDTO,
|
||||
OrderLineItemDTO,
|
||||
OrderReturnReasonDTO,
|
||||
OrderTransactionDTO,
|
||||
} from "./common"
|
||||
|
||||
/** ADDRESS START */
|
||||
export interface UpsertOrderAddressDTO {
|
||||
@@ -310,10 +315,13 @@ export interface UpdateOrderChangeActionDTO {
|
||||
|
||||
export interface CreateOrderTransactionDTO {
|
||||
order_id: string
|
||||
description?: string
|
||||
reference_type?: string
|
||||
reference_id?: string
|
||||
internal_note?: string
|
||||
created_by?: string
|
||||
amount: BigNumberInput
|
||||
currency_code: string
|
||||
reference?: string
|
||||
reference_id?: string
|
||||
metadata?: Record<string, unknown> | null
|
||||
}
|
||||
|
||||
@@ -321,11 +329,18 @@ export interface UpdateOrderTransactionDTO {
|
||||
id: string
|
||||
amount?: BigNumberInput
|
||||
currency_code?: string
|
||||
description?: string
|
||||
internal_note?: string
|
||||
reference?: string
|
||||
reference_id?: string
|
||||
metadata?: Record<string, unknown> | null
|
||||
}
|
||||
|
||||
export interface UpdateOrderTransactionWithSelectorDTO {
|
||||
selector: Partial<OrderTransactionDTO>
|
||||
data: Partial<UpdateOrderTransactionDTO>
|
||||
}
|
||||
|
||||
/** ORDER TRANSACTION END */
|
||||
|
||||
/** ORDER DETAIL START */
|
||||
@@ -401,3 +416,31 @@ export interface CreateOrderReturnDTO {
|
||||
}
|
||||
|
||||
/** ORDER bundled action flows */
|
||||
|
||||
export interface CreateOrderReturnReasonDTO {
|
||||
value: string
|
||||
label: string
|
||||
description?: string
|
||||
parent_return_reason_id?: string
|
||||
metadata?: Record<string, unknown> | null
|
||||
}
|
||||
|
||||
export interface UpdateOrderReturnReasonDTO {
|
||||
id?: string
|
||||
label?: string
|
||||
value?: string
|
||||
description?: string
|
||||
metadata?: Record<string, unknown> | null
|
||||
}
|
||||
|
||||
export interface ReturnReasonUpdatableFields {
|
||||
value?: string
|
||||
label?: string
|
||||
description?: string
|
||||
metadata?: Record<string, unknown> | null
|
||||
}
|
||||
|
||||
export interface UpdateOrderReturnReasonWithSelectorDTO {
|
||||
selector: Partial<OrderReturnReasonDTO>
|
||||
data: Partial<UpdateOrderReturnReasonDTO>
|
||||
}
|
||||
@@ -8,9 +8,11 @@ import {
|
||||
FilterableOrderLineItemProps,
|
||||
FilterableOrderLineItemTaxLineProps,
|
||||
FilterableOrderProps,
|
||||
FilterableOrderReturnReasonProps,
|
||||
FilterableOrderShippingMethodAdjustmentProps,
|
||||
FilterableOrderShippingMethodProps,
|
||||
FilterableOrderShippingMethodTaxLineProps,
|
||||
FilterableOrderTransactionProps,
|
||||
OrderAddressDTO,
|
||||
OrderChangeActionDTO,
|
||||
OrderChangeDTO,
|
||||
@@ -19,9 +21,11 @@ import {
|
||||
OrderLineItemAdjustmentDTO,
|
||||
OrderLineItemDTO,
|
||||
OrderLineItemTaxLineDTO,
|
||||
OrderReturnReasonDTO,
|
||||
OrderShippingMethodAdjustmentDTO,
|
||||
OrderShippingMethodDTO,
|
||||
OrderShippingMethodTaxLineDTO,
|
||||
OrderTransactionDTO,
|
||||
} from "./common"
|
||||
import {
|
||||
CancelOrderChangeDTO,
|
||||
@@ -35,9 +39,11 @@ import {
|
||||
CreateOrderLineItemForOrderDTO,
|
||||
CreateOrderLineItemTaxLineDTO,
|
||||
CreateOrderReturnDTO,
|
||||
CreateOrderReturnReasonDTO,
|
||||
CreateOrderShippingMethodAdjustmentDTO,
|
||||
CreateOrderShippingMethodDTO,
|
||||
CreateOrderShippingMethodTaxLineDTO,
|
||||
CreateOrderTransactionDTO,
|
||||
DeclineOrderChangeDTO,
|
||||
RegisterOrderFulfillmentDTO,
|
||||
RegisterOrderShipmentDTO,
|
||||
@@ -48,8 +54,12 @@ import {
|
||||
UpdateOrderLineItemDTO,
|
||||
UpdateOrderLineItemTaxLineDTO,
|
||||
UpdateOrderLineItemWithSelectorDTO,
|
||||
UpdateOrderReturnReasonDTO,
|
||||
UpdateOrderReturnReasonWithSelectorDTO,
|
||||
UpdateOrderShippingMethodAdjustmentDTO,
|
||||
UpdateOrderShippingMethodTaxLineDTO,
|
||||
UpdateOrderTransactionDTO,
|
||||
UpdateOrderTransactionWithSelectorDTO,
|
||||
UpsertOrderLineItemAdjustmentDTO,
|
||||
} from "./mutations"
|
||||
|
||||
@@ -1389,6 +1399,112 @@ export interface IOrderModuleService extends IModuleService {
|
||||
|
||||
revertLastVersion(orderId: string, sharedContext?: Context): Promise<void>
|
||||
|
||||
retrieveTransaction(
|
||||
id: string,
|
||||
config?: FindConfig<OrderTransactionDTO>,
|
||||
sharedContext?: Context
|
||||
): Promise<OrderTransactionDTO>
|
||||
|
||||
listTransactions(
|
||||
filters: FilterableOrderTransactionProps,
|
||||
config?: FindConfig<OrderTransactionDTO>,
|
||||
sharedContext?: Context
|
||||
): Promise<OrderTransactionDTO[]>
|
||||
|
||||
addTransactions(
|
||||
data: CreateOrderTransactionDTO,
|
||||
sharedContext?: Context
|
||||
): Promise<OrderTransactionDTO>
|
||||
|
||||
addTransactions(
|
||||
data: CreateOrderTransactionDTO[],
|
||||
sharedContext?: Context
|
||||
): Promise<OrderTransactionDTO[]>
|
||||
|
||||
updateTransactions(
|
||||
data: UpdateOrderTransactionWithSelectorDTO[]
|
||||
): Promise<OrderTransactionDTO[]>
|
||||
updateTransactions(
|
||||
selector: Partial<FilterableOrderTransactionProps>,
|
||||
data: Partial<UpdateOrderTransactionDTO>,
|
||||
sharedContext?: Context
|
||||
): Promise<OrderTransactionDTO[]>
|
||||
updateTransactions(
|
||||
id: string,
|
||||
data: Partial<UpdateOrderTransactionDTO>,
|
||||
sharedContext?: Context
|
||||
): Promise<OrderTransactionDTO>
|
||||
|
||||
deleteTransactions(
|
||||
returnReasonIds: string[],
|
||||
sharedContext?: Context
|
||||
): Promise<void>
|
||||
|
||||
softDeleteTransactions<TReturnableLinkableKeys extends string = string>(
|
||||
storeIds: string[],
|
||||
config?: SoftDeleteReturn<TReturnableLinkableKeys>,
|
||||
sharedContext?: Context
|
||||
): Promise<Record<string, string[]> | void>
|
||||
|
||||
restoreTransactions<TReturnableLinkableKeys extends string = string>(
|
||||
storeIds: string[],
|
||||
config?: RestoreReturn<TReturnableLinkableKeys>,
|
||||
sharedContext?: Context
|
||||
): Promise<Record<string, string[]> | void>
|
||||
|
||||
retrieveReturnReason(
|
||||
reasonId: string,
|
||||
config?: FindConfig<OrderReturnReasonDTO>,
|
||||
sharedContext?: Context
|
||||
): Promise<OrderReturnReasonDTO>
|
||||
|
||||
listReturnReasons(
|
||||
filters: FilterableOrderReturnReasonProps,
|
||||
config?: FindConfig<OrderReturnReasonDTO>,
|
||||
sharedContext?: Context
|
||||
): Promise<OrderReturnReasonDTO[]>
|
||||
|
||||
createReturnReasons(
|
||||
returnReasonData: CreateOrderReturnReasonDTO,
|
||||
sharedContext?: Context
|
||||
): Promise<OrderReturnReasonDTO>
|
||||
|
||||
createReturnReasons(
|
||||
returnReasonData: CreateOrderReturnReasonDTO[],
|
||||
sharedContext?: Context
|
||||
): Promise<OrderReturnReasonDTO[]>
|
||||
|
||||
updateReturnReasons(
|
||||
data: UpdateOrderReturnReasonWithSelectorDTO[]
|
||||
): Promise<OrderReturnReasonDTO[]>
|
||||
updateReturnReasons(
|
||||
selector: Partial<FilterableOrderReturnReasonProps>,
|
||||
data: Partial<UpdateOrderReturnReasonDTO>,
|
||||
sharedContext?: Context
|
||||
): Promise<OrderReturnReasonDTO[]>
|
||||
updateReturnReasons(
|
||||
id: string,
|
||||
data: Partial<UpdateOrderReturnReasonDTO>,
|
||||
sharedContext?: Context
|
||||
): Promise<OrderReturnReasonDTO>
|
||||
|
||||
deleteReturnReasons(
|
||||
returnReasonIds: string[],
|
||||
sharedContext?: Context
|
||||
): Promise<void>
|
||||
|
||||
softDeleteReturnReasons<TReturnableLinkableKeys extends string = string>(
|
||||
storeIds: string[],
|
||||
config?: SoftDeleteReturn<TReturnableLinkableKeys>,
|
||||
sharedContext?: Context
|
||||
): Promise<Record<string, string[]> | void>
|
||||
|
||||
restoreReturnReasons<TReturnableLinkableKeys extends string = string>(
|
||||
storeIds: string[],
|
||||
config?: RestoreReturn<TReturnableLinkableKeys>,
|
||||
sharedContext?: Context
|
||||
): Promise<Record<string, string[]> | void>
|
||||
|
||||
// Bundled flows
|
||||
registerFulfillment(
|
||||
data: RegisterOrderFulfillmentDTO,
|
||||
|
||||
Reference in new issue
Block a user