import type { DetailModalConfig } from '../types';

/**
 * 접대비 상세 공통 모달 config (et2, et3, et4 공통)
 */
const entertainmentDetailConfig: DetailModalConfig = {
  title: '접대비 상세',
  summaryCards: [
    // 첫 번째 줄: 당해년도
    { label: '당해년도 접대비 총한도', value: 3123000, unit: '원' },
    { label: '당해년도 접대비 잔여한도', value: 6000000, unit: '원' },
    { label: '당해년도 접대비 사용금액', value: 6000000, unit: '원' },
    { label: '당해년도 접대비 사용잔액', value: 0, unit: '원' },
    // 두 번째 줄: 분기별
    { label: '1사분기 접대비 총한도', value: 3123000, unit: '원' },
    { label: '1사분기 접대비 잔여한도', value: 6000000, unit: '원' },
    { label: '1사분기 접대비 사용금액', value: 6000000, unit: '원' },
    { label: '1사분기 접대비 초과금액', value: 6000000, unit: '원' },
  ],
  barChart: {
    title: '월별 접대비 사용 추이',
    data: [
      { name: '1월', value: 3500000 },
      { name: '2월', value: 4200000 },
      { name: '3월', value: 2300000 },
      { name: '4월', value: 3800000 },
      { name: '5월', value: 4500000 },
      { name: '6월', value: 3200000 },
      { name: '7월', value: 2800000 },
    ],
    dataKey: 'value',
    xAxisKey: 'name',
    color: '#60A5FA',
  },
  pieChart: {
    title: '사용자별 접대비 사용 비율',
    data: [
      { name: '홍길동', value: 15000000, percentage: 53, color: '#60A5FA' },
      { name: '김철수', value: 10000000, percentage: 31, color: '#34D399' },
      { name: '이영희', value: 10000000, percentage: 10, color: '#FBBF24' },
      { name: '기타', value: 2000000, percentage: 6, color: '#F87171' },
    ],
  },
  table: {
    title: '월별 접대비 사용 내역',
    columns: [
      { key: 'no', label: 'No.', align: 'center' },
      { key: 'cardName', label: '카드명', align: 'left' },
      { key: 'user', label: '사용자', align: 'center' },
      { key: 'useDate', label: '사용일시', align: 'center', format: 'date' },
      { key: 'transDate', label: '거래일시', align: 'center', format: 'date' },
      { key: 'amount', label: '사용금액', align: 'right', format: 'currency' },
      { key: 'purpose', label: '사용용도', align: 'left' },
    ],
    data: [
      { cardName: '카드명', user: '홍길동', useDate: '2025-12-12 12:12', transDate: '가맹점명', amount: 1000000, purpose: '사용용도' },
      { cardName: '카드명', user: '홍길동', useDate: '2025-12-12 12:12', transDate: '가맹점명', amount: 1000000, purpose: '사용용도' },
      { cardName: '카드명', user: '홍길동', useDate: '2025-12-12 12:12', transDate: '가맹점명', amount: 1000000, purpose: '사용용도' },
      { cardName: '카드명', user: '홍길동', useDate: '2025-10-14 12:12', transDate: '가맹점명', amount: 1000000, purpose: '사용용도' },
      { cardName: '카드명', user: '홍길동', useDate: '2025-12-12 12:12', transDate: '가맹점명', amount: 1000000, purpose: '사용용도' },
    ],
    filters: [
      {
        key: 'user',
        options: [
          { value: 'all', label: '전체' },
          { value: '홍길동', label: '홍길동' },
          { value: '김철수', label: '김철수' },
          { value: '이영희', label: '이영희' },
        ],
        defaultValue: 'all',
      },
      {
        key: 'sortOrder',
        options: [
          { value: 'latest', label: '최신순' },
          { value: 'oldest', label: '등록순' },
          { value: 'amountDesc', label: '금액 높은순' },
          { value: 'amountAsc', label: '금액 낮은순' },
        ],
        defaultValue: 'latest',
      },
    ],
    showTotal: true,
    totalLabel: '합계',
    totalValue: 11000000,
    totalColumnKey: 'amount',
  },
  // 접대비 손금한도 계산 - 기본한도 / 수입금액별 추가한도
  referenceTables: [
    {
      title: '접대비 손금한도 계산 - 기본한도',
      columns: [
        { key: 'type', label: '구분', align: 'left' },
        { key: 'limit', label: '기본한도', align: 'right' },
      ],
      data: [
        { type: '일반법인', limit: '3,600만원 (연 1,200만원)' },
        { type: '중소기업', limit: '5,400만원 (연 3,600만원)' },
      ],
    },
    {
      title: '수입금액별 추가한도',
      columns: [
        { key: 'range', label: '수입금액', align: 'left' },
        { key: 'rate', label: '적용률', align: 'center' },
      ],
      data: [
        { range: '100억원 이하', rate: '0.3%' },
        { range: '100억원 초과 ~ 500억원 이하', rate: '0.2%' },
        { range: '500억원 초과', rate: '0.03%' },
      ],
    },
  ],
  // 접대비 계산
  calculationCards: {
    title: '접대비 계산',
    cards: [
      { label: '기본한도', value: 36000000 },
      { label: '추가한도', value: 91170000, operator: '+' },
      { label: '접대비 손금한도', value: 127170000, operator: '=' },
    ],
  },
  // 접대비 현황 (분기별)
  quarterlyTable: {
    title: '접대비 현황',
    rows: [
      { label: '접대비 한도', q1: 31792500, q2: 31792500, q3: 31792500, q4: 31792500, total: 127170000 },
      { label: '접대비 사용', q1: 10000000, q2: 0, q3: 0, q4: 0, total: 10000000 },
      { label: '접대비 잔여', q1: 21792500, q2: 31792500, q3: 31792500, q4: 31792500, total: 117170000 },
    ],
  },
};

/**
 * 접대비 현황 모달 설정
 * et_sales: 당해 매출 상세
 * et_limit, et_remaining, et_used: 접대비 상세 (공통)
 */
export function getEntertainmentModalConfig(cardId: string): DetailModalConfig | null {
  const configs: Record<string, DetailModalConfig> = {
    et_sales: {
      title: '당해 매출 상세',
      summaryCards: [
        { label: '당해년도 매출', value: 600000000, unit: '원' },
        { label: '전년 대비', value: '-12.5%', isComparison: true, isPositive: false },
        { label: '당월 매출', value: 6000000, unit: '원' },
      ],
      barChart: {
        title: '월별 매출 추이',
        data: [
          { name: '1월', value: 85000000 },
          { name: '2월', value: 92000000 },
          { name: '3월', value: 78000000 },
          { name: '4월', value: 95000000 },
          { name: '5월', value: 88000000 },
          { name: '6월', value: 102000000 },
          { name: '7월', value: 60000000 },
        ],
        dataKey: 'value',
        xAxisKey: 'name',
        color: '#60A5FA',
      },
      horizontalBarChart: {
        title: '당해년도 거래처별 매출',
        data: [
          { name: '(주)세우', value: 120000000 },
          { name: '대한건설', value: 95000000 },
          { name: '삼성테크', value: 78000000 },
          { name: '현대상사', value: 65000000 },
          { name: '기타', value: 42000000 },
        ],
        color: '#60A5FA',
      },
      table: {
        title: '일별 매출 내역',
        columns: [
          { key: 'no', label: 'No.', align: 'center' },
          { key: 'date', label: '매출일', align: 'center', format: 'date' },
          { key: 'vendor', label: '거래처', align: 'left' },
          { key: 'amount', label: '매출금액', align: 'right', format: 'currency' },
          { key: 'type', label: '매출유형', align: 'center', highlightValue: '미설정' },
        ],
        data: [
          { date: '2025-12-12', vendor: '회사명', amount: 11000000, type: '상품 매출' },
          { date: '2025-12-12', vendor: '회사명', amount: 11000000, type: '부품 매출' },
          { date: '2025-12-12', vendor: '회사명', amount: 11000000, type: '공사 매출' },
          { date: '2025-12-12', vendor: '회사명', amount: 11000000, type: '미설정' },
          { date: '2025-12-12', vendor: '회사명', amount: 11000000, type: '미설정' },
          { date: '2025-12-12', vendor: '회사명', amount: 11000000, type: '미설정' },
          { date: '2025-12-12', vendor: '회사명', amount: 11000000, type: '상품 매출' },
        ],
        filters: [
          {
            key: 'type',
            options: [
              { value: 'all', label: '전체' },
              { value: '상품 매출', label: '상품 매출' },
              { value: '부품 매출', label: '부품 매출' },
              { value: '공사 매출', label: '공사 매출' },
              { value: '임대 수익', label: '임대 수익' },
              { value: '기타 매출', label: '기타 매출' },
              { value: '미설정', label: '미설정' },
            ],
            defaultValue: 'all',
          },
          {
            key: 'sortOrder',
            options: [
              { value: 'latest', label: '최신순' },
              { value: 'oldest', label: '등록순' },
              { value: 'amountDesc', label: '금액 높은순' },
              { value: 'amountAsc', label: '금액 낮은순' },
            ],
            defaultValue: 'latest',
          },
        ],
        showTotal: true,
        totalLabel: '합계',
        totalValue: 111000000,
        totalColumnKey: 'amount',
      },
    },
    // et_limit, et_remaining, et_used는 모두 동일한 접대비 상세 모달
    et_limit: entertainmentDetailConfig,
    et_remaining: entertainmentDetailConfig,
    et_used: entertainmentDetailConfig,
  };

  return configs[cardId] || null;
}