TNCSC_Odoo/docs/TNCSC_Handbook.md
metatroncubeswdev 91c4580ae2 docs: add TNCSC client handbook (settings + day-to-day operations)
A plain-language guide for TNCSC board members/volunteers covering
role/permission setup, branding, membership tiers & renewal, events,
Tamil Class terms/classes/attendance, classifieds moderation, benefits,
Interac payment confirmation, website content editing, accounting
guardrails, and troubleshooting. Menu paths and field labels verified
against the live tncsc_site container rather than assumed from the
module source.

Also published as a shareable web page for non-technical staff (no repo
access needed) - see the artifact link.
2026-08-21 19:39:37 -04:00

360 lines
16 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.

# TNCSC CommunityOS Handbook
A plain-language guide for TNCSC board members and volunteers to configure
settings and run the system day-to-day — no developer required for any of
this. If something isn't covered here, or doesn't work the way this guide
describes, that's a question for your technical support contact, not
something to guess at.
**Where to log in:** your production site's `/web/login` page (ask your
technical contact for the exact address if you don't have it). Use the
account and password you were given.
---
## Contents
1. [Understanding the system](#1-understanding-the-system)
2. [User roles — who can do what](#2-user-roles--who-can-do-what)
3. [Branding: colours, logo, fonts](#3-branding-colours-logo-fonts)
4. [Membership](#4-membership)
5. [Events](#5-events)
6. [Tamil Class (School)](#6-tamil-class-school)
7. [Classifieds](#7-classifieds)
8. [Benefits](#8-benefits)
9. [Interac e-Transfer Payments](#9-interac-e-transfer-payments)
10. [Website content](#10-website-content)
11. [Accounting basics](#11-accounting-basics)
12. [Troubleshooting & getting help](#12-troubleshooting--getting-help)
---
## 1. Understanding the system
Once you log in, you'll see an **app switcher** — a grid of icons, one per
area of the system:
| App | What it's for |
|---|---|
| **Membership** | Members, tiers/pricing, renewals |
| **Events** | Creating events, ticketing, check-in |
| **School** | Tamil Class terms, classes, students, attendance |
| **Classifieds** | The member classifieds board and its moderation queue |
| **Benefits** | Benefit centres (partner businesses) and member benefits |
| **Interac Payments** | Confirming e-Transfer payments |
| **Website** | The public website — pages, menus, content |
| **Settings** | Branding, org-wide configuration, user accounts |
**If an app is missing from your switcher**, it's almost always a
permissions issue, not a broken install — see
[section 2](#2-user-roles--who-can-do-what) and
[troubleshooting](#12-troubleshooting--getting-help).
Two databases exist during development/testing (`tncsc_migration_test`,
`tncsc_site`) — your technical contact will tell you which one is live
production once you go live. Everything in this guide applies the same way
regardless of which database you're in.
---
## 2. User roles — who can do what
Go to **Settings → Users & Companies → Users**, click a person's name, and
under their groups you'll find **TNCSC Roles**. Check the box for the role
that matches what they do:
| Role | What it grants |
|---|---|
| **Board Admin** | Everything — membership, school, classifieds, benefits, events, and Interac payments. Give this only to whoever runs the system day-to-day. |
| **Treasurer** | Confirms Interac payments and has invoicing access. |
| **Events Officer** | Creates/manages events and staffs check-in. |
| **School Coordinator** | Manages Tamil Class terms, classes, students, enrollment. |
| **Teacher** | Can only take attendance for their own classes. |
| **Classifieds Moderator** | Reviews and publishes classified listings. |
A person can hold more than one role — e.g. someone can be both **School
Coordinator** and **Teacher**. Members themselves don't need a role
checked here at all: once someone is a member, they get their own
self-service **member portal** automatically (see
[section 4](#4-membership)) — that's separate from these backend roles,
and doesn't require a staff login.
**Adding a new staff/volunteer account:** Settings → Users & Companies →
Users → **New**, fill in their name and email, save, then check the
role(s) above. They'll get an email to set their own password.
---
## 3. Branding: colours, logo, fonts
**Settings → General Settings → Theme** (left-hand tab list).
- **Primary / Secondary / Accent Colour** — enter a colour as a hex code
(e.g. `#05091E`). These apply instantly across the website, the member
portal, and PDF documents like the membership card — no other setting
to touch.
- **Logo** — upload the image file to use in the site header and on
generated PDFs. If left blank, the company logo (Settings → General
Settings → Companies) is used instead.
- **Heading Font / Body Font** — enter a font name, e.g. `Inter,
sans-serif`. Needs to be a font available to browsers (a "web-safe"
font, or one already loaded via Google Fonts) — ask your technical
contact before entering something unusual.
Click **Save** at the top of the page after any change.
---
## 4. Membership
### 4.1 Settings
**Settings → General Settings → Membership**:
- **Organization Name** — used in renewal emails and the membership card.
- **Member ID Format** — the pattern new member IDs follow, e.g.
`TNCSC-{year}-{seq}` produces `TNCSC-2026-014`. Don't change the
`{year}`/`{seq}` placeholders unless your technical contact confirms
the change is safe — they drive the auto-numbering.
- **Renewal Reminder Offsets** — comma-separated days-before-expiry to
send reminder emails, e.g. `30,14,7` sends reminders 30, 14, and 7 days
before a membership expires.
- **Member Portal** — toggle to turn the self-service portal (`/my/membership`)
on or off site-wide.
### 4.2 Membership tiers and pricing
**Membership → Configuration → Membership Tiers.**
Each row is a plan (Individual, Family, Student, Senior, Life, or
whatever TNCSC offers). To **change a price**, open the tier and edit
**Price** — this is the only place pricing lives; there's no separate
price to update anywhere else. To **add a new tier**, click New and fill
in:
- **Name** — shown to members, e.g. "Corporate Sponsor"
- **Code** — a short internal code, e.g. `CORP` (no spaces)
- **Price** and **Currency**
- **Period** — Annual, One-Time, or Monthly
- **Sequence** — controls display order (lower numbers show first)
Deactivating a tier (rather than deleting it) keeps historical records
intact for members who already hold it — use the **Active** toggle,
found via the tier's kebab (⋮) menu → "Archive", instead of deleting.
### 4.3 Day-to-day membership work
- **Membership → Members** — the full member list. Open a member to see
their tier, status (active/renewal due/expired), and expiry date.
- Renewal reminders and draft renewal invoices are generated
**automatically** by a daily background job — you don't need to run
anything manually. What you *do* need to do periodically: check
**Invoicing → Customer Invoices** for draft renewal invoices and
confirm/send them once payment is expected.
- Each member can view their status, download their QR membership card,
and renew from `/my/membership` once logged into the website — you
don't need to email cards out manually.
- The membership card's QR code links to a public verification page
(`/membership/verify/<member ID>`) — anyone scanning it (e.g. at an
event door) sees only "valid" / "expired" / "not found," never personal
details.
---
## 5. Events
**Events → Events → New.** This is standard Odoo event creation:
1. Name, start/end date and time, location.
2. Under **Website**, check **Is Published** to make it visible on the
public Events page and the homepage's "Upcoming Events" section —
*unpublished events won't appear anywhere on the public site,* even
though they exist in the system.
3. Add ticket types under the event's **Registration** tab if you're
charging for entry (e.g. "General $0$30").
Every registration automatically gets a signed QR ticket, emailed with
the confirmation. At the door, staff with the **Events Officer** role use
**Events → Registration Desk** to scan tickets (or type the ticket
reference manually) — it shows valid / already checked-in / invalid, and
a live count of registered vs. checked-in.
**Events → Reporting → Attendees / Revenues** gives you numbers after the
fact without any setup.
---
## 6. Tamil Class (School)
### 6.1 Settings
**Settings → General Settings → School**: **At-Risk Attendance
Threshold** — the attendance percentage below which a student is flagged
"at-risk" in the report (see below).
### 6.2 Configuration — set these up before each school year
**School → Configuration → Terms** — create a term (e.g. "2026-27"),
set start/end dates, and open it (**State = Open**) once registration
should begin. Only one term should normally be open at a time.
**School → Configuration → Levels** — define your levels however TNCSC
teaches (e.g. "Beginner" through "Advanced", or "Grade 1" through "Grade
12"). Each needs a short **Code** (e.g. `BEG`) and optional min/max age.
**Classes** aren't under Configuration — create them directly from
**School → Classes → New**: pick the term, level, teacher, weekday,
time, location, and max students. This is what shows up as an option
when a parent registers online.
### 6.3 Day-to-day
- **School → Students / Enrollments** — see who's enrolled where.
- **School → Attendance Report** — a pivot table of attendance by class.
- **School → At-Risk Students** — students below the configured
attendance threshold, so you can follow up.
- Teachers take attendance themselves from their own portal page
(`/school/attendance`) — a roster of today's/this-week's classes with a
batch Present/Absent/Late/Excused save. An absence automatically emails
the parent. Teachers only see their own classes there.
- Parents register their child at `/school/register` on the public
website (parent → student → class + payment, in three steps). If a
class is full, the student is waitlisted and notified automatically
when a seat frees up — no manual waitlist management needed.
- Each class auto-creates and manages its own online course/materials
channel — enrolling or withdrawing a student automatically
enrols/unenrols them there too.
---
## 7. Classifieds
**Settings → General Settings → Classifieds**: **Listing Duration** — how
many days a published listing stays live before auto-expiring.
**Classifieds → Moderation** is where every new submission lands first
(state: Pending Review). Open one to **Publish** or **Reject** it — only
published listings appear on the public `/classifieds` board. Posting
requires the member to be logged in with an active membership, so this
queue should only ever contain genuine member submissions.
---
## 8. Benefits
Two things to set up, then one thing to log ongoing:
- **Benefits → Benefit Centres** — the businesses/organizations offering
a member benefit. Add their name, category, description, and logo.
- **Benefits → Benefits** — the actual discount/perk, linked to one or
more **Membership Tiers** (only members holding one of those tiers will
see it). Set the discount type (percent / fixed amount / perk) and
validity dates.
- **Benefits → Redemptions** — a log a benefit centre (or staff) creates
when a member actually uses a benefit, after confirming the member is
active. This is mostly for your own record-keeping of usage, not
something you need to set up in advance.
Members see only what their own tier qualifies them for at
`/my/benefits`; the public directory of participating centres is at
`/benefits`.
---
## 9. Interac e-Transfer Payments
### 9.1 One-time setup
**Invoicing → Configuration → Online Payments → Payment Providers**
open **Interac e-Transfer**:
- **Interac Recipient Email** — the real e-transfer address payments
should be sent to.
- **Interac Deadline Hours** — how long an unconfirmed payment stays
pending before it's automatically cancelled (defaults to 48 hours if
left blank).
- Set the provider's **State** to **Enabled** so it appears as a
checkout option.
### 9.2 Day-to-day (Treasurer role)
When someone chooses Interac at checkout, they're emailed instructions
(recipient address, amount, a reference code, and the deadline) — this
happens automatically, nothing for you to send.
Once you actually receive the e-transfer in your real bank/e-transfer
account, go to **Interac Payments → Pending Payments**, find the matching
transaction (match by amount and reference code), and click **Payment
Received**. This confirms the linked invoice/registration/order. If
nobody confirms it before the deadline, it auto-cancels and the payer is
notified by email.
---
## 10. Website content
**Website** app, then click **Edit** on any page while viewing it on the
public site to change text, images, and layout directly (drag-and-drop
editor) — no code involved for routine copy changes. **Site → Menu
Editor** lets you add, remove, or reorder navigation items.
Two things worth knowing about the current site before you edit it:
- The **Sponsors** page and a few header/footer text blocks (e.g. a
placeholder phone number) still contain placeholder content carried
over from the original site design — safe to edit or delete through
the Website editor whenever real sponsor logos or a real phone number
are ready.
- **"Become a Member" buttons currently point to the Contact page**, not
a self-service signup form — TNCSC doesn't have public online
membership signup yet (only renewal, for existing members). Don't
redirect these to a form that doesn't exist; talk to your technical
contact if/when online signup becomes a priority.
For anything beyond content edits — new page types, new sections with
custom behaviour, structural changes — that's a developer task, not a
Website-editor task.
---
## 11. Accounting basics
The chart of accounts, tax setup, and journals were seeded for a Canadian
non-profit when the system was set up, including dedicated revenue
accounts (Membership Dues, Event Revenue, Sponsorship, School Fees,
Donations) and a **Donations** journal. You generally don't need to
create new accounts for normal operations — membership tiers, event
tickets, and school fees are already wired to the right ones.
**Do not** rename or delete existing accounts, or change the company's
currency/country, without your accountant and technical contact both
signing off — several of these are load-bearing for other parts of the
system (e.g. renaming the dues account could silently break where
membership payments post to). Day-to-day invoicing/payment work happens
under the **Invoicing** app as normal.
---
## 12. Troubleshooting & getting help
| Symptom | Likely cause / fix |
|---|---|
| An app I should have access to isn't in my switcher | You're missing the matching role — see [section 2](#2-user-roles--who-can-do-what). Ask a Board Admin to check the box for you. |
| I changed a setting and nothing changed on the site | Make sure you clicked **Save**. If it still looks wrong after a minute, it may need a technical restart — contact support rather than repeating the change. |
| A member says their QR card doesn't work | Check their membership **state** on their member record — the verify page only shows "valid" for members currently in the *active* state. |
| An event isn't showing on the website | Confirm **Is Published** is checked on the event (see [section 5](#5-events)) — unpublished events are invisible on the public site by design. |
| A parent can't register for a class | Check the term is **Open** and the class isn't already full (School → Classes) — full classes waitlist automatically rather than blocking registration outright. |
| An Interac payment doesn't confirm | Double-check the reference code and amount match exactly before clicking Payment Received — mismatches usually mean it's a different transaction. |
For anything not covered here — a genuine error message, something that
looks broken rather than misconfigured, or a request for new
functionality — contact your technical support contact rather than
experimenting on the live site. Screenshots and the exact steps you took
help them fix it faster.
---
*This handbook covers the CommunityOS suite as configured for TNCSC. It
does not cover server maintenance, backups, or deployment — those remain
your technical contact's responsibility.*