/**
 * 미수금 현황 타입 정의
 */

/**
 * 월별 금액 데이터
 */
export interface MonthlyAmount {
  month1: number;
  month2: number;
  month3: number;
  month4: number;
  month5: number;
  month6: number;
  month7: number;
  month8: number;
  month9: number;
  month10: number;
  month11: number;
  month12: number;
  total: number;
}

/**
 * 구분 타입 (매출, 입금, 어음, 미수금, 메모)
 */
export type CategoryType = 'sales' | 'deposit' | 'bill' | 'receivable' | 'memo';

/**
 * 구분 레이블
 */
export const CATEGORY_LABELS: Record<CategoryType, string> = {
  sales: '매출',
  deposit: '입금',
  bill: '어음',
  receivable: '미수금',
  memo: '메모',
};

/**
 * 구분별 데이터
 */
export interface CategoryData {
  category: CategoryType;
  amounts: MonthlyAmount;
}

/**
 * 거래처별 미수금 현황 데이터
 */
export interface VendorReceivables {
  id: string;
  vendorName: string;
  isOverdue: boolean; // 연체 토글 상태
  overdueMonths: number[]; // 연체 월 (1-12)
  categories: CategoryData[];
}

/**
 * 정렬 옵션
 */
export type SortOption = 'vendorName' | 'totalDesc' | 'totalAsc';

export const SORT_OPTIONS: Array<{ value: SortOption; label: string }> = [
  { value: 'vendorName', label: '거래처명 순' },
  { value: 'totalDesc', label: '금액 높은순' },
  { value: 'totalAsc', label: '금액 낮은순' },
];

/**
 * 월 레이블 (1월~12월)
 */
export const MONTH_LABELS = ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'];

/**
 * 월별 데이터 키
 */
export const MONTH_KEYS: (keyof MonthlyAmount)[] = [
  'month1', 'month2', 'month3', 'month4', 'month5', 'month6',
  'month7', 'month8', 'month9', 'month10', 'month11', 'month12',
];