// 거래등급
export type TradeGrade = 'A등급' | 'B등급' | 'C등급' | 'D등급';

// 단가표 상태
export type PricingTableStatus = '사용' | '미사용';

// 거래등급별 판매단가 행
export interface GradePricing {
  id: string;
  grade: TradeGrade;
  marginRate: number; // 마진율 (%, 소수점 첫째자리)
  sellingPrice: number; // 판매단가 (자동계산)
  note: string; // 비고
}

// 단가표 엔티티
export interface PricingTable {
  id: string;
  pricingCode: string; // 단가번호
  itemCode: string; // 품목코드
  itemType: string; // 품목유형
  itemName: string; // 품목명
  specification: string; // 규격
  unit: string; // 단위
  purchasePrice: number; // 매입단가
  processingCost: number; // 가공비
  status: PricingTableStatus; // 상태
  author: string; // 작성자
  changedDate: string; // 변경일
  gradePricings: GradePricing[]; // 거래등급별 판매단가
}

// 폼 데이터 (등록/수정)
export interface PricingTableFormData {
  itemCode: string;
  itemType: string;
  itemName: string;
  specification: string;
  unit: string;
  purchasePrice: number;
  processingCost: number;
  status: PricingTableStatus;
  gradePricings: GradePricing[];
}

/**
 * 판매단가 계산 유틸리티
 * 매입단가 × (1 + 마진율/100) + 가공비 → 1천원 이하 절사
 */
export function calculateSellingPrice(
  purchasePrice: number,
  marginRate: number,
  processingCost: number
): number {
  const raw = purchasePrice * (1 + marginRate / 100) + processingCost;
  return Math.floor(raw / 1000) * 1000;
}
