推送机票申请单
- 接口(建议后缀):/approval/flight/save
- Method:POST
- 数据格式:Json
- 调用方:每刻
- 接口说明:员工提交机票申请单,经过每刻转换成申请单推送给第三方
请求参数
字段 |
类型 |
必填 |
描述 |
approvalNo |
String |
Y |
申请单号 |
originalApprovalNo |
String |
N |
原始申请单号(只有变更后的申请单有) |
formCode |
String |
Y |
单据编码(由多个申请单组成的大单据的编码) |
formBizCode |
String |
Y |
单据业务编码(通常为大单据在客户系统的编码) |
externalCorpCode |
String |
Y |
企业在第三方中唯一编码 |
externalEmployeeCode |
String |
Y |
下单人在第三方中唯一编码 |
purpose |
String |
N |
出差事由 |
departureCityList |
List<City> |
N |
出发城市列表 [1] |
arrivalCityList |
List<City> |
N |
到达城市列表 [1] |
cityCtrlLv |
int |
N |
城市管控级别 |
internationalFlight |
bool |
N |
是否国际航班 [2] |
clientList |
List<Client> |
Y |
乘机人列表 [3] |
subsidiary |
Subsidiary |
N |
申请单所属子公司 [4] |
dept |
Department |
N |
申请单所属部门 [4] |
invTitle |
InvoiceTitle |
N |
申请单开票抬头 [4] |
minDepartureDate |
String |
N |
最小去程日期 (yyyy-MM-dd) |
maxDepartureDate |
String |
N |
最大去程日期 (yyyy-MM-dd) |
minReturnDate |
String |
N |
最小返程日期 (yyyy-MM-dd) |
maxReturnDate |
String |
N |
最大返程日期 (yyyy-MM-dd) |
dateCtrlLv |
int |
N |
日期管控级别 |
tripType |
String |
N |
行程类型 |
approvalAmount |
BigDecimal |
N |
申请单总额度 |
pricePerTicket |
BigDecimal |
N |
申请单机票单价 |
approvalCurrency |
String |
N |
币种,默认 CNY |
amountCtrlLv |
int |
N |
金额管控级别 |
amountCtrlType |
int |
[5] |
金额管控类型 |
discount |
int |
Y |
百分比折扣 (范围0-100的整数,比如75%,此字段值为75) |
discountCtrlLv |
int |
N |
折扣管控级别 |
topNLowestPrice |
int |
N |
前 N 低价 [6] |
topNLowestTimeRange |
int |
N |
前 N 低价时间范围 [6] |
topNLowestCtrlLv |
int |
N |
前 N 低价管控级别 |
dateAmountCtrlLv |
int |
N |
预订时间最低价管控级别 |
cabinType |
String |
N |
舱位类型 |
cabinCtrlLv |
int |
N |
舱位管控级别 |
orderIADays |
int |
N |
提前预定天数 [7] |
orderIADaysCtrlLv |
int |
N |
提前预订天数管控级别 |
approvers |
List<Approver> |
N |
超标审批人列表 |
costCenterList |
List<CostCenter> |
N |
成本中心列表 |
custField1 |
String |
[8] |
自定义字段1 |
custField2 |
String |
[8] |
自定义字段2 |
custField3 |
String |
[8] |
自定义字段3 |
custField4 |
String |
[8] |
自定义字段4 |
custField5 |
String |
[8] |
自定义字段5 |
custField6 |
String |
[8] |
自定义字段6 |
custField7 |
String |
[8] |
自定义字段7 |
custField8 |
String |
[8] |
自定义字段8 |
[info] 说明:
[1] 关于出发城市与到达城市列表,TMC只需要确保用户预订机票的出发城市属于给出的出发城市列表,到达城市属于到达城市列表即可。
[2] 如果出发城市与目的城市列表中包括国际城市,该字段为true。
[3] 如果该列表为空时,只允许为自己预订。
[4] 如果子公司,部门和开票抬头没有传时,TMC使用员工的默认子公司,部门和开票抬头。
[5] 当金额管控明确表示管控(强管控或弱管控),该字段为必填。
[6] 员工能预订出发时间区间的前N低价机票低价时间范围(单位:小时)表示:员工预订机票出发时间前后N小时,最低价的。
[7] 该字段表示,员工预订机票需要在这个表示的天数前预订。
[8] 企业可能会有多个自定义字段,最多有8个。该字段需要提前固定含义,若要使用该字段,请先和每刻沟通。
行程类型
舱位类型
code |
定义 |
S |
超级经济舱 |
Y |
经济舱 |
C |
商务舱 |
F |
头等舱 |
金额管控类型
code |
定义 |
描述 |
1 |
单价管控 |
机票折后价格不大于 pricePerTicket |
2 |
总价管控 |
该申请单的所有订单金额之和不能超过 approvalAmount |
响应结构
字段 |
类型 |
必填 |
描述 |
success |
bool |
Y |
请求是否成功 |
errorMessage |
String |
N |
失败信息(当 success 为 false 时,失败信息为必填) |
data |
ExternalApproval |
N |
关联申请单 |
ExternalApproval
目的是关联第三方系统中的申请单号,接下来所有使用到申请单号的地方,都将使用第三方提供的申请单号,即 externalApprovalNo
字段 |
类型 |
必填 |
描述 |
approvalNo |
String |
Y |
每刻的申请单号 |
externalApprovalNo |
String |
Y |
第三方系统中申请单的唯一标识 [11] |
[info] 说明:
[11] 如果第三方不生成新的申请单号,使用每刻提供的 approvalNo,则按照 externalApprovalNo == approvalNo 返回。
示例
[warning] 重要:
示例维护并非和文档字段维护一样频繁,如果遇到示例和文档不一致,请以文档为准
请求头:
{
"tokenId": "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJtYXljdXJfand0X2Rldl9pZCIsInN1YiI6IlBGMjAwNjIwMTI1NU5GTk8iLCJpYXQiOjE2MDQ2MzA5NjYsImF1ZCI6IlBMQVRGT1JNIiwiZXhwIjoxNjA0NjM0NTY2LCJwcm9kdWN0TGluZSI6IkRBVEFfSFVCIn0.AyNIwPtGUXxFMuHO8Bx-4XeXNyWYRcot40MfsL1swr4"
}
请求示例:
{
"approvalNo": "AE2007091BAZ2FWG",
"formCode": "PC96136422941",
"formBizCode": "ABC2406B01",
"originalApprovalNo": null,
"externalCorpCode": "0123456",
"externalEmployeeCode": "f715c1xxx",
"purpose": "青岛歌剧院探访 & 沟通",
"cityCtrlLv": 1,
"clientList": [
{
"name": "xxx",
"externalEmployeeCode": "f715c1xxx",
"phone": "139xxxxxxxx"
}
],
"dateCtrlLv": 1,
"approvalAmount": 1500.0000,
"approvalCurrency": "CNY",
"amountCtrlLv": 0,
"amountCtrlType": 2,
"orderIADays": 0,
"orderIADaysCtrlLv": 0,
"costCenterList": [
{
"costCenterName": "天津总部-芭蕾舞部",
"sequence": 1
}
],
"plusDaysAhead": 1,
"plusDaysLater": 1,
"subsidiary": {
"subsidiaryCode": "SIxxxxxxxxxxxxxxx",
"subsidiaryName": "天津歌剧营销有限公司",
"isDefault": false
},
"dept": {
"departmentCode": "DHDI42803480284",
"departmentName": "芭蕾编舞推广事业组",
"departmentHeirCode": "DHDI12341433214.DHDI123132154234152.DHDI12342143245432.DHDI7890452797592.DHDI42803480284",
"departmentHeirName": "天津歌剧有限公司/天津歌剧营销有限公司/芭蕾舞部/芭蕾编舞事业部/芭蕾编舞推广事业组"
},
"invTitle": {
"invoiceTitleCode": "SIyyyyyyyyyyyyyyyy",
"invoiceTitleName": "天津歌剧营销有限公司",
"taxNo": "913112334234236867687686674423N",
"isDefault": true
},
"minDepartureDate": "2024-06-16",
"maxDepartureDate": "2024-06-20",
"minReturnDate": "2024-06-16",
"maxReturnDate": "2024-06-20",
"tripType": "R",
"departureCityList": [
{
"code": "CT310000",
"name": "上海",
"adminDivCode": "310000",
"heirCode": "CHN001/CT310000",
"heirName": "中国/上海"
}
],
"arrivalCityList": [
{
"code": "CT370200",
"name": "青岛",
"adminDivCode": "370200",
"heirCode": "CHN001/P370000/CT370200",
"heirName": "中国/山东/青岛"
}
],
"internationalFlight": false,
"discount": 100,
"discountCtrlLv": 0,
"topNLowestPrice": 0,
"topNLowestTimeRange": 0,
"topNLowestCtrlLv": 0,
"dateAmountCtrlLv": 0,
"cabinType": "Y",
"cabinCtrlLv": 0
}
响应示例:
{
"success": true,
"errorMessage": null,
"data": {
"approvalNo": "AE2007091BAZ2FWG",
"externalApprovalNo": "xxxx"
}
}