fix(utils,core-flows): subtotal calculation and returns location (#13497)

* fix(utils,core-flows): subtotal calculation and returns location

* changeset

* fix test

* var

* rm extra field from test

* fix original total

* fix partial refunds and pending difference

* fix test

* fix test

* test

* extract to util

* original total and update payment when receive return

* original_subtotal

* default fields

* test

* calculate pending difference

* revert claims test

* pending difference

* creadit line fix

* if
This commit is contained in:
Carlos R. L. Rodrigues
2025-09-18 12:50:40 -03:00
committed by GitHub
parent 4736c58da5
commit 9563ee446f
37 changed files with 746 additions and 204 deletions

View File

@@ -227,7 +227,7 @@ moduleIntegrationTestRunner<IOrderModuleService>({
const serializedOrder = JSON.parse(
JSON.stringify(
await service.retrieveOrder(created.id, {
select: ["id", "summary"],
select: ["id", "summary", "total"],
})
)
)
@@ -246,7 +246,7 @@ moduleIntegrationTestRunner<IOrderModuleService>({
const serializedOrder2 = JSON.parse(
JSON.stringify(
await service.retrieveOrder(created.id, {
select: ["id", "summary"],
select: ["id", "summary", "total"],
})
)
)
@@ -271,7 +271,7 @@ moduleIntegrationTestRunner<IOrderModuleService>({
const serializedOrder3 = JSON.parse(
JSON.stringify(
await service.retrieveOrder(created.id, {
select: ["id", "summary"],
select: ["id", "summary", "total"],
})
)
)
@@ -290,7 +290,7 @@ moduleIntegrationTestRunner<IOrderModuleService>({
const serializedOrder4 = JSON.parse(
JSON.stringify(
await service.retrieveOrder(created.id, {
select: ["id", "summary"],
select: ["id", "summary", "total"],
})
)
)

View File

@@ -414,7 +414,7 @@ moduleIntegrationTestRunner<IOrderModuleService>({
})
const changedOrder = await service.retrieveOrder(createdOrder.id, {
select: ["total", "items.detail", "summary"],
select: ["total", "items.detail", "summary", "total"],
relations: ["items"],
})
@@ -492,7 +492,7 @@ moduleIntegrationTestRunner<IOrderModuleService>({
})
const modified = await service.retrieveOrder(createdOrder.id, {
select: ["total", "items.detail", "summary"],
select: ["total", "items.detail", "summary", "total"],
relations: ["items"],
})

View File

@@ -358,6 +358,7 @@ export default class OrderModuleService
"discount_tax_total",
"original_total",
"original_tax_total",
"pending_difference",
"item_total",
"item_subtotal",
"item_tax_total",
@@ -370,9 +371,13 @@ export default class OrderModuleService
"original_shipping_tax_total",
"original_shipping_subtotal",
"original_shipping_total",
"original_total",
"original_subtotal",
"original_tax_total",
"credit_line_total",
"credit_line_tax_total",
"credit_line_subtotal",
"refundable_amount",
]
const includeTotals = (config?.select ?? []).some((field) =>

View File

@@ -224,7 +224,7 @@ export class OrderChangeProcessing {
return orderSummary
}
// Calculate the order summary from a calculated order including taxes
// Returns the order summary from a calculated order including taxes
public getSummaryFromOrder(order: OrderDTO): OrderSummaryDTO {
const summary_ = this.summary
const total = order.total
@@ -241,35 +241,6 @@ export class OrderChangeProcessing {
orderSummary.accounting_total = orderSummary.current_order_total
orderSummary.pending_difference = MathBN.sub(
orderSummary.current_order_total,
orderSummary.transaction_total
)
// return total becomes pending difference
for (const item of order.items ?? []) {
const item_ = item as any
;[
"return_requested_total",
"return_received_total",
// TODO: revisit this when we settle on which dismissed items need to be refunded
// "return_dismissed_total",
].forEach((returnTotalKey) => {
const returnTotal = item_[returnTotalKey]
if (MathBN.gt(returnTotal, 0)) {
orderSummary.pending_difference = MathBN.sub(
orderSummary.pending_difference,
returnTotal
)
}
})
}
orderSummary.pending_difference = new BigNumber(
orderSummary.pending_difference
)
return orderSummary
}