OCA Membership (custom)

oca_membership
REPOSITORY
REPOSITORYOCA/oca-custom
GIT
GIThttps://github.com/OCA/oca-custom.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/oca-custom/tree/18.0/oca_membership
VERSION
VERSION 1.0.7
CATEGORY
CATEGORYCustom
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSSébastien BEAU, OCA-git-bot, oca-ci, Arnaud LAYEC
WEBSITE
WEBSITEhttps://github.com/OCA/oca-custom
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:13
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/oca-custom:
    - oca_vcp
OCA/version-control-platform:
    - vcp_odoo
    - vcp_management
    - vcp_github
    - vcp_git
OCA/vertical-association:
    - membership_extension
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - membership
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES pypandoc
pathspec
github3.py
markdown
GitPython
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES cloc
DESCRIPTION
DESCRIPTION
This module adds several independant features.

- **Membership Categories: the Roles in the association** The new field
  *Current category* defines the Role of a member on the association.
  Those choosen *Current category* plus the *Membership category* of all
  active lines form the *Membership Categories*, they may be used to
  filter the members, and which are used to automatically add or remove
  member in Mail Groups (see oca_membership_groups).

  Example: a member is invoiced and pays for the *OCA Member* product.
  This product sets the *Member* category on membership lines. On the
  member's form, it is defined as a *Delegate*.

- **Implied roles (Membership Categories)** They help to define that a
  *Board member* is also a *Delegate*. Configuration: browse to *Members
  / Configuration / Membership Categories*

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
membership_category_tree_view membership.category.oca_membership membership.membership_category field Inherits membership_extension.membership_category_tree_view
membership_members_tree res.partner.list.membership.oca_membership res.partner list Inherits membership.membership_members_tree
oca_membership.portal_my_details oca_membership.portal_my_details ir.ui.view qweb Inherits portal.portal_my_details
portail_my_details_side_content portail_my_details_side_content ir.ui.view qweb New
portal_my_details_fields portal_my_details_fields ir.ui.view qweb Inherits portal.portal_my_details_fields
res_partner_member_kanban res.partner.member.kanban.oca_custom res.partner field Inherits base_setup.res_partner_kanban_view
view_partner_form res.partner.form.oca_search_engine res.partner notebook Inherits base.view_partner_form
view_partner_form_membership res.partner.form.membership_extension.oca_membership res.partner xpath Inherits membership_extension.view_partner_form
view_res_partner_member_filter res.partner.select.membership_extension.oca_membership res.partner field Inherits membership_extension.view_res_partner_member_filter
Models touched (3)

New fields (1)
  • is_membership_invoice Boolean
    compute='_compute_is_membership_invoice' store=True
Public methods (0)

No public methods.

New fields (3)
  • color Integer
    default=<expr>
  • implied_ids Many2many → membership.membership_category
    column1='category_id' column2='implied_category_id' comodel_name='membership.membership_category' help='Implied roles by this one' relation='membership_category_implied_rel' string='Implied roles'
  • sequence Integer
    help='First category will the default one for new members.'
Public methods (0)

No public methods.

New fields (12)
  • is_contributor Boolean
    compute='_compute_is_contributor' help='Has participated in Github, with a comment, a commit, ...' store=True string='Contributor'
  • is_elected Boolean
    compute='_compute_is_elected' search='_search_is_elected' string='Elected'
  • is_integrator Boolean
    compute='_compute_is_integrator' store=True string='Integrator'
  • is_member Boolean
    compute='_compute_is_member' help='Is currently a member of the assocation' store=True string='Member'
  • is_published Boolean
    help='Whether this contact publicly appears on the website.\nAutomatically enabled for companies (sponsors and integrators).\nTo enable manually for individuals (members).' tracking=True
  • is_published_address Boolean
    string='Publish address'
  • is_published_email Boolean
    string='Publish email'
  • is_published_phone Boolean
    string='Publish phone'
  • is_published_website Boolean
    string='Publish website'
  • mail_group_member_ids One2many → mail.group.member
    comodel_name='mail.group.member' inverse_name='partner_id'
  • membership_category_id Many2one → membership.membership_category
    comodel_name='membership.membership_category' default=<expr> help='This field may reflect a Role in the association. Changing it is immediatly reflected on Membership Categories.' string='Current category'
  • membership_category_ids Many2many
    compute='_compute_membership_state' help='Categories of active membership lines plus Current Category.'
Public methods (0)

No public methods.