setIsCreditLinesOpen((o) => !o)}
- className="bg-ui-bg-component flex cursor-pointer items-center justify-between border border-dashed px-6 py-4"
- >
-
)
}
@@ -1138,15 +1221,6 @@ const Total = ({ order }: { order: AdminOrder }) => {
return (
-
-
- {t("fields.total")}
-
-
- {getStylizedAmount(order.original_total, order.currency_code)}
-
-
-
{t("fields.paidTotal")}
@@ -1159,18 +1233,20 @@ const Total = ({ order }: { order: AdminOrder }) => {
-
-
- {t("fields.creditTotal")}
-
+ {getTotalCreditLines(order.credit_lines ?? []) > 0 && (
+
+
+ {t("fields.creditTotal")}
+
-
- {getStylizedAmount(
- getTotalCreditLines(order.credit_lines ?? []),
- order.currency_code
- )}
-
-
+
+ {getStylizedAmount(
+ getTotalCreditLines(order.credit_lines ?? []),
+ order.currency_code
+ )}
+
+
+ )}
{
{t("orders.returns.outstandingAmount")}
diff --git a/packages/admin/dashboard/src/routes/orders/order-detail/constants.ts b/packages/admin/dashboard/src/routes/orders/order-detail/constants.ts
index 1162a33181..957835287d 100644
--- a/packages/admin/dashboard/src/routes/orders/order-detail/constants.ts
+++ b/packages/admin/dashboard/src/routes/orders/order-detail/constants.ts
@@ -10,14 +10,21 @@ const DEFAULT_PROPERTIES = [
// --- TOTALS ---
"total",
"credit_line_total",
+ "item_subtotal",
"item_total",
+ "item_tax_total",
+ "original_item_tax_total",
+ "item_discount_total",
"shipping_subtotal",
"original_total",
+ "original_tax_total",
"subtotal",
"discount_total",
"discount_subtotal",
"shipping_total",
"shipping_tax_total",
+ "original_shipping_tax_total",
+ "shipping_discount_total",
"tax_total",
"refundable_total",
"order_change",
diff --git a/packages/core/types/src/http/order/common.ts b/packages/core/types/src/http/order/common.ts
index f248d759b8..2ca4de467a 100644
--- a/packages/core/types/src/http/order/common.ts
+++ b/packages/core/types/src/http/order/common.ts
@@ -820,6 +820,10 @@ export interface BaseOrder {
* The tax total applied on the order's items, including promotions.
*/
item_tax_total: number
+ /**
+ * The promotion total applied on the order's items.
+ */
+ item_discount_total: number
/**
* The total of the order including taxes, excluding promotions.
*/
@@ -837,7 +841,7 @@ export interface BaseOrder {
*/
total: number
/**
- * The total of the order excluding taxes, including promotions.
+ * The total of the order excluding taxes and promotions.
*/
subtotal: number
/**
@@ -872,6 +876,10 @@ export interface BaseOrder {
* The tax total applied on the order's shipping methods, including promotions.
*/
shipping_tax_total: number
+ /**
+ * The promotion total applied on the order's shipping methods.
+ */
+ shipping_discount_total: number
/**
* The total of the order's shipping methods including taxes, excluding promotions.
*/
diff --git a/packages/core/types/src/modules-sdk/remote-query.ts b/packages/core/types/src/modules-sdk/remote-query.ts
index 4ab9cce4cb..a368681749 100644
--- a/packages/core/types/src/modules-sdk/remote-query.ts
+++ b/packages/core/types/src/modules-sdk/remote-query.ts
@@ -68,7 +68,7 @@ export type QueryIndexFunction = {
metadata: RemoteQueryFunctionReturnPagination
}
: Variables extends { skip?: number | undefined } | { skip?: number }
- ? // TODO: the real type is the one in parenthsis but we put any for now as the current API is broken and need fixin in a separate iteration (RemoteQueryReturnedData[] | {rows: RemoteQueryReturnedData[] metadata: RemoteQueryFunctionReturnPagination })
+ ? // TODO: the real type is the one in parenthesis but we put any for now as the current API is broken and need fixing in a separate iteration (RemoteQueryReturnedData[] | {rows: RemoteQueryReturnedData[] metadata: RemoteQueryFunctionReturnPagination })
any
: RemoteQueryReturnedData[]
: RemoteQueryReturnedData[]
diff --git a/packages/core/types/src/order/common.ts b/packages/core/types/src/order/common.ts
index eb531f0f8f..576fa8b05c 100644
--- a/packages/core/types/src/order/common.ts
+++ b/packages/core/types/src/order/common.ts
@@ -1182,6 +1182,11 @@ export interface OrderDTO {
*/
item_tax_total: BigNumberValue
+ /**
+ * The item discount total of the order.
+ */
+ item_discount_total: BigNumberValue
+
/**
* The original total of the order.
*/
@@ -1257,6 +1262,11 @@ export interface OrderDTO {
*/
shipping_tax_total: BigNumberValue
+ /**
+ * The shipping discount total of the order.
+ */
+ shipping_discount_total: BigNumberValue
+
/**
* The original shipping total of the order.
*/
diff --git a/packages/core/utils/src/totals/__tests__/totals.ts b/packages/core/utils/src/totals/__tests__/totals.ts
index 01351de969..9d23d0fcb2 100644
--- a/packages/core/utils/src/totals/__tests__/totals.ts
+++ b/packages/core/utils/src/totals/__tests__/totals.ts
@@ -76,6 +76,7 @@ describe("Total calculation", function () {
item_total: 73.5,
item_subtotal: 65,
item_tax_total: 8.5,
+ item_discount_total: 0,
original_total: 73.5,
original_tax_total: 8.5,
original_item_subtotal: 65,
@@ -149,6 +150,7 @@ describe("Total calculation", function () {
item_total: 99,
item_subtotal: 100,
item_tax_total: 9,
+ item_discount_total: 11,
original_item_total: 110,
original_item_subtotal: 100,
original_item_tax_total: 10,
@@ -350,12 +352,14 @@ describe("Total calculation", function () {
item_total: 95.7,
item_subtotal: 99,
item_tax_total: 8.7,
+ item_discount_total: 13.2,
original_item_total: 108.9,
original_item_subtotal: 99,
original_item_tax_total: 9.9,
shipping_total: 95.7,
shipping_subtotal: 99,
shipping_tax_total: 8.7,
+ shipping_discount_total: 13.2,
original_shipping_tax_total: 9.9,
original_shipping_subtotal: 99,
original_shipping_total: 108.9,
@@ -444,6 +448,7 @@ describe("Total calculation", function () {
item_total: 100,
item_subtotal: 90.9090909090909,
item_tax_total: 9.090909090909092,
+ item_discount_total: 0,
original_item_total: 100,
original_item_subtotal: 90.9090909090909,
original_item_tax_total: 9.090909090909092,
@@ -486,6 +491,7 @@ describe("Total calculation", function () {
item_total: 110,
item_subtotal: 100,
item_tax_total: 10,
+ item_discount_total: 0,
original_item_total: 110,
original_item_subtotal: 100,
original_item_tax_total: 10,
@@ -548,6 +554,7 @@ describe("Total calculation", function () {
item_total: 210,
item_subtotal: 190.9090909090909,
item_tax_total: 19.09090909090909,
+ item_discount_total: 0,
original_item_total: 210,
original_item_subtotal: 190.9090909090909,
original_item_tax_total: 19.09090909090909,
@@ -638,6 +645,7 @@ describe("Total calculation", function () {
item_subtotal: 100,
item_tax_total: 18.333333333333332,
item_total: 110,
+ item_discount_total: 10,
credit_line_subtotal: 0,
credit_line_tax_total: 0,
@@ -749,12 +757,14 @@ describe("Total calculation", function () {
item_total: 88,
item_subtotal: 100,
item_tax_total: 8,
+ item_discount_total: 22,
original_item_total: 110,
original_item_subtotal: 100,
original_item_tax_total: 10,
shipping_total: 25.3,
shipping_subtotal: 25,
shipping_tax_total: 2.3,
+ shipping_discount_total: 2.2,
original_shipping_tax_total: 2.5,
original_shipping_subtotal: 25,
original_shipping_total: 27.5,
@@ -866,6 +876,7 @@ describe("Total calculation", function () {
item_total: 88,
item_subtotal: 100,
item_tax_total: 8,
+ item_discount_total: 22,
original_item_total: 110,
original_item_subtotal: 100,
original_item_tax_total: 10,
@@ -942,6 +953,7 @@ describe("Total calculation", function () {
item_total: 0,
item_subtotal: 119,
item_tax_total: 0,
+ item_discount_total: 141.61,
original_item_total: 141.61,
original_item_subtotal: 119,
original_item_tax_total: 22.61,
@@ -1005,6 +1017,7 @@ describe("Total calculation", function () {
discount_total: 0,
item_subtotal: 100,
item_tax_total: 19,
+ item_discount_total: 0,
item_total: 119,
items: [
{
@@ -1048,6 +1061,7 @@ describe("Total calculation", function () {
item_subtotal: 119,
item_tax_total: 22.61,
item_total: 141.61,
+ item_discount_total: 0,
items: [
{
discount_subtotal: 0,
@@ -1090,6 +1104,7 @@ describe("Total calculation", function () {
item_subtotal: 219,
item_tax_total: 41.61,
item_total: 260.61,
+ item_discount_total: 0,
items: [
{
discount_subtotal: 0,
@@ -1176,6 +1191,7 @@ describe("Total calculation", function () {
item_subtotal: 100,
item_tax_total: 0,
item_total: 0,
+ item_discount_total: 119,
items: [
{
adjustments: [
diff --git a/packages/core/utils/src/totals/cart/index.ts b/packages/core/utils/src/totals/cart/index.ts
index 2237141309..988e41afbe 100644
--- a/packages/core/utils/src/totals/cart/index.ts
+++ b/packages/core/utils/src/totals/cart/index.ts
@@ -4,8 +4,8 @@ import { calculateCreditLinesTotal } from "../credit-lines"
import { GetItemTotalInput, getLineItemsTotals } from "../line-item"
import { MathBN } from "../math"
import {
- GetShippingMethodTotalInput,
getShippingMethodsTotals,
+ GetShippingMethodTotalInput,
} from "../shipping-method"
import { transformPropertiesToBigNumber } from "../transform-properties-to-bignumber"
@@ -86,23 +86,19 @@ export function decorateCartTotals(
let itemsSubtotal = MathBN.convert(0)
let itemsTotal = MathBN.convert(0)
-
let itemsOriginalTotal = MathBN.convert(0)
let itemsOriginalSubtotal = MathBN.convert(0)
-
let itemsTaxTotal = MathBN.convert(0)
-
let itemsOriginalTaxTotal = MathBN.convert(0)
+ let itemsDiscountTotal = MathBN.convert(0)
let shippingSubtotal = MathBN.convert(0)
let shippingTotal = MathBN.convert(0)
-
let shippingOriginalTotal = MathBN.convert(0)
let shippingOriginalSubtotal = MathBN.convert(0)
-
let shippingTaxTotal = MathBN.convert(0)
-
let shippingOriginalTaxTotal = MathBN.convert(0)
+ let shippingDiscountTotal = MathBN.convert(0)
const cartItems = items.map((item, index) => {
const itemTotals = Object.assign(item, itemsTotals[item.id ?? index] ?? {})
@@ -128,15 +124,16 @@ export function decorateCartTotals(
itemsTotal = MathBN.add(itemsTotal, itemTotal)
itemsOriginalTotal = MathBN.add(itemsOriginalTotal, itemOriginalTotal)
itemsOriginalSubtotal = MathBN.add(itemsOriginalSubtotal, itemSubtotal)
-
itemsSubtotal = MathBN.add(itemsSubtotal, itemSubtotal)
-
itemsTaxTotal = MathBN.add(itemsTaxTotal, itemTaxTotal)
-
itemsOriginalTaxTotal = MathBN.add(
itemsOriginalTaxTotal,
itemOriginalTaxTotal
)
+ itemsDiscountTotal = MathBN.add(
+ itemsDiscountTotal,
+ itemDiscountTotal
+ )
for (const key of Object.values(optionalFields)) {
if (key in itemTotals) {
@@ -156,48 +153,45 @@ export function decorateCartTotals(
subtotal = MathBN.add(subtotal, shippingMethodTotals.subtotal)
- shippingSubtotal = MathBN.add(
- shippingSubtotal,
- shippingMethodTotals.subtotal
- )
-
- shippingTotal = MathBN.add(shippingTotal, shippingMethodTotals.total)
-
- shippingOriginalTotal = MathBN.add(
- shippingOriginalTotal,
- shippingMethodTotals.original_total
- )
-
- shippingOriginalSubtotal = MathBN.add(
- shippingOriginalSubtotal,
- shippingMethodTotals.subtotal
- )
-
- shippingTaxTotal = MathBN.add(
- shippingTaxTotal,
- shippingMethodTotals.tax_total
- )
-
- shippingOriginalTaxTotal = MathBN.add(
- shippingOriginalTaxTotal,
- shippingMethodTotals.original_tax_total
- )
-
discountTotal = MathBN.add(
discountTotal,
shippingMethodTotals.discount_total
)
-
discountSubtotal = MathBN.add(
discountSubtotal,
shippingMethodTotals.discount_subtotal
)
-
discountTaxTotal = MathBN.add(
discountTaxTotal,
shippingMethodTotals.discount_tax_total
)
+ shippingSubtotal = MathBN.add(
+ shippingSubtotal,
+ shippingMethodTotals.subtotal
+ )
+ shippingTotal = MathBN.add(shippingTotal, shippingMethodTotals.total)
+ shippingOriginalTotal = MathBN.add(
+ shippingOriginalTotal,
+ shippingMethodTotals.original_total
+ )
+ shippingOriginalSubtotal = MathBN.add(
+ shippingOriginalSubtotal,
+ shippingMethodTotals.subtotal
+ )
+ shippingTaxTotal = MathBN.add(
+ shippingTaxTotal,
+ shippingMethodTotals.tax_total
+ )
+ shippingOriginalTaxTotal = MathBN.add(
+ shippingOriginalTaxTotal,
+ shippingMethodTotals.original_tax_total
+ )
+ shippingDiscountTotal = MathBN.add(
+ shippingDiscountTotal,
+ shippingMethodTotals.discount_total
+ )
+
return shippingMethodTotals
})
@@ -250,6 +244,7 @@ export function decorateCartTotals(
cart.item_total = new BigNumber(itemsTotal)
cart.item_subtotal = new BigNumber(itemsSubtotal)
cart.item_tax_total = new BigNumber(itemsTaxTotal)
+ cart.item_discount_total = new BigNumber(itemsDiscountTotal)
cart.original_item_total = new BigNumber(itemsOriginalTotal)
cart.original_item_subtotal = new BigNumber(itemsOriginalSubtotal)
@@ -265,6 +260,7 @@ export function decorateCartTotals(
cart.shipping_total = new BigNumber(shippingTotal)
cart.shipping_subtotal = new BigNumber(shippingSubtotal)
cart.shipping_tax_total = new BigNumber(shippingTaxTotal)
+ cart.shipping_discount_total = new BigNumber(shippingDiscountTotal)
cart.original_shipping_tax_total = new BigNumber(shippingOriginalTaxTotal)
cart.original_shipping_subtotal = new BigNumber(shippingOriginalSubtotal)
diff --git a/packages/medusa/src/api/store/carts/query-config.ts b/packages/medusa/src/api/store/carts/query-config.ts
index 4b5ca64f66..a1c3f4aa40 100644
--- a/packages/medusa/src/api/store/carts/query-config.ts
+++ b/packages/medusa/src/api/store/carts/query-config.ts
@@ -18,12 +18,14 @@ export const defaultStoreCartFields = [
"item_total",
"item_subtotal",
"item_tax_total",
+ "item_discount_total",
"original_item_total",
"original_item_subtotal",
"original_item_tax_total",
"shipping_total",
"shipping_subtotal",
"shipping_tax_total",
+ "shipping_discount_total",
"original_shipping_tax_total",
"original_shipping_subtotal",
"original_shipping_total",
diff --git a/packages/modules/cart/integration-tests/__tests__/services/cart-module/index.spec.ts b/packages/modules/cart/integration-tests/__tests__/services/cart-module/index.spec.ts
index 69988030b9..3be9bdd98d 100644
--- a/packages/modules/cart/integration-tests/__tests__/services/cart-module/index.spec.ts
+++ b/packages/modules/cart/integration-tests/__tests__/services/cart-module/index.spec.ts
@@ -3170,12 +3170,14 @@ moduleIntegrationTestRunner({
item_total: 200,
item_subtotal: 500,
item_tax_total: 0,
+ item_discount_total: 300,
original_item_total: 500,
original_item_subtotal: 500,
original_item_tax_total: 0,
shipping_total: 10,
shipping_subtotal: 10,
shipping_tax_total: 0,
+ shipping_discount_total: 0,
original_shipping_tax_total: 0,
original_shipping_subtotal: 10,
original_shipping_total: 10,
@@ -3195,6 +3197,14 @@ moduleIntegrationTestRunner({
value: "300",
precision: 20,
},
+ raw_item_discount_total: {
+ value: "300",
+ precision: 20,
+ },
+ raw_shipping_discount_total: {
+ value: "0",
+ precision: 20,
+ },
raw_discount_subtotal: {
value: "300",
precision: 20,