Добавлено разделение типов поступлений на склад

- Добавлено поле receipt_type в модель IncomingBatch с типами: supplier, inventory, adjustment
- Исправлен баг в InventoryProcessor: теперь корректно создается IncomingBatch при инвентаризации
- Создан IncomingAdjustmentCreateView для оприходования без инвентаризации
- Обновлены формы, шаблоны и админка для поддержки разных типов поступлений
- Добавлена навигация и URL для оприходования
- Тип поступления отображается в списках приходов и партий
This commit is contained in:
2025-12-20 23:47:13 +03:00
parent f1798291e0
commit 78dc9e9801
12 changed files with 238 additions and 20 deletions

View File

@@ -11,10 +11,11 @@ from django.db import transaction
from django.utils import timezone
from inventory.models import (
Inventory, InventoryLine, WriteOff, Incoming,
Inventory, InventoryLine, WriteOff, Incoming, IncomingBatch,
StockBatch, Stock
)
from inventory.services.batch_manager import StockBatchManager
from inventory.utils import generate_incoming_document_number
class InventoryProcessor:
@@ -142,21 +143,24 @@ class InventoryProcessor:
inventory.warehouse
)
# Создаем новую партию
batch = StockBatchManager.create_batch(
line.product,
inventory.warehouse,
quantity_surplus,
cost_price
# Генерируем номер документа для поступления
document_number = generate_incoming_document_number()
# Создаем IncomingBatch с типом 'inventory'
incoming_batch = IncomingBatch.objects.create(
warehouse=inventory.warehouse,
document_number=document_number,
receipt_type='inventory',
notes=f'Оприходование при инвентаризации {inventory.id}, строка {line.id}'
)
# Создаем документ Incoming
# Сигнал create_stock_batch_on_incoming автоматически создаст StockBatch
Incoming.objects.create(
batch=incoming_batch,
product=line.product,
warehouse=inventory.warehouse,
quantity=quantity_surplus,
cost_price=cost_price,
batch=batch,
notes=f'Инвентаризация {inventory.id}, строка {line.id}'
)