chore: 首次簽入 Thinkyu ASP.NET 專案

- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
2026-09-10 09:42:37 +08:00
commit 577060bc78
2496 changed files with 501389 additions and 0 deletions
+233
View File
@@ -0,0 +1,233 @@
# 領據資料作業
## 前端程式碼:
* 使用 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<int> 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 檔,儲存起來就可以了
### 匯入與匯出:
* 待補充