TNCSC_Odoo/addons/community_membership
metatroncubeswdev 657792b268
Some checks failed
CI / Brand-leak check (push) Has been cancelled
CI / flake8 / pylint-odoo / manifest completeness (push) Has been cancelled
CI / Install all modules with --test-enable (push) Has been cancelled
Add member application fields and the six real TNCSC membership plans
community_membership:
- Tiers get a fixed-term period (term_years), minimum age, a
  proof-document flag, a family-member flag and a signup description.
- Members get first/last name (composing the contact name), month and
  year of birth with computed age, board approval state with
  approve/reject buttons, terms acceptance, a proof-of-eligibility upload
  and an inline family members list. Birth date and proof document are
  restricted to Membership Managers.
- Constraints: plausible birth year; a tier's minimum age is enforced
  when the birth year is known.
- Fix pre-existing tests that collided with deployment-seeded tier codes
  and member ID format.

tncsc_deployment:
- Five Yes/No eligibility questions from the tncsc.com registration form
  (manager-only), shown in an Eligibility section of the member form.
- Tiers now match tncsc.com/membership-registration: Annual/Family $30,
  Long-Term (10 yr) $250, Life $500, Senior Annual (65+) $15, Senior Life
  (60+) $250, Student Annual $10 (CAD).
- 19.0.1.1.0 post-migrate rewrites existing tiers (noupdate data) and
  archives the unused Individual tier.

scripts/migrate_wp_members.py maps WordPress levels to the new LONG and
SENLIFE tiers. .mcp.json (holds credentials) is now gitignored.

Verified on the local Docker stack: -u on tncsc_site ran the migration
cleanly, and a fresh install with --test-enable passed 32/32 tests for
community_membership and tncsc_deployment.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 10:46:31 -04:00
..

======================
Community OS Membership
======================

Generic membership engine: configurable tiers, family grouping, member IDs,
renewal automation, self-service portal, and a QR membership card.

Installation
============
Install as any Odoo module.

Configuration
=============
Settings > Members > Membership Settings.

Usage
=====
* Define tiers under **Members > Configuration > Tiers** (name, code, price,
  period). Each tier auto-creates its membership product.
* A partner's ``membership_member_id`` is generated on activation using the
  format string configured in Membership Settings (default
  ``MEM-{year}-{seq}``).
* A daily cron moves members to ``renewal_due`` at the configured reminder
  offsets and to ``expired`` on expiry, sending the matching email template
  and creating a draft renewal invoice for review.
* Members self-serve at ``/my/membership`` (status, tier, expiry, renew,
  download card) and can be verified publicly, without exposing personal
  data, at ``/membership/verify/<member_id>``.
* The QR membership card is a QWeb PDF report (85mm x 54mm) whose QR code
  encodes the verification URL.

Credits
=======

Authors
-------
* Metatroncube Software Solutions LLP