# -*- coding: utf-8 -*- from django.urls import path from .views import ( # Warehouse WarehouseListView, WarehouseCreateView, WarehouseUpdateView, WarehouseDeleteView, SetDefaultWarehouseView, # Sale SaleListView, SaleCreateView, SaleUpdateView, SaleDeleteView, SaleDetailView, # Inventory InventoryListView, InventoryCreateView, InventoryDetailView, InventoryLineCreateBulkView, InventoryLineAddView, InventoryLineUpdateView, InventoryLineDeleteView, InventoryCompleteView, InventoryDeleteView, # WriteOff WriteOffListView, WriteOffCreateView, WriteOffUpdateView, WriteOffDeleteView, # Transfer TransferListView, TransferBulkCreateView, TransferDetailView, TransferDeleteView, GetProductStockView, # Reservation ReservationListView, # Stock StockListView, StockDetailView, # StockBatch StockBatchListView, StockBatchDetailView, # SaleBatchAllocation SaleBatchAllocationListView, # StockMovement StockMovementListView, ) # Showcase views from .views.showcase import ShowcaseListView, ShowcaseCreateView, ShowcaseUpdateView, ShowcaseDeleteView, SetDefaultShowcaseView # WriteOff Document views from .views.writeoff_document import ( WriteOffDocumentListView, WriteOffDocumentCreateView, WriteOffDocumentDetailView, WriteOffDocumentAddItemView, WriteOffDocumentUpdateItemView, WriteOffDocumentRemoveItemView, WriteOffDocumentConfirmView, WriteOffDocumentCancelView ) # Incoming Document views from .views.incoming_document import ( IncomingDocumentListView, IncomingDocumentCreateView, IncomingDocumentDetailView, IncomingDocumentAddItemView, IncomingDocumentUpdateItemView, IncomingDocumentRemoveItemView, IncomingDocumentConfirmView, IncomingDocumentCancelView ) # Transformation views from .views.transformation import ( TransformationListView, TransformationCreateView, TransformationDetailView, TransformationAddInputView, TransformationAddOutputView, TransformationRemoveInputView, TransformationRemoveOutputView, TransformationConfirmView, TransformationCancelView ) # Debug views from .views.debug_views import debug_inventory_page from . import views app_name = 'inventory' urlpatterns = [ # Главная страница складского модуля path('', views.inventory_home, name='inventory-home'), # ==================== WAREHOUSE ==================== path('warehouses/', WarehouseListView.as_view(), name='warehouse-list'), path('warehouses/create/', WarehouseCreateView.as_view(), name='warehouse-create'), path('warehouses//edit/', WarehouseUpdateView.as_view(), name='warehouse-update'), path('warehouses//delete/', WarehouseDeleteView.as_view(), name='warehouse-delete'), path('warehouses//set-default/', SetDefaultWarehouseView.as_view(), name='warehouse-set-default'), # ==================== INCOMING BATCH (УДАЛЕНО) ==================== # IncomingBatch и Incoming удалены. Используйте IncomingDocument вместо них. # ==================== SALE ==================== path('sales/', SaleListView.as_view(), name='sale-list'), path('sales/create/', SaleCreateView.as_view(), name='sale-create'), path('sales//', SaleDetailView.as_view(), name='sale-detail'), path('sales//edit/', SaleUpdateView.as_view(), name='sale-update'), path('sales//delete/', SaleDeleteView.as_view(), name='sale-delete'), # ==================== INVENTORY ==================== path('inventory-ops/', InventoryListView.as_view(), name='inventory-list'), path('inventory-ops/create/', InventoryCreateView.as_view(), name='inventory-create'), path('inventory-ops//', InventoryDetailView.as_view(), name='inventory-detail'), path('inventory-ops//lines/add-bulk/', InventoryLineCreateBulkView.as_view(), name='inventory-lines-add'), # AJAX endpoints для работы со строками инвентаризации path('inventory-ops//lines/add/', InventoryLineAddView.as_view(), name='inventory-line-add'), path('inventory-ops//lines//update/', InventoryLineUpdateView.as_view(), name='inventory-line-update'), path('inventory-ops//lines//delete/', InventoryLineDeleteView.as_view(), name='inventory-line-delete'), path('inventory-ops//complete/', InventoryCompleteView.as_view(), name='inventory-complete'), path('inventory-ops//delete/', InventoryDeleteView.as_view(), name='inventory-delete'), # ==================== WRITEOFF (одиночные записи) ==================== path('writeoffs/', WriteOffListView.as_view(), name='writeoff-list'), path('writeoffs/create/', WriteOffCreateView.as_view(), name='writeoff-create'), path('writeoffs//edit/', WriteOffUpdateView.as_view(), name='writeoff-update'), path('writeoffs//delete/', WriteOffDeleteView.as_view(), name='writeoff-delete'), # ==================== WRITEOFF DOCUMENT (документы списания) ==================== path('writeoff-documents/', WriteOffDocumentListView.as_view(), name='writeoff-document-list'), path('writeoff-documents/create/', WriteOffDocumentCreateView.as_view(), name='writeoff-document-create'), path('writeoff-documents//', WriteOffDocumentDetailView.as_view(), name='writeoff-document-detail'), path('writeoff-documents//add-item/', WriteOffDocumentAddItemView.as_view(), name='writeoff-document-add-item'), path('writeoff-documents//update-item//', WriteOffDocumentUpdateItemView.as_view(), name='writeoff-document-update-item'), path('writeoff-documents//remove-item//', WriteOffDocumentRemoveItemView.as_view(), name='writeoff-document-remove-item'), path('writeoff-documents//confirm/', WriteOffDocumentConfirmView.as_view(), name='writeoff-document-confirm'), path('writeoff-documents//cancel/', WriteOffDocumentCancelView.as_view(), name='writeoff-document-cancel'), # ==================== INCOMING (документы поступления) ==================== path('incoming/', IncomingDocumentListView.as_view(), name='incoming-list'), path('incoming/create/', IncomingDocumentCreateView.as_view(), name='incoming-create'), path('incoming//', IncomingDocumentDetailView.as_view(), name='incoming-detail'), path('incoming//add-item/', IncomingDocumentAddItemView.as_view(), name='incoming-add-item'), path('incoming//update-item//', IncomingDocumentUpdateItemView.as_view(), name='incoming-update-item'), path('incoming//remove-item//', IncomingDocumentRemoveItemView.as_view(), name='incoming-remove-item'), path('incoming//confirm/', IncomingDocumentConfirmView.as_view(), name='incoming-confirm'), path('incoming//cancel/', IncomingDocumentCancelView.as_view(), name='incoming-cancel'), # ==================== TRANSFER ==================== path('transfers/', TransferListView.as_view(), name='transfer-list'), path('transfers/create/', TransferBulkCreateView.as_view(), name='transfer-create'), # Новая форма массового перемещения path('transfers//', TransferDetailView.as_view(), name='transfer-detail'), # Деталь документа path('transfers//delete/', TransferDeleteView.as_view(), name='transfer-delete'), path('api/product-stock/', GetProductStockView.as_view(), name='api-product-stock'), # API для получения количества товара # ==================== RESERVATION (READ ONLY) ==================== path('reservations/', ReservationListView.as_view(), name='reservation-list'), # ==================== STOCK (READ ONLY) ==================== path('stock/', StockListView.as_view(), name='stock-list'), path('stock//', StockDetailView.as_view(), name='stock-detail'), # ==================== BATCH (READ ONLY) ==================== path('batches/', StockBatchListView.as_view(), name='batch-list'), path('batches//', StockBatchDetailView.as_view(), name='batch-detail'), # ==================== ALLOCATION (READ ONLY) ==================== path('allocations/', SaleBatchAllocationListView.as_view(), name='allocation-list'), # ==================== MOVEMENT (READ ONLY) ==================== path('movements/', StockMovementListView.as_view(), name='movement-list'), # ==================== SHOWCASE ==================== path('showcases/', ShowcaseListView.as_view(), name='showcase-list'), path('showcases/create/', ShowcaseCreateView.as_view(), name='showcase-create'), path('showcases//edit/', ShowcaseUpdateView.as_view(), name='showcase-update'), path('showcases//delete/', ShowcaseDeleteView.as_view(), name='showcase-delete'), path('showcases//set-default/', SetDefaultShowcaseView.as_view(), name='showcase-set-default'), # ==================== TRANSFORMATION ==================== path('transformations/', TransformationListView.as_view(), name='transformation-list'), path('transformations/create/', TransformationCreateView.as_view(), name='transformation-create'), path('transformations//', TransformationDetailView.as_view(), name='transformation-detail'), path('transformations//add-input/', TransformationAddInputView.as_view(), name='transformation-add-input'), path('transformations//add-output/', TransformationAddOutputView.as_view(), name='transformation-add-output'), path('transformations//remove-input//', TransformationRemoveInputView.as_view(), name='transformation-remove-input'), path('transformations//remove-output//', TransformationRemoveOutputView.as_view(), name='transformation-remove-output'), path('transformations//confirm/', TransformationConfirmView.as_view(), name='transformation-confirm'), path('transformations//cancel/', TransformationCancelView.as_view(), name='transformation-cancel'), # ==================== DEBUG (SUPERUSER ONLY) ==================== path('debug/', debug_inventory_page, name='debug_page'), ]