Files
usher-manage-stack/會計科目比對分析.md
Gbanyan 642b879dd4 Add membership fee system with disability discount and fix document permissions
Features:
- Implement two fee types: entrance fee and annual fee (both NT$1,000)
- Add 50% discount for disability certificate holders
- Add disability certificate upload in member profile
- Integrate disability verification into cashier approval workflow
- Add membership fee settings in system admin

Document permissions:
- Fix hard-coded role logic in Document model
- Use permission-based authorization instead of role checks

Additional features:
- Add announcements, general ledger, and trial balance modules
- Add income management and accounting entries
- Add comprehensive test suite with factories
- Update UI translations to Traditional Chinese

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 09:56:01 +08:00

332 lines
8.1 KiB
Markdown
Raw 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.
# 會計科目比對分析
**分析日期:** 2025-11-30
---
## 一、系統現況
### ✅ 系統已具備會計科目功能
**Model** `App\Models\ChartOfAccount`
**資料表:** `chart_of_accounts` (已建立,但目前為空)
**Seeder** `ChartOfAccountSeeder` (已準備好 56 個科目)
#### 資料表結構:
| 欄位名稱 | 說明 |
|---------|------|
| `account_code` | 科目代碼1101, 4201 |
| `account_name_zh` | 中文科目名稱 |
| `account_name_en` | 英文科目名稱 |
| `account_type` | 科目類型asset/liability/net_asset/income/expense |
| `category` | 科目分類 |
| `parent_account_id` | 父科目ID支援階層結構 |
| `is_active` | 是否啟用 |
| `display_order` | 顯示順序 |
| `description` | 說明 |
#### 支援的科目類型:
1. **asset** - 資產
2. **liability** - 負債
3. **net_asset** - 淨資產/基金
4. **income** - 收入
5. **expense** - 支出
---
## 二、系統預設科目 vs Excel 科目
### 📊 數量對比
| 來源 | 科目數量 | 狀態 |
|------|---------|------|
| **系統 Seeder** | 56 個科目 | ✅ 已定義,待執行 |
| **Excel 檔案** | 44 個科目 | ✅ 已整理 |
### 🔍 詳細比對
#### A. 資產類科目 (1xxx)
**系統預設 (11個)**
- 1101 現金
- 1102 零用金
- 1201 銀行存款
- 1301 應收帳款
- 1302 其他應收款
- 1401 土地
- 1402 房屋及建築
- 1403 機器設備
- 1404 辦公設備
- 1405 電腦設備
- 1501 存出保證金
**Excel (1000系列)**
- 1000 現金及約當現金
- 1100 庫存現金
- 1101 銀行存款 ✅ 相符
- 1107 其他現金等價物
**差異:**
- ⚠️ Excel 使用更寬泛的「1000現金及約當現金」作為大類
- 系統有更細分的固定資產科目(土地、房屋等)
- 協會目前可能不需要那麼多固定資產科目
#### B. 收入類科目 (4xxx)
**系統預設 (10個)**
- 4101 會費收入 ✅
- 4102 入會費收入 ✅
- 4201 捐贈收入 ✅
- 4202 企業捐贈收入
- 4301 政府補助收入
- 4302 計畫補助收入
- 4401 利息收入
- 4402 活動報名費收入
- 4901 雜項收入
**Excel (4000系列)**
- 4100 一般捐款收入 ≈ 4201 捐贈收入
- 4310 入會費 ≈ 4102 入會費收入
**對應關係:**
| Excel | 系統 | 說明 |
|-------|------|------|
| 4100 | 4201 | 捐款收入(編號不同) |
| 4310 | 4102 | 入會費(編號不同) |
**差異:**
- ⚠️ 科目編號不完全相同
- 系統有更細分的收入來源分類
- Excel 較精簡
#### C. 支出類科目 (5xxx)
**系統預設 (35個非常詳細)**
**人事費 (5101-5105)**
- 5101 薪資支出
- 5102 勞健保費
- 5103 退休金提撥
- 5104 加班費
- 5105 員工福利
**業務費 (5201-5215)**
- 5201 租金支出
- 5202 水電費
- 5203 郵電費
- 5204 文具用品
- 5205 印刷費
- 5206 旅運費
- 5207 保險費
- 5208 修繕費
- 5209 會議費
- 5210 訓練費
- 5211 交際費
- 5212 廣告宣傳費
- 5213 專案活動費
- 5214 會員服務費
- 5215 志工費用
**管理費 (5301-5308)**
- 5301 折舊費用
- 5302 稅捐
- 5303 什項購置
- 5304 銀行手續費
- 5305 審計費
- 5306 法律諮詢費
- 5307 顧問費
- 5308 資訊系統費
**其他支出:**
- 5401 捐贈支出
- 5901 雜項支出
**Excel (5000系列)**
- 5100 業務費用(較籠統)
**差異:**
- ⭐ 系統科目非常詳細Excel 較精簡
- 系統適合大型組織Excel 適合小型協會
- 可能需要調整
---
## 三、建議處理方案
### 🎯 方案一:使用系統預設科目(推薦)
**優點:**
- ✅ 更完整、更專業
- ✅ 未來擴展性強
- ✅ 符合台灣非營利組織會計準則
- ✅ 已經寫好,直接執行 Seeder 即可
**需要做的:**
1. 執行 `php artisan db:seed --class=ChartOfAccountSeeder`
2. 匯入 Excel 資料時,建立科目對照表
3. Excel「4100一般捐款」→ 系統「4201捐贈收入」
4. Excel「4310入會費」→ 系統「4102入會費收入」
5. Excel「5100業務費用」→ 依實際用途對應到細項如5206旅運費、5205印刷費等
**科目對照表範例:**
```
Excel 4100 → 系統 4201 (捐贈收入)
Excel 4310 → 系統 4102 (入會費收入)
Excel 5100 → 系統 5201-5215 (依用途細分)
- 會場清潔費 → 5208 修繕費 或 5209 會議費
- 點心費 → 5209 會議費
- 交通費 → 5206 旅運費
- 郵寄費 → 5203 郵電費
- 影印費 → 5205 印刷費
```
---
### 🎯 方案二:使用 Excel 科目
**優點:**
- 簡單直接
- 與現有資料一致
**缺點:**
- ❌ 科目較少,未來可能不夠用
- ❌ 支出科目太籠統(全部都是「業務費用」)
- ❌ 不符合標準會計科目結構
**需要做的:**
1. 修改 Seeder使用 Excel 的 44 個科目
2. 或手動建立 Excel 科目
---
### 🎯 方案三:混合使用(折衷方案)
**做法:**
1. 使用系統預設科目作為基礎
2. 保留 Excel 中重要但系統沒有的科目
3. 匯入時建立對照關係
---
## 四、推薦執行步驟
### ✅ 建議採用「方案一:使用系統預設科目」
#### 步驟 1執行系統 Seeder
```bash
php artisan db:seed --class=ChartOfAccountSeeder
```
這會建立 56 個標準會計科目。
#### 步驟 2建立 Excel 科目對照表
創建一個對照表文件,記錄 Excel 科目如何對應到系統科目:
| Excel科目編號 | Excel科目名稱 | 系統科目編號 | 系統科目名稱 | 備註 |
|--------------|--------------|------------|------------|------|
| 4100 | 一般捐款收入 | 4201 | 捐贈收入 | |
| 4310 | 入會費 | 4102 | 入會費收入 | |
| 5100 | 業務費用 | (多個) | 依用途細分 | 需分析摘要 |
#### 步驟 3匯入 Excel 資料時進行轉換
在匯入程式中:
1. 讀取 Excel 的科目編號
2. 查詢對照表
3. 轉換為系統科目編號
4. 寫入資料庫
#### 步驟 4特別處理「5100業務費用」
Excel 中所有支出都記為「5100業務費用」需要根據「支出用途備註」欄位來判斷應該對應到哪個細項科目
```php
// 範例邏輯
if (str_contains($description, '交通') || str_contains($description, '車費')) {
$accountCode = '5206'; // 旅運費
} elseif (str_contains($description, '會場') || str_contains($description, '清潔')) {
$accountCode = '5209'; // 會議費
} elseif (str_contains($description, '點心') || str_contains($description, '餐')) {
$accountCode = '5209'; // 會議費
}
// ... 更多規則
```
---
## 五、執行檢查清單
### 匯入前
- [ ] 決定使用哪個方案
- [ ] 執行 ChartOfAccountSeeder如果用方案一
- [ ] 建立科目對照表
- [ ] 準備支出科目判斷邏輯
### 匯入中
- [ ] 驗證科目代碼存在
- [ ] 記錄無法對應的科目
- [ ] 保留原始 Excel 科目編號(在備註欄)
### 匯入後
- [ ] 檢查科目使用統計
- [ ] 確認借貸平衡
- [ ] 產生匯入報告
---
## 六、立即可做的事
### 現在就可以執行
```bash
# 1. 查看系統已有多少科目(應該是 0
php artisan tinker --execute="echo App\Models\ChartOfAccount::count();"
# 2. 執行 Seeder 建立 56 個預設科目
php artisan db:seed --class=ChartOfAccountSeeder
# 3. 再次確認科目數量(應該變成 56
php artisan tinker --execute="echo App\Models\ChartOfAccount::count();"
# 4. 列出所有收入類科目
php artisan tinker --execute="
\$accounts = App\Models\ChartOfAccount::where('account_type', 'income')->get();
foreach (\$accounts as \$a) {
echo \$a->account_code . ' - ' . \$a->account_name_zh . '\n';
}
"
```
---
## 七、結論
### ✅ 系統已經準備好會計科目功能
1. **Model 完整** - ChartOfAccount 已實作
2. **資料表已建立** - chart_of_accounts 存在
3. **預設科目齊全** - 56個專業科目已定義
4. **關聯完整** - 支援父子科目、交易關聯
### 🎯 下一步
**推薦做法:**
1. ✅ 執行 ChartOfAccountSeeder 建立系統科目
2. ✅ 建立 Excel → 系統科目對照表
3. ✅ 開發匯入程式,在匯入時自動轉換科目
**優勢:**
- 使用專業的會計科目結構
- 未來擴展性強
- 符合台灣非營利組織準則
- 財報產出更專業
需要我現在執行 Seeder 建立這 56 個會計科目嗎?