预算冻结 、占用、释放
说明
可用于外部系统调用该接口冻结、占用、释放每刻的可用预算。
注:
- 如需要做预算释放,amount参数传负数即可。
- 如已冻结需要转为占用,则需要先释放相应金额,再调用占用接口冻结相应金额。
- 此接口为全部失败,即一条数据错误则整批失败。
- 预算组织传参规则:若不传orgBizCode而传具体匹配条件,则需根据对应预算组织匹配条件传参:
- 若配置的条件为且关系,则必须传入所有参数才能匹配成功。如配置了承担人为A1且承担部门为B2,则必须传入employeesNo为A1和departmentBizCode为B2。
- 若配置的条件为或关系,则传入任一参数均能匹配成功。如配置了承担人为A1或承担部门为B2,则传employeesNo为A1或departmentBizCode为B2均能成功。
- 预算科目传参规则:若不传subjectBizCode而传具体匹配条件,则需根据对应预算科目配置类型传参:
- 若配置的类型为费用类型+自定义档案,则必须传入两个类型的参数才能匹配成功,但若某一参数有多个值,可传该参数任一值。如配置费用A1、A2、A3,自定义档案B1、B2,则传expenseTypeBizCode为A1/A2/A3和referenceDataDetailBizCodes包含B1/B2任一组合均可成功。
- 当参数集合中有任一参数忽略弱控强占预算时,所有参数都会忽略弱控强占预算,参考3
- 若写入金额的币种和预算方案的预算币种不一致,则会根据操作时间时的汇率转换(接口写入时生效汇率)。
接口限制
该接口单笔最多支持50条明细。
接口地址
/api/openapi/budget/{operationType}
冻结:operationType = "FREEZE"
占用:operationType ="OCCUPY"
释放:OCCUPY/FREEZE均可
请求类型
POST
请求参数
参数说明
参数名称 |
类型 |
是否必填 |
参数说明 |
默认值 |
uniqueCode |
String(25) |
是 |
外部写入的行数据唯一标识(可自定义;全局唯一),不可重复,重复的话会提示异常。长度<=25 |
|
type |
String(50) |
是 |
预算编制类型 |
固定值:EXTERNAL_OPENAPI |
orgMatch |
Map |
是 |
用于匹配预算组织的参数 |
|
subjectMatch |
Map |
是 |
用于匹配预算科目的参数(若系统内对应预算方案未配置需匹配预算科目,则此参数不传) |
|
budgetTime |
long |
是 |
用于匹配预算期间的时间,精确到毫秒,例如:1648693651000 |
|
amount |
Bigdecimal |
是 |
调整预算的金额,精确到2位小数。 冻结/占用:传正数,如100.00 释放:传负数,如-100.00 |
|
currency |
String(50) |
是 |
币种 如:人民币:CNY。若所传币种和预算方案币种不一致,则会根据系统内汇率转换为预算方案币种并调整预算金额。 |
|
reportCode |
String(100) |
是 |
外部系统单据号、订单号 ,长度<=100 |
|
desc |
String(200) |
否 |
事由,描述 |
|
ignoreWeakControl |
Boolean |
否 |
当弱控超标时,是否忽略弱控提示强占预算,当参数集合中有其他参数忽略弱控提示时,该值会默认为true |
false |
字段名称 |
类型 |
是否必填 |
字段说明 |
默认值 |
orgBizCode |
String(50) |
否 |
预算组织编码。该字段有值时,将不会再使用下面的字段匹配预算组织 |
|
departmentBizCode |
String(50) |
否 |
用于匹配预算组织的部门编码 |
|
employeesNo |
String(50) |
否 |
用于匹配预算组织的人员编码 |
|
legalEntityBizCode |
String(50) |
否 |
用于匹配预算组织的公司抬头编码 |
|
referenceDataDetailBizCodes |
List<String> |
否 |
用于匹配预算组织的选项编码 |
字段名称 |
类型 |
是否必填 |
字段说明 |
默认值 |
subjectBizCode |
String(50) |
否 |
预算科目编码,该字段有值时,将不会再使用下面的字段匹配预算科目 |
|
expenseTypeBizCode |
String(50) |
否 |
用于匹配预算科目的费用类型编码 |
|
referenceDataDetailBizCodes |
List<String> |
否 |
用于匹配预算科目的选项编码 |
参数样例
[{
"uniqueCode": "uniqueCode_001",
"type": "EXTERNAL_OPENAPI",
"orgMatch": {
"orgBizCode": "",
"departmentBizCode": "",
"employeesNo": "A1",
"legalEntityBizCode": "",
"referenceDataDetailBizCodes": []
},
"subjectMatch": {
"subjectBizCode": "",
"expenseTypeBizCode": "A1",
"referenceDataDetailBizCodes": ["B1"]
},
"budgetTime": "1648025714000",
"amount": "10000.00",
"currency": "CNY",
"reportCode": "",
"desc": ""
}]
响应参数
响应参数说明
参数名称 |
类型 |
是否必填 |
参数说明 |
uniqueCode |
String(25) |
是 |
一行数据的唯一标识,对应入参的uniqueCode |
matchSuccess |
booloon |
是 |
该明细行是否,匹配成功 或 冻结成功 或 占用成功的标记位 |
budgetUnitCode |
String(25) |
否 |
匹配到的预算单元code |
budgetOrgCode |
String(25) |
否 |
匹配到的预算组织bizCode |
budgetSubjectCode |
String(25) |
否 |
匹配到的预算科目bizCode |
periodNum |
int |
否 |
匹配到的预算单元期数 |
usableAmount |
Bigdecimal |
否 |
该预算单元的可用金额(含结转/科目共享)减去本次执行金额 |
excessAmount |
Bigdecimal |
否 |
超标金额 |
errorMessage |
String(200) |
否 |
错误信息 |
level |
String |
否 |
错误类型,null为无异常,"ERROR"为强控异常,“WARNING”为弱控异常 |
参数样例
正确示例返回
{
"code": "ACK",
"message": "",
"data": [
{
"uniqueCode": "hs0039",
"budgetUnitCode": "BDG2206011DUWY0SG",
"budgetOrgCode": "BDG2206011DOBR75S",
"budgetSubjectCode": "BDG2206011DPGNQ4G",
"periodNum": 1,
"usableAmount": 700.00,
"excessAmount": 0,
"matchSuccess": true,
"errorMessage": null,
"level": null
}
],
"errorCode": null,
"success": true
}
错误示例返回
{
"code": "NACK",
"message": "",
"data": [
{
"uniqueCode": "hs0038",
"budgetUnitCode": "BDG2206011DUWY0SG",
"budgetOrgCode": "budget_org_code_hs",
"budgetSubjectCode": "budget_subject_hs",
"periodNum": 1,
"usableAmount": 900.00,
"excessAmount": 4100.00,
"matchSuccess": false,
"errorMessage": "该预算 小狼的预算组织-小狼的预算科目-10期 已超标 CNY:4100.00",
"level": "ERROR"
}
],
"errorCode": null,
"success": false
}
{
"code": "NACK",
"message": "预算组织不存在,请检查 [orgBizCode]",
"data": null,
"errorCode": null,
"success": false
}
常见错误提示说明--data.errorMessage
错误提示 |
说明 |
该预算 小狼的预算组织-小狼的预算科目-10期 已超标 CNY:4100.00 |
该预算组织【小狼的预算组织】+预算科目【小狼的预算科目】匹配到的预算行的第【10期】预算金额超标,超标金额为【4100.00】 |
存在已经执行过的uniqueCode |
uniqueCode参数全局唯一且长度<=25 |
未匹配到预算单元 |
1、入参budgetTime不在每刻已启用预算方案的预算期间内;2、已启用的预算方案不按照科目编制,且入参的预算组织无法匹配预算行 |
此科目下未找到预算组织,请联系管理员 |
没有该预算组织+预算科目匹配的预算行 |
常见错误提示说明--message
错误提示 |
说明 |
预算组织不存在,请检查 [orgBizCode] |
该预算组织【orgBizCode】系统内不存在 |
预算科目不存在,请检查 [subjectBizCode] |
该预算科目【subjectBizCode】系统内不存在 |
存在uniqueCode为空或者长度>25,请检查 |
uniqueCode参数必填且长度<=25 |