import request from '@/config/axios'

// ERP 采购入库 VO
export interface PurchaseInVO {
  id: number // 入库工单编号
  no: string // 采购入库号
  supplierId: number // 供应商编号
  inTime: Date // 入库时间
  totalCount: number // 合计数量
  totalPrice: number // 合计金额，单位：元
  status: number // 状态
  remark: string // 备注
  outCount: number // 采购出库数量
  returnCount: number // 采购退货数量
  isQualified: boolean // 是否合格
  returnType: string | null // 返回方式
  returnRemark: string | undefined // 返回方式备注
  accountId: number // 结算账户编号
  discountPercent: number // 优惠率
  discountPrice: number // 优惠金额
  otherPrice: number // 其他费用
  fileUrl: string // 附件
  orderNo: string // 关联订单号
  items: any[] // 入库产品清单
}

// 返回方式枚举
export const RETURN_TYPE_ENUM = {
  RETURN_BACK: 'return_back',
  DESTROY: 'destroy'
}

// 返回方式选项
export const RETURN_TYPE_OPTIONS = [
  { label: '原路返回', value: RETURN_TYPE_ENUM.RETURN_BACK },
  { label: '就地销毁', value: RETURN_TYPE_ENUM.DESTROY }
]

// 审核信息
export interface AuditFormData {
  id: number // 入库工单编号
  isQualified: boolean // 是否合格
  returnType?: string // 返回方式
  returnRemark?: string // 返回方式备注
  status: number // 审核状态，必须为数字类型
}

// 查询参数类型
export interface PurchaseInPageReqVO extends PageParam {
  no?: string // 入库单号
  supplierId?: number // 供应商编号
  status?: number // 审核状态
  isQualified?: boolean // 是否合格
  inTime?: Date[] // 入库时间范围
  accountId?: number // 结算账户编号
  creator?: string // 创建人
}

// ERP 采购入库 API
export const PurchaseInApi = {
  // 查询采购入库分页
  getPurchaseInPage: async (params: any) => {
    return await request.get({ url: `/erp/purchase-in/page`, params })
  },

  // 查询采购入库详情
  getPurchaseIn: async (id: number) => {
    return await request.get({ url: `/erp/purchase-in/get?id=` + id })
  },

  // 新增采购入库
  createPurchaseIn: async (data: PurchaseInVO) => {
    return await request.post({ url: `/erp/purchase-in/create`, data })
  },

  // 修改采购入库
  updatePurchaseIn: async (data: PurchaseInVO) => {
    return await request.put({ url: `/erp/purchase-in/update`, data })
  },

  // 更新采购入库的审核状态
  updatePurchaseInStatus: async (data: AuditFormData) => {
    return await request.put({
      url: `/erp/purchase-in/update-status`,
      data
    })
  },

  // 删除采购入库
  deletePurchaseIn: async (ids: number[]) => {
    return await request.delete({
      url: `/erp/purchase-in/delete`,
      params: {
        ids: ids.join(',')
      }
    })
  },

  // 导出采购入库 Excel
  exportPurchaseIn: async (params: any) => {
    return await request.download({ url: `/erp/purchase-in/export-excel`, params })
  }
}
