feat(core-flows,order,medusa): exchange endpoints (#8396)

This commit is contained in:
Carlos R. L. Rodrigues
2024-08-06 06:28:27 -03:00
committed by GitHub
parent 5125d1328d
commit f415e6664c
42 changed files with 1953 additions and 150 deletions

View File

@@ -1,9 +1,4 @@
import {
ChangeActionType,
MathBN,
MedusaError,
isDefined,
} from "@medusajs/utils"
import { ChangeActionType, MathBN, MedusaError } from "@medusajs/utils"
import { OrderChangeProcessing } from "../calculate-order-change"
import { setActionReference } from "../set-action-reference"
@@ -26,7 +21,7 @@ OrderChangeProcessing.registerActionType(
},
validate({ action, currentOrder }) {
const refId = action.details?.reference_id
if (!isDefined(refId)) {
if (refId == null) {
throw new MedusaError(
MedusaError.Types.INVALID_DATA,
"Reference ID is required."

View File

@@ -1,9 +1,4 @@
import {
ChangeActionType,
MathBN,
MedusaError,
isDefined,
} from "@medusajs/utils"
import { ChangeActionType, MathBN, MedusaError } from "@medusajs/utils"
import { OrderChangeProcessing } from "../calculate-order-change"
import { setActionReference } from "../set-action-reference"
@@ -22,24 +17,17 @@ OrderChangeProcessing.registerActionType(ChangeActionType.CANCEL_RETURN_ITEM, {
setActionReference(existing, action, options)
return action.details.unit_price * action.details.quantity
return MathBN.mult(existing.unit_price, action.details.quantity)
},
validate({ action, currentOrder }) {
const refId = action.details?.reference_id
if (!isDefined(refId)) {
if (refId == null) {
throw new MedusaError(
MedusaError.Types.INVALID_DATA,
"Details reference ID is required."
)
}
if (!isDefined(action.amount) && !isDefined(action.details?.unit_price)) {
throw new MedusaError(
MedusaError.Types.INVALID_DATA,
`Unit price of item ${action.reference_id} is required if no action.amount is provided.`
)
}
const existing = currentOrder.items.find((item) => item.id === refId)
if (!existing) {

View File

@@ -1,9 +1,4 @@
import {
ChangeActionType,
MathBN,
MedusaError,
isDefined,
} from "@medusajs/utils"
import { ChangeActionType, MathBN, MedusaError } from "@medusajs/utils"
import { OrderChangeProcessing } from "../calculate-order-change"
import { setActionReference } from "../set-action-reference"
@@ -24,7 +19,7 @@ OrderChangeProcessing.registerActionType(ChangeActionType.FULFILL_ITEM, {
},
validate({ action, currentOrder }) {
const refId = action.details?.reference_id
if (!isDefined(refId)) {
if (refId == null) {
throw new MedusaError(
MedusaError.Types.INVALID_DATA,
"Reference ID is required."

View File

@@ -1,9 +1,4 @@
import {
ChangeActionType,
MathBN,
MedusaError,
isDefined,
} from "@medusajs/utils"
import { ChangeActionType, MathBN, MedusaError } from "@medusajs/utils"
import { VirtualOrder } from "@types"
import { OrderChangeProcessing } from "../calculate-order-change"
import { setActionReference } from "../set-action-reference"
@@ -45,7 +40,7 @@ OrderChangeProcessing.registerActionType(ChangeActionType.ITEM_ADD, {
validate({ action }) {
const refId = action.details?.reference_id
if (!isDefined(action.amount) && !isDefined(action.details?.unit_price)) {
if (action.amount == null && action.details?.unit_price == null) {
throw new MedusaError(
MedusaError.Types.INVALID_DATA,
`Unit price of item ${refId} is required if no action.amount is provided.`

View File

@@ -1,9 +1,4 @@
import {
ChangeActionType,
MathBN,
MedusaError,
isDefined,
} from "@medusajs/utils"
import { ChangeActionType, MathBN, MedusaError } from "@medusajs/utils"
import { OrderChangeProcessing } from "../calculate-order-change"
import { setActionReference } from "../set-action-reference"
@@ -34,7 +29,7 @@ OrderChangeProcessing.registerActionType(ChangeActionType.ITEM_REMOVE, {
},
validate({ action, currentOrder }) {
const refId = action.details?.reference_id
if (!isDefined(refId)) {
if (refId == null) {
throw new MedusaError(
MedusaError.Types.INVALID_DATA,
"Reference ID is required."
@@ -49,13 +44,6 @@ OrderChangeProcessing.registerActionType(ChangeActionType.ITEM_REMOVE, {
)
}
if (!isDefined(action.amount) && !isDefined(action.details?.unit_price)) {
throw new MedusaError(
MedusaError.Types.INVALID_DATA,
`Unit price of item ${refId} is required if no action.amount is provided.`
)
}
if (!action.details?.quantity) {
throw new MedusaError(
MedusaError.Types.INVALID_DATA,

View File

@@ -1,9 +1,4 @@
import {
ChangeActionType,
MathBN,
MedusaError,
isDefined,
} from "@medusajs/utils"
import { ChangeActionType, MathBN, MedusaError } from "@medusajs/utils"
import { OrderChangeProcessing } from "../calculate-order-change"
import { setActionReference } from "../set-action-reference"
@@ -42,7 +37,7 @@ OrderChangeProcessing.registerActionType(
},
validate({ action, currentOrder }) {
const refId = action.details?.reference_id
if (!isDefined(refId)) {
if (refId == null) {
throw new MedusaError(
MedusaError.Types.INVALID_DATA,
"Details reference ID is required."

View File

@@ -1,9 +1,4 @@
import {
ChangeActionType,
MathBN,
MedusaError,
isDefined,
} from "@medusajs/utils"
import { ChangeActionType, MathBN, MedusaError } from "@medusajs/utils"
import { OrderChangeProcessing } from "../calculate-order-change"
import { setActionReference } from "../set-action-reference"
@@ -34,7 +29,7 @@ OrderChangeProcessing.registerActionType(ChangeActionType.RECEIVE_RETURN_ITEM, {
},
validate({ action, currentOrder }) {
const refId = action.details?.reference_id
if (!isDefined(refId)) {
if (refId == null) {
throw new MedusaError(
MedusaError.Types.INVALID_DATA,
"Details reference ID is required."

View File

@@ -1,9 +1,4 @@
import {
ChangeActionType,
MathBN,
MedusaError,
isDefined,
} from "@medusajs/utils"
import { ChangeActionType, MathBN, MedusaError } from "@medusajs/utils"
import { OrderChangeProcessing } from "../calculate-order-change"
import { setActionReference } from "../set-action-reference"
@@ -23,7 +18,7 @@ OrderChangeProcessing.registerActionType(ChangeActionType.REINSTATE_ITEM, {
},
validate({ action, currentOrder }) {
const refId = action.details?.reference_id
if (!isDefined(refId)) {
if (refId == null) {
throw new MedusaError(
MedusaError.Types.INVALID_DATA,
"Details reference ID is required."

View File

@@ -1,9 +1,4 @@
import {
ChangeActionType,
MathBN,
MedusaError,
isDefined,
} from "@medusajs/utils"
import { ChangeActionType, MathBN, MedusaError } from "@medusajs/utils"
import { OrderChangeProcessing } from "../calculate-order-change"
import { setActionReference } from "../set-action-reference"
@@ -27,7 +22,7 @@ OrderChangeProcessing.registerActionType(ChangeActionType.RETURN_ITEM, {
},
validate({ action, currentOrder }) {
const refId = action.details?.reference_id
if (!isDefined(refId)) {
if (refId == null) {
throw new MedusaError(
MedusaError.Types.INVALID_DATA,
"Details reference ID is required."

View File

@@ -1,9 +1,4 @@
import {
ChangeActionType,
MathBN,
MedusaError,
isDefined,
} from "@medusajs/utils"
import { ChangeActionType, MathBN, MedusaError } from "@medusajs/utils"
import { OrderChangeProcessing } from "../calculate-order-change"
import { setActionReference } from "../set-action-reference"
@@ -24,7 +19,7 @@ OrderChangeProcessing.registerActionType(ChangeActionType.SHIP_ITEM, {
},
validate({ action, currentOrder }) {
const refId = action.details?.reference_id
if (!isDefined(refId)) {
if (refId == null) {
throw new MedusaError(
MedusaError.Types.INVALID_DATA,
"Reference ID is required."

View File

@@ -1,4 +1,4 @@
import { ChangeActionType, MedusaError, isDefined } from "@medusajs/utils"
import { ChangeActionType, MedusaError } from "@medusajs/utils"
import { OrderChangeProcessing } from "../calculate-order-change"
import { setActionReference } from "../set-action-reference"
@@ -33,7 +33,7 @@ OrderChangeProcessing.registerActionType(ChangeActionType.SHIPPING_ADD, {
)
}
if (!isDefined(action.amount)) {
if (action.amount == null) {
throw new MedusaError(
MedusaError.Types.INVALID_DATA,
"Amount is required."

View File

@@ -1,4 +1,4 @@
import { ChangeActionType, MedusaError, isDefined } from "@medusajs/utils"
import { ChangeActionType, MedusaError } from "@medusajs/utils"
import { OrderChangeProcessing } from "../calculate-order-change"
OrderChangeProcessing.registerActionType(ChangeActionType.SHIPPING_REMOVE, {
@@ -24,12 +24,5 @@ OrderChangeProcessing.registerActionType(ChangeActionType.SHIPPING_REMOVE, {
"Reference ID is required."
)
}
if (!isDefined(action.amount)) {
throw new MedusaError(
MedusaError.Types.INVALID_DATA,
"Amount is required."
)
}
},
})

View File

@@ -1,9 +1,4 @@
import {
ChangeActionType,
MathBN,
MedusaError,
isDefined,
} from "@medusajs/utils"
import { ChangeActionType, MathBN, MedusaError } from "@medusajs/utils"
import { OrderChangeProcessing } from "../calculate-order-change"
import { setActionReference } from "../set-action-reference"
@@ -23,7 +18,7 @@ OrderChangeProcessing.registerActionType(ChangeActionType.WRITE_OFF_ITEM, {
},
validate({ action, currentOrder }) {
const refId = action.details?.reference_id
if (!isDefined(refId)) {
if (refId == null) {
throw new MedusaError(
MedusaError.Types.INVALID_DATA,
"Details reference ID is required."