diff --git a/API/ROLAC.API.Tests/Services/DbSeederForm990Tests.cs b/API/ROLAC.API.Tests/Services/DbSeederForm990Tests.cs index f81ad02..c8f1f18 100644 --- a/API/ROLAC.API.Tests/Services/DbSeederForm990Tests.cs +++ b/API/ROLAC.API.Tests/Services/DbSeederForm990Tests.cs @@ -56,6 +56,13 @@ public class DbSeederForm990Tests var worship = await db.Ministries.FirstAsync(m => m.Name_en == "Worship"); Assert.Equal("ManagementGeneral", admin.DefaultFunctionalClass); Assert.Equal("Program", worship.DefaultFunctionalClass); + + // Activity/shepherding ministries are an attribution axis only; they default to Program + // so adding them never distorts the 990 functional columns. + var cellGroups = await db.Ministries.FirstAsync(m => m.Name_en == "Cell Groups"); + var specialEvents = await db.Ministries.FirstAsync(m => m.Name_en == "Special Events"); + Assert.Equal("Program", cellGroups.DefaultFunctionalClass); + Assert.Equal("Program", specialEvents.DefaultFunctionalClass); } [Fact] diff --git a/API/ROLAC.API/Data/DbSeeder.cs b/API/ROLAC.API/Data/DbSeeder.cs index 94f8d79..e7ec773 100644 --- a/API/ROLAC.API/Data/DbSeeder.cs +++ b/API/ROLAC.API/Data/DbSeeder.cs @@ -28,6 +28,8 @@ public static class DbSeeder ("Hospitality", "招待", 8), ("Children", "兒牧", 9), ("Catering", "餐飲", 10), + ("Cell Groups", "小組牧養", 11), + ("Special Events", "特別活動", 12), ]; // (GroupEn, GroupZh, Sort, SubItems[(SubEn, SubZh)]) diff --git a/docs/DB_SCHEMA.md b/docs/DB_SCHEMA.md index b9a012a..3e75001 100644 --- a/docs/DB_SCHEMA.md +++ b/docs/DB_SCHEMA.md @@ -998,7 +998,7 @@ Table: MinistryBudgets super_admin, pastor, board_member, coworker_chair, ministry_leader, district_leader, cell_leader, coworker, finance, secretary, worship_leader, member, visitor ``` -### Ministries(10 個事工部門) +### Ministries(12 個事工部門) ``` 1. Administration / 行政 DefaultFunctionalClass = 'ManagementGeneral' 2. Preaching / 講道 DefaultFunctionalClass = 'Program' @@ -1010,6 +1010,8 @@ super_admin, pastor, board_member, coworker_chair, ministry_leader, district_lea 8. Hospitality / 招待 DefaultFunctionalClass = 'Program' 9. Children / 兒牧 DefaultFunctionalClass = 'Program' 10. Catering / 餐飲 DefaultFunctionalClass = 'Program' +11. Cell Groups / 小組牧養 DefaultFunctionalClass = 'Program' +12. Special Events / 特別活動 DefaultFunctionalClass = 'Program' ``` ### GivingCategories(奉獻類型) diff --git a/docs/EXPENSE_CATEGORY_GUIDE.md b/docs/EXPENSE_CATEGORY_GUIDE.md index 2deb899..de09a64 100644 --- a/docs/EXPENSE_CATEGORY_GUIDE.md +++ b/docs/EXPENSE_CATEGORY_GUIDE.md @@ -7,6 +7,37 @@ --- +## §0 這套分類在做什麼?(先讀懂目的) + +教會**用自己習慣的方式**記帳,系統**自動翻譯成 IRS 看得懂的格式**。你只要照教會的習慣選,剩下的交給系統。 + +**我們自己用三個維度歸納每一筆支出:** + +| 維度 | 回答的問題 | 例子 | +|---|---|---| +| **事工 Ministry** | 這筆錢是**誰/哪個服事或場合**花的? | 敬拜、兒牧、小組牧養、特別活動… | +| **大類別 Category** | 買的是**哪一種性質**的東西? | 餐飲、人事、場地、印刷… | +| **子類別 Subcategory** | 再**細一點**是什麼? | 出餐費用、薪資、水電、週報… | + +這三個維度是**為教會自己設計的**,貼近我們的服事與生活,所以好選、好記。 + +**最終呈現給 IRS 時:** + +``` + 教會的記帳方式 IRS 要的格式 + 事工 + 大類別 + 子類別 ──(系統自動對應)──▶ Form 990 Part IX + (同工只需選這邊) 功能性費用表(自動產生) +``` + +- 每個子類別背後都**預先對應好一條 Form 990 自然費用行**(就是速查表最右邊那欄「990行」)。 +- 同工**完全不需要懂 990** —— 只要照教會習慣選對事工/大類/子類,系統就能在查帳時自動產出符合 IRS Form 990 的功能性費用表。 + +> 一句話:**你照教會的方式分類,系統幫你變成 IRS 的語言。** 所以「選對類別」這件小事,就是整個查帳整備的基礎。 + +> 補充:美國教會依 IRC §6033(a)(3)(A) **免於申報** Form 990;我們做這套對應,是為了在 IRS 查核時能**隨時拿得出** 990 等級的佐證,不是真的要報稅。 + +--- + ## §1 三個關鍵觀念(務必先讀) ### 觀念 1️⃣ 類別 = 你買了「**什麼**」,不是「為了哪個活動」 @@ -17,7 +48,9 @@ - ✅ 「活動/場合」請寫在 **事工(組別)** 欄 + **說明(Description)** 欄。 > 例:父親節買的 Pizza → 大類別選「餐飲」,**不是**去找「父親節」類別; -> 在說明欄寫「父親節活動加菜」,在事工欄選負責的組別(如招待)。 +> 在說明欄寫「父親節活動加菜」,在事工欄選「特別活動」。 +> +> 💡 事工欄有兩個專收「跨性質活動」花費的選項:**「特別活動」**(父親節、福音周、周年慶、愛宴…)與 **「小組牧養」**(各小組聚會、開放家庭、小組關懷)。記不得放哪個事工時,大多能用這兩個。 ### 觀念 2️⃣ 一個活動 = 常常拆成「多筆、不同類別」 @@ -42,17 +75,17 @@ | 費用範例 | 事工(選組別) | 大類別 | 子類別 | (990行) | |---|---|---|---|:--:| -| 父親節 — 給父親的小禮物(每份 < $20) | 招待 | 其他 | **禮品** | 24 | -| 父親節 — 加菜金(Pizza/水果/炸雞) | 招待/餐飲 | 餐飲 | 出餐費用 | 24 | -| 福音周 — 買福音小組食物(現成) | (主辦組別) | 餐飲 | 出餐費用 | 24 | -| 福音周 — 買食材自己煮 | (主辦組別) | 餐飲 | 食材採購 | 24 | -| 福音周 — 福音小組小禮物 | (主辦組別) | 其他 | **禮品** | 24 | +| 父親節 — 給父親的小禮物(每份 < $20) | 特別活動 | 其他 | **禮品** | 24 | +| 父親節 — 加菜金(Pizza/水果/炸雞) | 特別活動 | 餐飲 | 出餐費用 | 24 | +| 福音周 — 買福音小組食物(現成) | 特別活動 | 餐飲 | 出餐費用 | 24 | +| 福音周 — 買食材自己煮 | 特別活動 | 餐飲 | 食材採購 | 24 | +| 福音周 — 福音小組小禮物 | 特別活動 | 其他 | **禮品** | 24 | | 特別講員的講員費(一次性) | 講道 | 人事 | **酬庸** | 11g | -| 小組餐具費 — 可重複用的碗盤 | (小組組別) | 餐飲 | 器具 | 24 | -| 小組餐具費 — 用完即丟的紙盤紙杯 | (小組組別) | 餐飲 | 一次性餐具 | 24 | -| 小組生日聚餐 — 買蛋糕幫弟兄姊妹慶生 | (小組組別) | 餐飲 | 出餐費用 | 24 | +| 小組餐具費 — 可重複用的碗盤 | 小組牧養 | 餐飲 | 器具 | 24 | +| 小組餐具費 — 用完即丟的紙盤紙杯 | 小組牧養 | 餐飲 | 一次性餐具 | 24 | +| 小組生日聚餐 — 買蛋糕幫弟兄姊妹慶生 | 小組牧養 | 餐飲 | 出餐費用 | 24 | | 同工退修會 — 兩天一夜住宿 | 行政/相關組 | 人事 | **同工進修**(住宿差旅同筆登即可) | 19 | -| 教會周年慶 — 整體預算 | (主辦組別) | **拆多筆**(見觀念 2) | 各依性質 | 多 | +| 教會周年慶 — 整體預算 | 特別活動 | **拆多筆**(見觀念 2) | 各依性質 | 多 | | 主日愛宴 | 餐飲/招待 | 餐飲 | 出餐費用 或 食材採購 | 24 | | Part-time 同工薪水 | 行政 | 人事 | **薪資** | 7 |