{
  "name": "inventory",
  "version": "1.0.0",
  "displayName": "مدیریت انبار و موجودی",
  "displayName_en": "Inventory Management",
  "description": "سیستم جامع مدیریت انبار، موجودی، بچ و سریال، هزینه‌یابی، رزرو، شمارش فیزیکی و کنترل کیفی",

  "dependencies": {
    "platform": ">=1.0.0",
    "modules": []
  },

  "provides": {
    "events": [
      "inventory.item.created",
      "inventory.item.updated",
      "inventory.item.deactivated",
      "inventory.warehouse.created",
      "inventory.warehouse.updated",
      "inventory.stock.received",
      "inventory.stock.issued",
      "inventory.stock.transferred",
      "inventory.stock.adjusted",
      "inventory.stock.status_changed",
      "inventory.batch.created",
      "inventory.batch.expired",
      "inventory.serial.created",
      "inventory.serial.status_changed",
      "inventory.reservation.created",
      "inventory.reservation.released",
      "inventory.reservation.expired",
      "inventory.allocation.created",
      "inventory.allocation.picked",
      "inventory.physical_inventory.completed",
      "inventory.physical_inventory.variance_found",
      "inventory.inspection.completed",
      "inventory.inspection.decision_made",
      "inventory.costing.revalued",
      "inventory.financial_posting.created"
    ],
    "commands": [
      "create_item",
      "update_item",
      "receive_goods",
      "issue_goods",
      "transfer_stock",
      "adjust_stock",
      "create_reservation",
      "release_reservation",
      "start_physical_inventory",
      "post_count_result",
      "create_inspection",
      "make_quality_decision"
    ],
    "queries": [
      "get_item",
      "get_stock_balance",
      "get_stock_by_warehouse",
      "get_stock_movements",
      "get_batch_info",
      "get_serial_info",
      "get_atp",
      "get_stock_valuation",
      "get_stock_aging"
    ]
  },

  "consumes": {
    "events": [
      "platform.user.created",
      "platform.tenant.activated",
      "platform.org_unit.created",
      "hrm.employee.hired",
      "hrm.employee.terminated"
    ],
    "queries": [
      "get_org_unit",
      "get_user",
      "get_employee"
    ]
  },

  "ui": {
    "type": "schema-driven",
    "navigation": true,
    "standalone_frontend": false
  },

  "api": {
    "prefix": "/api/v1/inventory",
    "versions": ["v1"]
  },

  "database": {
    "prefix": "inv_",
    "isolated": true
  },

  "microservice_ready": true,

  "submodules": [
    {
      "name": "master_data",
      "displayName": "اطلاعات پایه",
      "entities": ["Item", "ItemType", "ItemGroup", "ItemAttribute", "UnitOfMeasure", "ItemUOM"]
    },
    {
      "name": "warehouse",
      "displayName": "انبارداری",
      "entities": ["Warehouse", "StorageLocation", "ItemWarehouse"]
    },
    {
      "name": "stock",
      "displayName": "موجودی",
      "entities": ["StockLedgerEntry", "StockBalance", "StockStatus"]
    },
    {
      "name": "batch_serial",
      "displayName": "بچ و سریال",
      "entities": ["Batch", "SerialNumber", "SerialNumberHistory"]
    },
    {
      "name": "costing",
      "displayName": "هزینه‌یابی",
      "entities": ["CostingMethod", "ItemCosting", "CostLayer", "FinancialPosting"]
    },
    {
      "name": "reservation",
      "displayName": "رزرو و تخصیص",
      "entities": ["StockReservation", "StockAllocation"]
    },
    {
      "name": "physical_inventory",
      "displayName": "شمارش فیزیکی",
      "entities": ["PhysicalInventory", "PhysicalInventoryLine", "CycleCountSchedule"]
    },
    {
      "name": "quality",
      "displayName": "کنترل کیفی",
      "entities": ["InspectionLot", "InspectionResult", "QualityAction"]
    },
    {
      "name": "reporting",
      "displayName": "گزارش‌ها",
      "entities": ["StockMovementSummary", "StockAgingBucket"]
    }
  ]
}
