diff --git a/app/bestellbestaetigung/components/BestellbestaetigungContent.tsx b/app/bestellbestaetigung/components/BestellbestaetigungContent.tsx
index 2df58e8..31a076a 100644
--- a/app/bestellbestaetigung/components/BestellbestaetigungContent.tsx
+++ b/app/bestellbestaetigung/components/BestellbestaetigungContent.tsx
@@ -5,7 +5,7 @@ import Link from "next/link";
import Image from "next/image";
import type { CartItem } from "../../lib/cart";
import { useProducts } from "../../lib/products";
-import { formatPrice, formatDate } from "../../lib/format";
+import { formatPrice, formatDate, discountPercent } from "../../lib/format";
import { Reveal } from "../../components/Reveal";
import { CheckoutSteps } from "../../components/CheckoutSteps";
import { ORDER_KEY, type OrderSnapshot } from "../../lib/order";
@@ -96,6 +96,10 @@ export function BestellbestaetigungContent() {
.filter((row): row is { entry: CartItem; product: NonNullable<(typeof row)["product"]> } => Boolean(row.product));
const subtotal = items.reduce((sum, { entry, product }) => sum + entry.qty * product.price, 0);
+ const totalSavings = items.reduce((sum, { entry, product }) => {
+ const discount = discountPercent(product.price, product.compareAtPrice);
+ return discount !== null ? sum + entry.qty * (product.compareAtPrice! - product.price) : sum;
+ }, 0);
const total = subtotal + order.shippingCost;
return (
@@ -194,6 +198,13 @@ export function BestellbestaetigungContent() {
{formatPrice(subtotal)}
+ {totalSavings > 0 && (
+
+ Du sparst
+
+ -{formatPrice(totalSavings)}
+
+ )}
Versand
diff --git a/app/cart/components/CartContent.tsx b/app/cart/components/CartContent.tsx
index 2be813b..5aedc35 100644
--- a/app/cart/components/CartContent.tsx
+++ b/app/cart/components/CartContent.tsx
@@ -40,6 +40,10 @@ export function CartContent({
.filter((row): row is { entry: typeof cart[number]; product: NonNullable<(typeof row)["product"]> } => Boolean(row.product));
const subtotal = items.reduce((sum, { entry, product }) => sum + entry.qty * product.price, 0);
+ const totalSavings = items.reduce((sum, { entry, product }) => {
+ const discount = discountPercent(product.price, product.compareAtPrice);
+ return discount !== null ? sum + entry.qty * (product.compareAtPrice! - product.price) : sum;
+ }, 0);
const shipping =
items.length === 0 || (freeShippingThreshold !== null && subtotal >= freeShippingThreshold)
? 0
@@ -187,6 +191,14 @@ export function CartContent({
{formatPrice(subtotal)}
+ {totalSavings > 0 && (
+
+ Du sparst
+
+ -{formatPrice(totalSavings)}
+
+ )}
+
diff --git a/app/checkout/components/CheckoutContent.tsx b/app/checkout/components/CheckoutContent.tsx
index be665ec..db3b401 100644
--- a/app/checkout/components/CheckoutContent.tsx
+++ b/app/checkout/components/CheckoutContent.tsx
@@ -5,7 +5,7 @@ import Link from "next/link";
import Image from "next/image";
import { useCart, clearCart } from "../../lib/cart";
import { useProducts } from "../../lib/products";
-import { formatPrice } from "../../lib/format";
+import { formatPrice, discountPercent } from "../../lib/format";
import { Reveal } from "../../components/Reveal";
import { VersandModal } from "../../components/VersandModal";
import { CheckoutSteps } from "../../components/CheckoutSteps";
@@ -50,6 +50,10 @@ export function CheckoutContent({
.filter((row): row is { entry: typeof cart[number]; product: NonNullable<(typeof row)["product"]> } => Boolean(row.product));
const subtotal = items.reduce((sum, { entry, product }) => sum + entry.qty * product.price, 0);
+ const totalSavings = items.reduce((sum, { entry, product }) => {
+ const discount = discountPercent(product.price, product.compareAtPrice);
+ return discount !== null ? sum + entry.qty * (product.compareAtPrice! - product.price) : sum;
+ }, 0);
const selectedShipping = shippingMethods.find((m) => m.id === shippingMethodId) ?? null;
const freeShipping =
selectedShipping?.freeShippingThreshold !== null &&
@@ -343,6 +347,14 @@ export function CheckoutContent({
{formatPrice(subtotal)}
+ {totalSavings > 0 && (
+
+ Du sparst
+
+ -{formatPrice(totalSavings)}
+
+ )}
+