Files
thinkyu/branches/1150807/DOC/領據資料作業.md
T
sryang 577060bc78 chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
2026-09-10 09:42:37 +08:00

17 KiB
Raw Blame History

領據資料作業

前端程式碼:

  • 使用 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

    • 回傳:ServiceResponseSuccess, 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)
    • 回傳:ServiceResponseSuccess, Message
  • Delete(string no):刪除領據

    • no:要刪除的領據編號
    • 呼叫 DAC_領據.DeleteOne(string 編號, int DB_APPNO)
    • 一併刪除關聯的勞務費與差旅費資料
    • 回傳:ServiceResponseSuccess, Message
  • Void(string no):作廢/取消作廢領據

    • no:要作廢/取消作廢的領據編號
    • 呼叫 DAC_領據.UpdateOne(領據Item value) 只修改作廢欄位 1=作廢 0=未作廢
    • 回傳:ServiceResponseSuccess, Message
  • CalcTax(int laborFee, string category):計算稅額

    • 輸入勞務費計算稅額
    • 執行業務 (category 是 9A, 9B 開頭) laborFee >= 20000laborFee * 10% 四捨五入至整數
    • 薪資 (category 是 50) laborFee >= 88501laborFee * 5% 四捨五入至整數
  • Print(List iDList): 列印領據

    • 一張一張的列印領據
    • 領據列印有兩個單據:勞務費和差旅費
    • 先實作取資料以及跑迴圈部分,列印的實作先留空,我後續補充
    • 若有勞務費,且勞務費的編號是空的,要給勞務費自動編號,詳情我自己寫,你加個 TODO 就好
    • 若有差旅費,且差旅費的編號是空的,要給差旅費自動編號,詳情我自己寫,你加個 TODO 就好
    • 如同火車票價匯出一樣返回一個 Excel 檔

火車票價:Services/火車票價.asmx

  • EnableSession(True)
  • 車站自動完成搜尋:SelectStation(string key)
    • 查詢呼叫 DAC_火車票價.查詢車站(key)
    • 回傳:ServiceResponseSuccess, Message, Data: 查詢結果)
  • 計算票價:SelectFare(起點, 訖點)
    • 查詢呼叫 DAC_火車票價.查詢票價(起點, 訖點)
    • 回傳:ServiceResponseSuccess, 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 檔,儲存起來就可以了

匯入與匯出:

  * 待補充