Files
thinkyu/教育訓練系統/Web/DOC/個人費用彙整表_實施指南.md
sryang 577060bc78 chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
2026-09-10 09:42:37 +08:00

155 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 個人費用彙整表 - 實施指南
## 概述
已完成「個人費用彙整表」的前端和框架實施。本文檔說明需要用戶完成的後端邏輯部分。
## 完成的工作
### 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 生成代碼,調整欄寬、字體、顏色等。