POST 创建销售合同(可选提交审批)
POST 新增。body 为 JSON 对象;submitAfterCreate=true 时保存后直接提交审批。
| 接口编码 | 所需范围 | 后端接口 |
|---|---|---|
sales.contract.create | sales:write | POST /v1/sales-contract/create(comap-sales) |
必填字段
| 字段 | 依据 |
|---|---|
title | 接口规格 |
contractTypeId | 接口规格 |
customerId | 接口规格 |
signDate | 接口规格 |
items | 接口规格 |
attachments[].fileId | 接口规格 |
条件必填(如「某状态时必填」)不在此表,以上方参数说明为准。 判定规则见必填字段的判定。
请求体字段(body)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
contractNo | string | — | 销售合同编号;为空时按编码规则生成 |
title | string | 是 | 合同标题 |
customerOrderNo | string | — | 客户单号(客户方的订单编号,非必填) |
contractType | string | — | 合同类型,关联合同类型配置表 |
contractTypeId | integer(int64) | 是 | 合同类型配置ID(t_sales_contract_type) |
customerId | integer(int64) | 是 | 客户ID |
ownerId | integer(int64) | — | 合同负责人ID;为空时默认当前操作人 |
collaboratorIds | integer(int64)[] | — | 协同销售用户ID列表 |
contactName | string | — | 联系人姓名 |
contactPhone | string | — | 联系电话 |
contactEmail | string | — | 联系邮箱 |
address | string | — | 收货/交付地址 |
projectId | integer(int64) | — | 关联项目ID(projectName/projectNo 由服务端按此 ID 反查回写,避免前端篡改) |
orderType | string | — | 订单类型:PTS=按库存销售, PTO=按订单采购, PTM=按单生产 |
signDate | string | 是 | 签订日期 |
startDate | string | — | 合同开始日期 |
endDate | string | — | 合同结束日期 |
paymentTermId | integer(int64) | — | 销售付款条件ID |
deliveryDays | integer(int32) | — | 交货天数 |
warrantyMonths | integer(int32) | — | 质保月数 |
quotationId | integer(int64) | — | 关联报价单ID(从报价转化时传入) |
opportunityId | integer(int64) | — | 关联商机ID |
companyHeaderId | integer(int64) | — | 公司抬头ID |
companyBankAccountId | integer(int64) | — | 公司资金账户ID |
companyBankAccountNo | string | — | 公司银行账号 |
companyBankName | string | — | 公司开户行 |
remark | string | — | 备注 |
contractTerms | string | — | 合同条款正文(落库至 t_sales_contract_terms) |
items32 | ContractItemDTO[] | 是 | 合同明细行 |
paymentPlans6 | PaymentPlanDTO[] | — | 回款计划 |
attachments6 | ContractAttachmentDTO[] | — | 附件列表 |
revenueRecognitionMode | string | — | 收入确认模式 MILESTONE | PERIOD,与收入明细二选一逻辑由服务端校验 |
expenses15 | ContractExpenseDTO[] | — | 费用项目 |
revenuePeriodMeta3 | ContractRevenuePeriodMetaDTO | — | 按周期时元数据 |
revenueLines10 | ContractRevenueLineDTO[] | — | 收入确认明细行(里程碑或周期分期) |
orderAmountLimit | number | — | 合同总下单金额上限(含税),null 表示不限制 |
allowOffContract | boolean | — | 是否允许协议外商品下单 |
requireApprovalInScope | boolean | — | 框架和额度内下单是否需要审批 |
subsidiaries6 | ContractSubsidiaryDTO[] | — | 分/子公司或关联公司授权列表 |
submitAfterCreate | boolean | — | 创建成功后是否立即提交审批。 false/空:仅保存为草稿;true:在同一事务内先落库再调用提交审批逻辑(与 {@code /submit} 一致)。 / |
customFieldDataList3 | FieldDataItem[] | — | 统一字段数据 |
「必填」仅反映接口规格声明的部分。服务内还有未体现在规格里的校验, 标「—」不等于可以不传;租户在主站配置的字段必填不约束本接口。 详见必填字段的判定与字段清单与自定义字段。
请求示例
curl -X POST https://open.risemap.cn/v1/api/invoke \
-H "Authorization: Bearer <访问令牌>" \
-H "Content-Type: application/json" \
-d '{
"apiCode": "sales.contract.create",
"body": {
"title": "string",
"contractTypeId": "1961000000000000001",
"customerId": "1961000000000000001",
"signDate": "string",
"items": []
}
}'
错误处理
响应统一信封 { code, message, data },code == 200 为成功。以下是本接口可能返回的开放平台层错误:
| 错误码 | 说明 | 可重试 |
|---|---|---|
| 92101 | 访问凭证无效 | 否 |
| 92201 | 接口未登记或已停用 | 否 |
| 92202 | 超出凭证授权范围——本接口需 sales:write | 否 |
| 92204 | 绑定员工无此接口的功能权限 | 否 |
| 92203 | 上游服务调用失败 | 先查询处理结果,禁止盲目重试 |
| 92301 | 请求过于频繁 | 是 |
| 92205 | 写操作处理超时,结果未知(下游可能仍在执行) | 否,先查询确认结果 |
| 92302 | 有参数相同的写请求正在处理中 | 等待并确认前一次结果,勿重复提交 |
除此之外,comap-sales 自身的业务校验失败会原样透传其业务码与提示
(如字段校验、状态不允许、数据不存在),这类码不在开放平台的号段内,
以响应里的 message 为准。完整的平台层错误码见错误码说明。
← 返回销售合同