/**
 * 发票抬头表
 */
export interface ShopInvoiceTitle {
  /** 主键ID */
  id?: number;
  /** 用户ID */
  userId?: number;
  /** 抬头类型: personal-个人, company-企业 */
  type?: 'personal' | 'company';
  /** 发票抬头名称 */
  name?: string;
  /** 税号（企业必填） */
  taxNumber?: string;
  /** 注册地址 */
  address?: string;
  /** 注册电话 */
  phone?: string;
  /** 开户银行 */
  bankName?: string;
  /** 银行账号 */
  bankAccount?: string;
  /** 接收邮箱 */
  email?: string;
  /** 是否默认: 0-否, 1-是 */
  isDefault?: number;
  /** 商城ID */
  tenantId?: number;
  /** 创建时间 */
  createTime?: string;
  /** 修改时间 */
  updateTime?: string;
}

/**
 * 发票抬头查询参数
 */
export interface ShopInvoiceTitleParam {
  /** 主键ID */
  id?: number;
  /** 用户ID */
  userId?: number;
  /** 抬头类型 */
  type?: string;
  /** 是否默认 */
  isDefault?: number;
  /** 第几页 */
  page?: number;
  /** 每页多少条 */
  limit?: number;
  /** 排序字段 */
  sort?: string;
  /** 排序方式 */
  order?: string;
}

/**
 * 发票申请记录
 */
export interface ShopInvoiceRecord {
  /** 主键ID */
  id?: number;
  /** 用户ID */
  userId?: number;
  /** 用户昵称 */
  userNickName?: string;
  /** 订单ID */
  orderId?: number;
  /** 订单编号 */
  orderNo?: string;
  /** 发票抬头ID */
  titleId?: number;
  /** 发票类型: normal-普通发票, vat-增值税发票 */
  invoiceType?: 'normal' | 'vat';
  /** 发票抬头 */
  titleName?: string;
  /** 税号 */
  taxNumber?: string;
  /** 发票金额 */
  amount?: number;
  /** 发票状态: 0-待处理, 1-开票中, 2-已开票, 3-开票失败 */
  status?: number;
  /** 发票流水号 */
  invoiceNo?: string;
  /** 发票URL */
  invoiceUrl?: string;
  /** 申请时间 */
  applyTime?: string;
  /** 开票时间 */
  invoiceTime?: string;
  /** 商城ID */
  tenantId?: number;
  /** 创建时间 */
  createTime?: string;
  /** 修改时间 */
  updateTime?: string;
}

/**
 * 发票申请参数
 */
export interface ShopInvoiceRecordParam {
  /** 主键ID */
  id?: number;
  /** 用户ID */
  userId?: number;
  /** 订单ID */
  orderId?: number;
  /** 发票抬头ID */
  titleId?: number;
  /** 发票类型 */
  invoiceType?: string;
  /** 发票状态 */
  status?: number;
  /** 第几页 */
  page?: number;
  /** 每页多少条 */
  limit?: number;
  /** 排序字段 */
  sort?: string;
  /** 排序方式 */
  order?: string;
  /** 起始时间 */
  createTimeStart?: string;
  /** 结束时间 */
  createTimeEnd?: string;
}

/**
 * 发票申请请求
 */
export interface InvoiceApplyRequest {
  /** 订单ID */
  orderId: number;
  /** 发票抬头ID */
  titleId: number;
  /** 发票类型 */
  invoiceType?: 'normal' | 'vat';
  /** 接收邮箱（电子发票） */
  email?: string;
}

/**
 * 发票状态枚举
 */
export enum InvoiceStatusEnum {
  /** 待处理 */
  PENDING = 0,
  /** 开票中 */
  PROCESSING = 1,
  /** 已开票 */
  COMPLETED = 2,
  /** 开票失败 */
  FAILED = 3,
}
