---
# System prepended metadata

title: 接送服務新增 api
tags: [接送服務]

---

# 接送服務新增 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"
    }
```