import request from '@/config/axios'

// ERP 销售换货 VO
export interface SaleExchangeVO {
  id: number // 换货编号
  no: string // 换货单号
  exchangeTime: Date // 换货时间
  outId: number // 关联出库单编号
  outNo: string // 关联出库单号
  customerId: number // 客户编号
  customerName: string // 客户名称
  saleUserId: number // 销售人员编号
  saleUserName: string // 销售人员名称
  accountId: number // 结算账户编号
  totalOutCount: number // 换出商品总数
  totalInCount: number // 换入商品总数
  totalPrice: number // 差价金额，单位：元
  otherPrice: number // 其它费用，单位：元
  status: number // 状态
  remark: string // 备注
  fileUrl: string // 附件地址
  outItems: SaleExchangeOutItemVO[] // 换出商品明细
  inItems: SaleExchangeInItemVO[] // 换入商品明细
}

// ERP 销售换货换出商品明细 VO
export interface SaleExchangeOutItemVO {
  id: number // 明细编号
  exchangeId: number // 换货编号
  productId: number // 产品编号
  productName: string // 产品名称
  productBarCode: string // 产品条码
  productUnitId: number // 产品单位编号
  productUnitName: string // 产品单位名称
  warehouseId: number // 仓库编号
  warehouseName: string // 仓库名称
  count: number // 换出数量
  productPrice: number // 产品单价，单位：元
  totalPrice: number // 合计金额，单位：元
}

// ERP 销售换货换入商品明细 VO
export interface SaleExchangeInItemVO {
  id: number // 明细编号
  exchangeId: number // 换货编号
  productId: number // 产品编号
  productName: string // 产品名称
  productBarCode: string // 产品条码
  productUnitId: number // 产品单位编号
  productUnitName: string // 产品单位名称
  warehouseId: number // 仓库编号
  warehouseName: string // 仓库名称
  count: number // 换入数量
  productPrice: number // 产品单价，单位：元
  totalPrice: number // 合计金额，单位：元
}

// 查询销售换货分页
export const getSaleExchangePage = async (params: any) => {
  return await request.get({ url: `/erp/sale-exchange/page`, params })
}

// 查询销售换货详情
export const getSaleExchange = async (id: number) => {
  return await request.get({ url: `/erp/sale-exchange/get?id=` + id })
}

// 新增销售换货
export const createSaleExchange = async (data: SaleExchangeVO) => {
  return await request.post({ url: `/erp/sale-exchange/create`, data })
}

// 修改销售换货
export const updateSaleExchange = async (data: SaleExchangeVO) => {
  return await request.put({ url: `/erp/sale-exchange/update`, data })
}

// 更新销售换货的状态
export const updateSaleExchangeStatus = async (id: number, status: number) => {
  return await request.put({
    url: `/erp/sale-exchange/update-status`,
    params: {
      id,
      status
    }
  })
}

// 删除销售换货
export const deleteSaleExchange = async (ids: number[]) => {
  return await request.delete({
    url: `/erp/sale-exchange/delete`,
    params: {
      ids: ids.join(',')
    }
  })
}

// 导出销售换货 Excel
export const exportSaleExchange = async (params: any) => {
  return await request.download({ url: `/erp/sale-exchange/export-excel`, params })
}
