import type { PageParam, PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace ErpPurchaseRequestApi {
  /** 采购申请信息 */
  export interface PurchaseRequest {
    id?: number; // 编号
    no?: string; // 申请编号
    status?: number; // 状态：0未提交 10审批中 20审核通过 30审核不通过 40已取消
    requestUserId?: number; // 申请人编号
    requestUserName?: string; // 申请人名称
    requestDeptId?: number; // 申请部门编号
    requestDeptName?: string; // 申请部门名称
    requestTime: string; // 申请时间
    requestReason?: string; // 申请理由
    supplierId?: number; // 供应商编号
    supplierName?: string; // 供应商名称
    discountPercent?: number; // 优惠率
    fileUrl?: string; // 附件地址
    remark?: string; // 备注
    totalCount?: number; // 总数量
    totalPrice?: number; // 总金额
    productNames?: string; // 产品名称列表
    orderId?: number; // 生成的采购订单编号
    orderNo?: string; // 生成的采购订单号
    items?: PurchaseRequestItem[]; // 申请明细
    createTime?: string; // 创建时间
  }

  /** 采购申请明细 */
  export interface PurchaseRequestItem {
    id?: number; // 编号
    productId: number; // 产品编号
    productName?: string; // 产品名称
    productUnitId?: number; // 产品单位编号
    productUnitName?: string; // 产品单位名称
    productBarCode?: string; // 产品条码
    productPrice?: number; // 产品单价（参考价）
    count: number; // 数量
    taxPercent?: number; // 税率
    demandTime?: string; // 需求日期
    remark?: string; // 备注
  }
}

/** 创建采购申请 */
export function createPurchaseRequest(data: ErpPurchaseRequestApi.PurchaseRequest) {
  return requestClient.post('/erp/purchase-request/create', data);
}

/** 更新采购申请 */
export function updatePurchaseRequest(data: ErpPurchaseRequestApi.PurchaseRequest) {
  return requestClient.put('/erp/purchase-request/update', data);
}

/** 提交采购申请审批 */
export function submitPurchaseRequest(id: number, processDefinitionKey: string) {
  return requestClient.put('/erp/purchase-request/submit', null, { params: { id, processDefinitionKey } });
}

/** 生成采购订单 */
export function generatePurchaseOrder(id: number, supplierId: number) {
  return requestClient.post<number>('/erp/purchase-request/generate-order', null, { params: { id, supplierId } });
}

/** 删除采购申请 */
export function deletePurchaseRequest(ids: number[]) {
  return requestClient.delete('/erp/purchase-request/delete', { params: { ids: ids.join(',') } });
}

/** 获取采购申请详情 */
export function getPurchaseRequest(id: number) {
  return requestClient.get<ErpPurchaseRequestApi.PurchaseRequest>(
    `/erp/purchase-request/get?id=${id}`,
  );
}

/** 获取采购申请分页 */
export function getPurchaseRequestPage(params: PageParam) {
  return requestClient.get<PageResult<ErpPurchaseRequestApi.PurchaseRequest>>(
    '/erp/purchase-request/page',
    { params },
  );
}

/** 导出采购申请 Excel */
export function exportPurchaseRequest(params: any) {
  return requestClient.download('/erp/purchase-request/export-excel', { params });
}

/** 获取审批流程列表 */
export function getApproveProcessList(id: number) {
  return requestClient.get(`/erp/purchase-request/approve-process-list`, { params: { id } });
}
