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;