diff --git a/src/kitUI/Cart/Cart.tsx b/src/kitUI/Cart/Cart.tsx
index bca1eae..ef64790 100644
--- a/src/kitUI/Cart/Cart.tsx
+++ b/src/kitUI/Cart/Cart.tsx
@@ -6,7 +6,7 @@ import { useState } from "react";
import { GridSelectionModel } from "@mui/x-data-grid";
import { testUser } from "@root/stores/mocks/user";
import { useDiscountStore } from "@root/stores/discounts";
-import { calcCartData, createCartItem, findDiscountById, findDiscountFactorById, formatDiscountFactor } from "./calc";
+import { calcCartData, createCartItem, findDiscountById, findDiscountFactor, formatDiscountFactor } from "./calc";
import { useTariffStore } from "@root/stores/tariffs";
import { AnyDiscount, CartItemTotal } from "@root/model/cart";
@@ -28,8 +28,7 @@ export default function Cart({ selectedTariffs }: Props) {
{cartItemTotal.envolvedDiscounts.map(discountId => (
))}
@@ -44,23 +43,27 @@ export default function Cart({ selectedTariffs }: Props) {
price: cartItemTotal.totalPrice,
};
});
+
+ const cartDiscounts = cartTotal?.envolvedCartDiscounts.map(discountId => findDiscountById(discounts, discountId));
+ const cartDiscountsResultFactor = cartDiscounts && 1 - cartDiscounts.reduce((acc, discount) => acc * findDiscountFactor(discount), 1);
- const envolvedCartDiscountsElement = (
+ const envolvedCartDiscountsElement = cartDiscounts && (
- {cartTotal?.envolvedCartDiscounts.map((discountId, index, arr) => (
-
+ {cartDiscounts?.map((discount, index, arr) => (
+
{index < arr.length - 1 &&
,
}
))}
+
+ {cartDiscountsResultFactor && `= ${formatDiscountFactor(cartDiscountsResultFactor)}`}
);
@@ -206,13 +209,11 @@ export default function Cart({ selectedTariffs }: Props) {
);
}
-function DiscountTooltip({ discounts, discountId, cartItemTotal }: {
- discounts: AnyDiscount[];
- discountId: string;
+function DiscountTooltip({ discount, cartItemTotal }: {
+ discount: AnyDiscount;
cartItemTotal?: CartItemTotal;
}) {
- const discount = findDiscountById(discounts, discountId);
- const discountText = formatDiscountFactor(findDiscountFactorById(discounts, discountId, cartItemTotal?.tariff.privilege.privilegeId));
+ const discountText = formatDiscountFactor(findDiscountFactor(discount, cartItemTotal?.tariff.privilege.privilegeId));
return (
discount._id === id);
- if (!discount) throw new Error("Discount not found by id");
-
+export function findDiscountFactor(discount: AnyDiscount, privilegeId?: string) {
switch (discount.conditionType) {
case "cartPurchasesAmount":
return discount.factor;