POST高危 按报价生成结算单
POST 按单张报价生成费用结算单,明细与金额由服务端从报价读取。要求报价状态为「已完成」且未生成过结算单、工单可写。实际量可全部映射时直接落「客户已确认」并在财务生成收入确认单与应收单;否则停在草稿待人工核定。query 参数:quotationId(必填,报价单ID);不需要 body。会直接产生应收,调用前请与用户确认。
| 接口编码 | 所需范围 | 后端接口 |
|---|---|---|
sales.service-settlement.generate-from-quotation | sales:write | POST /v1/service-orders/settlement/generate-from-quotation(comap-sales) |
⚠️ 高危接口:删除或状态变更类操作,MCP 调用须先向用户复述并获同意后携 confirm: true。
必填字段
| 字段 | 依据 |
|---|---|
quotationId | 参数说明、接口规格 |
条件必填(如「某状态时必填」)不在此表,以上方参数说明为准。 判定规则见必填字段的判定。
请求参数(query)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
quotationId | integer(int64) | 是 | — |
「必填」仅反映接口规格声明的部分。服务内还有未体现在规格里的校验, 标「—」不等于可以不传;租户在主站配置的字段必填不约束本接口。 详见必填字段的判定与字段清单与自定义字段。
请求示例
curl -X POST https://open.risemap.cn/v1/api/invoke \
-H "Authorization: Bearer <访问令牌>" \
-H "Content-Type: application/json" \
-d '{
"apiCode": "sales.service-settlement.generate-from-quotation",
"query": {
"quotationId": "1961000000000000001"
}
}'
响应 data 字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | integer(int64) | — | 结算单ID |
settlementNo | string | — | 结算单号 |
orderId | integer(int64) | — | 所属工单ID |
orderNo | string | — | 所属工单编号 |
serviceCycleNo | integer(int32) | — | 所属服务周期号 |
customerName | string | — | 客户名称(快照) |
contactPerson | string | — | 联系人 |
contactPhone | string | — | 联系电话 |
serviceAddress | string | — | 服务地址 |
subtotal | number | — | 小计 = 明细行金额之和 |
warrantyCovered | integer(int32) | — | 质保内全免:0否 1是 |
discountPct | number | — | 折扣比例 % |
discountAmount | number | — | 折扣金额 |
totalAmount | number | — | 合计 = 小计 - 折扣金额;warrantyCovered=1 时为 0 |
status | string | — | 状态:草稿/待审批/已审批/客户已确认/已驳回 |
flowInstanceCode | string | — | 审批流程实例编码 |
submittedAt | string(date-time) | — | 提交时间 |
approver | string | — | 审批人 |
approvedAt | string(date-time) | — | 审批时间 |
rejectReason | string | — | 驳回原因 |
sentAt | string(date-time) | — | 发送给客户时间 |
customerConfirmedAt | string(date-time) | — | 客户确认时间 |
customerConfirmChannel | string | — | 客户确认渠道 |
customerSignatureId | string | — | 客户签名 fileId |
customerObjectionReason | string | — | 客户异议原因 |
customerObjectionAt | string(date-time) | — | 客户提出异议时间 |
confirmedBy | string | — | 确认操作人 |
collectionIds | integer(int64)[] | — | 关联回款单ID列表(comap-finance) |
sourceQuotationIds | integer(int64)[] | — | 来源报价单ID列表 |
sourceQuotationNos | string[] | — | 来源报价单号,与 sourceQuotationIds 按序对应 |
revenueRecognitionId | integer(int64) | — | 收入确认单ID(comap-finance) |
receivableId | integer(int64) | — | 应收单ID(comap-finance) |
invoiceId | integer(int64) | — | 发票ID |
invoiceNo | string | — | 发票号 |
note | string | — | 备注 |
createdBy | string | — | 创建人 |
createTime | string(date-time) | — | 创建时间 |
updateTime | string(date-time) | — | 更新时间 |
lineCount | integer(int32) | — | 明细行数 |
collectionProgress7 | ServiceSettlementCollectionProgressVO | — | 结算单收款进度 |
revenueRecognitionNo | string | — | 收入确认单号,仅详情返回 |
receivableNo | string | — | 应收单号,仅详情返回 |
lines19 | ServiceSettlementLineVO[] | — | 明细行,按 sortOrder 升序 |
错误处理
响应统一信封 { code, message, data },code == 200 为成功。以下是本接口可能返回的开放平台层错误:
| 错误码 | 说明 | 可重试 |
|---|---|---|
| 92101 | 访问凭证无效 | 否 |
| 92201 | 接口未登记或已停用 | 否 |
| 92202 | 超出凭证授权范围——本接口需 sales:write | 否 |
| 92204 | 绑定员工无此接口的功能权限 | 否 |
| 92203 | 上游服务调用失败 | 先查询处理结果,禁止盲目重试 |
| 92301 | 请求过于频繁 | 是 |
| 92205 | 写操作处理超时,结果未知(下游可能仍在执行) | 否,先查询确认结果 |
| 92302 | 有参数相同的写请求正在处理中 | 等待并确认前一次结果,勿重复提交 |
除此之外,comap-sales 自身的业务校验失败会原样透传其业务码与提示
(如字段校验、状态不允许、数据不存在),这类码不在开放平台的号段内,
以响应里的 message 为准。完整的平台层错误码见错误码说明。