17 KiB
17 KiB
領據資料作業
前端程式碼:
- 使用 Vue.js 實現動態資料綁定與操作。
- 不使用 Server control
- script 部分分離出來放置到 Scripts 目錄
- 使用現代寫法,不要管 IE 相容性
- 比照 付款設定.ascx 以及 付款設定.js 的作法
後端程式碼:
- 使用 WebService 實現非同步資料交換。
- 提供 API 端點處理領據、勞務費、差旅費資料的新增、修改、刪除、作廢、列印等需求。
主畫面檔:~/Forms/領據系統/領據資料作業.aspx
子畫面檔
- Tab、MultiView、View 以及 User Control 已經放好了:
- 查詢: ~/Forms/領據系統/領據查詢.ascx
- 領據登錄與修改:~/Forms/領據系統/領據處理.ascx
- 列印: ~/Forms/領據系統/領據列印.ascx
- 匯入與匯出: ~/Forms/領據系統/領據匯出匯入.ascx
寫碼規範
* 把 script 部分分開寫在 Scripts 目錄
* 使用現代寫法,不要管 IE 相容性
* 比照 付款設定.ascx 以及 付款設定.js 的作法
資料存取類別
Education.DAC_領據
- 既有程式
- 分為兩個檔案 ~/DAC/領據系統/DAC_領據1.cs 和 ~/DAC/領據系統/DAC_領據2.cs
- 若需要擴充,加在結尾 2.cs 裡
- DAC_領據:資料處理類別
- 分頁查詢資料:public 領據List SelectPage(bool noInputReturnAll, int startRowIndex, int maximumRows, DateTime? 活動日期_1, DateTime? 活動日期_2, string 身分別, string 講師_非講師編號, string 憑證類別, string 計畫代號, string 計畫名稱, string 活動類別, string 付款方式, string orderBy = "")
- 查詢筆數: public int SelectCount(bool noInputReturnAll, DateTime? 活動日期_1, DateTime? 活動日期_2, string 身分別, string 講師_非講師編號, string 憑證類別, string 計畫代號, string 計畫名稱, string 活動類別, string 付款方式, string orderBy = "")
- 新增: public 領據Item InsertOne(領據Item value)
- 修改: public 領據Item UpdateOne(領據Item value)
- 刪除: public int DeleteOne(string 編號, int DB_APPNO)
- 領據List:資料集類別
- 領據Item:資料項目類別
Education.DAC_勞務費
- 既有程式
- 分為兩個檔案 ~/DAC/領據系統/DAC_勞務費1.cs 和 ~/DAC/領據系統/DAC_勞務費2.cs
- 若需要擴充,加在結尾 2.cs 裡
- DAC_勞務費:資料處理類別
- 查詢:SelectOne(string 領據編號)
- 新增:InsertOne(勞務費Item value)
- 修改:UpdateOne(勞務費Item value)
- 刪除:DeleteOne(string 領據編號, int DB_APPNO)
Education.DAC_差旅費
- 既有程式
- 分為兩個檔案 ~/DAC/領據系統/DAC_差旅費1.cs 和 ~/DAC/領據系統/DAC_差旅費2.cs
- 若需要擴充,加在結尾 2.cs 裡
- DAC_差旅費:資料處理類別
- 查詢:SelectOne(string 領據編號)
- 新增:InsertOne(差旅費Item value)
- 修改:UpdateOne(差旅費Item value)
- 刪除:DeleteOne(string 領據編號, int DB_APPNO)
資料關聯
* 1 領據 (編號) <-----> 0-1 勞務費 (領據編號)
* 1 領據 (編號) <-----> 0-1 差旅費 (領據編號)
WebService 端點
領據資料:Services/領據處理.asmx
-
EnableSession(True)
-
SelectPage(int pageIndex, int pageSize, DateTime? 活動日期_1, DateTime? 活動日期_2, string 身分別, string 講師_非講師編號, string 憑證類別, string 計畫代號, string 計畫名稱, string 活動類別, string 付款方式, string orderBy = "")
-
pageIndex 從 1 開始
-
pageSize 預設 20
-
查詢 function 用 DAC_領據.SelectPage
-
筆數 function 用 DAC_領據.SelectCount bool noInputReturnAll (固定傳 true) int startRowIndex (分頁起點) int maximumRows (分頁大小)
-
空白條件視為不限制(noInputReturnAll = true)
-
回傳:ServiceResponse(Success, Message, Data: 領據List, TotalCount: 總筆數 )
-
-
Save(bool isNew, 領據Item mainItem, 勞務費Item laborItem, 差旅費Item travelItem):存檔
- isNew:是否為新增
- mainItem:新增或更正的領據資料
- laborItem:新增或更正的勞務費資料
- travelItem:新增或更正的差旅費資料
- 新增呼叫 DAC_領據.InsertOne(領據Item value)
- 修改呼叫 DAC_領據.UpdateOne(領據Item value)
- 回傳:ServiceResponse(Success, Message)
-
Delete(string no):刪除領據
- no:要刪除的領據編號
- 呼叫 DAC_領據.DeleteOne(string 編號, int DB_APPNO)
- 一併刪除關聯的勞務費與差旅費資料
- 回傳:ServiceResponse(Success, Message)
-
Void(string no):作廢/取消作廢領據
- no:要作廢/取消作廢的領據編號
- 呼叫 DAC_領據.UpdateOne(領據Item value) 只修改作廢欄位 1=作廢 0=未作廢
- 回傳:ServiceResponse(Success, Message)
-
CalcTax(int laborFee, string category):計算稅額
- 輸入勞務費計算稅額
- 執行業務 (category 是 9A, 9B 開頭) laborFee >= 20000:laborFee * 10% 四捨五入至整數
- 薪資 (category 是 50) laborFee >= 88501:laborFee * 5% 四捨五入至整數
-
Print(List iDList): 列印領據
- 一張一張的列印領據
- 領據列印有兩個單據:勞務費和差旅費
- 先實作取資料以及跑迴圈部分,列印的實作先留空,我後續補充
- 若有勞務費,且勞務費的編號是空的,要給勞務費自動編號,詳情我自己寫,你加個 TODO 就好
- 若有差旅費,且差旅費的編號是空的,要給差旅費自動編號,詳情我自己寫,你加個 TODO 就好
- 如同火車票價匯出一樣返回一個 Excel 檔
火車票價:Services/火車票價.asmx
- EnableSession(True)
- 車站自動完成搜尋:SelectStation(string key)
- 查詢呼叫 DAC_火車票價.查詢車站(key)
- 回傳:ServiceResponse(Success, Message, Data: 查詢結果)
- 計算票價:SelectFare(起點, 訖點)
- 查詢呼叫 DAC_火車票價.查詢票價(起點, 訖點)
- 回傳:ServiceResponse(Success, Message, Data: 票價)
畫面排列:
查詢:
- 上方:搜尋列
-
查詢條件
編號 顯示名稱 查詢參數 輸入元件 下拉資料來源 1 計畫代號 計畫代號 文字 2 計畫名稱 計畫名稱 文字 3 活動日期(起) 活動日期_1 日期 4 活動日期(迄) 活動日期_2 日期 5 身分別 身分別 下拉 Education.身分別.SearchSelectList 6 憑證類別 憑證類別 下拉 Education.憑證類別.SearchSelectList 7 活動類別 活動類別 文字 8 付款方式 付款方式 下拉 Education.付款方式.SearchSelectList -
操作按鈕
- 查詢
- 列印領據
- 製作勾選項目的領據單據
- 作廢
- 作廢 / 取消作廢勾選項目
- 領據登錄
- 新增領據,跳至 "領據登錄與修改" 分頁標籤
-
- 下方:搜尋結果列表
- 分頁大小選項 10, 20, 30 / 預設 20
- 標題一律水平齊中
- 顯示欄位
編號 表頭文字 資料欄位 輸入元件 格式化 水平對齊 1 操作 勾選 中 2 計畫代號 計畫代號 中 3 活動日期 活動日期 中 4 領款人姓名 領款人姓名 中 5 身分證字號 身分證字號 中 6 憑證類別 憑證類別 中 7 活動類別 活動類別 中 8 活動名稱事由 活動名稱事由 左 9 費用別 費用別 中 10 單價 單價 右 11 數量 數量 右 12 單位 單位 右 13 扣繳類別 扣繳類別 中 14 勞務費合計金額 勞務費合計金額 右 15 應扣繳稅額 應扣繳稅額 右 16 服務費 服務費 右 17 差旅費合計金額 差旅費合計金額 右 18 付款金額 付款金額 右 19 製單人員 製單人員 中 20 作廢紀錄 作廢 1=是 0=否 中 21 列印次數 列印次數 中
領據登錄與修改:
* 從上到下分三個區塊
* 領據
| 編號 | 顯示名稱 | 資料欄位 | 輸入元件 | 必要 | 唯讀 | 最大長度 | 下拉資料來源 | 自動帶入 / 自動完成 |
|---|---|---|---|---|---|---|---|---|
| 1 | 表單編號 | 表單編號 | 文字 | 是 | 自動編號,細節我來處理 | |||
| 2 | 活動日期 | 活動日期 | 日期 | |||||
| 3 | 身分別 | 身分別 | 下拉 | 是 | ||||
| 4 | 領款人姓名 | 領款人姓名 | 文字 | 是 | ||||
| 5 | 身分證字號 | 身分證字號 | 文字 | 領款人姓名自動完成帶出 | ||||
| 6 | 憑證類別 | 憑證類別 | 下拉 | Education.憑證類別.SearchSelectList | ||||
| 7 | 計畫代號 | 計畫代號 | 文字 | 是 | ||||
| 8 | 計畫名稱 | 計畫名稱 | 文字 | 是 | ||||
| 9 | 活動地點 | 活動地點 | 文字 | |||||
| 10 | 活動類別 | 活動類別 | 文字 | |||||
| 11 | 活動名稱/事由 | 活動名稱事由 | 文字 | |||||
| 12 | 製單人員 | DB_CRUSR | 文字 | CurrentUserId | ||||
| 13 | 付款方式 | 付款方式 | 下拉 | Education.付款方式.SearchSelectList |
* 勞務費
| 編號 | 顯示名稱 | 資料欄位 | 輸入元件 | 必要 | 唯讀 | 最大長度 | 下拉資料來源 | 計算 |
|---|---|---|---|---|---|---|---|---|
| 1 | 費用別 | 費用別 | 下拉 | 否 | Education.勞務費_費用別.SearchSelectList | |||
| 2 | 單價 | 單價 | 數字 | 否 | ||||
| 3 | 數量 | 數量 | 數字 | 否 | ||||
| 4 | 單位 | 單位 | 文字 | 否 | ||||
| 5 | 扣繳類別 | 扣繳類別 | 下拉 | 否 | Education.扣繳類別.SearchSelectList | |||
| 6 | 合計金額 | 合計金額 | 數字 | 否 | 是 | 單價 * 數量 | ||
| 7 | 應扣繳稅額 | 應扣繳稅額 | 數字 | 否 | Services/領據處理.asmx/CalcTax (laborFee=合計金額, category=扣繳類別) | |||
| 8 | 服務費 | 服務費 | 數字 | 否 |
* 差旅費
| 編號 | 顯示名稱 | 資料欄位 | 輸入元件 | 必要 | 唯讀 | 最大長度 | 資料來源 | 計算 |
|---|---|---|---|---|---|---|---|---|
| 1 | 費用別 | 費用別 | 下拉 | Education.差旅費_費用別.SearchSelectList | ||||
| 2 | 起點 | 起點 | 自動完成 | Services/火車票價.asmx/SelectStation | ||||
| 3 | 訖點 | 訖點 | 自動完成 | Services/火車票價.asmx/SelectStation | ||||
| 4 | 捷運/公車 | 捷運公車 | 數字 | |||||
| 5 | 火車 | 火車 | 數字 | Services/火車票價.asmx/SelectFare(起點, 訖點) | ||||
| 6 | 計程車 | 計程車 | 數字 | |||||
| 7 | 高鐵/飛機 | 高鐵飛機 | 數字 | |||||
| 8 | 自行開車 | 自行開車 | 數字 | |||||
| 9 | 過路費/停車費 | 過路費停車費 | 數字 | |||||
| 10 | 住宿費 | 住宿費 | 數字 | |||||
| 11 | 合計金額 | 合計 | 純顯示 | 是 | 捷運公車+火車+計程車+高鐵飛機+自行開車+過路費停車費+住宿費 |
列印:
將勾選的領據編號發送到後端 Print 方法,會如同匯出那樣回傳一個 Excel 檔,儲存起來就可以了
匯入與匯出:
* 待補充