4.6 KiB
4.6 KiB
扣繳明細及寄發通知 - 實現指南
概述
此文檔說明如何完成 "扣繳明細及寄發通知" 功能的後端實現。前端 UI 與基本服務框架已完成,需要實現核心的業務邏輯。
已實現的部分
1. 前端 (ASPX + Vue.js)
-
✅ Tab 1 UI 布局完整,包括:
- 查詢條件輸入欄位
- 查詢結果表格(支持展開/收合明細)
- 郵件設定區塊
- 郵件預覽與發送功能
-
✅ JavaScript 邏輯框架:
loadDetailTableDropdowns()- 加載下拉清單searchDetailTable()- 查詢資料exportDetailTable()- 匯出 ExcelpreviewEmail()- 預覽郵件sendEmail()- 發送郵件toggleSelectAll()- 全選/反選
2. 後端服務基框架 (Services/領據處理.asmx.cs)
已新增三個服務方法,框架完整但需實現 SQL 邏輯:
SearchDetailTable()- 扣繳明細查詢與匯出SendEmail()- 郵件發送與預覽GetDropdownLists()- 已存在,返回下拉清單
需要實現的部分
1. SearchDetailTable 方法 (Services/領據處理.asmx.cs)
位置: 約 900 行
任務:
- 根據查詢條件查詢扣繳明細資料
- 支持 DATA(回傳資料)和 EXPORT(匯出 Excel)兩種模式
返回資料結構(DATA 模式):
List<dynamic> 或 DataTable
{
編號 (或 ID/no) - 用於郵件發送時識別收件者
領款人姓名
身分證字號
戶籍地址
扣繳類別
合計金額
應扣繳稅額
服務費
已發送 (boolean) - 判斷是否已發送過郵件
明細 - List<dynamic> 或 nested DataTable
{
計畫代號
活動日期
活動名稱
扣繳類別
金額 (講師/勞務費)
應扣繳稅額
服務費
}
}
實現建議:
- 使用 DAC_領據 與相關 DAC 類別查詢
- 按日期與身分別條件篩選
- 使用講師非講師編號進行分組
- 對於 EXPORT 模式,可建立新的 Report 類別或使用現有的 Excel 工具
2. SendEmail 方法 (Services/領據處理.asmx.cs)
位置: 約 950 行
任務:
- PREVIEW 模式:組織郵件預覽資料
- SENDMAIL 模式:實際發送郵件
實現建議:
- PREVIEW 模式:返回將發送的郵件預覽,供確認
- SENDMAIL 模式:
- 遍歷
講師非講師編號列表 - 根據編號查詢收件者郵箱地址
- 使用 .NET 的 SmtpClient 或郵件服務發送
- 記錄發送時間至資料庫(更新「已發送」欄位)
- 返回成功/失敗統計
- 遍歷
注意:
- 需要配置 SMTP 服務設定(郵件伺服器、帳號密碼等)
- 考慮錯誤處理:單個郵件失敗不應中斷整個流程
- 建議記錄郵件發送日誌
3. 資料庫相關
需要確認:
- 講師/非講師資料表中是否有郵箱欄位
- 是否有「郵件發送記錄」表來追蹤已發送狀態
- 領據資料表的結構與關聯
4. DAC 擴展(如需要)
可能需要新增方法:
DAC_領據.SelectDetailByDate()- 按日期範圍查詢明細- 郵件發送記錄相關的 DAC 操作
- 收件者郵箱查詢方法
前端資料綁定說明
ASPX 欄位映射
查詢結果表格預期從後端接收以下欄位:
| 前端顯示 | 資料欄位 | 說明 |
|---|---|---|
| 要發送勾選 | item.selected | Vue.js 雙向綁定 |
| 已發送 | item.已發送 | boolean |
| 領款人姓名 | item.領款人姓名 | string |
| 身分證字號 | item.身分證字號 | string |
| 戶籍地址 | item.戶籍地址 | string |
| 扣繳類別 | item.扣繳類別 | string |
| 合計金額 | item.合計金額 | decimal |
| 應扣繳稅額 | item.應扣繳稅額 | decimal |
| 服務費 | item.服務費 | decimal |
| 明細展開 | item.showDetail | Vue.js 控制 |
| 明細列表 | item.明細 | List |
編號欄位處理
JavaScript 代碼支持多種 ID 欄位名稱:
item.ID || item.編號 || item.no
選擇一個作為主要欄位即可
測試檢查清單
- GetDropdownLists 能正確返回身分別與憑證類別
- SearchDetailTable(DATA) 返回結構化的查詢結果
- SearchDetailTable(EXPORT) 能成功匯出 Excel
- SendEmail(PREVIEW) 能正確組織郵件預覽資料
- SendEmail(SENDMAIL) 能正確發送郵件
- 郵件發送後,已發送欄位應更新為是
相關檔案
- 前端:
Forms\領據系統\財稅作業與領據關帳.aspx - JavaScript:
Scripts\財稅作業與領據關帳.js - 後端服務:
Services\領據處理.asmx.cs - 資料存取:
DAC\領據系統\DAC_領據2.cs - 文件:
DOC\扣繳明細及寄發通知.md