"""
Inventory API URLs — v1.

مسیرهای REST API ماژول انبار.
"""
from django.urls import path, include
from rest_framework.routers import DefaultRouter

from .views import (
    # Master Data
    ItemTypeViewSet,
    ItemGroupViewSet,
    UnitOfMeasureViewSet,
    ItemViewSet,
    ItemAttributeViewSet,
    ItemUOMViewSet,
    # Warehouse
    WarehouseViewSet,
    StorageLocationViewSet,
    ItemWarehouseViewSet,
    # Stock
    StockStatusViewSet,
    StockLedgerViewSet,
    StockBalanceViewSet,
    StockMovementViewSet,
    # Batch/Serial
    BatchViewSet,
    SerialNumberViewSet,
    # Costing
    CostingMethodViewSet,
    ItemCostingViewSet,
    # Reservation
    StockReservationViewSet,
    StockAllocationViewSet,
    # Physical Inventory
    PhysicalInventoryViewSet,
    PhysicalInventoryLineViewSet,
    CycleCountScheduleViewSet,
    # Quality
    InspectionLotViewSet,
    InspectionResultViewSet,
    QualityActionViewSet,
)

app_name = "inventory"

router = DefaultRouter()

# 1. Master Data
router.register(r"item-types", ItemTypeViewSet, basename="item-type")
router.register(r"item-groups", ItemGroupViewSet, basename="item-group")
router.register(r"uom", UnitOfMeasureViewSet, basename="uom")
router.register(r"items", ItemViewSet, basename="item")
router.register(r"item-attributes", ItemAttributeViewSet, basename="item-attribute")
router.register(r"item-uom", ItemUOMViewSet, basename="item-uom")

# 2. Warehouse & Location
router.register(r"warehouses", WarehouseViewSet, basename="warehouse")
router.register(r"storage-locations", StorageLocationViewSet, basename="storage-location")
router.register(r"item-warehouses", ItemWarehouseViewSet, basename="item-warehouse")

# 3. Stock
router.register(r"stock-statuses", StockStatusViewSet, basename="stock-status")
router.register(r"stock-ledger", StockLedgerViewSet, basename="stock-ledger")
router.register(r"stock-balance", StockBalanceViewSet, basename="stock-balance")
router.register(r"stock-movements", StockMovementViewSet, basename="stock-movement")

# 4. Batch & Serial
router.register(r"batches", BatchViewSet, basename="batch")
router.register(r"serial-numbers", SerialNumberViewSet, basename="serial-number")

# 5. Costing
router.register(r"costing-methods", CostingMethodViewSet, basename="costing-method")
router.register(r"item-costing", ItemCostingViewSet, basename="item-costing")

# 6. Reservation
router.register(r"reservations", StockReservationViewSet, basename="reservation")
router.register(r"allocations", StockAllocationViewSet, basename="allocation")

# 7. Physical Inventory
router.register(r"physical-inventories", PhysicalInventoryViewSet, basename="physical-inventory")
router.register(r"physical-inventory-lines", PhysicalInventoryLineViewSet, basename="physical-inventory-line")
router.register(r"cycle-count-schedules", CycleCountScheduleViewSet, basename="cycle-count-schedule")

# 8. Quality
router.register(r"inspection-lots", InspectionLotViewSet, basename="inspection-lot")
router.register(r"inspection-results", InspectionResultViewSet, basename="inspection-result")
router.register(r"quality-actions", QualityActionViewSet, basename="quality-action")

urlpatterns = [
    path("", include(router.urls)),
]
