Feat(order): return reason and transaction methods (#7303)

This commit is contained in:
Carlos R. L. Rodrigues authored and GitHub committed 2024-05-13 16:15:25 +00:00
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)
}
)
+96
View File
@@ -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
}
+46 -3
View File
@@ -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>
}
+116
View File
@@ -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,