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

export namespace CrmSaleTraceApi {
  /** 销售追溯信息 */
  export interface SaleTrace {
    businessId?: number;
    businessName?: string;
    businessPrice?: number;
    businessCreateTime?: Date;
    customerId?: number;
    customerName?: string;
    contractId?: number;
    contractName?: string;
    contractNo?: string;
    contractPrice?: number;
    contractCreateTime?: Date;
    contractStatus?: number;
    orderId?: number;
    orderNo?: string;
    orderPrice?: number;
    orderCreateTime?: Date;
    receivablePrice?: number;
    receivableItems?: ReceivableItem[];
  }

  /** 回款明细 */
  export interface ReceivableItem {
    receivableId: number;
    receivableNo: string;
    price: number;
    createTime?: Date;
  }
}

/** 根据商机编号获取销售流程追溯信息 */
export function getTraceByBusinessId(businessId: number) {
  return requestClient.get<CrmSaleTraceApi.SaleTrace>(
    '/crm/sale-trace/get-by-business-id',
    { params: { businessId } },
  );
}

/** 根据合同编号获取销售流程追溯信息 */
export function getTraceByContractId(contractId: number) {
  return requestClient.get<CrmSaleTraceApi.SaleTrace>(
    '/crm/sale-trace/get-by-contract-id',
    { params: { contractId } },
  );
}

/** 根据客户编号获取销售流程追溯列表 */
export function getTraceListByCustomerId(customerId: number) {
  return requestClient.get<CrmSaleTraceApi.SaleTrace[]>(
    '/crm/sale-trace/get-list-by-customer-id',
    { params: { customerId } },
  );
}