chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore - 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
@@ -0,0 +1,151 @@
|
||||
# 扣繳明細及寄發通知 - 實現指南
|
||||
|
||||
## 概述
|
||||
此文檔說明如何完成 "扣繳明細及寄發通知" 功能的後端實現。前端 UI 與基本服務框架已完成,需要實現核心的業務邏輯。
|
||||
|
||||
## 已實現的部分
|
||||
|
||||
### 1. 前端 (ASPX + Vue.js)
|
||||
- ✅ Tab 1 UI 布局完整,包括:
|
||||
- 查詢條件輸入欄位
|
||||
- 查詢結果表格(支持展開/收合明細)
|
||||
- 郵件設定區塊
|
||||
- 郵件預覽與發送功能
|
||||
|
||||
- ✅ JavaScript 邏輯框架:
|
||||
- `loadDetailTableDropdowns()` - 加載下拉清單
|
||||
- `searchDetailTable()` - 查詢資料
|
||||
- `exportDetailTable()` - 匯出 Excel
|
||||
- `previewEmail()` - 預覽郵件
|
||||
- `sendEmail()` - 發送郵件
|
||||
- `toggleSelectAll()` - 全選/反選
|
||||
|
||||
### 2. 後端服務基框架 (Services/領據處理.asmx.cs)
|
||||
已新增三個服務方法,框架完整但需實現 SQL 邏輯:
|
||||
- `SearchDetailTable()` - 扣繳明細查詢與匯出
|
||||
- `SendEmail()` - 郵件發送與預覽
|
||||
- `GetDropdownLists()` - 已存在,返回下拉清單
|
||||
|
||||
## 需要實現的部分
|
||||
|
||||
### 1. SearchDetailTable 方法 (Services/領據處理.asmx.cs)
|
||||
|
||||
**位置**: 約 900 行
|
||||
|
||||
**任務**:
|
||||
- 根據查詢條件查詢扣繳明細資料
|
||||
- 支持 DATA(回傳資料)和 EXPORT(匯出 Excel)兩種模式
|
||||
|
||||
**返回資料結構**(DATA 模式):
|
||||
```csharp
|
||||
List<dynamic> 或 DataTable
|
||||
{
|
||||
編號 (或 ID/no) - 用於郵件發送時識別收件者
|
||||
領款人姓名
|
||||
身分證字號
|
||||
戶籍地址
|
||||
扣繳類別
|
||||
合計金額
|
||||
應扣繳稅額
|
||||
服務費
|
||||
已發送 (boolean) - 判斷是否已發送過郵件
|
||||
明細 - List<dynamic> 或 nested DataTable
|
||||
{
|
||||
計畫代號
|
||||
活動日期
|
||||
活動名稱
|
||||
扣繳類別
|
||||
金額 (講師/勞務費)
|
||||
應扣繳稅額
|
||||
服務費
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**實現建議**:
|
||||
1. 使用 DAC_領據 與相關 DAC 類別查詢
|
||||
2. 按日期與身分別條件篩選
|
||||
3. 使用講師非講師編號進行分組
|
||||
4. 對於 EXPORT 模式,可建立新的 Report 類別或使用現有的 Excel 工具
|
||||
|
||||
### 2. SendEmail 方法 (Services/領據處理.asmx.cs)
|
||||
|
||||
**位置**: 約 950 行
|
||||
|
||||
**任務**:
|
||||
- PREVIEW 模式:組織郵件預覽資料
|
||||
- SENDMAIL 模式:實際發送郵件
|
||||
|
||||
**實現建議**:
|
||||
1. PREVIEW 模式:返回將發送的郵件預覽,供確認
|
||||
2. 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<dynamic> |
|
||||
|
||||
## 編號欄位處理
|
||||
|
||||
JavaScript 代碼支持多種 ID 欄位名稱:
|
||||
```javascript
|
||||
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`
|
||||
Reference in New Issue
Block a user