/**
 * 입고관리 타입 정의
 */

// 입고 상태
export type ReceivingStatus =
  | 'order_completed'    // 발주완료
  | 'shipping'           // 배송중
  | 'inspection_pending' // 검사대기
  | 'receiving_pending'  // 입고대기
  | 'completed';         // 입고완료

// 상태 라벨
export const RECEIVING_STATUS_LABELS: Record<ReceivingStatus, string> = {
  order_completed: '발주완료',
  shipping: '배송중',
  inspection_pending: '검사대기',
  receiving_pending: '입고대기',
  completed: '입고완료',
};

// 상태 스타일
export const RECEIVING_STATUS_STYLES: Record<ReceivingStatus, string> = {
  order_completed: 'bg-gray-100 text-gray-800',
  shipping: 'bg-blue-100 text-blue-800',
  inspection_pending: 'bg-orange-100 text-orange-800',
  receiving_pending: 'bg-yellow-100 text-yellow-800',
  completed: 'bg-green-100 text-green-800',
};

// 입고 목록 아이템
export interface ReceivingItem {
  id: string;
  orderNo: string;          // 발주번호
  itemCode: string;         // 품목코드
  itemName: string;         // 품목명
  supplier: string;         // 공급업체
  orderQty: number;         // 발주수량
  orderUnit: string;        // 발주단위
  receivingQty?: number;    // 입고수량
  lotNo?: string;           // LOT번호
  status: ReceivingStatus;  // 상태
}

// 입고 상세 정보
export interface ReceivingDetail {
  id: string;
  orderNo: string;          // 발주번호
  orderDate?: string;       // 발주일자
  supplier: string;         // 공급업체
  itemCode: string;         // 품목코드
  itemName: string;         // 품목명
  specification?: string;   // 규격
  orderQty: number;         // 발주수량
  orderUnit: string;        // 발주단위
  dueDate?: string;         // 납기일
  status: ReceivingStatus;
  // 입고 정보
  receivingDate?: string;   // 입고일자
  receivingQty?: number;    // 입고수량
  receivingLot?: string;    // 입고LOT
  supplierLot?: string;     // 공급업체LOT
  receivingLocation?: string; // 입고위치
  receivingManager?: string;  // 입고담당
}

// 검사 대상 아이템
export interface InspectionTarget {
  id: string;
  orderNo: string;
  supplier: string;
  qty: string;
}

// 검사 항목
export interface InspectionCheckItem {
  id: string;
  name: string;           // 검사항목
  specification: string;  // 규격
  method: string;         // 검사방법
  judgment: '적' | '부적' | '';  // 판정
  remark?: string;        // 비고
}

// 검사 등록 폼 데이터
export interface InspectionFormData {
  targetId: string;       // 검사 대상 ID
  inspectionDate: string; // 검사일
  inspector: string;      // 검사자
  lotNo: string;          // LOT번호
  items: InspectionCheckItem[];
  opinion?: string;       // 종합 의견
}

// 입고처리 폼 데이터
export interface ReceivingProcessFormData {
  receivingLot: string;     // 입고LOT *
  supplierLot?: string;     // 공급업체LOT
  receivingQty: number;     // 입고수량 *
  receivingLocation: string; // 입고위치 *
  remark?: string;          // 비고
}

// 통계 데이터
export interface ReceivingStats {
  receivingPendingCount: number;  // 입고대기
  shippingCount: number;          // 배송중
  inspectionPendingCount: number; // 검사대기
  todayReceivingCount: number;    // 금일입고
}

// 필터 탭
export interface FilterTab {
  key: 'all' | 'receiving_pending' | 'completed';
  label: string;
  count: number;
}