import type {
  FinanceInvoiceSettingFormState,
  FinanceInvoiceTabKey,
  OptionItem,
} from '../../types';

/**
 * 文件职责：发票管理页面常量定义。
 */
import type { FinanceInvoiceStatsDto } from '#/api/finance';

import { getMonthFirstDateString, getTodayDateString } from './helpers';

/** 发票管理页面查看权限。 */
export const FINANCE_INVOICE_VIEW_PERMISSION = 'tenant:finance:invoice:view';

/** 发票开票权限。 */
export const FINANCE_INVOICE_ISSUE_PERMISSION = 'tenant:finance:invoice:issue';

/** 发票作废权限。 */
export const FINANCE_INVOICE_VOID_PERMISSION = 'tenant:finance:invoice:void';

/** 发票设置权限。 */
export const FINANCE_INVOICE_SETTINGS_PERMISSION =
  'tenant:finance:invoice:settings';

/** 分段选项。 */
export const INVOICE_TAB_OPTIONS: Array<{
  label: string;
  value: FinanceInvoiceTabKey;
}> = [
  { label: '开票记录', value: 'records' },
  { label: '发票设置', value: 'settings' },
];

/** 发票状态筛选项。 */
export const INVOICE_STATUS_OPTIONS: OptionItem[] = [
  { label: '全部状态', value: 'all' },
  { label: '待开票', value: 'pending' },
  { label: '已开票', value: 'issued' },
  { label: '已作废', value: 'voided' },
];

/** 发票类型筛选项。 */
export const INVOICE_TYPE_OPTIONS: OptionItem[] = [
  { label: '全部类型', value: 'all' },
  { label: '普通发票', value: 'normal' },
  { label: '专用发票', value: 'special' },
];

/** 默认统计数据。 */
export const DEFAULT_INVOICE_STATS: FinanceInvoiceStatsDto = {
  currentMonthIssuedAmount: 0,
  currentMonthIssuedCount: 0,
  pendingCount: 0,
  voidedCount: 0,
};

/** 创建默认筛选条件。 */
export function createDefaultFilters() {
  return {
    startDate: getMonthFirstDateString(),
    endDate: getTodayDateString(),
    status: 'all',
    invoiceType: 'all',
    keyword: '',
  };
}

/** 创建默认分页。 */
export function createDefaultPagination() {
  return {
    page: 1,
    pageSize: 10,
    totalCount: 0,
  };
}

/** 创建默认设置表单。 */
export function createDefaultSettingsForm(): FinanceInvoiceSettingFormState {
  return {
    companyName: '',
    taxpayerNumber: '',
    registeredAddress: '',
    registeredPhone: '',
    bankName: '',
    bankAccount: '',
    enableElectronicNormalInvoice: true,
    enableElectronicSpecialInvoice: false,
    enableAutoIssue: false,
    autoIssueMaxAmount: 10_000,
  };
}

/** 创建默认开票表单。 */
export function createDefaultIssueForm() {
  return {
    contactEmail: '',
    issueRemark: '',
  };
}

/** 创建默认作废表单。 */
export function createDefaultVoidForm() {
  return {
    voidReason: '',
  };
}
