const DriverShipmentReport = ({ shipmentData }) => {
if (!Array.isArray(shipmentData) || shipmentData.length === 0) return null;
return (
Не доставлено {shipmentData.length} {shipmentData.length === 1 ? "позиция" : shipmentData.length < 5 ? "позиции" : "позиций"}. Остальное — доставлено.
Причина: {item.comment} Причина не указана
Нет данных
; } return (Позиции не указаны
) : ( orders.map((orderItem, idx) => ({orderItem.nom || orderItem.name || `Заказ ${idx + 1}`}
Только услуги — скрыты стоп-словами
; } if (filtered.length === 0) { returnПозиции не указаны
; } return (Переведено: {formatDateTime(order.paidStorageAt)}
)}Переведите заказ в статус платного хранения, если клиент не забрал товар в срок.
Перевести заказ в платное хранение? Клиент получит уведомление.
Укажите причину возникшей проблемы с доставкой.
Выберите группу для просмотра деталей.
{(order.deliveryType === "pickup" || order.deliveryStatus === "pickup" || order.delivery_status === "pickup") ? "Карточка группы самовывоза" : "Карточка группы доставки"}
{(() => { const parts = []; if (order.orderNumbers && order.orderNumbers.length > 0) parts.push(order.orderNumbers.join(", ")); const sub = order.displaySubtitle || [order.customerPhone, order.customerDate].filter(Boolean).join(" · "); if (sub) parts.push(sub); return parts.join(" · ") || "Не указано"; })()}
{dateLabel}
{formatDeliveryDateDisplay(order.deliveryDate)}
{timeLabel}
{renderValue(order.deliveryTime || order.deliveryHalfDay)}
Тип
{deliveryTypeLabel}
{(order.deliveryStatus === "requires_address" || order.delivery_status === "requires_address") && (Адрес доставки не указан
Клиент выбрал доставку, но адрес отсутствует. Уточните адрес у клиента и заполните поле ниже.
Водитель
{order.assignedDriverId ? renderValue(order.assignedDriverName) : (isPickup ? "Не нужен" : "Не назначен")}
{addressLabel}
{renderValue(effectiveAddress)}
Заказ
{(() => { const mainNumbers = order.orderNumbers || []; const allNumbers = order.allBillNumbers || []; const mainSet = new Set(mainNumbers.map(String)); const extraNumbers = allNumbers.filter((n) => !mainSet.has(String(n))); if (mainNumbers.length > 0) { return ( {mainNumbers.join(", ")} {extraNumbers.length > 0 && ( +{extraNumbers.length} сч. )} ); } return renderValue(order.orderNumberSummary); })()}
Клиент
{renderValue(order.customerName)}
Дата счёта
{renderValue(order.customerDate)}
Всего заказов
{order.ordersCount ?? 0}
Готово
{order.readyCount ?? 0}
Не готово
{order.notReadyCount ?? 0}
Обновлена
{formatDateTime(order.updatedAt)}
{(order.deliveryType === "pickup" || order.deliveryStatus === "pickup" || order.delivery_status === "pickup") ? "Статус самовывоза" : "Статус доставки"}
{getOrderGroupDeliveryStatusLabel(order.deliveryStatus || order.delivery_status)}
{isDeliveryAgreed ? "Дата и время уже зафиксированы." : "Если клиент согласовал доставку или самовывоз по телефону, сохраните дату и время здесь."}
ℹ️ Условия хранения
Бесплатное хранение — 2 рабочих дня с даты готовности.
Начиная с 3-го рабочего дня — 300 ₽/день платного хранения.
{(order.deliveryType === "pickup" || order.deliveryStatus === "pickup" || order.delivery_status === "pickup") ? "Самовывоз согласован" : "Доставка согласована"}
{agreedDeliveryLabel || "Дата и время сохранены"}
Календарь доставки
Выходные отмечены пунктиром и недоступны.
Календарь самовывоза
Выходные отмечены пунктиром и недоступны.
{formMessage}
) : null}{(() => { const ds = order.deliveryStatus || order.delivery_status; if (["loaded", "on_route", "delivered"].includes(ds)) { return "Доставка в процессе — сменить водителя нельзя."; } return order.assignedDriverId ? "Назначен водитель. Вы можете изменить назначение." : "Выберите водителя для доставки."; })()}
Водитель назначен
{order.assignedDriverName || "Неизвестно"}
{driverMessage}
) : null}Измените статус, если водитель забыл обновить или нужна корректировка.
{formMessage}
) : null}Выберите статус и нажмите «Сохранить».
{formMessage}
) : null}Основной счёт
{mainNumbers.length > 0 ? "Составные заказы" : "Все счета"}
Нет данных
)}1-е SMS отправлено
{formatDateTime(order.firstSmsSentAt)}
2-е SMS отправлено
{formatDateTime(order.secondSmsSentAt)}
SMS отправлено
Нет
Ручное согласование выполнено
{order.manualConfirmationAt ? formatDateTime(order.manualConfirmationAt) : "Нет"}
Платное хранение
{order.paidStorageAt ? formatDateTime(order.paidStorageAt) : "Нет"}
Создано из обмена
{formatDateTime(order.createdFromExchangeAt)}