Перейти к содержанию

Отгрузки, грузы и доставка

После выкупа и консолидации товары упаковываются в отгрузки, отгрузки объединяются в грузы, груз едет международной доставкой до страны получателя.

Иерархия

flowchart TD
    O[Заказ] --> S1[Отгрузка 1]
    O --> S2[Отгрузка 2]
    S1 --> I1[Позиции: товар × qty]
    S1 --> SV[Услуги: доставка/страховка/доп]
    S1 --> D[Груз]
    S3[Отгрузка другого клиента] --> D
    D --> Tr[Международная доставка]
  • Отгрузка (shipments) — часть заказа в одной посылке; наполняется позициями (shipment_items: товар + qty, дробление допускается).
  • Груз (deliveries) — набор оплаченных отгрузок (возможно разных клиентов одного посредника). Отгрузка не более чем в одном грузе.

Статусы

cost_not_calculated → await_pay → paid
«Стоимость не посчитана» → расчёт доставки → «Ожидает оплаты» → клиент оплатил → «Оплачена».

formed → in_transit → arrived  (| canceled)
«Сформирован» → «В пути» → «Прибыл». Авто-приёмка отгрузок старше 30 дней без зарегистрированной проблемы (shipments:auto-accept).

Что отгружать

Доступно к отгрузке только то, что выкуплено и прибыло:

availableToShip = arrivedQty − shippedQty

CreateShipment блокирует отгрузку невыкупленного/неприбывшего.

Каталоги доставки

Двухслойная модель (CatalogService):

  • agent_id = NULLсистемный дефолт (управляет админ СРМ в Filament), виден всем посредникам;
  • agent_id = <id>свой вариант посредника;
  • посредник может «выключить у себя» системный дефолт (agent_catalog_disables).

Каталоги: страны, города, способы доставки из Китая (карго) + методы скорости, упаковки, страховки, транспортные компании, пункты самовывоза.

Страница доставки отгрузки

Общий компонент Pages/Shipment/Delivery.vue (агент и клиент). Два режима:

  1. Полный режим (6 секций с зависимостями): страна → города → карго/ТК/самовывоз; способ доставки, скорость, упаковка, страховка; получатель/адрес (инлайн); вес / объём / места / срок.
  2. Режим расчёта: сводка + курсы (снимки rate_*_snapshot) + «Стоимость услуг» (shipment_services): Доставка (flat/per_kg), Страховка (fixed/percent, вкл/выкл), доп-услуги — в 元/$/₽, с флагом «оплата при получении». Автозаполнение из карго и страховки.

После расчёта отгрузка → await_pay. Уведомление клиенту в чат со ссылкой.

Оплата доставки клиентом

Клиент видит read-only сводку, выбирает «оплата при получении» / «к оплате сейчас», оплачивает из касс (рубли + юани, юани→₽ по курсу) через LedgerService → статус paid.

Валюты доставки

USD — расчётная валюта для цен доставки/услуг; итог сводится в ₽. Изоляция мультивалют (списание строго с баланса shipping_currency без конвертации) — отложенная задача (см. Дорожная карта).

Грузы

DeliveriesController: формирование груза из оплаченных отгрузок, статусы (Сформирован → В пути → Прибыл), трек-номера, история (delivery_history). Список грузов: клиенты (уникальные по отгрузкам), страна/город, дни в работе, вес, расчёт. Вкладки «Текущие / Архив доставок».

Сервисы

Сервис Роль
CatalogService Видимость каталогов (system + own − disabled)
ShipmentDeliveryService Сборка формы доставки, расчёт, сводка (present/detailView)
DeliveryCalcService Расчёт стоимости доставки
OrderFlowService Продвижение заказа по цепочке + авто-завершение
RefundService Возвраты (товары + доставка пропорц. непривезённому)