POST高危 保存附加费用单(可保存并提交审批)
POST 新建或编辑(id 为空即新建)。body 为 JSON 对象。必填:sourceType(来源类型:SALES_ORDER=销售订单,SALES_CONTRACT=销售合同)、sourceId(来源单 ID,经 sales.additional-fee.source-options 查询)、bearerType(承担方:CUSTOMER=客户承担,COMPANY=公司承担)、settlementLevel(结算层级,须与来源类型和承担方匹配:ORDER_DIRECT_SETTLEMENT=订单直接结算[订单+客户]、CONTRACT_UNIFIED_SETTLEMENT=合同统一结算[合同+客户]、ALLOCATE_TO_ORDER_SETTLEMENT=分配到订单结算[合同+客户]、ORDER_COST_COLLECTION=订单成本归集[订单+公司]、CONTRACT_COST_COLLECTION=合同成本归集[合同+公司]、ALLOCATE_TO_ORDER_COST=分配到订单成本[合同+公司])、lines(费用明细数组,至少 1 行;每行必填 feeCategoryId 费用类别 ID、feeName 费用名称、amountExclTax 不含税金额且 >0;可选 feeCategoryName、agreedTaxRate 约定税率 0-100、remark、sortOrder;公司承担时可设 generatePayable=true 生成应付,此时必填 payeeType 付款对象类型 SUPPLIER=供应商/EMPLOYEE=员工/OTHER=其他、payeeName 付款对象名称,且 payeeType 非 OTHER 时必填 payeeId)。新建必填 requestId(幂等请求号,建议 UUID);编辑必填 id 与 version(取自详情),仅草稿可编辑。可选:expectedSettlementDate(yyyy-MM-dd)、inputTaxDeductible(公司承担时进项税是否可抵扣)、description、attachmentIds(文件 ID 数组)、accountingTreatment(COST_OFFSET/SALES_REVENUE/COMPANY_COST/PASS_THROUGH)。action:DRAFT=仅保存草稿(默认),SUBMIT=保存并提交审批。返回费用单 ID。 调用前请与用户确认。
| 接口编码 | 所需范围 | 后端接口 |
|---|---|---|
sales.additional-fee.save | sales:write | POST /v1/additional-fees/save(comap-sales) |
⚠️ 高危接口:删除或状态变更类操作,MCP 调用须先向用户复述并获同意后携 confirm: true。
必填字段
| 字段 | 依据 |
|---|---|
sourceType | 参数说明 |
sourceId | 参数说明 |
bearerType | 参数说明 |
settlementLevel | 参数说明 |
lines | 参数说明 |
lines[].feeCategoryId | 参数说明 |
lines[].feeName | 参数说明 |
lines[].amountExclTax | 参数说明 |
requestId | 参数说明 |
id | 参数说明 |
条件必填(如「某状态时必填」)不在此表,以上方参数说明为准。 判定规则见必填字段的判定。
请求体字段(body)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | integer(int64) | — | — |
version | integer(int32) | — | — |
requestId | string | — | — |
createdFrom | string | — | 创建来源:INDEPENDENT |
sourceType | string | — | — |
sourceId | integer(int64) | — | — |
bearerType | string | — | — |
accountingTreatment | string | — | 会计处理方式:COST_OFFSET/SALES_REVENUE/COMPANY_COST/PASS_THROUGH |
settlementLevel | string | — | — |
expectedSettlementDate | string(date) | — | — |
payeeType | string | — | — |
payeeId | integer(int64) | — | — |
payeeName | string | — | — |
inputTaxDeductible | boolean | — | — |
description | string | — | — |
attachmentIds | string[] | — | — |
action | string | — | — |
lines7 | Line[] | — | — |
「必填」仅反映接口规格声明的部分。服务内还有未体现在规格里的校验, 标「—」不等于可以不传;租户在主站配置的字段必填不约束本接口。 详见必填字段的判定与字段清单与自定义字段。
请求示例
curl -X POST https://open.risemap.cn/v1/api/invoke \
-H "Authorization: Bearer <访问令牌>" \
-H "Content-Type: application/json" \
-d '{
"apiCode": "sales.additional-fee.save",
"body": {
"id": "1961000000000000001"
}
}'
错误处理
响应统一信封 { code, message, data },code == 200 为成功。以下是本接口可能返回的开放平台层错误:
| 错误码 | 说明 | 可重试 |
|---|---|---|
| 92101 | 访问凭证无效 | 否 |
| 92201 | 接口未登记或已停用 | 否 |
| 92202 | 超出凭证授权范围——本接口需 sales:write | 否 |
| 92204 | 绑定员工无此接口的功能权限 | 否 |
| 92203 | 上游服务调用失败 | 先查询处理结果,禁止盲目重试 |
| 92301 | 请求过于频繁 | 是 |
| 92205 | 写操作处理超时,结果未知(下游可能仍在执行) | 否,先查询确认结果 |
| 92302 | 有参数相同的写请求正在处理中 | 等待并确认前一次结果,勿重复提交 |
除此之外,comap-sales 自身的业务校验失败会原样透传其业务码与提示
(如字段校验、状态不允许、数据不存在),这类码不在开放平台的号段内,
以响应里的 message 为准。完整的平台层错误码见错误码说明。
← 返回additional-fee