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

8.1 KiB
Raw Permalink Blame History

會計科目比對分析

分析日期: 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

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業務費用」需要根據「支出用途備註」欄位來判斷應該對應到哪個細項科目

// 範例邏輯
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 科目編號(在備註欄)

匯入後

  • 檢查科目使用統計
  • 確認借貸平衡
  • 產生匯入報告

六、立即可做的事

現在就可以執行

# 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 個會計科目嗎?