Перейти к основному содержимому

Документы

Обзор

Документ — центральная сущность WMS. Все складские операции оформляются документами. В системе 33 типа документов, каждый наследует BaseDoc.

Иерархия наследования

BaseSoftDeleteEntity
└── BaseDoc<S extends Enum> — wms_doc_base (JOINED, дискриминатор type)
├── BaseDocItem<D, S> — wms_doc_base_item (JOINED)
│ ├── BaseDocSkuItem
│ ├── BaseDocSkuPackagingItem
│ └── BaseDocSkuPackagingContainerItem
└── 33 конкретных типа документов

Группы документов

Приёмка (RECEIPT)

ТипКлассНазначениеРодитель
SUPPLYSupplyDocОжидаемая поставка от поставщика
UNLOADINGUnloadingDocРазгрузка транспортного средства
RECEIPTReceiptDocФактическая приёмка товаровSupplyDoc
PRODUCT_QUALITY_VISUAL_CONTROLProductQualityVisualControlDocВизуальная проверка качества
PRODUCT_QUALITY_LAB_CONTROLProductQualityLabControlDocЛабораторная проверка
PLACINGPlacingDocРазмещение на хранениеReceiptDoc
RETURNINGReturningDocПриёмка возвращённых товаров
RETURNING_ORDERReturningOrderDocВозврат по конкретному заказуReturningDoc

Склад (WAREHOUSE)

ТипКлассНазначениеРодитель
MOVEMENTMovementDocВнутрискладское перемещение
MOVEMENT_CONTROLMovementControlDocБлокировка товаров/мест
INVENTORYInventoryDocУправляющий документ инвентаризации
INVENTORY_PLANInventoryPlanDocПлановые данныеInventoryDoc
INVENTORY_FACTInventoryFactDocФактические данныеInventoryDoc
INVENTORY_DISCREPANCYInventoryDiscrepancyDocКТО — расхожденияInventoryFactDoc
CHANGE_STOCKChangeStockDocКорректировка остатков
NON_CONFORMANCENonConformanceDocАкт несоответствий (брак/потери)
ADDITIONAL_PROCESSINGAdditionalProcessingDocМаркировка, стикеровка
SKU_PACKAGING_UNPACKINGSkuPackagingUnpackingDocРаспаковка заводских упаковок
WORKFLOW_PLANWorkflowPlanDocПлан обработки контейнера

Отгрузка (SHIPMENT)

ТипКлассНазначениеРодитель
ORDEROrderDocЗаказ на отгрузкуOrderBatchDoc
ORDER_BATCHOrderBatchDocГруппа заказов (батч)
PICKINGPickingDocОтбор товаровOrderBatchDoc
SORTINGSortingDocСортировка по заказамOrderBatchDoc
ORDER_PACKINGOrderPackingDocУпаковка заказаOrderDoc
PACKAGING_UNITPackagingUnitDocГрузовое место (коробка/паллет)OrderPackingDoc
REPLENISHMENTReplenishmentDocПодпитка зон отбора
TRANSPORT_UNITTransportUnitDocТранспортное местоPackagingUnitDoc
LOADINGLoadingDocПогрузка в ТСTransportUnitDoc
TRANSPORTATIONTransportationDocПеревозка груза
TRANSPORT_RUNTransportRunDocРейс ТС
SERIAL_NUMBER_GENERATIONSerialNumberGenerationDocЭмиссия серийных номеров

Наборы

ТипКлассНазначениеРодитель
BUNDLE_ORDER_BATCHBundleOrderBatchDocБатч наборов
BUNDLE_ORDERBundleOrderDocЗаказ на сборку набораBundleOrderBatchDoc
BUNDLEBundleDocРезультат сборки набораBundleOrderDoc

Деревья документов (parent-child)

Цепочка поставки

SupplyDoc (поставка)
└── ReceiptDoc (приёмка)
└── PlacingDoc (размещение)

Цепочка отгрузки

OrderBatchDoc (батч)
├── OrderDoc (заказ)
│ └── OrderPackingDoc (упаковка)
│ └── PackagingUnitDoc (грузовое место)
│ └── TransportUnitDoc (транспортное место)
│ └── LoadingDoc (погрузка)
├── PickingDoc (отбор)
└── SortingDoc (сортировка)

Инвентаризация

InventoryDoc (инвентаризация)
├── InventoryPlanDoc (план)
└── InventoryFactDoc (факт)
└── InventoryDiscrepancyDoc (расхождения)

Наборы

BundleOrderBatchDoc (батч наборов)
└── BundleOrderDoc (заказ на набор)
└── BundleDoc (собранный набор)

Жизненный цикл документа

Каждый тип документа имеет свой enum статусов. Общий паттерн:

NEW → IN_PROGRESS → DONE

CANCELED

Конкретные статусы определяются бизнес-логикой каждого типа.

История статусов

При каждой смене статуса создаётся запись DocStatusHistory:

  • Документ
  • Статус
  • Порядковый индекс
  • Сотрудник
  • Рабочее место
  • Время

Публикуется DocStatusChangedEvent.

Связанные механизмы

МеханизмОписание
Конвейер обработки14-шаговый pipeline сохранения
ДвиженияПроводки по регистрам
Конструктор формUI-формы для документов
EventsСобытийная модель