import { formatDateTime } from "../../utils/formatters"; import { Badge } from "../UI/Badge"; import { Panel } from "../UI/Panel"; import { OrderFilters } from "./OrderFilters"; import { getOrderGroupDisplayStatusLabel, getOrderGroupStatusTone, } from "../../services/orderGroupViews"; const MAX_VISIBLE_INVOICES = 2; const buildGroupSummary = (group) => { const orderCountLabel = `${group.ordersCount || 0} ${group.ordersCount === 1 ? "заказ" : group.ordersCount < 5 ? "заказа" : "заказов"}`; const parts = [orderCountLabel]; if (group.deliveryDate) { const datePart = group.deliveryTime ? `${group.deliveryDate} · ${group.deliveryTime}` : group.deliveryDate; parts.push(datePart); } if (group.assignedDriverName) { parts.push(group.assignedDriverName); } return parts.join(" · "); }; const renderOrderNumbers = (group) => { const numbers = group.allBillNumbers || group.orderNumbers; if (!Array.isArray(numbers) || !numbers.length) { return "Номера не указаны"; } if (numbers.length <= MAX_VISIBLE_INVOICES) { return numbers.join(", "); } const visible = numbers.slice(0, MAX_VISIBLE_INVOICES); const remaining = numbers.length - MAX_VISIBLE_INVOICES; return `${visible.join(", ")} +${remaining}`; }; const renderMobileOrderNumbers = (group) => { const numbers = group.allBillNumbers || group.orderNumbers; if (!Array.isArray(numbers) || !numbers.length) { return "Номера не указаны"; } if (numbers.length <= MAX_VISIBLE_INVOICES) { return numbers.join(", "); } const visible = numbers.slice(0, MAX_VISIBLE_INVOICES); const remaining = numbers.length - MAX_VISIBLE_INVOICES; return ( <> {visible.join(", ")} +{remaining} ); }; export const OrdersTable = ({ orderGroups = [], selectedOrderGroupId, onOpenOrder, filters, setFilters, statusOptions, cities = [], }) => { return (

Группы доставки

Поиск по группе, клиенту, телефону и дате доставки.

{orderGroups.length}
{filters && setFilters ? ( ) : null}
{!orderGroups.length ? (
Группы не найдены. Попробуйте изменить поиск или статус.
) : null} {orderGroups.map((group) => ( ))}
{!orderGroups.length ? (
Группы не найдены. Попробуйте изменить поиск или статус.
) : ( {orderGroups.map((group) => ( onOpenOrder(group.id)} > ))}
Группа / Клиент Счёта Статус Водитель Дата доставки Обновлён
{group.displayTitle || group.customerName || group.groupKey}
{[group.customerName, group.customerPhone].filter(Boolean).join(" · ")}
{group.groupKey}
{renderOrderNumbers(group)} {getOrderGroupDisplayStatusLabel(group)} {group.assignedDriverName || } {group.deliveryDate ? ( {group.deliveryDate}{group.deliveryTime ? · {group.deliveryTime} : ""} ) : ( )} {formatDateTime(group.updatedAt)}
)}
); };