# 個人費用彙整表 - 實施指南 ## 概述 已完成「個人費用彙整表」的前端和框架實施。本文檔說明需要用戶完成的後端邏輯部分。 ## 完成的工作 ### 1. 前端 UI (Forms\領據系統\財稅作業與領據關帳.aspx) ✅ **完成內容:** - Tab 0 查詢表單 (起日、迄日、身分別、付款方式) - 查詢/匯出按鈕 - 查詢結果表格 (9 個欄位) - 完整的 CSS 樣式 ### 2. Vue.js 邏輯 (Scripts\財稅作業與領據關帳.js) ✅ **完成內容:** - summaryTable 資料物件初始化 - 下拉清單加載邏輯 (`loadSummaryTableDropdowns`) - 查詢方法 (`searchSummaryTable`) - 匯出方法 (`exportSummaryTable`) - 輔助方法 (`parseDate`, `formatCurrency`, `downloadExcel`) ### 3. WebService 方法簽名 (Services\領據處理.asmx.cs) ✅ **完成內容:** - `SearchSummaryTable` 方法框架 - `個人費用彙整表Item` 資料模型類 ## 需要用戶完成的工作 ### 1. SearchSummaryTable 後端實現 **位置:** `Services\領據處理.asmx.cs` - `SearchSummaryTable` 方法 **需要實現:** ```csharp // 在此處替換 TODO 註解的部分 // 根據查詢參數取得資料: using (var conn = DAC.NewConnection()) { // 你的查詢邏輯應該: // 1. 根據 startDate (起日), endDate (迄日) 篩選日期範圍 // 2. 如果 身分別 有值,篩選身分別 // 3. 如果 付款方式 有值,篩選付款方式 // 4. 返回 List<個人費用彙整表Item> // 查詢應該返回以下欄位: var summaryData = new List<個人費用彙整表Item>(); // TODO: 實現查詢邏輯 // var result = dac.SearchSummaryTable(startDate, endDate, 身分別, 付款方式); // summaryData = result.ToList(); return summaryData; } ``` **輸出欄位 (9 個):** 1. `領款人姓名` (string) - 講師/非講師姓名 2. `身分證字號` (string) 3. `堂數` (string) - 格式:「數量 + 單位」,例如「5堂」 4. `扣繳類別` (string) 5. `帳戶名` (string) 6. `付款金額` (decimal) 7. `匯款帳號` (string) 8. `銀行分行代碼` (string) 9. `銀行分行` (string) **參數:** - `startDate` (DateTime?) - 起日 - `endDate` (DateTime?) - 迄日 - `身分別` (string) - 身分別 (可空) - `付款方式` (string) - 付款方式 (可空) ### 2. Excel 匯出實現 **位置:** `Services\領據處理.asmx.cs` - `SearchSummaryTable` 方法中的 EXPORT 部分 **需要實現:** ```csharp if (輸出方式 == "EXPORT") { // TODO: 實現 Excel 匯出邏輯 // 1. 使用相同的查詢取得 summaryData // 2. 生成 Excel 檔案 (使用 NPOI 或其他庫) // 3. 將 Excel 檔案轉換為 Base64 編碼 // 4. 返回 excelData (Base64) 和 fileName var excelResult = new { excelData = excelBase64String, // Base64 編碼的 Excel 檔案內容 fileName = $"講師個人費用彙整表_{DateTime.Now:yyyyMMdd_HHmmss}.xlsx" }; return ServiceResponse.CreateSuccess("匯出成功", excelResult); } ``` ## 測試檢查清單 - [ ] 在 Visual Studio 中構建項目 (確無編譯錯誤) - [ ] 在瀏覽器中開啟財稅作業與領據關帳頁面 - [ ] 驗證 Tab 0 個人費用彙整表是否顯示正確 - [ ] 驗證下拉清單是否正確加載身分別和付款方式 - [ ] 點擊查詢按鈕,驗證是否呼叫後端 `SearchSummaryTable` 方法 - [ ] 驗證查詢結果表格是否正確顯示 (如有 TODO 實現) - [ ] 點擊匯出按鈕,驗證是否下載 Excel 檔案 (如有 TODO 實現) ## 後續建議 1. **數據庫查詢** - 建立 DAC 類別 `DAC_個人費用彙整` 或在現有 DAC 中添加查詢方法 - 優化 SQL 查詢效能 (考慮分組、合計等) 2. **Excel 匯出** - 建議使用 NPOI 庫生成 Excel - 可參考現有的 `Report.領據列印` 實現方式 3. **數據驗證** - 驗證日期範圍的合理性 - 驗證身分別和付款方式的有效值 4. **錯誤處理** - 新增更詳細的錯誤訊息 - 記錄查詢日誌用於除錯 ## 技術棧 - **前端:** Vue.js 2.x, HTML5, CSS3 - **後端:** ASP.NET (C#), WebService - **資料庫:** SQL Server (假設) - **.NET 版本:** Framework 3.5 ## 支援的瀏覽器 - Chrome (推薦) - Firefox - Edge - Safari ## 常見問題 **Q: 如何修改查詢結果欄位?** A: 修改 `個人費用彙整表Item` 類別的屬性,並更新前端表格 HTML。 **Q: 如何添加更多查詢條件?** A: 1. 在 ASPX 中添加新的表單控制項 2. 在 Vue data 中添加新屬性 3. 在 `searchSummaryTable` 方法中傳遞新參數 4. 在後端 `SearchSummaryTable` 方法中處理新參數 **Q: 如何修改 Excel 匯出格式?** A: 在 EXPORT 邏輯中自訂 Excel 生成代碼,調整欄寬、字體、顏色等。