chore(order): simplify order engine (#8188)

what:
- remove unused features of order changes calculation engine
This commit is contained in:
Carlos R. L. Rodrigues
2024-07-18 15:02:13 -03:00
committed by GitHub
parent e0c0a86264
commit 78b8a3c60f
24 changed files with 26 additions and 548 deletions

View File

@@ -5,10 +5,7 @@ import {
isDefined,
} from "@medusajs/utils"
import { OrderChangeProcessing } from "../calculate-order-change"
import {
setActionReference,
unsetActionReference,
} from "../set-action-reference"
import { setActionReference } from "../set-action-reference"
OrderChangeProcessing.registerActionType(
ChangeActionType.CANCEL_ITEM_FULFILLMENT,
@@ -27,18 +24,6 @@ OrderChangeProcessing.registerActionType(
setActionReference(existing, action, options)
},
revert({ action, currentOrder }) {
const existing = currentOrder.items.find(
(item) => item.id === action.reference_id
)!
existing.detail.fulfilled_quantity = MathBN.add(
existing.detail.fulfilled_quantity,
action.details.quantity
)
unsetActionReference(existing, action)
},
validate({ action, currentOrder }) {
const refId = action.details?.reference_id
if (!isDefined(refId)) {

View File

@@ -5,10 +5,7 @@ import {
isDefined,
} from "@medusajs/utils"
import { OrderChangeProcessing } from "../calculate-order-change"
import {
setActionReference,
unsetActionReference,
} from "../set-action-reference"
import { setActionReference } from "../set-action-reference"
OrderChangeProcessing.registerActionType(ChangeActionType.CANCEL_RETURN_ITEM, {
operation({ action, currentOrder, options }) {
@@ -27,18 +24,6 @@ OrderChangeProcessing.registerActionType(ChangeActionType.CANCEL_RETURN_ITEM, {
return action.details.unit_price * action.details.quantity
},
revert({ action, currentOrder }) {
const existing = currentOrder.items.find(
(item) => item.id === action.details.reference_id
)!
existing.detail.return_requested_quantity = MathBN.add(
existing.detail.return_requested_quantity,
action.details.quantity
)
unsetActionReference(existing, action)
},
validate({ action, currentOrder }) {
const refId = action.details?.reference_id
if (!isDefined(refId)) {

View File

@@ -1,6 +0,0 @@
import { ChangeActionType } from "@medusajs/utils"
import { OrderChangeProcessing } from "../calculate-order-change"
OrderChangeProcessing.registerActionType(ChangeActionType.CANCEL, {
void: true,
})

View File

@@ -5,10 +5,7 @@ import {
isDefined,
} from "@medusajs/utils"
import { OrderChangeProcessing } from "../calculate-order-change"
import {
setActionReference,
unsetActionReference,
} from "../set-action-reference"
import { setActionReference } from "../set-action-reference"
OrderChangeProcessing.registerActionType(ChangeActionType.FULFILL_ITEM, {
operation({ action, currentOrder, options }) {
@@ -25,18 +22,6 @@ OrderChangeProcessing.registerActionType(ChangeActionType.FULFILL_ITEM, {
setActionReference(existing, action, options)
},
revert({ action, currentOrder }) {
const existing = currentOrder.items.find(
(item) => item.id === action.reference_id
)!
existing.detail.fulfilled_quantity = MathBN.sub(
existing.detail.fulfilled_quantity,
action.details.quantity
)
unsetActionReference(existing, action)
},
validate({ action, currentOrder }) {
const refId = action.details?.reference_id
if (!isDefined(refId)) {

View File

@@ -1,4 +1,3 @@
export * from "./cancel"
export * from "./cancel-item-fulfillment"
export * from "./cancel-return"
export * from "./fulfill-item"

View File

@@ -6,10 +6,7 @@ import {
} from "@medusajs/utils"
import { VirtualOrder } from "@types"
import { OrderChangeProcessing } from "../calculate-order-change"
import {
setActionReference,
unsetActionReference,
} from "../set-action-reference"
import { setActionReference } from "../set-action-reference"
OrderChangeProcessing.registerActionType(ChangeActionType.ITEM_ADD, {
operation({ action, currentOrder, options }) {
@@ -45,26 +42,6 @@ OrderChangeProcessing.registerActionType(ChangeActionType.ITEM_ADD, {
return MathBN.mult(action.details.unit_price, action.details.quantity)
},
revert({ action, currentOrder }) {
const existingIndex = currentOrder.items.findIndex(
(item) => item.id === action.details.reference_id
)
if (existingIndex > -1) {
const existing = currentOrder.items[existingIndex]
existing.quantity = MathBN.sub(existing.quantity, action.details.quantity)
existing.detail.quantity = MathBN.sub(
existing.detail.quantity,
action.details.quantity
)
if (MathBN.lte(existing.quantity, 0)) {
currentOrder.items.splice(existingIndex, 1)
}
unsetActionReference(existing, action)
}
},
validate({ action }) {
const refId = action.details?.reference_id

View File

@@ -4,12 +4,8 @@ import {
MedusaError,
isDefined,
} from "@medusajs/utils"
import { VirtualOrder } from "@types"
import { OrderChangeProcessing } from "../calculate-order-change"
import {
setActionReference,
unsetActionReference,
} from "../set-action-reference"
import { setActionReference } from "../set-action-reference"
OrderChangeProcessing.registerActionType(ChangeActionType.ITEM_REMOVE, {
isDeduction: true,
@@ -36,27 +32,6 @@ OrderChangeProcessing.registerActionType(ChangeActionType.ITEM_REMOVE, {
return MathBN.mult(existing.unit_price, action.details.quantity)
},
revert({ action, currentOrder }) {
const existing = currentOrder.items.find(
(item) => item.id === action.details.reference_id
)
if (existing) {
existing.quantity = MathBN.add(existing.quantity, action.details.quantity)
existing.detail.quantity = MathBN.add(
existing.detail.quantity,
action.details.quantity
)
unsetActionReference(existing, action)
} else {
currentOrder.items.push({
id: action.details.reference_id!,
unit_price: action.details.unit_price,
quantity: action.details.quantity,
} as VirtualOrder["items"][0])
}
},
validate({ action, currentOrder }) {
const refId = action.details?.reference_id
if (!isDefined(refId)) {

View File

@@ -4,18 +4,13 @@ import {
MedusaError,
isDefined,
} from "@medusajs/utils"
import { EVENT_STATUS } from "@types"
import { OrderChangeProcessing } from "../calculate-order-change"
import {
setActionReference,
unsetActionReference,
} from "../set-action-reference"
import { setActionReference } from "../set-action-reference"
OrderChangeProcessing.registerActionType(
ChangeActionType.RECEIVE_DAMAGED_RETURN_ITEM,
{
isDeduction: true,
commitsAction: "return_item",
operation({ action, currentOrder, previousEvents, options }) {
const existing = currentOrder.items.find(
(item) => item.id === action.details.reference_id
@@ -43,61 +38,8 @@ OrderChangeProcessing.registerActionType(
setActionReference(existing, action, options)
if (previousEvents) {
for (const previousEvent of previousEvents) {
previousEvent.original_ = JSON.parse(JSON.stringify(previousEvent))
let ret = MathBN.min(toReturn, previousEvent.details.quantity)
toReturn = MathBN.sub(toReturn, ret)
previousEvent.details.quantity = MathBN.sub(
previousEvent.details.quantity,
ret
)
if (MathBN.lte(previousEvent.details.quantity, 0)) {
previousEvent.status = EVENT_STATUS.DONE
}
}
}
return MathBN.mult(existing.unit_price, action.details.quantity)
},
revert({ action, currentOrder, previousEvents }) {
const existing = currentOrder.items.find(
(item) => item.id === action.details.reference_id
)!
existing.detail.return_dismissed_quantity = MathBN.sub(
existing.detail.return_dismissed_quantity,
action.details.quantity
)
existing.detail.return_requested_quantity = MathBN.add(
existing.detail.return_requested_quantity,
action.details.quantity
)
existing.detail.written_off_quantity = MathBN.sub(
existing.detail.written_off_quantity,
action.details.quantity
)
unsetActionReference(existing, action)
if (previousEvents) {
for (const previousEvent of previousEvents) {
if (!previousEvent.original_) {
continue
}
previousEvent.details = JSON.parse(
JSON.stringify(previousEvent.original_.details)
)
delete previousEvent.original_
previousEvent.status = EVENT_STATUS.PENDING
}
}
},
validate({ action, currentOrder }) {
const refId = action.details?.reference_id
if (!isDefined(refId)) {

View File

@@ -3,18 +3,12 @@ import {
MathBN,
MedusaError,
isDefined,
transformPropertiesToBigNumber,
} from "@medusajs/utils"
import { EVENT_STATUS } from "@types"
import { OrderChangeProcessing } from "../calculate-order-change"
import {
setActionReference,
unsetActionReference,
} from "../set-action-reference"
import { setActionReference } from "../set-action-reference"
OrderChangeProcessing.registerActionType(ChangeActionType.RECEIVE_RETURN_ITEM, {
isDeduction: true,
commitsAction: "return_item",
operation({ action, currentOrder, previousEvents, options }) {
const existing = currentOrder.items.find(
(item) => item.id === action.details.reference_id
@@ -36,59 +30,8 @@ OrderChangeProcessing.registerActionType(ChangeActionType.RECEIVE_RETURN_ITEM, {
setActionReference(existing, action, options)
if (previousEvents) {
for (const previousEvent of previousEvents) {
previousEvent.original_ = JSON.parse(JSON.stringify(previousEvent))
let ret = MathBN.min(toReturn, previousEvent.details.quantity)
toReturn = MathBN.sub(toReturn, ret)
previousEvent.details.quantity = MathBN.sub(
previousEvent.details.quantity,
ret
)
if (MathBN.lte(previousEvent.details.quantity, 0)) {
previousEvent.status = EVENT_STATUS.DONE
}
}
}
return MathBN.mult(existing.unit_price, action.details.quantity)
},
revert({ action, currentOrder, previousEvents }) {
const existing = currentOrder.items.find(
(item) => item.id === action.details.reference_id
)!
existing.detail.return_received_quantity = MathBN.sub(
existing.detail.return_received_quantity,
action.details.quantity
)
existing.detail.return_requested_quantity = MathBN.add(
existing.detail.return_requested_quantity,
action.details.quantity
)
unsetActionReference(existing, action)
if (previousEvents) {
for (const previousEvent of previousEvents) {
if (!previousEvent.original_) {
continue
}
previousEvent.details = JSON.parse(
JSON.stringify(previousEvent.original_.details)
)
transformPropertiesToBigNumber(previousEvent.details?.metadata)
delete previousEvent.original_
previousEvent.status = EVENT_STATUS.PENDING
}
}
},
validate({ action, currentOrder }) {
const refId = action.details?.reference_id
if (!isDefined(refId)) {

View File

@@ -5,10 +5,7 @@ import {
isDefined,
} from "@medusajs/utils"
import { OrderChangeProcessing } from "../calculate-order-change"
import {
setActionReference,
unsetActionReference,
} from "../set-action-reference"
import { setActionReference } from "../set-action-reference"
OrderChangeProcessing.registerActionType(ChangeActionType.REINSTATE_ITEM, {
operation({ action, currentOrder, options }) {
@@ -24,18 +21,6 @@ OrderChangeProcessing.registerActionType(ChangeActionType.REINSTATE_ITEM, {
setActionReference(existing, action, options)
},
revert({ action, currentOrder }) {
const existing = currentOrder.items.find(
(item) => item.id === action.details.reference_id
)!
existing.detail.written_off_quantity = MathBN.add(
existing.detail.written_off_quantity,
action.details.quantity
)
unsetActionReference(existing, action)
},
validate({ action, currentOrder }) {
const refId = action.details?.reference_id
if (!isDefined(refId)) {

View File

@@ -5,10 +5,7 @@ import {
isDefined,
} from "@medusajs/utils"
import { OrderChangeProcessing } from "../calculate-order-change"
import {
setActionReference,
unsetActionReference,
} from "../set-action-reference"
import { setActionReference } from "../set-action-reference"
OrderChangeProcessing.registerActionType(ChangeActionType.RETURN_ITEM, {
isDeduction: true,
@@ -28,18 +25,6 @@ OrderChangeProcessing.registerActionType(ChangeActionType.RETURN_ITEM, {
return MathBN.mult(existing.unit_price, action.details.quantity)
},
revert({ action, currentOrder }) {
const existing = currentOrder.items.find(
(item) => item.id === action.details.reference_id
)!
existing.detail.return_requested_quantity = MathBN.sub(
existing.detail.return_requested_quantity,
action.details.quantity
)
unsetActionReference(existing, action)
},
validate({ action, currentOrder }) {
const refId = action.details?.reference_id
if (!isDefined(refId)) {

View File

@@ -5,10 +5,7 @@ import {
isDefined,
} from "@medusajs/utils"
import { OrderChangeProcessing } from "../calculate-order-change"
import {
setActionReference,
unsetActionReference,
} from "../set-action-reference"
import { setActionReference } from "../set-action-reference"
OrderChangeProcessing.registerActionType(ChangeActionType.SHIP_ITEM, {
operation({ action, currentOrder, options }) {
@@ -25,18 +22,6 @@ OrderChangeProcessing.registerActionType(ChangeActionType.SHIP_ITEM, {
setActionReference(existing, action, options)
},
revert({ action, currentOrder }) {
const existing = currentOrder.items.find(
(item) => item.id === action.reference_id
)!
existing.detail.shipped_quantity = MathBN.sub(
existing.detail.shipped_quantity,
action.details.quantity
)
unsetActionReference(existing, action)
},
validate({ action, currentOrder }) {
const refId = action.details?.reference_id
if (!isDefined(refId)) {

View File

@@ -25,19 +25,6 @@ OrderChangeProcessing.registerActionType(ChangeActionType.SHIPPING_ADD, {
setActionReference(existing, action, options)
currentOrder.shipping_methods = shipping
},
revert({ action, currentOrder }) {
const shipping = Array.isArray(currentOrder.shipping_methods)
? currentOrder.shipping_methods
: [currentOrder.shipping_methods]
const existingIndex = shipping.findIndex(
(item) => item.id === action.reference_id
)
if (existingIndex > -1) {
shipping.splice(existingIndex, 1)
}
},
validate({ action }) {
if (!action.reference_id) {
throw new MedusaError(

View File

@@ -17,26 +17,6 @@ OrderChangeProcessing.registerActionType(ChangeActionType.SHIPPING_REMOVE, {
currentOrder.shipping_methods = shipping
},
revert({ action, currentOrder }) {
const shipping = Array.isArray(currentOrder.shipping_methods)
? currentOrder.shipping_methods
: [currentOrder.shipping_methods]
const existingIndex = shipping.findIndex(
(item) => item.id === action.reference_id
)
if (existingIndex > -1) {
shipping.push({
id: action.reference_id!,
order_id: currentOrder.id,
return_id: action.return_id,
claim_id: action.claim_id,
exchange_id: action.exchange_id,
amount: action.amount as number,
})
}
},
validate({ action }) {
if (!action.reference_id) {
throw new MedusaError(

View File

@@ -5,10 +5,7 @@ import {
isDefined,
} from "@medusajs/utils"
import { OrderChangeProcessing } from "../calculate-order-change"
import {
setActionReference,
unsetActionReference,
} from "../set-action-reference"
import { setActionReference } from "../set-action-reference"
OrderChangeProcessing.registerActionType(ChangeActionType.WRITE_OFF_ITEM, {
operation({ action, currentOrder, options }) {
@@ -24,18 +21,6 @@ OrderChangeProcessing.registerActionType(ChangeActionType.WRITE_OFF_ITEM, {
setActionReference(existing, action, options)
},
revert({ action, currentOrder }) {
const existing = currentOrder.items.find(
(item) => item.id === action.details.reference_id
)!
existing.detail.written_off_quantity = MathBN.sub(
existing.detail.written_off_quantity,
action.details.quantity
)
unsetActionReference(existing, action)
},
validate({ action, currentOrder }) {
const refId = action.details?.reference_id
if (!isDefined(refId)) {