报销单费用导入接口
说明
该接口用于进行费用导入,可以用于将其他来源的费用导入到每刻系统中.
注意事项
- 该接口为部分失败,在进行费用导入时,如果一次导入5条费用,其中一条失败,不会影响其他四条数据的正常导入。
- 每次导入最大值为10条费用,导入过多费用时,每刻会将多出的费用进行遗弃。
- 如需在费用上关联发票,可以在费用导入成功后,将返回的expenseCode添加到发票导入接口的入参内。
- 根据返回的integrity可以识别该费用是否必填项传入完整:
- true:所有必填项均传入成功
- false
- 接口可导入的必填项未导入完整
- 不支持接口导入,但表单设置必填(此情况需要设置单据导入为草稿或者去除费用上对应组件的必填设置)
接口地址
/api/openapi/receive/expense
请求类型
POST
请求参数
参数说明
在各个表单中,分为系统字段、业务字段及普通字段,系统字段在表单配置界面中不会显示,如expenseTypeBizCode 字段。业务字段及普通字段,可以通过单据配置界面中的开发者模式来查看该字段导入时的的key值,其中普通字段的key值,也可以在界面中进行配置修改
字段名称 | 字段类型 | 是否必填 | 字段说明 |
---|---|---|---|
employeeId | String(25) | 是 | 需要导入的对应员工的工号 |
expenseList | List<expenseList> | 是 | 费用列表,根据费用表单配置,分为对公费用参数和对私费用参数 |
expenseList费用列表
对公费用参数说明
字段名称 | 字段类型 | 是否必填 | 字段说明 |
---|---|---|---|
consumeAmount | AmountInput | 是 | 付款金额 系统内对应:到票全部支付 '付款金额' 预付未到票 '付款金额' 到票核销 '付款金额' 到票部分支付或不支付 '付款金额' 支付前期已到的发票 '付款金额' |
expenseTypeBizCode | String | 是 | 费用类型业务编码 |
corpExpense | boolean | 是 | 是否对公费用,需要填写true |
corpType | String | 是 | 业务场景: ALL_RECEIPTS(全部到票) NO_RECEIPT(预付未到票) RECEIPT_DEDUCTION(到票核销) RECEIPT_PAY_SOME(到票部分支付或不支付) PAY_BEFORE_RECEIPT(支付前期已到的发票) |
corpExpenseResponsibleEmpIds | List<String> | 否 | 责任人/业务经办人(预付未到票/到票部分支付或不支付 两种场景必填) |
nonReceiptAmount | AmountInput | 遵循表单配置 | 未到票金额(预付未到票场景必填) |
receiptAmount | AmountInput | 否 | 本次到票金额(到票全部支付/到票部分支付或不支付/到票核销 三种场景必填) |
forecastReceiptDate | Long | 遵循表单配置 | 预计到票时间(预付未到票场景必填) |
consumeLocation | CityInput | 遵循表单配置 | 消费地点 |
receiptDate | Long | 遵循表单配置 | 到票时间(到票全部支付/到票核销/到票部分支付或不支付 三种场景必填) |
tradingPartnerBizCode | String | 遵循表单配置 | 往来单位业务编码 |
customObject | CustomObject | 遵循表单配置 | 自定义普通字段 |
allocationList | List<ExpenseAllocation> | 否 | 分摊列表(支付前期已到的发票 场景不支持分摊) |
allocationRuleBizCode | String | 否 | 分摊规则业务编码,分摊列表不为空则必填; |
deductionTempList | List<ExpenseDeductionTemp> | 否 | 到票核销预付的明细记录(到票核销费用必填) |
payBeforeTempList | List<ExpenseDeductionTemp> | 否 | 支付前期已到的发票的明细记录(支付前期已到的发票费用必填) |
noTaxSuiteTemp | NoTaxInput | 否 | 不含税组件(只有对公费用预付未到票场景支持) |
到票核销记录参数说明 ExpenseDeductionTemp
字段名称 | 字段类型 | 是否必填 | 字段说明 |
---|---|---|---|
recordExpenseCode | String | 是 | 被核销费用的唯一编码(费用导入接口返回的expenseCode 或 报销单详情返回的被核销费用的code) |
deductionAmount | AmountInput | 是 | 核销金额 |
支付前期已到票记录参数说明 ExpenseDeductionTemp
字段名称 | 字段类型 | 是否必填 | 字段说明 |
---|---|---|---|
recordExpenseCode | String | 是 | 被核销费用的唯一编码(费用导入接口返回的expenseCode 或 报销单详情返回的被核销费用的code) |
deductionAmount | AmountInput | 是 | 支付金额 |
对私费用参数说明
字段名称 | 字段类型 | 是否必填 | 字段说明 |
---|---|---|---|
consumeAmount | AmountInput | 是 | 费用金额 |
expenseTypeBizCode | String | 是 | 费用类型业务编码 |
corpExpense | String | 是 | 是否对公费用,需要填写false |
consumeTime | DateInput | 是 | 消费时间 |
consumeLocation | CityInput | 遵循表单配置 | 消费地点 |
customObject | CustomObject | 遵循表单配置 | 自定义普通字段 |
trainSeat | String | 遵循表单配置 | 火车席位: BUSINESS-商务座 SPECIAL-特等座 FIRST-一等座 SECOND-二等座 SOFT_SLEEPER-软卧 ADVANCED_SOFT_SLEEPER-高级软卧 HARD_SLEEPER-硬卧 SOFT-软座 HARD-硬座 STANDING-无座 |
airClass | String | 是 | 飞机舱位: FIRST-头等舱 BUSINESS-商务舱 ECONOMY-经济舱 |
shipClass | String | 是 | 轮船舱位: VIP-贵宾舱 SPECIAL-特等舱 FIRST-一等舱 SECOND_A-二等A SECOND_B-二等B THIRD_A-三等A THIRD_B-三等B ECONOMY-经济舱 |
allocationList | List<ExpenseAllocation> | 否 | 分摊列表 |
allocationRuleBizCode | String | 否 | 分摊规则业务编码,分摊列表不为空则必填; |
labourTax | object | 否 | 劳务费个税 |
分摊参数说明 ExpenseAllocation
字段名称 | 字段类型 | 是否必填 | 字段说明 |
---|---|---|---|
allocatedAmount | number | 是 | 分摊金额 |
legalEntityBizCode | String | 是 | 公司抬头业务编码 |
coverUserNo | String | 是 | 承担人工号 |
coverDepartmentBizCode | String | 是 | 承担部门编码 |
customObject | CustomObject | 是 | 自定义普通字段 |
劳务费个税参数说明 labourTax
参数说明
- 若费用表单个税组件开启了【按照费用金额扣除“减除税额”后的金额计算个税】,导入时请导入amountIncludeTaxDeduction(费用金额)和taxDeduction(减除税额),导入后系统会计算劳务税前金额、预扣个税和劳务税后金额;
若开关未开启,请导入amountType(金额类型)和amount(税前/税后金额),系统根据导入的税前或税后金额计算个税及对应的前后金额。 - openapi导入的劳务费默认会计算“预扣个税”
字段名称 | 字段类型 | 是否必填 | 字段说明 |
---|---|---|---|
amountType | String | 是 | 输入金额类型。pre:税前 after:税后 |
amount | AmountInput | 是 | 税前/税后金额 |
amountIncludeTaxDeduction | AmountInput | 是 | 费用金额(劳务税前金额=费用金额-减除税额) |
taxDeduction | AmountInput | 是 | 减除税额(可以为0) |
参数样例
{
"employeeId":"USER001",
"expenseList":[
{
"consumeAmount":{
"amount":100,
"currency":"CNY"
},
"corpExpense":true,
"expenseTypeBizCode":"EXTYPE001",
"corpType":"NO_RECEIPT",
"nonReceiptAmount":{
"amount":100,
"currency":"CNY"
},
"forecastReceiptDate":1593310000000,
"tradingPartnerBizCode":"BIZ001",
"customObject":{
"CF1393":"我是单行文本",
"remarkText":"我是单行文本",
"detail":[
{
"CF1400":"我是单行文本",
"remarkText":"我是单行文本"
}
]
},
"corpExpenseResponsibleEmpIds":[
"no001","no002"
]
},
{
"consumeAmount":{
"amount":150,
"currency":"CNY"
},
"corpExpense":true,
"expenseTypeBizCode":"LPP12123",
"corpType":"ALL_RECEIPTS",
"receiptDate":1603310000000,
"tradingPartnerBizCode":"015208mk2020-08-28",
"customObject":{
},
"corpExpenseResponsibleEmpIds":[
"no001","no002"
]
},
{
"consumeAmount":{
"amount":100,
"currency":"CNY"
},
"consumeTime": { //日期
"currentTime": 1594197456845
},
"consumeTime": { //日期区间
"timeRange":{
"startDate":1566305347895, //开始时间
"endDate":1566305356934 //结束时间
}
},
"consumeLocation":{
"cityPair":{
"departure":"110001",
"destination":"310100"
},
"location":null
},
"corpExpense":false,
"expenseTypeBizCode":"X001",
"trainSeat":"SECOND",
"airClass":"FIRST",
"shipClass":"FIRST",
"allocationRuleBizCode":"A222",
"noTaxSuiteTemp": {
"taxRate": "1",
"taxAmount": "10",
"nonTaxAmount": "90"
},
"deductionTempList":[
{
"recordExpenseCode":"FD230202VWW9HEL",
"deductionAmount":{
"amount":100,
"currency":"CNY"
}
},
{
"recordExpenseCode":"FD2302131O6J7NYE",
"deductionAmount":{
"amount":50,
"currency":"CNY"
}
}
],
"payBeforeTempList":[
{
"recordExpenseCode":"FD230202VWW9HEL",
"deductionAmount":{
"amount":100,
"currency":"CNY"
}
}
],
"receiptAmount":{
"amount":100,
"currency":"CNY"
},
"allocationList":[
{
"allocatedAmount":"100",
"legalEntityBizCode":"E11",
"coverUserNo":"E11",
"coverDepartmentBizCode":"E11",
"customObject":{
"CF73":"1",
"CF54":{
"name":"每刻科技",
"bizCode":"CODE00124342",
"principalCodes":"MK001",
"value":[
{
"name":"每刻科技",
"bizCode":"CODE00124342",
"principalCodes":"MK001"
}
],
"definedList":[
{
"type":"SingleTextInput",
"label":"业务编码",
"display":false,
"primary":false,
"businessCode":"bizCode"
},
{
"type":"SingleTextInput",
"label":"供应商名称",
"display":true,
"primary":true,
"businessCode":"name"
},
{
"type":"SingleTextInput",
"label":"负责人",
"display":true,
"primary":false,
"businessCode":"principalCodes"
}
]
}
}
}
]
}
]
}
响应参数说明
全部成功时响应参数示例
{
"code": "ACK",
"message": "操作成功",
"data": {
"successData": [{
"idx": 0,
"expenseCode": "EXPCODE001" ,
"integrity":true
}]
},
"success": true
}
存在失败时响应参数示例
{
"code": "ACK",
"message": "操作成功",
"data": {
"errorData": [{
"idx": 1,
"errorCode": "10000",
"errorMessage": "参数错误"
}],
"successData": [{
"idx": 0,
"expenseCode": "EXPCODE001"
}]
},
"success": false
}
修改记录
2023-05-23 新增费用导入接口
2023-07-10 新增费用导入不含税金额接口