"use client"; import React from "react"; import { Card } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { ShoppingCart, Building2, Plus, Minus, Eye } from "lucide-react"; import { SelectedProduct } from "./types"; interface CartSummaryProps { selectedProducts: SelectedProduct[]; onQuantityChange: ( productId: string, supplierId: string, quantity: number ) => void; onRemoveProduct: (productId: string, supplierId: string) => void; onCreateSupply: () => void; onToggleVisibility: () => void; formatCurrency: (amount: number) => string; visible: boolean; } export function CartSummary({ selectedProducts, onQuantityChange, onRemoveProduct, onCreateSupply, onToggleVisibility, formatCurrency, visible, }: CartSummaryProps) { if (!visible || selectedProducts.length === 0) { return null; } // Группируем товары по поставщикам const groupedProducts = selectedProducts.reduce((acc, product) => { if (!acc[product.supplierId]) { acc[product.supplierId] = { supplier: product.supplierName, products: [], }; } acc[product.supplierId].products.push(product); return acc; }, {} as Record); const getTotalAmount = () => { return selectedProducts.reduce((sum, product) => { const discountedPrice = product.discount ? product.price * (1 - product.discount / 100) : product.price; return sum + discountedPrice * product.selectedQuantity; }, 0); }; const getTotalItems = () => { return selectedProducts.reduce( (sum, product) => sum + product.selectedQuantity, 0 ); }; return (

Корзина

{selectedProducts.length} товаров от{" "} {Object.keys(groupedProducts).length} поставщиков

{/* Группировка по поставщикам */} {Object.entries(groupedProducts).map(([supplierId, group]) => (
{group.supplier} {group.products.length} товар(ов)
{group.products.map((product) => { const discountedPrice = product.discount ? product.price * (1 - product.discount / 100) : product.price; const totalPrice = discountedPrice * product.selectedQuantity; return (
{product.name}

{product.name}

{product.article}

{product.selectedQuantity}
{formatCurrency(totalPrice)}
{product.discount && (
{formatCurrency( product.price * product.selectedQuantity )}
)}
); })}
))} {/* Итого */}
Итого: {getTotalItems()} товаров {formatCurrency(getTotalAmount())}
); }