// ===== 입금 유형 =====
export type DepositType =
  | 'unset'         // 미설정
  | 'salesRevenue'  // 매출대금
  | 'advance'       // 선수금
  | 'suspense'      // 가수금
  | 'rentalIncome'  // 임대수익
  | 'interestIncome'// 이자수익
  | 'depositRefund' // 보증금 반환
  | 'borrowings'    // 차입금
  | 'capital'       // 자본금
  | 'vatRefund'     // 부가세 환급
  | 'other';        // 기타

export const DEPOSIT_TYPE_LABELS: Record<DepositType, string> = {
  unset: '미설정',
  salesRevenue: '매출대금',
  advance: '선수금',
  suspense: '가수금',
  rentalIncome: '임대수익',
  interestIncome: '이자수익',
  depositRefund: '보증금 반환',
  borrowings: '차입금',
  capital: '자본금',
  vatRefund: '부가세 환급',
  other: '기타',
};

export const DEPOSIT_TYPE_OPTIONS = [
  { value: 'unset', label: '미설정' },
  { value: 'salesRevenue', label: '매출대금' },
  { value: 'advance', label: '선수금' },
  { value: 'suspense', label: '가수금' },
  { value: 'rentalIncome', label: '임대수익' },
  { value: 'interestIncome', label: '이자수익' },
  { value: 'depositRefund', label: '보증금 반환' },
  { value: 'borrowings', label: '차입금' },
  { value: 'capital', label: '자본금' },
  { value: 'vatRefund', label: '부가세 환급' },
  { value: 'other', label: '기타' },
];

// 입금유형 필터 옵션 (전체, 매출대금, 선수금, 가수금, 임대수익, 이자수익, 보증금 반환, 차입금, 자본금, 부가세 환급, 기타, 미설정)
export const DEPOSIT_TYPE_FILTER_OPTIONS = [
  { value: 'all', label: '전체' },
  { value: 'salesRevenue', label: '매출대금' },
  { value: 'advance', label: '선수금' },
  { value: 'suspense', label: '가수금' },
  { value: 'rentalIncome', label: '임대수익' },
  { value: 'interestIncome', label: '이자수익' },
  { value: 'depositRefund', label: '보증금 반환' },
  { value: 'borrowings', label: '차입금' },
  { value: 'capital', label: '자본금' },
  { value: 'vatRefund', label: '부가세 환급' },
  { value: 'other', label: '기타' },
  { value: 'unset', label: '미설정' },
];

// 상세 페이지 입금 유형 옵션 (전체 제외)
export const DEPOSIT_TYPE_SELECTOR_OPTIONS = DEPOSIT_TYPE_OPTIONS;

// ===== 입금 상태 =====
export type DepositStatus =
  | 'inputWaiting'  // 입력대기
  | 'requesting'    // 신청중
  | 'rejected'      // 반려
  | 'pending'       // 보류
  | 'incomplete'    // 미완
  | 'error'         // 오류
  | 'confirmed';    // 확정완료

// 입금 상태 설정 (status-config 기반)
import { DEPOSIT_STATUS_CONFIG } from '@/lib/utils/status-config';

export const DEPOSIT_STATUS_LABELS = DEPOSIT_STATUS_CONFIG.STATUS_LABELS;
export const DEPOSIT_STATUS_COLORS = DEPOSIT_STATUS_CONFIG.STATUS_STYLES;

// ===== 상태 탭 옵션 =====
export const STATUS_TAB_OPTIONS: { value: DepositStatus | 'all'; label: string }[] = [
  { value: 'inputWaiting', label: '입력대기' },
  { value: 'requesting', label: '신청중' },
  { value: 'rejected', label: '반려' },
  { value: 'pending', label: '보류' },
  { value: 'incomplete', label: '미완' },
  { value: 'error', label: '오류' },
];

// ===== 정렬 옵션 =====
export type SortOption = 'latest' | 'oldest' | 'amountHigh' | 'amountLow';

export const SORT_OPTIONS: { value: SortOption; label: string }[] = [
  { value: 'latest', label: '최신순' },
  { value: 'oldest', label: '등록순' },
  { value: 'amountHigh', label: '금액 높은순' },
  { value: 'amountLow', label: '금액 낮은순' },
];

// ===== 입금 레코드 =====
export interface DepositRecord {
  id: string;
  depositDate: string;        // 입금일
  depositAmount: number;      // 입금액
  bankAccountId?: string;     // 입금계좌 ID
  accountName: string;        // 입금계좌명
  depositorName: string;      // 입금자명
  note: string;               // 적요
  depositType: DepositType;   // 입금유형
  vendorId: string;           // 거래처 ID
  vendorName: string;         // 거래처명
  status: DepositStatus;      // 상태
  createdAt: string;
  updatedAt: string;
}

// ===== 거래처 타입 =====
export interface Vendor {
  id: string;
  name: string;
  email?: string;
  phone?: string;
}