Модуль 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— получатели груза