/**
 * Source type: GOODS_RECEIPT, GOODS_ISSUE, BLOCK, UNBLOCK, CORRECTION, SCRAP
 */
export const InventoryLedgerSourceType = {
  "GOODS_RECEIPT": "GOODS_RECEIPT",
  "GOODS_ISSUE": "GOODS_ISSUE",
  "BLOCK": "BLOCK",
  "UNBLOCK": "UNBLOCK",
  "CORRECTION": "CORRECTION",
  "SCRAP": "SCRAP"
} as const;
export type InventoryLedgerSourceType = (typeof InventoryLedgerSourceType)[keyof typeof InventoryLedgerSourceType];

/**
 * Debit/Credit indicator (DR or CR) for accounting integration
 */
export const InventoryLedgerDcIndicator = {
  "DR": "DR",
  "CR": "CR"
} as const;
export type InventoryLedgerDcIndicator = (typeof InventoryLedgerDcIndicator)[keyof typeof InventoryLedgerDcIndicator];

/**
 * Consumption status: ACTIVE or FULLY_CONSUMED
 */
export const LotStatus = {
  "ACTIVE": "ACTIVE",
  "FULLY_CONSUMED": "FULLY_CONSUMED"
} as const;
export type LotStatus = (typeof LotStatus)[keyof typeof LotStatus];

/**
 * Lifecycle status: AVAILABLE, ISSUED, RETURNED, SCRAPPED
 */
export const SerialNumberStatus = {
  "AVAILABLE": "AVAILABLE",
  "ISSUED": "ISSUED",
  "RETURNED": "RETURNED",
  "SCRAPPED": "SCRAPPED"
} as const;
export type SerialNumberStatus = (typeof SerialNumberStatus)[keyof typeof SerialNumberStatus];

/**
 * Adjustment type: CORRECTION, SCRAP, BLOCK, UNBLOCK
 */
export const StockAdjustmentAdjustmentType = {
  "CORRECTION": "CORRECTION",
  "SCRAP": "SCRAP",
  "BLOCK": "BLOCK",
  "UNBLOCK": "UNBLOCK"
} as const;
export type StockAdjustmentAdjustmentType = (typeof StockAdjustmentAdjustmentType)[keyof typeof StockAdjustmentAdjustmentType];

/**
 * Lifecycle status: DRAFT, SUBMITTED, REJECTED, CONFIRMED, CANCELLED
 */
export const StockAdjustmentStatus = {
  "DRAFT": "DRAFT",
  "SUBMITTED": "SUBMITTED",
  "CANCELLED": "CANCELLED",
  "CONFIRMED": "CONFIRMED",
  "REJECTED": "REJECTED"
} as const;
export type StockAdjustmentStatus = (typeof StockAdjustmentStatus)[keyof typeof StockAdjustmentStatus];

/**
 * Direction of stock adjustment (required for CORRECTION): INCREASE or DECREASE
 */
export const StockAdjustmentLineAdjustmentDirection = {
  "INCREASE": "INCREASE",
  "DECREASE": "DECREASE"
} as const;
export type StockAdjustmentLineAdjustmentDirection = (typeof StockAdjustmentLineAdjustmentDirection)[keyof typeof StockAdjustmentLineAdjustmentDirection];

/**
 * Source stock category (only used for SCRAP): AVAILABLE (default) or BLOCKED for scrapping inspection-failed stock
 */
export const StockAdjustmentLineFromStockCategory = {
  "AVAILABLE": "AVAILABLE",
  "BLOCKED": "BLOCKED"
} as const;
export type StockAdjustmentLineFromStockCategory = (typeof StockAdjustmentLineFromStockCategory)[keyof typeof StockAdjustmentLineFromStockCategory];

/**
 * Lifecycle status
 */
export const StorageLocationStatus = {
  "ACTIVE": "ACTIVE",
  "INACTIVE": "INACTIVE"
} as const;
export type StorageLocationStatus = (typeof StorageLocationStatus)[keyof typeof StorageLocationStatus];

/**
 * Costing method: FIFO, AVCO, or STANDARD_COST
 */
export const ValuationPolicyCostingMethod = {
  "FIFO": "FIFO",
  "AVCO": "AVCO",
  "STANDARD_COST": "STANDARD_COST"
} as const;
export type ValuationPolicyCostingMethod = (typeof ValuationPolicyCostingMethod)[keyof typeof ValuationPolicyCostingMethod];
