Skip to content

Модуль tms

Путь: app/tms/
Django app: app.tms

Назначение

TMS (Transport Management System) — управление транспортной логистикой: паллетная сборка, маршрутизация, отгрузка, сопроводительные документы.

Ключевые модели

PalletPositions

python
class PalletPositions(Model):
    """Позиции паллеты"""
    pallet = FK(Pallet)
    assortiment = FK(Assortiment)
    quantity = DecimalField()
    boxes_count = IntegerField()    # количество коробов
    weight = DecimalField()
    barcode = CharField()           # штрихкод короба

PickSheetsPosition

python
class PickSheetsPosition(Model):
    """Строка листа комплектации"""
    pick_sheet = FK(PickSheet)
    assortiment = FK(Assortiment)
    quantity_plan = DecimalField()
    quantity_fact = DecimalField()
    zone = FK(WarehouseZone)
    is_picked = BooleanField()      # скомплектовано?
    picker = FK(User)               # кто комплектует

ShippingCard (в app.document)

Транспортная карточка создаётся при оформлении отгрузки:

  • Привязана к документу расходной накладной
  • Содержит паллеты и маршрут
  • Генерирует QR-коды для паллет

API

EndpointОписание
GET /api/tms/Список транспортных документов
GET /api/tms/pallets/Паллеты
POST /api/tms/pallets/Создать паллету
GET /api/tms/pick-sheets/Листы комплектации
GET /api/tms/routes/Маршруты

Процесс отгрузки

Заказ покупателя →
Создать лист комплектации (PickSheet) →
Складской работник сканирует короба →
PickSheetsPosition.is_picked = True →
Паллетная сборка (PalletPositions) →
Генерация QR-кода паллеты →
Создать ShippingCard →
Водитель забирает паллеты → Отгрузка

Интеграция с DaData (адреса)

При оформлении маршрута адреса доставки верифицируются через DaData:

python
# app/tms/views.py
def validate_delivery_address(address):
    result = dadata.clean("address", address)
    return result

Связи

  • app.document — накладные, транспортные карты
  • app.warehouse_zones — зоны сборки и отгрузки
  • app.counterparty — получатели груза