# 消费申请 ### 普通消费申请的新增/修改 #### 接口: /preconsume/save POST JSON #### 请求参数 | 参数 | 类型 | 必须 | 默认值 | 主键 | 描述 | | :--- | :--- | :--- | :--- | :--- | :--- | | businessCode | string | Y | | Y | 单据号 | | name | string | Y | | | 申请事由 | | userEmployeeId | string | Y | | | 报销人工号 | | departmentBizCode | string | Y | | | 所属部门编码 | | subsidiaryBizCode | string | Y | | | 所属业务实体编码 | | costTrackings | CostTracking数组 | | | | 辅助核算 | | amount | BigDecimal | Y | | | 报销金额 | | approvedAmount | BigDecimal | Y | | | 批准金额 | | submittedAt | long | | | | 单据提交时间 | | expenses | ExpenseDto数组 | Y | | | 费用列表 | | userLoans | UserLoanDto数组 | | | | 借款列表 | | correlationPattern | string | N | | | 费用关联消费申请单据\(FEE\_TO\_PRE\_CONSUME\),或者消费申请费用\(FEE\_TO\_PRE\_CONSUME\_FEE\) | | formSubTypeBizCode | string | | | | 单据类型编码 | #### 备注 消费申请金额的币种使用的是传入的对应的业务实体本币 ###### CostTracking 结构 | 参数 | 类型 | 必须 | 默认值 | 主键 | 描述 | | :--- | :--- | :--- | :--- | :--- | :--- | | costTrackingName | string | Y | | | 辅助核算名称 | | costTrackingItemBizCode | string | Y | | | 辅助核算选项编码 | ###### ExpenseDto 结构 | 参数 | 类型 | 必须 | 默认值 | 主键 | 描述 | | :--- | :--- | :--- | :--- | :--- | :--- | | feeTypeBizCode | string | Y | | | 费用类型编码 | | amount | BigDecimal | Y | | | 金额 | | approvedAmount | BigDecimal | Y | | | 批准金额 | | consumeTime | long | | now() | | 消费时间(不传默认为当前时间)| ###### UserLoanDto 结构 | 参数 | 类型 | 必须 | 默认值 | 主键 | 描述 | | :--- | :--- | :--- | :--- | :--- | :--- | | loanTypeBizCode | string | Y | | | 借款类型编码 | | loanAmount | BigDecimal | Y | | | 借款金额 | | loanTypeMode | string | | | | 借款管理模式(POOL, FORM) | | currency | string | Y | | | 借款币种 | | loanRepaymentDate | long | | | | 预计还款时间 | ###### 其中 借款类型必须是往来款类型-对私借款中维护的借款类型,对应的编码可以使用已禁用的借款类型 借款管理模式默认保持借款类型当前的管理模式;可选值:FORM、POOL 借款币种,对于单据化借款,币种必须为业务实体的报销币种;对于池化借款,只可传入业务实体本币 对于预计还款时间,单据化借款必填,池化借款不可填写 #### 返回参数 **该接口采用单条失败的处理方式,即整批数据中,如果只有其中的几条因为各种原因失败,那么只有那几条数据不会被保存;其它的数据仍然会被正常处理;错误数据的主键(businessCode\)会被放在errorData里面;** **errorData为结构题, 包含出错记录主键(businessCode\), 以及与之对应的出错信息; 类似 {"DH220160001": "部门不存在"}; 具体参见失败实例;** **为保持向后兼容, data也会包含有和errorData相同的记录,但后续可能会改变;** #### 示例: 请求数据 ``` { "timestamp": 1555567604000, "data": [ { "businessCode": "MK116", "name": "测试消费申请接口导入的借款功能", "userEmployeeId": "0001", "departmentBizCode": "DI1807051G4YCUQP", "subsidiaryBizCode": "SI18070220ITVO51", "amount": 400, "approvedAmount": 300, "submittedAt": 1555567604000, "expenses": [ { "feeTypeBizCode": "2003_03", "amount": 400, "approvedAmount": 300 } ], "userLoans": [ { "loanTypeBizCode": "0001", "loanAmount": 100, "loanTypeMode": "FORM", "currency": "EUR", "loanRepaymentDate": 1555567604 } ] } ] } ``` 返回数据(成功) ``` { "code": "ACK", "message": "", } ``` 返回数据(失败) ``` { "code": "NACK", "errorData": {"DH220160001": "未知错误"} } ``` ### 差旅申请新增/修改 #### 接口: /preconsume/trip/save POST JSON #### 请求参数 | 参数 | 类型 | 必须 | 默认值 | 主键 | 描述 | | :--- | :--- | :--- | :--- | :--- | :--- | | businessCode | string | Y | | Y | 单据号 | | name | string | Y | | | 申请事由 | | userEmployeeId | string | Y | | | 报销人工号 | | departmentBizCode | string | Y | | | 所属部门编码 | | subsidiaryBizCode | string | Y | | | 所属业务实体编码 | | costTrackings | CostTracking数组 | | | | 辅助核算 | | amount | BigDecimal | Y | | | 报销金额 | | approvedAmount | BigDecimal | Y | | | 批准金额 | | submittedAt | long | | | | 单据提交时间 | | userLoans | UserLoanDto数组 | | | | 借款列表 | | correlationPattern | string | | | | 费用关联消费申请单据\(FEE\_TO\_PRE\_CONSUME\),或者消费申请费用\(FEE\_TO\_PRE\_CONSUME\_FEE\) | | formSubTypeBizCode | string | Y | | | 单据类型编码 | | travelRecords | TravelRecord数组 | Y | | | 行程 | #### 备注 ###### CostTracking 结构 | 参数 | 类型 | 必须 | 默认值 | 主键 | 描述 | | :--- | :--- | :--- | :--- | :--- | :--- | | costTrackingName | string | Y | | | 辅助核算名称 | | costTrackingItemBizCode | string | Y | | | 辅助核算选项编码 | ###### TravelRecord 结构 | 参数 | 类型 | 必须 | 默认值 | 主键 | 描述 | | :--- | :--- | :--- | :--- | :--- | :--- | | departure | string | Y | | | 出发地 | | destination | string | Y | | | 目的地 | | begin | long | Y | | | 行程起始时间,时间戳 | | end | long | Y | | | 行程结束时间,时间戳 | | days | BigDecimal | Y | | | 天数 | | travelTypeName | string | Y | | | 差旅类型名称 | | details | TravelDetail数组 | | | | 行程明细 | ###### TravelDetail 结构 | 参数 | 类型 | 必须 | 默认值 | 主键 | 描述 | | :--- | :--- | :--- | :--- | :--- | :--- | | feeTypeBizCode | string | Y | | | 费用类型编码 | | amount | BigDecimal | Y | | | 金额 | | approvedAmount | BigDecimal | Y | | | 批准金额 | | props | TravelDetailProp数组 | Y | | | 动态字段数组 | ###### TravelDetailProp 结构 | 参数 | 类型 | 必须 | 默认值 | 主键 | 描述 | | :--- | :--- | :--- | :--- | :--- | :--- | | dynamicCode | string | Y | | | 动态编码,具体表单字段对应Code见下表 | | value | string | Y | | | 对应字段的值 | ###### 动态表单 | 表单字段 | dynamicCode | value的取值范围 | | :--- | :--- | :--- | | 入住时间 | 1 | yyyy-MM-dd格式字符串 | | 离开时间 | 2 | yyyy-MM-dd格式字符串 | | 间\*夜 | 3 | | | 出发时间 | 4 | yyyy-MM-dd格式字符串 | | 出发城市 | 5 | 每刻地址编码 | | 目的城市 | 6 | 每刻地址编码 | | 舱位级别 | 7 | FIRST\(头等舱\),BUSINESS\(商务舱\),ECONOMY\(经济舱\) | | 座位类型 | 8 | BUSINESS\(商务座\),SPECIAL\(特等座\),FIRST\(一等座\),SECOND\(二等座\),SOFT\_SLEEPER\(软卧\),ADVANCED\_SOFT\_SLEEPER\(高级软卧\),HARD\_SLEEPER\(硬卧\),SOFT\(软座\),HARD\(硬座\) | | 消费城市 | 9 | 每刻地址编码 | | 消费时间 | 10 | yyyy-MM-dd格式字符串 | | 航程类型 | 11 | SINGLE\(单程\),ROUND\(往返\) | | 航班类型 | 12 | DOMESTIC\(国内航班\),INTERNATIONAL\(国际航班\) | ###### UserLoanDto 结构 | 参数 | 类型 | 必须 | 默认值 | 主键 | 描述 | | :--- | :--- | :--- | :--- | :--- | :--- | | loanTypeBizCode | string | Y | | | 借款类型编码 | | loanAmount | BigDecimal | Y | | | 借款金额 | | loanTypeMode | string | | | | 借款管理模式(POOL, FORM) | | currency | string | Y | | | 借款币种 | | loanRepaymentDate | long | | | | 预计还款时间 | ###### 其中 借款类型必须是往来款类型-对私借款中维护的借款类型,对应的编码可以使用已禁用的借款类型 借款管理模式默认保持借款类型当前的管理模式;可选值:FORM、POOL 借款币种,对于单据化借款,币种必须为业务实体的报销币种;对于池化借款,只可传入业务实体本币 对于预计还款时间,单据化借款必填,池化借款不可填写 #### 备注 消费申请金额的币种使用的是传入的对应的业务实体本币 差旅类型名称\(travelTypeName\)见每刻系统-财务管理-差旅类型 涉及地址的字段,传每刻的地址编码表中对应的place\_full\_code,每刻地址编码表如果没有请联系我们提供,如杭州市区,对应的place\_full\_code为domestic-ZH32-ZH32\_1-ZH32\_1\_01 费用类型编码\(feeTypeBizCode\)见每刻系统-财务管理-费用类型里的编码 行程明细费用类型为‘员工住宿’时动态字段需要传1、2、3、9,为‘员工机票’需要传4、5、6、7、11、12,为出差补贴时传9、10 例:行程明细费用类型‘员工机票’传的数据格式如下 ``` { "amount": 150, "feeTypeBizCode": "2002_01", "props": [ { "value": "2017-09-23", "dynamicCode": "4" }, { "value": "domestic-ZH32-ZH32_6-ZH32_6_01", "dynamicCode": "5" }, { "value": "domestic-ZH32-ZH32_1-ZH32_1_01", "dynamicCode": "6" }, { "value": "FIRST", "dynamicCode": "7" }, { "value": "SINGLE", "dynamicCode": "11" }, { "value": "DOMESTIC", "dynamicCode": "12" } ] } ``` 单据类型编码见每刻系统-单据与流程-单据设置,点击对应类型查看详情 #### 返回参数 **该接口采用单条失败的处理方式,即整批数据中,如果只有其中的几条因为各种原因失败,那么只有那几条数据不会被保存;其它的数据仍然会被正常处理;错误数据的主键(businessCode\)会被放在errorData里面;** **errorData为结构题, 包含出错记录主键(businessCode\), 以及与之对应的出错信息; 类似 {"项目": "部门不存在"}; 具体参见失败实例;** **为保持向后兼容, data也会包含有和errorData相同的记录,但后续可能会改变;** #### 示例: 请求数据 ``` { "timestamp": 1506297600000, "data": [ { "businessCode": "LMPC20070001", "name": "差旅申请1", "userEmployeeId": "10001", "departmentBizCode": "DP1606271XN2TRSW", "subsidiaryBizCode": "SU1606271XFWMUIO", "formSubTypeBizCode": "PLC1709151JK8IM0W", "costTrackings": [ { "costTrackingName": "客户", "costTrackingItemBizCode": "yasha" } ], "amount": 150, "approvedAmount": 150, "submittedAt": 1506297600000, "userLoans": [ { "loanTypeBizCode": "0001", "loanAmount": 100, "loanTypeMode": "FORM", "currency": "EUR", "loanRepaymentDate": 1555567604 } ] "travelRecords": [ { "destination": "domestic-ZH32-ZH32_6-ZH32_6_01", "departure": "domestic-ZH32-ZH32_1-ZH32_1_01", "begin": 1506124800000, "end": 1506211200000, "days": 1, "travelTypeName": "国内出差", "details": [ { "amount": 150, "approvedAmount": 150, "feeTypeBizCode": "2001_01", "feeTypeName": "员工住宿", "props": [ { "value": "2017-09-23", "dynamicCode": "1" }, { "value": "2017-09-25", "dynamicCode": "2" }, { "value": "domestic-ZH32-ZH32_1-ZH32_1_01", "dynamicCode": "9" }, { "value": "1", "dynamicCode": "3" } ] } ] } ] } ] } ``` 返回数据(成功) ``` { "code": "ACK", "message": "", } ``` 返回数据(失败) ``` { "code": "NACK", "errorData": {"LMPC20070001": "未知错误"} } ``` ### 获取已审批申请数据 #### 接口: /request/approved?start={start}&end={end}&formSubType={formSubType} GET JSON #### 请求参数 | 参数 | 类型 | 必须 | 默认值 | 主键 | 描述 | | :--- | :--- | :--- | :--- | :--- | :--- | | start | date | N | | | 审批起始日期 | | end | date | N | | | 审批结束日期 | | formSubType | string | N | | | 单据小类 | #### 说明 ** start, end的格式为yyyy-MM-dd ** ** 如果不提供start和end, 则默认取前一天的数据 ** ** start, end的区间最多支持30天 ** ** formSubType指单据小类的业务编码, 可以在企业设置单据与流程页面查看 ** #### 返回数据 | 参数 | 类型 | 描述 | | --- | --- | --- | | businessCode | string | 单据号 | | createdAt | long | 单据创建时间 | | submittedAt | long | 单据提交时间 | | approvedAt | long | 单据审批结束时间 | | settledAt | long | 单据标记支付时间 | | requestAmount | decimal | 申请金额 | | approvedAmount | decimal | 批准金额 | | paidAmount | decimal | 支付金额 | | status | string | 单据状态 | | subsidiaryName | string | 业务实体 | | loan | bool | 如果为true, 表明有借款, false, 表明没有借款 | | loanAmount | decimal | 借款金额 | | loanApprovedAmount | decimal | 借款批准金额 | | loanTypeBusinessCode | string | 借款类型编码 | | loanCcy | string | 借款币种 | | adjustReason | string | 审批调整理由 | | processLogs.operator | string | 操作人 | | processLogs.optTime | long | 操作时间 | | expenses.feeAmount | decimal | 费用金额 | | expenses.feeTypeCode | string | 费用类型 | | expenses.consumeTime | date | 费用消费时间 | | expenses.consumeLocation | string | 费用消费地点 | | expenses.consumeCcy | currency | 消费币种 | | travelRecords.destination | address | 行程目的地 | | travelRecords.begin | date | 行程起始时间 | | travelRecords.end | date | 行程结束时间 | | travelRecords.amount | date | 行程预计金额 | | travelRecords.type | string | 行程类型 | | costTrackings.costTrackingName | string | 辅助核算 | | costTrackings.costTrackingItemName | string | 辅助核算详情 |