# DOCS

## files
D:\dev\ez\17168erp\git_gitea\web\admin\activity\index.aspx.cs
D:\dev\ez\17168erp\git_gitea\web\admin\follower\index.aspx.cs
D:\dev\ez\17168erp\git_gitea\web\admin\follower\reg.aspx.cs
D:\dev\ez\17168erp\git_gitea\web\admin\order\index.aspx.cs
D:\dev\ez\17168erp\git_gitea\web\admin\order\reg.aspx.cs
D:\dev\ez\17168erp\git_gitea\web\admin\accounting\kind_reg.aspx.cs
D:\dev\ez\17168erp\git_gitea\web\admin\accounting\kind_reg2.aspx.cs
D:\dev\ez\17168erp\git_gitea\web\admin\accounting\index.aspx.cs
D:\dev\ez\17168erp\git_gitea\web\admin\accounting\news_reg.aspx.cs

D:\dev\ez\17168erp\git_gitea\web\App_Code\api\orderController.cs

## DESC

### 檔案主要功能說明

1. `activity/index.aspx.cs`：活動管理系統主頁，負責活動分類建立、管理及活動資料匯出Excel。
2. `follower/index.aspx.cs`：信眾管理系統主頁，負責信眾資料查詢、管理及匯出。
3. `order/index.aspx.cs`、`order/reg.aspx.cs`：訂單管理系統，負責訂單查詢與登記。
4. `accounting/index.aspx.cs`：會計系統主頁。
5. `accounting/kind_reg.aspx.cs`、`kind_reg2.aspx.cs`：會計科目分類登記。
6. `accounting/news_reg.aspx.cs`：會計相關新聞或公告登記。

系統採用 ASP.NET Web Forms 與 Entity Framework，涵蓋信眾、活動、訂單、會計等模組。

---

### 訂單收款記錄管理作業流程

1. 使用者點擊「收款紀錄」按鈕，開啟對話框並呼叫 `payOrderList2()` 載入資料。
2. 前端檢查訂單編號與明細編號，設定分頁參數，呼叫API取得收款記錄。
3. 後端API接收查詢條件，查詢 `pro_order_record`，回傳付款日期、方式、金額、機構、銀行代碼等資訊。
4. 前端以Vuetify資料表格顯示收款記錄，支援搜尋、分頁、排序。
5. 支援新增、編輯、刪除收款記錄。
6. 表格排序或分頁設定改變時自動重新載入資料。

用途：追蹤訂單收款狀況、管理多筆收款記錄、查詢與管理介面、支援多種付款方式。

---
# 功能延伸

## 信眾-登錄匯款

### TABLE結構

新增暫存表 `remittance_register_tmp`：

| 欄位名稱          | 型態           | 說明                       |
|------------------|----------------|----------------------------|
| id               | int, PK, AI    | 主鍵，自動編號             |
| activity_id      | int            | 對應法會/活動ID（可選）    |
| name             | nvarchar(50)   | 姓名/暱稱/法號             |
| phone            | nvarchar(30)   | 聯絡電話                   |
| pay_type         | nvarchar(20)   | 付款方式（現金/匯款等）    |
| account_last5    | nvarchar(10)   | 帳號後五碼                 |
| amount           | decimal(12,2)  | 付款金額                   |
| pay_mode         | nvarchar(10)   | 付款型態（個人/共同）      |
| note             | nvarchar(200)  | 備註                       |
| proof_img        | nvarchar(200)  | 憑證圖檔路徑               |
| status           | nvarchar(20)   | 狀態（待核對/已入帳/作廢） |
| create_time      | datetime       | 建立時間                   |
| verify_time      | datetime       | 核對/入帳時間              |
| verify_user      | nvarchar(50)   | 核對人員                   |
| verify_note      | nvarchar(200)  | 核對說明                   |
| recaptcha_token  | nvarchar(200)  | reCAPTCHA驗證（可選）      |

---

### 畫面設計說明

1. 進入方式：法會/活動頁面連結或QRcode進入，可帶入活動ID參數。
2. 表單欄位：姓名（可匿名/暱稱/法號）、電話、付款方式、帳號後5碼、付款金額、付款型態、備註、匯款憑證上傳、reCAPTCHA驗證。
3. 操作流程：填寫表單送出，資料以JSON送API，成功後顯示訊息或QRcode，所有資料進入暫存表，不直接入帳，後台人工核對後正式入帳。
4. 設計重點：手機友善、圖片上傳、送出後明確回饋、不強制檢查資料正確性但利於後續人工核對、加reCAPTCHA防灌單。

---
## 核對入帳資訊

### TABLE結構說明

主表 `remittance_check`，記錄每筆待核對與已核對入帳資料。

| 欄位名稱         | 型態           | 說明                                   |
|------------------|----------------|----------------------------------------|
| id               | int, PK, AI    | 主鍵，自動編號                         |
| tmp_id           | int            | 對應暫存登錄表（remittance_register_tmp）的ID |
| match_signup_id  | int            | 自動或人工比對到的報名信眾ID           |
| match_status     | nvarchar(20)   | 比對狀態（自動/人工/未比對）           |
| pay_type         | nvarchar(20)   | 付款方式（登錄資料）                   |
| account_last5    | nvarchar(10)   | 帳號後五碼（登錄資料）                 |
| amount           | decimal(12,2)  | 付款金額（登錄資料）                   |
| payer_name       | nvarchar(50)   | 付款人/登錄人（登錄資料）              |
| phone            | nvarchar(30)   | 電話（登錄資料）                       |
| proof_img        | nvarchar(200)  | 憑證圖檔路徑                           |
| check_amount     | decimal(12,2)  | 實際入帳金額（出納填寫）                |
| check_date       | datetime       | 入帳日期（出納填寫）                   |
| check_type       | nvarchar(20)   | 入帳方式（出納填寫）                   |
| check_note       | nvarchar(200)  | 入帳備註（出納填寫）                   |
| status           | nvarchar(20)   | 狀態（待核對/已確認/無效/沖帳）         |
| create_time      | datetime       | 建立時間                               |
| update_time      | datetime       | 最後更新時間                           |
| verify_user      | nvarchar(50)   | 核對人員                               |

---

### 畫面設計說明

1. 資料來源與自動比對：左側顯示信眾登錄匯款資訊，系統自動比對報名信眾，結果顯示於DE欄，若失敗可手動選擇。
2. 付款資訊與核對欄位：F~J欄顯示報名者填寫的付款資訊，K~O欄由出納填寫實際入帳資料。
3. 核對狀態管理：O欄標註「確認」或「無效」後，該筆資料完成核對，下次不再顯示，未完成資料持續顯示。
4. 輔助說明與操作提示：下方提供人工核對重點、注意事項、歷史紀錄查詢、憑證比對等輔助說明，支援人工補正、標註特殊狀況。
5. 沖帳與分攤明細：支援沖帳與分攤金額明細管理，方便人工確認。

---

## 個人-沖帳流程

### TABLE結構說明

沖帳結果寫入 `pro_order_record`：

| 欄位名稱         | 型態           | 說明                                   |
|------------------|----------------|----------------------------------------|
| num              | int, PK, AI    | 主鍵，自動編號                         |
| detail_num       | int            | 對應訂單明細（pro_order_detail）的ID   |
| price            | decimal(12,2)  | 沖帳金額                               |
| payment          | int            | 付款方式（對應會計科目細分類ID）       |
| reg_time         | datetime       | 沖帳登記時間                           |
| pay_date         | datetime       | 實際付款日期                           |
| organization     | nvarchar(100)  | 匯款機構/銀行名稱                      |
| bank_code        | nvarchar(20)   | 銀行代碼                               |
| status           | nvarchar(20)   | 狀態（有效/作廢等）                    |
| note             | nvarchar(200)  | 備註                                   |

---

### 畫面設計說明

1. 信眾沖帳清單：左側顯示所有待沖帳信眾及其入帳金額與沖帳狀態，點選信眾後彈出沖帳分配視窗。
2. 彈窗內容：顯示信眾所有有報名但尚未完成繳費的項目清單，可自動分配入帳金額，也可人工調整分攤金額，支援部分繳費、溢繳、未繳等情境，並即時顯示分攤結果。
3. 沖帳操作：可調整每個項目的沖帳金額，總金額需與入帳金額一致才能送出，確認後寫入 `pro_order_record`，完成核銷，沖帳完成後狀態更新避免重複處理。
4. 輔助說明與彈性設計：下方提供沖帳規則、人工調整注意事項、分攤原則等輔助說明，支援查詢歷史沖帳紀錄。

---

# TABLE CREATE SQL
```
-- 信眾-登錄匯款暫存表
CREATE TABLE remittance_register_tmp (
    id INT IDENTITY(1,1) PRIMARY KEY COMMENT '主鍵，自動編號',
    activity_id INT NULL COMMENT '對應法會/活動ID（可選）',
    name NVARCHAR(50) NOT NULL COMMENT '姓名/暱稱/法號',
    phone NVARCHAR(30) NULL COMMENT '聯絡電話',
    pay_type NVARCHAR(20) NOT NULL COMMENT '付款方式（現金/匯款等）',
    account_last5 NVARCHAR(10) NULL COMMENT '帳號後五碼',
    amount DECIMAL(12,2) NOT NULL COMMENT '付款金額',
    pay_mode NVARCHAR(10) NOT NULL COMMENT '付款型態（個人/共同）',
    note NVARCHAR(200) NULL COMMENT '備註',
    proof_img NVARCHAR(200) NULL COMMENT '憑證圖檔路徑',
    status NVARCHAR(20) NOT NULL DEFAULT '待核對' COMMENT '狀態（待核對/已入帳/作廢）',
    create_time DATETIME NOT NULL DEFAULT GETDATE() COMMENT '建立時間',
    verify_time DATETIME NULL COMMENT '核對/入帳時間',
    verify_user NVARCHAR(50) NULL COMMENT '核對人員',
    verify_note NVARCHAR(200) NULL COMMENT '核對說明',
    recaptcha_token NVARCHAR(200) NULL COMMENT 'reCAPTCHA驗證（可選）'
);

-- 入帳核對主表
CREATE TABLE remittance_check (
    id INT IDENTITY(1,1) PRIMARY KEY COMMENT '主鍵，自動編號',
    tmp_id INT NOT NULL COMMENT '對應暫存登錄表（remittance_register_tmp）的ID',
    match_signup_id INT NULL COMMENT '自動或人工比對到的報名信眾ID',
    match_status NVARCHAR(20) NOT NULL DEFAULT '未比對' COMMENT '比對狀態（自動/人工/未比對）',
    pay_type NVARCHAR(20) NOT NULL COMMENT '付款方式（登錄資料）',
    account_last5 NVARCHAR(10) NULL COMMENT '帳號後五碼（登錄資料）',
    amount DECIMAL(12,2) NOT NULL COMMENT '付款金額（登錄資料）',
    payer_name NVARCHAR(50) NULL COMMENT '付款人/登錄人（登錄資料）',
    phone NVARCHAR(30) NULL COMMENT '電話（登錄資料）',
    proof_img NVARCHAR(200) NULL COMMENT '憑證圖檔路徑',
    check_amount DECIMAL(12,2) NULL COMMENT '實際入帳金額（出納填寫）',
    check_date DATETIME NULL COMMENT '入帳日期（出納填寫）',
    check_type NVARCHAR(20) NULL COMMENT '入帳方式（出納填寫）',
    check_note NVARCHAR(200) NULL COMMENT '入帳備註（出納填寫）',
    status NVARCHAR(20) NOT NULL DEFAULT '待核對' COMMENT '狀態（待核對/已確認/無效/沖帳）',
    create_time DATETIME NOT NULL DEFAULT GETDATE() COMMENT '建立時間',
    update_time DATETIME NULL COMMENT '最後更新時間',
    verify_user NVARCHAR(50) NULL COMMENT '核對人員'
);

-- 個人沖帳紀錄表
CREATE TABLE pro_order_record (
    num INT IDENTITY(1,1) PRIMARY KEY COMMENT '主鍵，自動編號',
    detail_num INT NOT NULL COMMENT '對應訂單明細（pro_order_detail）的ID',
    price DECIMAL(12,2) NOT NULL COMMENT '沖帳金額',
    payment INT NOT NULL COMMENT '付款方式（對應會計科目細分類ID）',
    reg_time DATETIME NOT NULL DEFAULT GETDATE() COMMENT '沖帳登記時間',
    pay_date DATETIME NULL COMMENT '實際付款日期',
    organization NVARCHAR(100) NULL COMMENT '匯款機構/銀行名稱',
    bank_code NVARCHAR(20) NULL COMMENT '銀行代碼',
    status NVARCHAR(20) NOT NULL DEFAULT '有效' COMMENT '狀態（有效/作廢等）',
    note NVARCHAR(200) NULL COMMENT '備註'
);
```

# HTML 檔名及路徑規劃

| 功能                 | 建議檔名/路徑                                      | 說明                     |
|----------------------|----------------------------------------------------|--------------------------|
| 信眾-登錄匯款        | `/web/transfer/register.html`                      | 信眾匯款登錄前台         |
| 核對入帳資訊         | `/web/admin/finance/remit_check.html`              | 後台入帳核對作業         |
| 個人-沖帳流程        | `/web/admin/finance/personal_offset.html`          | 後台個人沖帳分攤         |
| 共同-沖帳流程        | `/web/admin/finance/group_offset.html`             | 後台多人/批次沖帳        |
| 訂單收款紀錄         | `/web/admin/order/reg.aspx`                        | 現有訂單收款紀錄         |

前台頁面可用 `.html` 或 `.aspx`，依現有架構調整。後台建議統一於 `/web/admin/finance/` 目錄下，便於管理。API建議集中於 `/web/App_Code/api/`。
