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

Регистры складского учёта

Обзор

Регистры — числовые накопители, хранящие актуальное состояние склада. Каждый регистр идентифицируется координатой (набор полей) и содержит числовые значения.

РегистрТаблицаНазначениеКоордината
StorageRegistrywms_storage_registryОстатки товара на складских местахSKU упаковка + партия + кондиция + место + документ-источник
WorkflowRegistrywms_workflow_registryТовары в рабочих процессахКонтейнер + упаковка + партия + кондиция + место + задача
ControlRegistrywms_control_registryБлокировки операцийШирокая координата (товар, место, зона, склад, операция)
ShipmentControlRegistrywms_shipment_control_registryКонтроль этапов отгрузкиЗаказ + товар + партия + контейнер + этап

StorageRegistry (основной регистр)

Главный регистр складского учёта. Хранит количество и резерв товара в разрезе:

Поле координатыОписание
skuPackagingIdУпаковка товара (штука, коробка и т.п.)
skuBatchIdПартия (дата, номер)
conditionКондиция (годный, брак, карантин)
warehouseSpaceСкладское место (ячейка)
sourceDocumentIdДокумент, по которому товар поступил
Поле значенияОписание
quantityФактическое количество
reservedЗарезервированное количество

Особенности:

  • Поддержка splitter для конкурентного доступа
  • Исторические снимки на начало каждого месяца (dateTime поле)
  • Групповая валидация: quantity >= reserved

WorkflowRegistry

Учёт товаров/контейнеров, находящихся "в работе" по задачам workflow.

Работает как +/- (приход/расход). Используется для отслеживания товара на каждом этапе обработки.

Особенности:

  • Поддержка splitter
  • Координата включает workflowTaskId — привязка к конкретной задаче

ControlRegistry

Блокировка складских операций. Хранит флаг blocked (не количество).

Максимально гибкая координата — можно заблокировать:

  • Конкретный товар
  • Категорию товаров
  • Партию
  • Контейнер
  • Складское место
  • Зону склада
  • Склад целиком
  • Тип операции

Проверяется перед каждым движением (checkMovementIsNotBlocked).

ShipmentControlRegistry

Контроль прохождения товаров через этапы отгрузки (ShipmentStage):

  • Отбор
  • Сортировка
  • Упаковка
  • Погрузка

Работает как +/- в разрезе заказа, товара, партии и контейнера.

Перемещаемые объекты

В отличие от регистров (числовые значения), объекты перемещаются целиком:

ОбъектОписание
BaseContainerКонтейнер. Координата: место + резерв + привязка к документу
SerialNumberСерийный номер. Координата: кондиция + место

Запросы остатков (StockService)

StockService формирует нативные SQL-запросы к wms_storage_registry:

  • Гибкая группировка через StockRequestGroupBy
  • Фильтрация по складам, местам, товарам, кондициям
  • Используется для проверки достаточности остатков и бизнес-логики