Улучшения инвентаризации: автоматическое проведение документов, оптимизация запросов и улучшения 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:
@@ -11,6 +11,8 @@ from .views import (
|
||||
SaleListView, SaleCreateView, SaleUpdateView, SaleDeleteView, SaleDetailView,
|
||||
# Inventory
|
||||
InventoryListView, InventoryCreateView, InventoryDetailView, InventoryLineCreateBulkView,
|
||||
InventoryLineAddView, InventoryLineUpdateView, InventoryLineDeleteView,
|
||||
InventoryCompleteView,
|
||||
# WriteOff
|
||||
WriteOffListView, WriteOffCreateView, WriteOffUpdateView, WriteOffDeleteView,
|
||||
# Transfer
|
||||
@@ -79,7 +81,12 @@ urlpatterns = [
|
||||
path('inventory-ops/', InventoryListView.as_view(), name='inventory-list'),
|
||||
path('inventory-ops/create/', InventoryCreateView.as_view(), name='inventory-create'),
|
||||
path('inventory-ops/<int:pk>/', InventoryDetailView.as_view(), name='inventory-detail'),
|
||||
path('inventory-ops/<int:pk>/lines/add/', InventoryLineCreateBulkView.as_view(), name='inventory-lines-add'),
|
||||
path('inventory-ops/<int:pk>/lines/add-bulk/', InventoryLineCreateBulkView.as_view(), name='inventory-lines-add'),
|
||||
# AJAX endpoints для работы со строками инвентаризации
|
||||
path('inventory-ops/<int:inventory_id>/lines/add/', InventoryLineAddView.as_view(), name='inventory-line-add'),
|
||||
path('inventory-ops/<int:inventory_id>/lines/<int:line_id>/update/', InventoryLineUpdateView.as_view(), name='inventory-line-update'),
|
||||
path('inventory-ops/<int:inventory_id>/lines/<int:line_id>/delete/', InventoryLineDeleteView.as_view(), name='inventory-line-delete'),
|
||||
path('inventory-ops/<int:inventory_id>/complete/', InventoryCompleteView.as_view(), name='inventory-complete'),
|
||||
|
||||
# ==================== WRITEOFF (одиночные записи) ====================
|
||||
path('writeoffs/', WriteOffListView.as_view(), name='writeoff-list'),
|
||||
|
||||
Reference in New Issue
Block a user