# 接送服務新增 api
###### tags: `接送服務`
* 前端
- [x] ci_ser 若是從住客畫面開啟的話,自動帶入且不可修改,
- [x] 從多筆開啟新增畫面,需要先選ci_ser,才可修改
- [x] 將旅客帳狀態房號、訂房卡號、入住日期、退房日期預設帶入,唯讀不可修改
- [x] 若傳入參數有資料序號,則多筆資料移至該資料序號,並編輯指定資料
- [x] schedule_dat帶預設值(送 為co_dat)(接 判斷住客狀態 已入住預設為滾房租日,未入住為ci_dat)
- [x] atten_nam、tel1_nos、adult_qnt、child_qnt,需從訂房卡上帶預設值
- [x] appraise_amt,需>0,預設0
- [x] ci_ser、schedule_dat、schedule_tim 、pickup_typ 必填
- [x] schedule_dat,要在ci_dat 跟 co_dat之間,且需大於等於滾房租日期
- [x] appraise_ins(是否自動入帳)、appraise_amt(費用),要判斷訂房明細狀態為N,才可勾選及輸入。
- [x] 選擇班次依照 接/送,分別去HFD_ARRIVE_RF(接)/HFD_LEAVE_RF(送),抓資料呈現
- [x] 選擇班次時,若選擇的班次為自動入帳,要判斷是否能自動入帳(訂房明細狀態為N),才可預設勾選
如果不為入帳日期,則不可勾選。
接 不可再退房日期、送 不可再入住日期(此二情況下不可勾選)
- [x] schedule_nos,可以開啟視窗,或是 enter 自動帶入(如果有背起來),帶入班次、時間、地點、是否自動入帳,enter 若無該筆資料,則清空欄位
- [x] 若為服務為(接),則判斷schedule_dat 是否在co_dat,在co_dat則不可勾選自動入帳
- [x] 若ci_dat跟co_dat一樣(day_use),則服務為(接),可以勾選自動入帳,服務為(送)不可
- [x] 若服務為(送),則判斷schedule_dat 是否在ci_dat,在ci_dat則不可勾選自動入帳
- [x] 更改日期後 schedule_dat,判斷有無該班次,有則保留,無則清空
- [x] 更改 pickup_type 後自動帶入日期,且清空 schedule_nos schedule_tim spot
- [x] 在新增時,若後來有再更改ci_ser(住客)時,上述有相關的判斷需要再做一次(注意有lock)
- [x] 指定住客會,lock 該筆住客。
- [x] 畫面上方的grid,利用ci_ser抓取資料,若有資料則呈現
- [ ] 儲存時,當appraise_ins(是否自動入帳)有勾選,若是開啟畫面是從訂房卡開啟的畫面,不用再lock order_mn,否則lock order_mn
做在儲存的時候,如果 自動入帳欄位,有異動,或是其值為Y,都要 lock order_dt。
- [x] 在新增畫面上按批次新增,一定要先存檔。
- [x] 批次新增欄位規則 開始日結束日
自己新增規則
1.開啟畫面後,帶入預設值為 schedule_dat +一天(但不能大於 co_dat),且開始介於 schedule_dat 與co_dat之間
2.結束日,不可大於開始日期。
- [ ] 以下任一條件成立則不可執行新增、批次新增
1. 訂房卡明細狀態不為N:正常、I:今日到達、O:已到或C:退房(C有額外處理)
2. 訂房卡明細狀態為C:退房,且退房日小於滾房租日co_dat < rent_dat
- [ ] 訂房卡明細狀態為C:退房,且為退房日當天作業(退房日等於滾房租日),可執行新增、批次新增
- [x] 新增api若成功後端會回傳key_nos,利用key_nos重load,讓上方的grid可以被選取
- [x] 若從訂房明細住客tabpage 開啟,需要多待 pageFrom & tmpOrderAppraise_key_nos 兩個參數。
* 後端
- [x] 檢查pickup_typ,只能為A跟L
- [x] appraise_amt,需>0
- [x] schedule_dat,要在ci_dat 跟 co_dat之間,且需大於等於滾房租日期
- [x] appraise_ins(是否自動入帳)、appraise_amt(費用),旅客帳為入住時且要判斷訂房明細狀態為N,才可輸入
- [x] 檢查 ci_ser 是否存在
- [x] 以下任一條件成立則不可執行新增、批次新增
1. 訂房卡明細狀態不為N:正常、I:今日到達、O:已到或C:退房(C有額外處理)
2. 訂房卡明細狀態為C:退房,且退房日小於滾房租日co_dat < rent_dat
- [x] 訂房卡明細狀態為C:退房,且為退房日當天作業(退房日等於滾房租日),可執行新增、批次新增
- [x] 若為服務為(接),則判斷schedule_dat 是否在co_dat,在co_dat則不可勾選自動入帳
- [x] 若ci_dat跟co_dat一樣(day_use),則服務為(接),可以勾選自動入帳,服務為(送)不可勾選
- [x] 若為服務為(送),則判斷schedule_dat 是否在ci_dat,在ci_dat則不可勾選自動入帳
- [x] 入資料進pickup_typ
- [x] 回傳前端key_nos
- [x] 若有勾選 自動入帳,更新相對應的service_tr
- [ ] 若從訂房明細住客tabpage,要拿pageFrom & tmpOrderAppraise_key_nos 兩個參數。抓 tmpOrderAppraise 該筆資料,並重算房價。
```json=
{
"prg_id" : "PMS0210081",
"socket_id" : "p6m5HF8u85NACf-0AAAO",
"athena_id" : 25,
"ins_usr" : "cio",
"session_id" : 36729501,
"func_id" : "0200",
"params" : {},
"locale" : "zh_TW",
"trans_log_id" : "20200227185833585",
"mac" : "",
"comp_cod" : "ZZATHENA",
"hotel_cod" : "01",
"server_ip" : "",
"reve_code" : "PMS0210081",
"client_ip" : "",
"upd_usr" : "cio",
"user" : "cio",
"table" : {
"hfd_pickup_dt" : [
{
"pageFrom" : "PMS0110041",//只有訂房明細要傳
"tmpOrderAppraise_key_nos" : 1234,//只有訂房明細要傳
"action_cod" : "C",
"athena_id" : "25",
"hotel_cod" : "01",
"ikey" : "00000557",
"ikey_seq_nos" : "1",
"ci_ser" : "20191104000153",
"pickup_typ" : "L",
"schedule_dat" : "2019/11/04",
"schedule_nos" : "HUN",
"schedule_tim" : "1722",
"spot" : "天空競技場",
"atten_nam" : "小傑",
"tel1_nos" : "0911222333",
"adult_qnt" : "1",
"child_qnt" : "0",
"appraise_ins" : "N",
"appraise_amt" : "0",
"remark1" : "愛的橡膠",
"upd_usr" : "cio",
"ins_usr" : "cio"
}
]
},
"event_time" : "2020-02-27T18:58:31+08:00"
}
```