Улучшения инвентаризации: автоматическое проведение документов, оптимизация запросов и улучшения UI
- Автоматическое проведение документов списания и оприходования после завершения инвентаризации - Оптимизация SQL-запросов: устранение N+1, bulk-операции для Stock, агрегация для StockBatch и Reservation - Изменение формулы расчета разницы: (quantity_fact + quantity_reserved) - quantity_available - Переименование поля 'По факту' в 'Подсчитано (факт, свободные)' - Добавлены столбцы 'В резервах' и 'Всего на складе' в таблицу инвентаризации - Перемещение столбца 'В системе (свободно)' после 'В резервах' с визуальным выделением - Центральное выравнивание значений в столбцах таблицы - Автоматическое выделение текста при фокусе на поле ввода количества - Исправление форматирования разницы (убраны лишние нули) - Изменение статуса 'Не обработана' на 'Не проведено' - Добавление номера документа для инвентаризаций (INV-XXXXXX) - Отображение всех типов списаний в debug-странице (WriteOff, WriteOffDocument, WriteOffDocumentItem) - Улучшение отображения документов в детальном просмотре инвентаризации с возможностью перехода к ним
This commit is contained in:
@@ -289,13 +289,22 @@ class InventoryAdmin(admin.ModelAdmin):
|
||||
|
||||
for inventory in queryset:
|
||||
result = InventoryProcessor.process_inventory(inventory.id)
|
||||
self.message_user(
|
||||
request,
|
||||
msg_parts = [
|
||||
f"Инвентаризация {inventory.warehouse.name}: "
|
||||
f"обработано {result['processed_lines']} строк, "
|
||||
f"создано {result['writeoffs_created']} списаний и "
|
||||
f"{result['incomings_created']} приходов"
|
||||
)
|
||||
f"обработано {result['processed_lines']} строк."
|
||||
]
|
||||
|
||||
if result.get('writeoff_document'):
|
||||
msg_parts.append(
|
||||
f"Создан документ списания: {result['writeoff_document'].document_number} (черновик)."
|
||||
)
|
||||
|
||||
if result.get('incoming_document'):
|
||||
msg_parts.append(
|
||||
f"Создан документ оприходования: {result['incoming_document'].document_number} (черновик)."
|
||||
)
|
||||
|
||||
self.message_user(request, ' '.join(msg_parts))
|
||||
|
||||
process_inventory.short_description = 'Обработать инвентаризацию'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user