Реализован сервис управления документами списания

- Создан WriteOffDocumentService с методами работы с документами списания
- create_document() - создание документа с автогенерацией номера (WO-XXXXXX)
- add_item() - добавление позиции с автоматическим созданием резерва
- update_item() - обновление позиции с пересчетом резерва
- remove_item() - удаление позиции с освобождением резерва
- confirm_document() - проведение документа (создание WriteOff записей по FIFO)
- cancel_document() - отмена с освобождением всех резервов
- Добавлена валидация доступного количества товара при создании/обновлении позиций
- Добавлена функция generate_writeoff_document_number() для генерации номеров документов
This commit is contained in:
2025-12-10 23:34:56 +03:00
parent 56a04ae4be
commit 4c74ae5c73
2 changed files with 388 additions and 0 deletions

View File

@@ -5,6 +5,20 @@
from inventory.models import DocumentCounter
def generate_writeoff_document_number():
"""
Генерирует уникальный номер документа списания.
Формат: WO-XXXXXX (6 цифр)
Thread-safe через DocumentCounter.
Returns:
str: Сгенерированный номер документа (например, WO-000001)
"""
next_number = DocumentCounter.get_next_value('writeoff')
return f"WO-{next_number:06d}"
def generate_transfer_document_number():
"""
Генерирует уникальный номер документа перемещения.