批量保存合同详情

  • 接口:/corp/contract/save

  • Method:POST

  • 数据格式:JSON

  • 请求参数:

    | 参数 | 类型 | 是否必填 | 描述 | |:------------------------|:--------------------------------|:-----|:-----------------------------------------| | contractId | String | Y | 合同编号 | | businessCode | String | N | 合同单据号 | | contractName | String | Y | 合同名称 | | totalAmount | BigDecimal | N | 合同总金额(当合同的类型为控制金额的和同时,需要填入一个大于0的数值) | | fulfillAmount | BigDecimal | N | 已履行金额 | | applicantUserEmployeeId | String | Y | 申请人工号 | | agentUserEmployeeIds | array | Y | 责任人工号 | | agentDepartmentBizCodes | array | N | 责任部门 | | supplierBizCode | String | Y | 供应商业务编码 | | departmentBizCode | String | Y | 申请人部门编码 | | subsidiaryBizCode | String | Y | 业务实体编码 | | formSubTypeBizCode | String | Y | 单据类型编码(合同的单据类型) | | externalLink | String | Y | 外部链接,可含有参数{employeeId},将替换成员工工号 | | freezeBudget | boolean | Y | 是否占用预算(当合同的类型为不控制金额的合同时,不能占预算,值必须为false) | | budgetExecutingForms | List<BudgetExecutingForm> | N | 占用预算的请求对象(当需要占预算的时候才填入这部分信息) | | customFormValues | CustomFormValue数组 | | 自定义表单内容 | | currency | String | N | 合同币种(默认业务实体币种),如:CNY、USD
    | attachmentDtoList | AttachmentDto数组 | N | 附件数据 | | submitAt | long | N | 传时间戳,精确到毫秒,不能超过当前时间(不传该字段,默认当前时间) | | contractType | String | N | 合同类型(normal -普通合同(默认);append- 附加合同) | | mainContractBizCode | String | N | 关联主合同编码(若合同类型为附加合同则必填) |
    | contractDeadline | long | N | 合同到期日 |

BudgetExecutingForm结构
参数 类型 是否必填 描述
budgetaryAccountBizCode String Y 预算三级科目业务编码
budgetEntryTargetType String Y 目标预算类型,可选值为:SUBSIDIARY - 业务实体预算, DEPARTMENT - 部门预算,
AUX_ACCOUNTING - 项目预算, PERSONAL - 个人预算
budgetAttributionDate Date Y 预算归属日期
auxAccountingBizCode String N 项目预算的项目编码,当目标预算类型为AUX_ACCOUNTING时,需要传入此参数
employeeId String N 个人预算的员工工号,当目标预算类型为PERSONAL时,需要传入此参数
departmentBizCode String N 部门预算的部门编码,当目标预算类型为DEPARTMENT时,
需要传入此参数,当使用部门预算时,如果预算业务实体编码为空,
使用不带业务实体的部门预算,如果有值则使用带业务实体的部门预算
subsidiaryBizCode String N 业务实体预算的业务实体编码,当需要占业务实体预算或者是带有业务实体的部门预算
的时候需要传入此参数,并且值应该与合同的业务实体一致
amount BigDecimal Y 冻结的预算金额,所有冻结明细的总金额不允许超出合同的总金额
CustomFormValue 结构(详细说明请参考-自定义字段参数说明
参数 类型 是否必填 描述
identifier string Y 字段占位符
value string 字段内容
detailFieldValues List<Map<String,String>> 明细类型字段
installmentFieldValues List<Map<String,String>> 分期付款类型字段
AttachmentDto结构
参数 类型 是否必填 描述
fileName string Y 文件名
fileUrl string N 有效文件url
base64 string N 文件base64

注:fileUrl 与 base64 二选一必填一个,fileUrl优先

  • 该接口采用单条失败的处理方式,即整批数据中,如果只有其中的几条因为各种原因失败,那么只有那几条数据不会被保存;其它的数据仍然会被正常处理;错误数据的位置会被放在errorData里面errorData为结构体,包含出错记录位置, 以及与之对应的出错信息; 类似 {"请检查第1条数据": "供应商编码不正确"}; 具体参见失败实例;

  • 请求示例:包含分期付款组件导入

installmentFieldValues 参数

参数 类型 描述
installmentFieldValues List<Map<String,String>> 分期付款类型字段
fieldXX-1 付款金额
fieldXX-2 支付状态(PAID-已支付)(UNPAID-未支付)
fieldXX-3 付款日期
componentDataCode 更新付款计划对应期数编码(不传表示新增,原先未支付对应的期数会删除)
customRowNo 若用户系统维护了合同付款计划期数行ID,可传该参数与每刻期数行ID(componentDataCode)映射
  • 请求示例:
{
  "data": [
    {
      "contractId": "22",
      "businessCode": "MK-001",
      "contractName": "openApi导入分期合同名字",
      "totalAmount": 999,
      "applicantUserEmployeeId": "200070",
      "agentUserEmployeeIds": [
        "200070"
      ],
      "supplierBizCode": "FW00001900",
      "departmentBizCode": "www",
      "subsidiaryBizCode": "test",
      "formSubTypeBizCode": "PLC2112281HR4V7NK",
      "externalLink": "",
      "freezeBudget": false,
      "contractType": "append",
      "mainContractBizCode": "MK822036121",
      "attachmentDtoList": [
        {
          "fileName": "picture1.png",
          "fileUrl": "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fc-ssl.duitang.com%2Fuploads%2Fitem%2F202105%2F29%2F20210529001057_aSeLB.thumb.1000_0.jpeg&refer=http%3A%2F%2Fc-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1661331430&t=4ccd64b1b51c96f6d8cb8e73851072ab"
        },
        {
          "fileName": "picture1.png",
          "base64": "UEsDBBQACAgIAEZYpVQAAAAAAAAAAAAAAAAJAAAAZG9jUHJvcHMvAwBQSwc..."
        }
      ],
      "customFormValues": [
        {
          "identifier": "field10",
          "value": "",
          "installmentFieldValues": [
            {
              "field10-1": 100,
              "field10-2": "2021-03-29",
              "field10-3": "PAID",
              "customRowNo": ""
            },
            {
              "field10-1": 200,
              "field10-2": "2021-03-30",
              "field10-3": "UNPAID",
              "customRowNo": ""
            }
          ]
        }
      ]
    }
  ]
}

image-分期付款导入合同示意图.png

  • 请求示例1:不控制金额的合同(不能占用预算)
{
  "timestamp": "1488522206",
  "data": [
    {
      "contractId": "AA0044",
      "contractName": "不控金额示例合同",
      "totalAmount": "",
      "fulfillAmount": 0,
      "applicantUserEmployeeId": "EM10001",
      "agentUserEmployeeIds": [
        "EM10000",
        "EM10002"
      ],
      "supplierBizCode": "1231",
      "externalLink": "www.test.com/AA0044",
      "subsidiaryBizCode": "EM-SUB1",
      "departmentBizCode": "EM-DEP1",
      "formSubTypeBizCode": "EM-FORM",
      "freezeBudget": "false//必须为false"
    }
  ]
}
  • 请求示例2:控制金额但不占预算的合同
{
  "timestamp": "1488522206",
  "data": [
    {
      "contractId": "AA0044",
      "contractName": "控制金额不占预算示例合同",
      "totalAmount": "100",
      "fulfillAmount": 0,
      "applicantUserEmployeeId": "EM10001",
      "agentUserEmployeeIds": [
        "EM10000",
        "EM10002"
      ],
      "supplierBizCode": "1231",
      "externalLink": "www.test.com/AA0044",
      "subsidiaryBizCode": "EM-SUB1",
      "departmentBizCode": "EM-DEP1",
      "formSubTypeBizCode": "EM-FORM",
      "freezeBudget": false
    }
  ]
}
  • 请求示例1:控制金额并且占预算的合同
{
  "timestamp": "1488522206",
  "data": [
    {
      "contractId": "AA0044",
      "contractName": "占预算示例合同",
      "totalAmount": "100",
      "fulfillAmount": 0,
      "applicantUserEmployeeId": "EM10001",
      "agentUserEmployeeIds": [
        "EM10000",
        "EM10002"
      ],
      "supplierBizCode": "1231",
      "externalLink": "www.test.com/AA0044",
      "subsidiaryBizCode": "EM-SUB1",
      "departmentBizCode": "EM-DEP1",
      "formSubTypeBizCode": "EM-FORM",
      "freezeBudget": true,
      "budgetExecutingForms": [
        {
          "budgetaryAccountBizCode": "EM-BA1",
          "budgetEntryTargetType": "SUBSIDIARY",
          "budgetAttributionDate": "2018-06-15",
          "departmentBizCode": "111",
          "auxAccountingBizCode": "",
          "subsidiaryBizCode": "SUB1",
          "employeeId": ""
        }
      ]
    }
  ]
}
  • 返回示例:上传成功的返回
{
  "code": "ACK",
  "message": "",
  "data": {},
  "args": null,
  "linkDetail": false,
  "nonBizError": false
}
  • 返回示例2:上传失败的返回
{
  "code": "NACK",
  "message": null,
  "data": {
    "请检查第1条数据": "该合同已经存在"
  },
  "args": null,
  "linkDetail": false,
  "errorData": {
    "请检查第1条数据": "该合同已经存在"
  },
  "nonBizError": false
}

合同单据类型的详情页面:

有一个开关---根据合同金额对关联对公支付单的支付金额进行控制

1、开关打开,合同控制金额,接口传入该类型的合同:合同金额必填,值大于0,可以占用预算;

2、当开关关闭时,合同不控制金额,接口传入该类型的合同:合同金额不必填(可以填写任意数值),不可以占预算(即"freezeBudget" 字段的值必须为false )

results matching ""

    No results matching ""