Cooperators

cooperator
REPOSITORY
REPOSITORYOCA/cooperative
GIT
GIThttps://github.com/OCA/cooperative.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/cooperative/tree/16.0/cooperator
VERSION
VERSION 1.4.0
CATEGORY
CATEGORYCooperative management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Coop IT Easy SC
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Coop IT Easy SC
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, Carmen Bianca BAKKER, oca-ci, Victor Champonnois, hugues de keyzer
WEBSITE
WEBSITEhttps://github.com/OCA/cooperative
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:54:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/partner-contact:
    - partner_firstname
    - partner_contact_birthdate
    - partner_contact_personal_information_page
    - partner_contact_gender
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (33)
XML IDNameModelTypeStatus
cooperative_membership_view_search cooperative.membership.search cooperative.membership search New
cooperative_membership_view_tree cooperative.membership.tree cooperative.membership tree New
email_template_form email.template.form mail.template field Inherits mail.email_template_form
external_layout_standard Cooperator Template Layout ir.ui.view qweb Inherits web.external_layout_standard
operation_request_form operation.request.form operation.request form New
operation_request_tree operation.request.tree operation.request tree New
product_template_form_view product_template_form_view product.template xpath Inherits product.product_template_form_view
product_template_only_form_view product.template.product.form product.template field Inherits product.product_template_only_form_view
product_template_search_view product_template_search_view product.template xpath Inherits product.product_template_search_view
remove_partner_follower res.partner.remove.follower.inherit res.partner field Inherits mail.res_partner_view_form_inherit_mail
report_cooperator_certificate report_cooperator_certificate ir.ui.view qweb New
report_cooperator_certificate_document report_cooperator_certificate_document ir.ui.view qweb New
report_cooperator_register report_cooperator_register ir.ui.view qweb New
report_invoice report_invoice ir.ui.view qweb New
report_invoice_document report_invoice_document ir.ui.view qweb Inherits account.report_invoice_document
report_subscription_register report_subscription_register ir.ui.view qweb New
res_config_settings_cooperator_view_form Cooperators res.config.settings xpath Inherits base.res_config_settings_view_form
share_line_form share.line.form share.line form New
share_line_tree share.line.tree share.line tree New
subscription_register_form subscription.register.form subscription.register form New
subscription_register_tree subscription.register.tree subscription.register tree New
subscription_request_tree subscription.request.tree subscription.request tree New
subscription_request_view_form subscription.request.view.form subscription.request form New
view_account_journal_form account.journal.form account.journal field Inherits account.view_account_journal_form
view_create_subscription Create Subscription partner.create.subscription form New
view_move_form account.move.form account.move field Inherits account.view_move_form
view_partner_form view_partner_form res.partner sheet Inherits base.view_partner_form
view_res_partner_filter res.partner.select res.partner filter Inherits account.res_partner_view_search
view_share_line_filter Share Line Search share.line search New
view_subscription_register_filter Subscription Register Search subscription.register search New
view_subscription_request_filter Cooperator Subscription Search subscription.request search New
view_update_share_line_info Update Share line Info share.line.update.info form New
view_validate_subscription_request Validate subscription request validate.subscription.request form New
Models touched (19)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • release_capital_request Boolean
    string='Release capital request'
Public methods (0)

No public methods.

New fields (2)
  • get_cooperator_payment Boolean
    args: 'Get cooperator payments?'
  • get_general_payment Boolean
    string='Get general payments?'
Public methods (0)

No public methods.

New fields (2)
  • release_capital_request Boolean
    string='Release of capital request'
  • subscription_request Many2one → subscription.request
    check_company=True string='Subscription request' args: 'subscription.request'
Public methods (7)
  • get_mail_template_certificate(self)
  • get_refund_domain(self, invoice)
  • get_share_line_vals(self, line, effective_date)
  • get_subscription_register_vals(self, line, effective_date)
  • post_process_confirm_paid(self, effective_date)
  • send_capital_release_request_mail(self)
  • set_cooperator_effective(self, effective_date)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (20)
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • coop_candidate Boolean
    compute=_compute_coop_candidate store=True string='Cooperator candidate'
  • cooperator Boolean
    copy=False help='Check this box if this contact is a cooperator (effective or not).' readonly=True
  • cooperator_register_number Integer
    copy=False group_operator=None readonly=True string='Cooperator Number'
  • cooperator_type Selection
    compute=_compute_cooperator_type selection=_get_share_type store=True
  • data_policy_approved Boolean
    string='Approved Data Policy'
  • effective_date Date
    compute=_compute_effective_date store=True
  • email Char
    related='partner_id.email'
  • financial_risk_approved Boolean
    string='Approved Financial Risk'
  • generic_rules_approved Boolean
    string='Approved generic rules'
  • internal_rules_approved Boolean
    string='Approved Internal Rules'
  • is_company Boolean
    related='partner_id.is_company' store=True
  • member Boolean
    copy=False help='Check this box if this cooperator is an effective member.' readonly=True string='Effective cooperator'
  • name Char
    related='partner_id.name'
  • number_of_share Integer
    compute=_compute_share_info store=True string='Number of share'
  • old_member Boolean
    help='Check this box if this cooperator is no more an effective member.' readonly=True string='Old cooperator'
  • partner_id Many2one → res.partner
    index=True ondelete='cascade' readonly=True required=True args: 'res.partner', 'Partner'
  • share_ids One2many → share.line
    compute=_compute_share_ids search=_search_share_ids string='Share Lines' args: 'share.line'
  • subscription_request_ids One2many → subscription.request
    compute=_compute_subscription_request_ids search=_search_subscription_request_ids string='Subscription request' args: 'subscription.request'
  • total_value Float
    compute=_compute_share_info store=True string='Total value of shares'
Public methods (6)
  • assign_cooperator_register_number(self)
    Set a new cooperator register number on the memberships if one is not already assigned.
  • create_user(self)
    Create a new user for the memberships if one does not already exist. If a user exists, but its 'active' field is False, then the user is reactivated and the membership's company_id becomes the user's only company_id. If a new partner is created, an e-mail is sent to them with instructions on how to set their passport.
  • get_cooperator_from_crn(self, company_register_number)
  • get_cooperator_from_email(self, email)
  • get_share_quantities(self)
    Return a defaultdict(int) with the amount of shares per product id.
  • set_effective(self)
    Make sure the following things are in order for all memberships in the recordset: - ``member`` is set to True and ``old_member`` is set to False. - A cooperator register number is assigned if one did not yet exist. - A user is created if one did not yet exist. This should all be idempotent.

New fields (1)
  • is_cooperator_template Boolean
    string='Cooperator mail template'
Public methods (0)

No public methods.

New fields (19)
  • company_id Many2one → res.company
    change_default=True default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • effective_date Date
    string='Effective date'
  • invoice Many2one → account.move
    check_company=True args: 'account.move'
  • operation_type Selection
    required=True args: [('transfer', 'Transfer'), ('sell_back', 'Sell Back'), ('convert', 'Conversion')]
  • partner_id Many2one → res.partner
    domain=[('member', '=', True)] required=True string='Cooperator' args: 'res.partner'
  • partner_id_to Many2one → res.partner
    domain=[('cooperator', '=', True)] string='Transfered to' args: 'res.partner'
  • quantity Integer
    required=True string='Number of share'
  • receiver_not_member Boolean
    string='Receiver is not a member'
  • request_date Date
    default=fields.Date.today string='Request date'
  • share_product_id Many2one → product.product
    check_company=True domain="[('is_share', '=', True), ('company_id', 'in', (company_id, False))]" required=True string='Share type' args: 'product.product'
  • share_short_name Char
    related='share_product_id.short_name' string='Share type name'
  • share_to_product_id Many2one → product.product
    check_company=True domain="[('is_share', '=', True), ('company_id', 'in', (company_id, False))]" string='Convert to this share type' args: 'product.product'
  • share_to_short_name Char
    related='share_to_product_id.short_name' string='Share to type name'
  • share_to_unit_price Float
    related='share_to_product_id.list_price' string='Share to price'
  • share_unit_price Float
    related='share_product_id.list_price' string='Share price'
  • state Selection
    default='draft' required=True args: [('draft', 'Draft'), ('waiting', 'Waiting'), ('approved', 'Approved'), ('done', 'Done'), ('cancelled', 'Cancelled'), ('refused', 'Refused')]
  • subscription_amount Float
    compute='_compute_subscription_amount' string='Operation amount'
  • subscription_request One2many → subscription.request
    help="For transfer operations: if the share receiver isn't a (former) member then a subscription form must be filled." string='Share Receiver Info' args: 'subscription.request', 'operation_request_id'
  • user_id Many2one → res.users
    check_company=True default=<expr> readonly=True string='Responsible' args: 'res.users'
Public methods (11)
  • approve_operation(self)
  • cancel_operation(self)
  • create(self, vals_list)
    @api.model_create_multi
  • execute_operation(self)
  • get_subscription_register_vals(self, effective_date)
  • hand_share_over(self, partner, share_product_id, quantity)
  • has_share_type(self)
  • refuse_operation(self)
  • reset_to_draft(self)
  • submit_operation(self)
  • validate(self)

New fields (13)
  • bank_account Char
    default=_get_bank_account required=True string='Bank account'
  • company_id Many2one → res.company
    change_default=True default=<expr> required=True string='Company' args: 'res.company'
  • cooperator Many2one → res.partner
    default=_get_partner args: 'res.partner'
  • email Char
    default=_get_email required=True
  • is_company Boolean
    default=_get_is_company string='Is company?'
  • register_number Char
    default=_get_register_number string='Register Company Number'
  • representative_email Char
    default=_get_representative_email string='Representative email'
  • representative_firstname Char
    default=_get_representative_firstname string='Representative first name'
  • representative_lastname Char
    default=_get_representative_lastname string='Representative last name'
  • share_product Many2one → product.product
    check_company=True default=_default_product_id domain=_get_possible_share required=True string='Share Type' args: 'product.product'
  • share_qty Integer
    required=True string='Share Quantity'
  • share_unit_price Float
    readonly=True related='share_product.list_price' string='Share price'
  • subscription_amount Float
    compute='_compute_subscription_amount' digits='Account' readonly=True string='Subscription amount'
Public methods (2)
  • create_subscription(self)
  • on_change_share_type(self)
    @api.onchange('share_product')

New fields (9)
  • by_company Boolean
    string='Can be subscribed by companies?'
  • by_individual Boolean
    string='Can be subscribed by individuals?'
  • default_share_product Boolean
    string='Default share product'
  • display_on_website Boolean
    string='Display on website'
  • force_min_qty Boolean
    string='Force minimum quantity?'
  • is_share Boolean
    string='Is share?'
  • mail_template Many2one → mail.template
    string='Mail template' args: 'mail.template'
  • minimum_quantity Integer
    default=1 string='Minimum quantity'
  • short_name Char
    string='Short name'
Public methods (1)
  • get_web_share_products(self, is_company)

New fields (43)
  • allow_id_card_upload Boolean
    string='Allow ID Card upload'
  • board_representative Char
    string='Board representative name'
  • bottom_logo1 Binary
    string='Bottom logo 1'
  • bottom_logo2 Binary
    string='Bottom logo 2'
  • coop_email_contact Char
    string='Contact email address for the cooperator'
  • cooperator_capital_release_mail_template Many2one → mail.template
    comodel_name='mail.template' domain=[('model', '=', 'account.move'), ('is_cooperator_template', '=', True)] help='If left empty, the default global mail template will be used.' string='Capital release email template'
  • cooperator_certificate_increase_mail_template Many2one → mail.template
    comodel_name='mail.template' domain=[('model', '=', 'res.partner'), ('is_cooperator_template', '=', True)] help='If left empty, the default global mail template will be used.' string='Certificate increase email template'
  • cooperator_certificate_mail_template Many2one → mail.template
    comodel_name='mail.template' domain=[('model', '=', 'res.partner'), ('is_cooperator_template', '=', True)] help='If left empty, the default global mail template will be used.' string='Certificate email template'
  • cooperator_confirmation_mail_template Many2one → mail.template
    comodel_name='mail.template' domain=[('model', '=', 'subscription.request'), ('is_cooperator_template', '=', True)] help='If left empty, the default global mail template will be used.' string='Share confirmation email template'
  • cooperator_share_transfer_mail_template Many2one → mail.template
    comodel_name='mail.template' domain=[('model', '=', 'res.partner'), ('is_cooperator_template', '=', True)] help='If left empty, the default global mail template will be used.' string='Share transfer email template'
  • cooperator_share_update_mail_template Many2one → mail.template
    comodel_name='mail.template' domain=[('model', '=', 'res.partner'), ('is_cooperator_template', '=', True)] help='If left empty, the default global mail template will be used.' string='Share update email template'
  • cooperator_share_update_no_shares_mail_template Many2one → mail.template
    comodel_name='mail.template' domain=[('model', '=', 'res.partner'), ('is_cooperator_template', '=', True)] help='If left empty, the default global mail template will be used.' string='Share transfer (no remaining shares) email template'
  • cooperator_waiting_list_mail_template Many2one → mail.template
    comodel_name='mail.template' domain=[('model', '=', 'subscription.request'), ('is_cooperator_template', '=', True)] help='If left empty, the default global mail template will be used.' string='Waiting list email template'
  • create_user Boolean
    default=False string='Create user for cooperator'
  • data_policy_approval_required Boolean
    string='Is data policy approval required?'
  • data_policy_approval_text Html
    help='Text to display aside the checkbox to approve data policy.' translate=True
  • default_capital_release_request_payment_term Many2one → account.payment.term
    comodel_name='account.payment.term' help='Default payment term to use for capital release requests' string='Default Payment Term'
  • default_country_id Many2one → res.country
    default=<expr> string='Default country' args: 'res.country'
  • default_lang_id Many2one → res.lang
    string='Default lang' args: 'res.lang'
  • display_data_policy_approval Boolean
    help='Choose to display a data policy checkbox on the cooperator website form.'
  • display_financial_risk_approval Boolean
    help='Choose to display a financial risk checkbox on the cooperator website form.'
  • display_generic_rules_approval Boolean
    help='Choose to display generic rules checkbox on the cooperator website form.'
  • display_internal_rules_approval Boolean
    help='Choose to display an internal rules checkbox on the cooperator website form.'
  • display_logo1 Boolean
    string='Display logo 1'
  • display_logo2 Boolean
    string='Display logo 2'
  • financial_risk_approval_required Boolean
    string='Is financial risk approval required?'
  • financial_risk_approval_text Html
    help='Text to display aside the checkbox to approve financial risk.' translate=True
  • generic_rules_approval_required Boolean
    string='Is generic rules approval required?'
  • generic_rules_approval_text Html
    help='Text to display aside the checkbox to approve the generic rules.' translate=True
  • internal_rules_approval_required Boolean
    string='Is internal rules approval required?'
  • internal_rules_approval_text Html
    help='Text to display aside the checkbox to approve internal rules.' translate=True
  • logo_url Char
    compute='_compute_base_logo' string='logo url'
  • property_cooperator_account Many2one → account.account
    check_company=True comodel_name='account.account' domain=[('account_type', '=', 'asset_receivable'), ('deprecated', '=', False)] help='This account will be the default one as the receivable account for the cooperators' string='Cooperator Account'
  • send_capital_release_email Boolean
    default=True string='Send Capital Release email'
  • send_certificate_email Boolean
    default=True string='Send certificate email'
  • send_confirmation_email Boolean
    default=True string='Send confirmation email'
  • send_share_transfer_email Boolean
    default=True
  • send_share_update_email Boolean
    default=True
  • send_waiting_list_email Boolean
    default=True string='Send Waiting List email'
  • signature_scan Binary
    string='Board representative signature'
  • subscription_journal_id Many2one → account.journal
    check_company=True readonly=True args: 'account.journal', 'Subscription Journal'
  • subscription_maximum_amount Float
    string='Maximum authorised subscription amount'
  • unmix_share_type Boolean
    default=True help='If checked, A cooperator will be authorised to have only one type of share' string='Unmix share type'
Public methods (15)
  • create(self, vals_list)
    @api.model_create_multi
  • get_cooperator_capital_release_mail_template(self)
  • get_cooperator_certificate_increase_mail_template(self)
  • get_cooperator_certificate_mail_template(self)
  • get_cooperator_confirmation_mail_template(self)
  • get_cooperator_share_transfer_mail_template(self)
  • get_cooperator_share_update_mail_template(self)
  • get_cooperator_share_update_no_shares_mail_template(self)
  • get_cooperator_waiting_list_mail_template(self)
  • get_next_cooperator_number(self)
  • get_next_register_operation_number(self)
  • onchange_data_policy_approval_required(self)
    @api.onchange('data_policy_approval_required')
  • onchange_financial_risk_approval_required(self)
    @api.onchange('financial_risk_approval_required')
  • onchange_generic_rules_approval_required(self)
    @api.onchange('generic_rules_approval_required')
  • onchange_internal_rules_approval_required(self)
    @api.onchange('internal_rules_approval_required')

New fields (43)
  • allow_id_card_upload Boolean
    readonly=False related='company_id.allow_id_card_upload'
  • board_representative Char
    readonly=False related='company_id.board_representative'
  • bottom_logo1 Binary
    readonly=False related='company_id.bottom_logo1'
  • bottom_logo2 Binary
    readonly=False related='company_id.bottom_logo2'
  • capital_release_request_payment_term_default Many2one
    readonly=False related='company_id.default_capital_release_request_payment_term'
  • coop_email_contact Char
    readonly=False related='company_id.coop_email_contact'
  • cooperator_capital_release_mail_template Many2one
    readonly=False related='company_id.cooperator_capital_release_mail_template'
  • cooperator_certificate_increase_mail_template Many2one
    readonly=False related='company_id.cooperator_certificate_increase_mail_template'
  • cooperator_certificate_mail_template Many2one
    readonly=False related='company_id.cooperator_certificate_mail_template'
  • cooperator_confirmation_mail_template Many2one
    readonly=False related='company_id.cooperator_confirmation_mail_template'
  • cooperator_share_transfer_mail_template Many2one
    readonly=False related='company_id.cooperator_share_transfer_mail_template'
  • cooperator_share_update_mail_template Many2one
    readonly=False related='company_id.cooperator_share_update_mail_template'
  • cooperator_share_update_no_shares_mail_template Many2one
    readonly=False related='company_id.cooperator_share_update_no_shares_mail_template'
  • cooperator_waiting_list_mail_template Many2one
    readonly=False related='company_id.cooperator_waiting_list_mail_template'
  • country_id_default Many2one
    readonly=False related='company_id.default_country_id'
  • create_user Boolean
    readonly=False related='company_id.create_user'
  • data_policy_approval_required Boolean
    readonly=False related='company_id.data_policy_approval_required'
  • data_policy_approval_text Html
    readonly=False related='company_id.data_policy_approval_text'
  • display_data_policy_approval Boolean
    readonly=False related='company_id.display_data_policy_approval'
  • display_financial_risk_approval Boolean
    readonly=False related='company_id.display_financial_risk_approval'
  • display_generic_rules_approval Boolean
    readonly=False related='company_id.display_generic_rules_approval'
  • display_internal_rules_approval Boolean
    readonly=False related='company_id.display_internal_rules_approval'
  • display_logo1 Boolean
    readonly=False related='company_id.display_logo1'
  • display_logo2 Boolean
    readonly=False related='company_id.display_logo2'
  • financial_risk_approval_required Boolean
    readonly=False related='company_id.financial_risk_approval_required'
  • financial_risk_approval_text Html
    readonly=False related='company_id.financial_risk_approval_text'
  • generic_rules_approval_required Boolean
    readonly=False related='company_id.generic_rules_approval_required'
  • generic_rules_approval_text Html
    readonly=False related='company_id.generic_rules_approval_text'
  • internal_rules_approval_required Boolean
    readonly=False related='company_id.internal_rules_approval_required'
  • internal_rules_approval_text Html
    readonly=False related='company_id.internal_rules_approval_text'
  • lang_id_default Many2one
    readonly=False related='company_id.default_lang_id'
  • logo_url Char
    readonly=False related='company_id.logo_url'
  • property_cooperator_account Many2one
    readonly=False related='company_id.property_cooperator_account'
  • send_capital_release_email Boolean
    readonly=False related='company_id.send_capital_release_email'
  • send_certificate_email Boolean
    readonly=False related='company_id.send_certificate_email'
  • send_confirmation_email Boolean
    readonly=False related='company_id.send_confirmation_email'
  • send_share_transfer_email Boolean
    readonly=False related='company_id.send_share_transfer_email'
  • send_share_update_email Boolean
    readonly=False related='company_id.send_share_update_email'
  • send_waiting_list_email Boolean
    readonly=False related='company_id.send_waiting_list_email'
  • signature_scan Binary
    readonly=False related='company_id.signature_scan'
  • subscription_journal_id Many2one
    readonly=False related='company_id.subscription_journal_id'
  • subscription_maximum_amount Float
    readonly=False related='company_id.subscription_maximum_amount'
  • unmix_share_type Boolean
    readonly=False related='company_id.unmix_share_type'
Public methods (0)

No public methods.

New fields (9)
  • company_register_number Char
  • cooperative_membership_id Many2one → cooperative.membership
    compute=_compute_cooperative_membership_id search=_search_cooperative_membership_id args: 'cooperative.membership', 'Cooperative Membership For Current Company'
  • cooperative_membership_ids One2many → cooperative.membership
    readonly=True args: 'cooperative.membership', 'partner_id', 'Cooperative Memberships'
  • legal_form Selection
    string='Legal form' args: []
  • representative Boolean
    string='Legal Representative'
  • representative_of_member_company Boolean
    compute=_compute_representative_of_member_company search=_search_representative_of_member_company string='Legal Representative of Member Company'
  • share_ids One2many → share.line
    string='Share Lines' args: 'share.line', 'partner_id'
  • subscription_request_ids One2many → subscription.request
    string='Subscription request' args: 'subscription.request', 'partner_id'
  • type Selection
    selection_add=[('representative', 'Representative')]
Public methods (9)
  • create_cooperative_membership(self, company_id)
  • get_cooperative_membership(self, company_id)
  • get_cooperator_from_crn(self, company_register_number)
  • get_cooperator_from_email(self, email)
  • get_create_cooperative_membership(self, company_id)
  • get_representative(self)
  • get_share_quantities(self, company_id=None)
    Return a defaultdict(int) with the amount of shares per product id, for the partner's cooperative_membership_id. The partner's cooperative_membership_id is chosen via the company_id argument. If none is given, the company is divined from the context.
  • has_representative(self)
  • onchange_parent_id(self)
    @api.onchange('parent_id')

New fields (9)
  • company_currency_id Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Company Currency' args: 'res.currency'
  • company_id Many2one → res.company
    change_default=True default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • effective_date Date
    readonly=True
  • partner_id Many2one → res.partner
    ondelete='cascade' readonly=True required=True string='Cooperator' args: 'res.partner'
  • share_number Integer
    readonly=True required=True string='Number of Share'
  • share_product_id Many2one → product.product
    check_company=True readonly=True required=True string='Share type' args: 'product.product'
  • share_short_name Char
    readonly=True related='share_product_id.short_name' string='Share type name'
  • share_unit_price Monetary
    currency_field='company_currency_id' readonly=True string='Share price'
  • total_amount_line Monetary
    compute='_compute_total_line' currency_field='company_currency_id' string='Total amount line'
Public methods (0)

No public methods.

New fields (3)
  • cooperator Many2one
    related='share_line.partner_id' string='Cooperator'
  • effective_date Date
    default=_get_effective_date required=True string='effective date'
  • share_line Many2one → share.line
    default=_get_share_line string='Share line' args: 'share.line'
Public methods (1)
  • update(self)

New fields (18)
  • company_currency_id Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Company Currency' args: 'res.currency'
  • company_id Many2one → res.company
    change_default=True default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • date Date
    readonly=True required=True string='Subscription Date'
  • name Char
    readonly=True required=True string='Number Operation'
  • partner_id Many2one → res.partner
    readonly=True required=True string='Cooperator' args: 'res.partner'
  • partner_id_to Many2one → res.partner
    readonly=True string='Transfered to' args: 'res.partner'
  • quantity Integer
    readonly=True string='Number of share'
  • quantity_to Integer
    readonly=True string='Number of share to'
  • register_number_operation Integer
    readonly=True required=True
  • share_product_id Many2one → product.product
    check_company=True domain=[('is_share', '=', True)] readonly=True required=True string='Share type' args: 'product.product'
  • share_short_name Char
    readonly=True related='share_product_id.short_name' string='Share type name'
  • share_to_product_id Many2one → product.product
    check_company=True domain=[('is_share', '=', True)] readonly=True string='Share to type' args: 'product.product'
  • share_to_short_name Char
    readonly=True related='share_to_product_id.short_name' string='Share to type name'
  • share_to_unit_price Monetary
    currency_field='company_currency_id' readonly=True string='Share to price'
  • share_unit_price Monetary
    currency_field='company_currency_id' readonly=True string='Share price'
  • total_amount_line Monetary
    compute='_compute_total_line' currency_field='company_currency_id' string='Total amount line'
  • type Selection
    readonly=True string='Operation Type' args: [('subscription', 'Subscription'), ('transfer', 'Transfer'), ('sell_back', 'Sell Back'), ('convert', 'Conversion')]
  • user_id Many2one → res.users
    check_company=True default=<expr> readonly=True string='Responsible' args: 'res.users'
Public methods (1)
  • read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
    @api.model

New fields (49)
  • active Boolean
    default=True
  • activities_address Char
    readonly=True states={'draft': [('readonly', False)]} string='Activities address'
  • activities_city Char
    readonly=True states={'draft': [('readonly', False)]} string='Activities city'
  • activities_country_id Many2one → res.country
    ondelete='restrict' readonly=True states={'draft': [('readonly', False)]} string='Activities country' args: 'res.country'
  • activities_zip_code Char
    readonly=True states={'draft': [('readonly', False)]} string='Activities zip Code'
  • address Char
    readonly=True required=True states={'draft': [('readonly', False)]}
  • already_cooperator Boolean
    readonly=True states={'draft': [('readonly', False)]} string="I'm already cooperator"
  • birthdate Date
    readonly=True states={'draft': [('readonly', False)]} string='Date of birth'
  • capital_release_request One2many → account.move
    readonly=True states={'draft': [('readonly', False)]} string='Capital release request' args: 'account.move', 'subscription_request'
  • capital_release_request_date Date
    copy=False help='Keep empty to use the current date' readonly=True states={'draft': [('readonly', False)]} string='Force the capital release request date'
  • city Char
    readonly=True required=True states={'draft': [('readonly', False)]}
  • company_currency_id Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Company Currency' args: 'res.currency'
  • company_email Char
    readonly=True states={'draft': [('readonly', False)]} string='Company email'
  • company_id Many2one → res.company
    change_default=True default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • company_name Char
    readonly=True states={'draft': [('readonly', False)]} string='Company name'
  • company_register_number Char
    readonly=True states={'draft': [('readonly', False)]} string='Company register number'
  • company_type Selection
    readonly=True states={'draft': [('readonly', False)]} string='Company type' args: []
  • contact_person_function Char
    readonly=True states={'draft': [('readonly', False)]} string='Function'
  • country_id Many2one → res.country
    default=<expr> ondelete='restrict' readonly=True required=True states={'draft': [('readonly', False)]} string='Country' args: 'res.country'
  • data_policy_approved Boolean
    default=False
  • date Date
    default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Subscription date request'
  • email Char
    readonly=True required=True states={'draft': [('readonly', False)]}
  • financial_risk_approved Boolean
    default=False
  • firstname Char
    readonly=True required=True states={'draft': [('readonly', False)]} string='First name'
  • gender Selection
    readonly=True states={'draft': [('readonly', False)]} args: [('male', _('Male')), ('female', _('Female')), ('other', _('Other'))]
  • generic_rules_approved Boolean
    default=False
  • iban Char
    readonly=True states={'draft': [('readonly', False)]} string='Account Number'
  • internal_rules_approved Boolean
    default=False string='Approved Internal Rules'
  • is_company Boolean
    readonly=True states={'draft': [('readonly', False)]} string='Is a company'
  • is_operation Boolean
    readonly=True states={'draft': [('readonly', False)]} string='Is an operation'
  • is_valid_iban Boolean
    compute='_compute_is_valid_iban' readonly=True store=True string='Valid IBAN?'
  • lang Selection
    default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Language' args: _lang_get
  • lastname Char
    readonly=True required=True states={'draft': [('readonly', False)]} string='Last name'
  • name Char
    compute='_compute_name' store=True
  • operation_request_id Many2one → operation.request
    check_company=True readonly=True states={'draft': [('readonly', False)]} string='Operation Request' args: 'operation.request'
  • ordered_parts Integer
    default=1 readonly=True required=True states={'draft': [('readonly', False)]} string='Number of Share'
  • partner_id Many2one → res.partner
    readonly=True states={'draft': [('readonly', False)]} string='Cooperator' args: 'res.partner'
  • phone Char
    readonly=True states={'draft': [('readonly', False)]}
  • same_address Boolean
    readonly=True states={'draft': [('readonly', False)]} string='Same address'
  • share_product_id Many2one → product.product
    check_company=True domain="[('is_share', '=', True), ('company_id', 'in', (company_id, False))]" readonly=True required=True states={'draft': [('readonly', False)]} string='Share type' args: 'product.product'
  • share_short_name Char
    readonly=True related='share_product_id.short_name' states={'draft': [('readonly', False)]} string='Share type name'
  • share_unit_price Float
    readonly=True related='share_product_id.list_price' states={'draft': [('readonly', False)]} string='Share price'
  • skip_iban_control Boolean
    help='Check to bypass iban format control.' string='Skip IBAN Control'
  • source Selection
    default='website' readonly=True states={'draft': [('readonly', False)]} args: [('website', 'Website'), ('crm', 'CRM'), ('manual', 'Manual'), ('operation', 'Operation')]
  • state Selection
    default='draft' required=True tracking=True args: [('draft', 'Draft'), ('blocked', 'Blocked'), ('done', 'Done'), ('waiting', 'Waiting'), ('transfer', 'Transfer'), ('cancelled', 'Cancelled'), ('paid', 'Paid')]
  • subscription_amount Monetary
    compute='_compute_subscription_amount' currency_field='company_currency_id' readonly=True states={'draft': [('readonly', False)]} string='Subscription amount'
  • type Selection
    default='new' readonly=True states={'draft': [('readonly', False)]} args: [('new', 'New Cooperator'), ('increase', 'Increase number of share')]
  • user_id Many2one → res.users
    check_company=True readonly=True string='Responsible' args: 'res.users'
  • zip_code Char
    readonly=True required=True states={'draft': [('readonly', False)]}
Public methods (23)
  • block_subscription_request(self)
  • cancel_subscription_request(self)
  • check_iban(self, iban)
  • create(self, vals_list)
    @api.model_create_multi
  • create_coop_partner(self)
  • create_invoice(self, partner)
  • create_journal(self, company)
    @api.model
  • get_accounting_account(self)
  • get_eater_vals(self, partner, share_product_id)
  • get_invoice_vals(self, partner)
  • get_journal(self)
  • get_partner_company_vals(self)
  • get_partner_vals(self)
  • get_person_info(self, partner)
  • get_representative_vals(self)
  • get_required_field(self)
  • onchange_partner(self)
    @api.onchange('partner_id')
  • put_on_waiting_list(self)
  • set_membership(self)
  • set_person_info(self, partner)
  • setup_partner(self)
    Ensure a partner with all required properties is linked to this subscription request (creating one if necessary) and return it.
  • unblock_subscription_request(self)
  • validate_subscription_request(self)

New fields (0)

No new fields.

Public methods (1)
  • validate(self)
REPOSITORY
REPOSITORYOCA/cooperative
GIT
GIThttps://github.com/OCA/cooperative.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/cooperative/tree/14.0/cooperator
VERSION
VERSION 2.1.1
CATEGORY
CATEGORYCooperative management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Coop IT Easy SC
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Coop IT Easy SC
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, Carmen Bianca BAKKER, oca-ci, Robin Keunen, hugues de keyzer, Daniil Digtyar Vasilieva
WEBSITE
WEBSITEhttps://github.com/OCA/cooperative
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:13
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/partner-contact:
    - partner_firstname
    - partner_contact_birthdate
    - partner_contact_personal_information_page
    - partner_contact_gender
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (32)
XML IDNameModelTypeStatus
cooperator_certificat_G001 cooperator_certificat_G001 ir.ui.view qweb New
cooperator_certificat_G001_document cooperator_certificat_G001_document ir.ui.view qweb New
cooperator_register_G001 cooperator_register_G001 ir.ui.view qweb New
cooperator_subscription_G001 cooperator_subscription_G001 ir.ui.view qweb New
email_template_form email.template.form mail.template field Inherits mail.email_template_form
external_layout_standard external_layout_standard ir.ui.view qweb Inherits web.external_layout_standard
operation_request_form operation.request.form operation.request form New
operation_request_tree operation.request.tree operation.request tree New
product_template_form_view product_template_form_view product.template xpath Inherits product.product_template_form_view
product_template_only_form_view product.template.product.form product.template field Inherits product.product_template_only_form_view
product_template_search_view product_template_search_view product.template xpath Inherits product.product_template_search_view
remove_partner_follower res.partner.remove.follower.inherit res.partner field Inherits mail.res_partner_view_form_inherit_mail
share_line_form share.line.form share.line form New
share_line_tree share.line.tree share.line tree New
subscription_register_form subscription.register.form subscription.register form New
subscription_register_tree subscription.register.tree subscription.register tree New
subscription_request_tree subscription.request.tree subscription.request tree New
subscription_request_view_form subscription.request.view.form subscription.request form New
theme_invoice_G002 theme_invoice_G002 ir.ui.view qweb New
theme_invoice_G002_document theme_invoice_G002_document ir.ui.view qweb New
view_account_journal_form account.journal.form account.journal field Inherits account.view_account_journal_form
view_company_form res.company.form.easymy.coop res.company group Inherits base.view_company_form
view_create_subscription Create Subscription partner.create.subscription form New
view_move_form account.move.form account.move field Inherits account.view_move_form
view_partner_form view_partner_form res.partner sheet Inherits base.view_partner_form
view_partner_tree view_partner_tree res.partner xpath Inherits base.view_partner_tree
view_res_partner_filter res.partner.select res.partner filter Inherits account.res_partner_view_search
view_share_line_filter Share Line Search share.line search New
view_subscription_register_filter Subscription Register Search subscription.register search New
view_subscription_request_filter Cooperator Subscription Search subscription.request search New
view_update_share_line_info Update Share line Info share.line.update.info form New
view_validate_subscription_request Validate subscription request validate.subscription.request form New
Models touched (16)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • release_capital_request Boolean
    string='Release capital request'
Public methods (0)

No public methods.

New fields (2)
  • get_cooperator_payment Boolean
    args: 'Get cooperator payments?'
  • get_general_payment Boolean
    string='Get general payments?'
Public methods (0)

No public methods.

New fields (2)
  • release_capital_request Boolean
    string='Release of capital request'
  • subscription_request Many2one → subscription.request
    check_company=True string='Subscription request' args: 'subscription.request'
Public methods (13)
  • action_invoice_paid(self)
  • create_user(self, partner)
  • get_mail_template_certificate(self)
  • get_membership_vals(self)
  • get_next_cooperator_number(self)
    @api.model
  • get_next_register_operation(self)
    @api.model
  • get_refund_domain(self, invoice)
  • get_share_line_vals(self, line, effective_date)
  • get_subscription_register_vals(self, line, effective_date)
  • post_process_confirm_paid(self, effective_date)
  • send_capital_release_request_mail(self)
  • set_cooperator_effective(self, effective_date)
  • set_membership(self)

New fields (17)
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • coop_candidate Boolean
    compute=_compute_coop_candidate store=True string='Cooperator candidate'
  • cooperator Boolean
    copy=False help='Check this box if this contact is a cooperator (effective or not).' readonly=True string='Cooperator'
  • cooperator_register_number Integer
    copy=False readonly=True string='Cooperator Number'
  • cooperator_type Selection
    compute=_compute_cooperator_type selection=_get_share_type store=True string='Cooperator Type'
  • data_policy_approved Boolean
    string='Approved Data Policy'
  • effective_date Date
    compute=_compute_effective_date store=True string='Effective Date'
  • financial_risk_approved Boolean
    string='Approved Financial Risk'
  • generic_rules_approved Boolean
    string='Approved generic rules'
  • internal_rules_approved Boolean
    string='Approved Internal Rules'
  • member Boolean
    copy=False help='Check this box if this cooperator is an effective member.' readonly=True string='Effective cooperator'
  • number_of_share Integer
    compute=_compute_share_info string='Number of share'
  • old_member Boolean
    help='Check this box if this cooperator is no more an effective member.' readonly=True string='Old cooperator'
  • partner_id Many2one → res.partner
    index=True ondelete='cascade' readonly=True required=True args: 'res.partner', 'Partner'
  • share_ids One2many → share.line
    compute=_compute_share_ids search=_search_share_ids string='Share Lines' args: 'share.line'
  • subscription_request_ids One2many → subscription.request
    compute=_compute_subscription_request_ids search=_search_subscription_request_ids string='Subscription request' args: 'subscription.request'
  • total_value Float
    compute=_compute_share_info string='Total value of shares'
Public methods (2)
  • get_cooperator_from_crn(self, company_register_number)
  • get_cooperator_from_email(self, email)

New fields (1)
  • is_cooperator_template Boolean
    string='Cooperator mail template'
Public methods (0)

No public methods.

New fields (19)
  • company_id Many2one → res.company
    change_default=True default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • effective_date Date
    string='Effective date'
  • invoice Many2one → account.move
    check_company=True string='Invoice' args: 'account.move'
  • operation_type Selection
    required=True string='Operation Type' args: [('subscription', 'Subscription'), ('transfer', 'Transfer'), ('sell_back', 'Sell Back'), ('convert', 'Conversion')]
  • partner_id Many2one → res.partner
    domain=[('member', '=', True)] required=True string='Cooperator' args: 'res.partner'
  • partner_id_to Many2one → res.partner
    domain=[('cooperator', '=', True)] string='Transfered to' args: 'res.partner'
  • quantity Integer
    required=True string='Number of share'
  • receiver_not_member Boolean
    string='Receiver is not a member'
  • request_date Date
    default=<expr> string='Request date'
  • share_product_id Many2one → product.product
    check_company=True domain="[('is_share', '=', True), ('company_id', 'in', (company_id, False))]" required=True string='Share type' args: 'product.product'
  • share_short_name Char
    related='share_product_id.short_name' string='Share type name'
  • share_to_product_id Many2one → product.product
    check_company=True domain="[('is_share', '=', True), ('company_id', 'in', (company_id, False))]" string='Convert to this share type' args: 'product.product'
  • share_to_short_name Char
    related='share_to_product_id.short_name' string='Share to type name'
  • share_to_unit_price Float
    related='share_to_product_id.list_price' string='Share to price'
  • share_unit_price Float
    related='share_product_id.list_price' string='Share price'
  • state Selection
    default='draft' required=True string='State' args: [('draft', 'Draft'), ('waiting', 'Waiting'), ('approved', 'Approved'), ('done', 'Done'), ('cancelled', 'Cancelled'), ('refused', 'Refused')]
  • subscription_amount Float
    compute='_compute_subscription_amount' string='Operation amount'
  • subscription_request One2many → subscription.request
    help="In case on a transfer of share. If the share receiver isn't a effective member then a subscription form should be filled." string='Share Receiver Info' args: 'subscription.request', 'operation_request_id'
  • user_id Many2one → res.users
    check_company=True default=<expr> readonly=True string='Responsible' args: 'res.users'
Public methods (12)
  • approve_operation(self)
  • cancel_operation(self)
  • execute_operation(self)
  • get_date_now(self)
  • get_subscription_register_vals(self, effective_date)
  • get_total_share_dic(self, partner)
  • hand_share_over(self, partner, share_product_id, quantity)
  • has_share_type(self)
  • refuse_operation(self)
  • reset_to_draft(self)
  • submit_operation(self)
  • validate(self)

New fields (13)
  • bank_account Char
    default=_get_bank_account required=True string='Bank account'
  • company_id Many2one → res.company
    change_default=True default=<expr> required=True string='Company' args: 'res.company'
  • cooperator Many2one → res.partner
    default=_get_partner string='Cooperator' args: 'res.partner'
  • email Char
    default=_get_email required=True string='Email'
  • is_company Boolean
    default=_get_is_company string='Is company?'
  • register_number Char
    default=_get_register_number string='Register Company Number'
  • representative_email Char
    default=_get_representative_email string='Representative email'
  • representative_firstname Char
    default=_get_representative_firstname string='Representative first name'
  • representative_lastname Char
    default=_get_representative_lastname string='Representative last name'
  • share_product Many2one → product.product
    check_company=True default=_default_product_id domain=_get_possible_share required=True string='Share Type' args: 'product.product'
  • share_qty Integer
    required=True string='Share Quantity'
  • share_unit_price Float
    readonly=True related='share_product.list_price' string='Share price'
  • subscription_amount Float
    compute='_compute_subscription_amount' digits='Account' readonly=True string='Subscription amount'
Public methods (2)
  • create_subscription(self)
  • on_change_share_type(self)
    @api.onchange('share_product')

New fields (9)
  • by_company Boolean
    string='Can be subscribed by companies?'
  • by_individual Boolean
    string='Can be subscribed by individuals?'
  • default_share_product Boolean
    string='Default share product'
  • display_on_website Boolean
    string='Display on website'
  • force_min_qty Boolean
    string='Force minimum quantity?'
  • is_share Boolean
    string='Is share?'
  • mail_template Many2one → mail.template
    comodel_name='mail.template' domain=[('model', '=', 'res.partner'), ('is_cooperator_template', '=', True)] help='If left empty, the default global mail template will be used.' string='Certificate email template'
  • minimum_quantity Integer
    default=1 string='Minimum quantity'
  • short_name Char
    string='Short name'
Public methods (1)
  • get_web_share_products(self, is_company)

New fields (43)
  • allow_id_card_upload Boolean
    string='Allow ID Card upload'
  • board_representative Char
    string='Board representative name'
  • bottom_logo1 Binary
    string='Bottom logo 1'
  • bottom_logo2 Binary
    string='Bottom logo 2'
  • coop_email_contact Char
    string='Contact email address for the cooperator'
  • cooperator_capital_release_mail_template Many2one → mail.template
    comodel_name='mail.template' domain=[('model', '=', 'account.move'), ('is_cooperator_template', '=', True)] help='If left empty, the default global mail template will be used.' string='Capital release email template'
  • cooperator_certificate_increase_mail_template Many2one → mail.template
    comodel_name='mail.template' domain=[('model', '=', 'res.partner'), ('is_cooperator_template', '=', True)] help='If left empty, the default global mail template will be used.' string='Certificate increase email template'
  • cooperator_certificate_mail_template Many2one → mail.template
    comodel_name='mail.template' domain=[('model', '=', 'res.partner'), ('is_cooperator_template', '=', True)] help='If left empty, the default global mail template will be used.' string='Certificate email template'
  • cooperator_confirmation_company_mail_template Many2one → mail.template
    comodel_name='mail.template' domain=[('model', '=', 'subscription.request'), ('is_cooperator_template', '=', True)] help='If left empty, the default global mail template will be used.' string='Company share confirmation email template'
  • cooperator_confirmation_mail_template Many2one → mail.template
    comodel_name='mail.template' domain=[('model', '=', 'subscription.request'), ('is_cooperator_template', '=', True)] help='If left empty, the default global mail template will be used.' string='Share confirmation email template'
  • cooperator_share_transfer_mail_template Many2one → mail.template
    comodel_name='mail.template' domain=[('model', '=', 'res.partner'), ('is_cooperator_template', '=', True)] help='If left empty, the default global mail template will be used.' string='Share transfer email template'
  • cooperator_share_update_mail_template Many2one → mail.template
    comodel_name='mail.template' domain=[('model', '=', 'res.partner'), ('is_cooperator_template', '=', True)] help='If left empty, the default global mail template will be used.' string='Share update email template'
  • cooperator_waiting_list_mail_template Many2one → mail.template
    comodel_name='mail.template' domain=[('model', '=', 'subscription.request'), ('is_cooperator_template', '=', True)] help='If left empty, the default global mail template will be used.' string='Waiting list email template'
  • create_user Boolean
    default=False string='Create user for cooperator'
  • data_policy_approval_required Boolean
    string='Is data policy approval required?'
  • data_policy_approval_text Html
    help='Text to display aside the checkbox to approve data policy.' translate=True
  • default_capital_release_request_payment_term Many2one → account.payment.term
    comodel_name='account.payment.term' help='Default payment term to use for capital release requests' string='Default Payment Term'
  • default_country_id Many2one → res.country
    default=<expr> string='Default country' args: 'res.country'
  • default_lang_id Many2one → res.lang
    string='Default lang' args: 'res.lang'
  • display_data_policy_approval Boolean
    help='Choose to display a data policy checkbox on the cooperator website form.'
  • display_financial_risk_approval Boolean
    help='Choose to display a financial risk checkbox on the cooperator website form.'
  • display_generic_rules_approval Boolean
    help='Choose to display generic rules checkbox on the cooperator website form.'
  • display_internal_rules_approval Boolean
    help='Choose to display an internal rules checkbox on the cooperator website form.'
  • display_logo1 Boolean
    string='Display logo 1'
  • display_logo2 Boolean
    string='Display logo 2'
  • financial_risk_approval_required Boolean
    string='Is financial risk approval required?'
  • financial_risk_approval_text Html
    help='Text to display aside the checkbox to approve financial risk.' translate=True
  • generic_rules_approval_required Boolean
    string='Is generic rules approval required?'
  • generic_rules_approval_text Html
    help='Text to display aside the checkbox to approve the generic rules.' translate=True
  • internal_rules_approval_required Boolean
    string='Is internal rules approval required?'
  • internal_rules_approval_text Html
    help='Text to display aside the checkbox to approve internal rules.' translate=True
  • logo_url Char
    compute='_compute_base_logo' string='logo url'
  • property_cooperator_account Many2one → account.account
    check_company=True comodel_name='account.account' domain=[('internal_type', '=', 'receivable'), ('deprecated', '=', False)] help='This account will be the default one as the receivable account for the cooperators' string='Cooperator Account'
  • send_capital_release_email Boolean
    default=True string='Send Capital Release email'
  • send_certificate_email Boolean
    default=True string='Send certificate email'
  • send_confirmation_email Boolean
    default=True string='Send confirmation email'
  • send_share_transfer_email Boolean
    default=True string='Send Share Transfer Email'
  • send_share_update_email Boolean
    default=True string='Send Share Update Email'
  • send_waiting_list_email Boolean
    default=True string='Send Waiting List email'
  • signature_scan Binary
    string='Board representative signature'
  • subscription_journal_id Many2one → account.journal
    check_company=True readonly=True args: 'account.journal', 'Subscription Journal'
  • subscription_maximum_amount Float
    string='Maximum authorised subscription amount'
  • unmix_share_type Boolean
    default=True help='If checked, A cooperator will be authorised to have only one type of share' string='Unmix share type'
Public methods (13)
  • create(self, vals)
    @api.model
  • get_cooperator_capital_release_mail_template(self)
  • get_cooperator_certificate_increase_mail_template(self)
  • get_cooperator_certificate_mail_template(self)
  • get_cooperator_confirmation_company_mail_template(self)
  • get_cooperator_confirmation_mail_template(self)
  • get_cooperator_share_transfer_mail_template(self)
  • get_cooperator_share_update_mail_template(self)
  • get_cooperator_waiting_list_mail_template(self)
  • onchange_data_policy_approval_required(self)
    @api.onchange('data_policy_approval_required')
  • onchange_financial_risk_approval_required(self)
    @api.onchange('financial_risk_approval_required')
  • onchange_generic_rules_approval_required(self)
    @api.onchange('generic_rules_approval_required')
  • onchange_internal_rules_approval_required(self)
    @api.onchange('internal_rules_approval_required')

New fields (9)
  • company_register_number Char
    string='Company Register Number'
  • cooperative_membership_id Many2one → cooperative.membership
    compute=_compute_cooperative_membership_id search=_search_cooperative_membership_id args: 'cooperative.membership', 'Cooperative Membership For Current Company'
  • cooperative_membership_ids One2many → cooperative.membership
    readonly=True args: 'cooperative.membership', 'partner_id', 'Cooperative Memberships'
  • legal_form Selection
    string='Legal form' args: []
  • representative Boolean
    string='Legal Representative'
  • representative_of_member_company Boolean
    compute=_compute_representative_of_member_company search=_search_representative_of_member_company string='Legal Representative of Member Company'
  • share_ids One2many → share.line
    string='Share Lines' args: 'share.line', 'partner_id'
  • subscription_request_ids One2many → subscription.request
    string='Subscription request' args: 'subscription.request', 'partner_id'
  • type Selection
    selection_add=[('representative', 'Representative')]
Public methods (7)
  • create_cooperative_membership(self, company_id)
  • get_cooperative_membership(self, company_id)
  • get_cooperator_from_crn(self, company_register_number)
  • get_cooperator_from_email(self, email)
  • get_representative(self)
  • has_representative(self)
  • onchange_parent_id(self)
    @api.onchange('parent_id')

New fields (9)
  • company_currency_id Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Company Currency' args: 'res.currency'
  • company_id Many2one → res.company
    change_default=True default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • effective_date Date
    readonly=True string='Effective Date'
  • partner_id Many2one → res.partner
    ondelete='cascade' readonly=True required=True string='Cooperator' args: 'res.partner'
  • share_number Integer
    readonly=True required=True string='Number of Share'
  • share_product_id Many2one → product.product
    check_company=True readonly=True required=True string='Share type' args: 'product.product'
  • share_short_name Char
    readonly=True related='share_product_id.short_name' string='Share type name'
  • share_unit_price Monetary
    currency_field='company_currency_id' readonly=True string='Share price'
  • total_amount_line Monetary
    compute='_compute_total_line' currency_field='company_currency_id' string='Total amount line'
Public methods (0)

No public methods.

New fields (3)
  • cooperator Many2one
    related='share_line.partner_id' string='Cooperator'
  • effective_date Date
    default=_get_effective_date required=True string='effective date'
  • share_line Many2one → share.line
    default=_get_share_line string='Share line' args: 'share.line'
Public methods (1)
  • update(self)

New fields (18)
  • company_currency_id Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Company Currency' args: 'res.currency'
  • company_id Many2one → res.company
    change_default=True default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • date Date
    readonly=True required=True string='Subscription Date'
  • name Char
    readonly=True required=True string='Number Operation'
  • partner_id Many2one → res.partner
    readonly=True required=True string='Cooperator' args: 'res.partner'
  • partner_id_to Many2one → res.partner
    readonly=True string='Transfered to' args: 'res.partner'
  • quantity Integer
    readonly=True string='Number of share'
  • quantity_to Integer
    readonly=True string='Number of share to'
  • register_number_operation Integer
    readonly=True required=True string='Register Number Operation'
  • share_product_id Many2one → product.product
    check_company=True domain=[('is_share', '=', True)] readonly=True required=True string='Share type' args: 'product.product'
  • share_short_name Char
    readonly=True related='share_product_id.short_name' string='Share type name'
  • share_to_product_id Many2one → product.product
    check_company=True domain=[('is_share', '=', True)] readonly=True string='Share to type' args: 'product.product'
  • share_to_short_name Char
    readonly=True related='share_to_product_id.short_name' string='Share to type name'
  • share_to_unit_price Monetary
    currency_field='company_currency_id' readonly=True string='Share to price'
  • share_unit_price Monetary
    currency_field='company_currency_id' readonly=True string='Share price'
  • total_amount_line Monetary
    compute='_compute_total_line' currency_field='company_currency_id' string='Total amount line'
  • type Selection
    readonly=True string='Operation Type' args: [('subscription', 'Subscription'), ('transfer', 'Transfer'), ('sell_back', 'Sell Back'), ('convert', 'Conversion')]
  • user_id Many2one → res.users
    check_company=True default=<expr> readonly=True string='Responsible' args: 'res.users'
Public methods (1)
  • read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
    @api.model

New fields (49)
  • active Boolean
    default=True
  • activities_address Char
    readonly=True states={'draft': [('readonly', False)]} string='Activities address'
  • activities_city Char
    readonly=True states={'draft': [('readonly', False)]} string='Activities city'
  • activities_country_id Many2one → res.country
    ondelete='restrict' readonly=True states={'draft': [('readonly', False)]} string='Activities country' args: 'res.country'
  • activities_zip_code Char
    readonly=True states={'draft': [('readonly', False)]} string='Activities zip Code'
  • address Char
    readonly=True required=True states={'draft': [('readonly', False)]} string='Address'
  • already_cooperator Boolean
    readonly=True states={'draft': [('readonly', False)]} string="I'm already cooperator"
  • birthdate Date
    readonly=True states={'draft': [('readonly', False)]} string='Date of birth'
  • capital_release_request One2many → account.move
    readonly=True states={'draft': [('readonly', False)]} string='Capital release request' args: 'account.move', 'subscription_request'
  • capital_release_request_date Date
    copy=False help='Keep empty to use the current date' readonly=True states={'draft': [('readonly', False)]} string='Force the capital release request date'
  • city Char
    readonly=True required=True states={'draft': [('readonly', False)]} string='City'
  • company_currency_id Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Company Currency' args: 'res.currency'
  • company_email Char
    readonly=True states={'draft': [('readonly', False)]} string='Company email'
  • company_id Many2one → res.company
    change_default=True default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • company_name Char
    readonly=True states={'draft': [('readonly', False)]} string='Company name'
  • company_register_number Char
    readonly=True states={'draft': [('readonly', False)]} string='Company register number'
  • company_type Selection
    readonly=True states={'draft': [('readonly', False)]} string='Company type' args: []
  • contact_person_function Char
    readonly=True states={'draft': [('readonly', False)]} string='Function'
  • country_id Many2one → res.country
    ondelete='restrict' readonly=True required=True states={'draft': [('readonly', False)]} string='Country' args: 'res.country'
  • data_policy_approved Boolean
    default=False string='Data Policy Approved'
  • date Date
    default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Subscription date request'
  • email Char
    readonly=True required=True states={'draft': [('readonly', False)]} string='Email'
  • financial_risk_approved Boolean
    default=False string='Financial Risk Approved'
  • firstname Char
    readonly=True required=True states={'draft': [('readonly', False)]} string='First name'
  • gender Selection
    readonly=True states={'draft': [('readonly', False)]} string='Gender' args: [('male', _('Male')), ('female', _('Female')), ('other', _('Other'))]
  • generic_rules_approved Boolean
    default=False string='Generic Rules Approved'
  • iban Char
    readonly=True states={'draft': [('readonly', False)]} string='Account Number'
  • internal_rules_approved Boolean
    default=False string='Approved Internal Rules'
  • is_company Boolean
    readonly=True states={'draft': [('readonly', False)]} string='Is a company'
  • is_operation Boolean
    readonly=True states={'draft': [('readonly', False)]} string='Is an operation'
  • is_valid_iban Boolean
    compute='_compute_is_valid_iban' readonly=True store=True string='Valid IBAN?'
  • lang Selection
    default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Language' args: _lang_get
  • lastname Char
    readonly=True required=True states={'draft': [('readonly', False)]} string='Last name'
  • name Char
    compute='_compute_name' store=True string='Name'
  • operation_request_id Many2one → operation.request
    check_company=True readonly=True states={'draft': [('readonly', False)]} string='Operation Request' args: 'operation.request'
  • ordered_parts Integer
    default=1 readonly=True required=True states={'draft': [('readonly', False)]} string='Number of Share'
  • partner_id Many2one → res.partner
    readonly=True states={'draft': [('readonly', False)]} string='Cooperator' args: 'res.partner'
  • phone Char
    readonly=True states={'draft': [('readonly', False)]} string='Phone'
  • same_address Boolean
    readonly=True states={'draft': [('readonly', False)]} string='Same address'
  • share_product_id Many2one → product.product
    check_company=True domain="[('is_share', '=', True), ('company_id', 'in', (company_id, False))]" readonly=True required=True states={'draft': [('readonly', False)]} string='Share type' args: 'product.product'
  • share_short_name Char
    readonly=True related='share_product_id.short_name' states={'draft': [('readonly', False)]} string='Share type name'
  • share_unit_price Float
    readonly=True related='share_product_id.list_price' states={'draft': [('readonly', False)]} string='Share price'
  • skip_iban_control Boolean
    help='Check to bypass iban format control.' string='Skip IBAN Control'
  • source Selection
    default='website' readonly=True states={'draft': [('readonly', False)]} string='Source' args: [('website', 'Website'), ('crm', 'CRM'), ('manual', 'Manual'), ('operation', 'Operation')]
  • state Selection
    default='draft' required=True string='State' tracking=True args: [('draft', 'Draft'), ('block', 'Blocked'), ('done', 'Done'), ('waiting', 'Waiting'), ('transfer', 'Transfer'), ('cancelled', 'Cancelled'), ('paid', 'paid')]
  • subscription_amount Monetary
    compute='_compute_subscription_amount' currency_field='company_currency_id' readonly=True states={'draft': [('readonly', False)]} string='Subscription amount'
  • type Selection
    default='new' readonly=True states={'draft': [('readonly', False)]} string='Type' args: [('new', 'New Cooperator'), ('increase', 'Increase number of share')]
  • user_id Many2one → res.users
    check_company=True readonly=True string='Responsible' args: 'res.users'
  • zip_code Char
    readonly=True required=True states={'draft': [('readonly', False)]} string='Zip Code'
Public methods (24)
  • block_subscription_request(self)
  • cancel_subscription_request(self)
  • check_empty_string(self, value)
  • check_iban(self, iban)
  • create(self, vals)
    @api.model
  • create_comp_sub_req(self, vals)
    @api.model
  • create_coop_partner(self)
  • create_invoice(self, partner)
  • create_journal(self, company)
    @api.model
  • get_accounting_account(self)
  • get_eater_vals(self, partner, share_product_id)
  • get_invoice_vals(self, partner)
  • get_journal(self)
  • get_mail_template_notif(self, is_company=False)
  • get_partner_company_vals(self)
  • get_partner_vals(self)
  • get_person_info(self, partner)
  • get_representative_vals(self)
  • get_required_field(self)
  • onchange_partner(self)
    @api.onchange('partner_id')
  • put_on_waiting_list(self)
  • set_membership(self)
  • unblock_subscription_request(self)
  • validate_subscription_request(self)

New fields (0)

No new fields.

Public methods (1)
  • validate(self)
REPOSITORY
REPOSITORYOCA/cooperative
GIT
GIThttps://github.com/OCA/cooperative.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/cooperative/tree/12.0/cooperator
VERSION
VERSION 6.5.0
CATEGORY
CATEGORYCooperative management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Coop IT Easy SC
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Coop IT Easy SC
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Robin Keunen, Victor Champonnois, hugues de keyzer
WEBSITE
WEBSITEhttps://github.com/OCA/cooperative
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:26
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/partner-contact:
    - partner_firstname
    - partner_contact_birthdate
    - partner_contact_personal_information_page
    - partner_contact_gender
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - http_routing
    - digest
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (33)
XML IDNameModelTypeStatus
cooperator_certificat_G001 cooperator_certificat_G001 ir.ui.view qweb New
cooperator_certificat_G001_document cooperator_certificat_G001_document ir.ui.view qweb New
cooperator_register_G001 cooperator_register_G001 ir.ui.view qweb New
cooperator_subscription_G001 cooperator_subscription_G001 ir.ui.view qweb New
email_template_form email.template.form mail.template field Inherits mail.email_template_form
external_layout_standard external_layout_standard ir.ui.view qweb Inherits web.external_layout_standard
invoice_form account.invoice.form account.invoice field Inherits account.invoice_form
operation_request_form operation.request.form operation.request form New
operation_request_tree operation.request.tree operation.request tree New
product_template_form_view product_template_form_view product.template xpath Inherits product.product_template_form_view
product_template_only_form_view product.template.product.form product.template field Inherits product.product_template_only_form_view
product_template_search_view product_template_search_view product.template xpath Inherits product.product_template_search_view
remove_partner_follower res.partner.remove.follower.inherit res.partner field Inherits mail.res_partner_view_form_inherit_mail
share_line_form share.line.form share.line form New
share_line_tree share.line.tree share.line tree New
subscription_register_form subscription.register.form subscription.register form New
subscription_register_tree subscription.register.tree subscription.register tree New
subscription_request_tree subscription.request.tree subscription.request tree New
subscription_request_view_form subscription.request.view.form subscription.request form New
theme_invoice_G002 theme_invoice_G002 ir.ui.view qweb New
theme_invoice_G002_document theme_invoice_G002_document ir.ui.view qweb New
view_account_bank_journal_form account.bank.journal.form account.journal field Inherits account.view_account_bank_journal_form
view_account_journal_form account.journal.form account.journal field Inherits account.view_account_journal_form
view_company_form res.company.form.easymy.coop res.company group Inherits base.view_company_form
view_create_subscription Create Subscription partner.create.subscription form New
view_partner_form view_partner_form res.partner sheet Inherits base.view_partner_form
view_partner_tree view_partner_tree res.partner xpath Inherits base.view_partner_tree
view_res_partner_filter res.partner.select res.partner filter Inherits base.view_res_partner_filter
view_share_line_filter Share Line Search share.line search New
view_subscription_register_filter Subscription Register Search subscription.register search New
view_subscription_request_filter Cooperator Subscription Search subscription.request search New
view_update_share_line_info Update Share line Info share.line.update.info form New
view_validate_subscription_request Validate subscription request validate.subscription.request form New
Models touched (15)

New fields (2)
  • release_capital_request Boolean
    string='Release of capital request'
  • subscription_request Many2one → subscription.request
    string='Subscription request' args: 'subscription.request'
Public methods (13)
  • action_invoice_paid(self)
    @api.multi
  • create_user(self, partner)
  • get_mail_template_certificate(self)
  • get_membership_vals(self)
  • get_refund_domain(self, invoice)
  • get_sequence_operation(self)
  • get_sequence_register(self)
  • get_share_line_vals(self, line, effective_date)
  • get_subscription_register_vals(self, line, effective_date)
  • post_process_confirm_paid(self, effective_date)
  • send_capital_release_request_mail(self)
  • set_cooperator_effective(self, effective_date)
  • set_membership(self)

New fields (0)

No new fields.

Public methods (1)
  • compute_refund(self, mode='refund')
    @api.multi

New fields (1)
  • release_capital_request Boolean
    string='Release capital request'
Public methods (0)

No public methods.

New fields (2)
  • get_cooperator_payment Boolean
    args: 'Get cooperator payments?'
  • get_general_payment Boolean
    string='Get general payments?'
Public methods (0)

No public methods.

New fields (1)
  • is_cooperator_template Boolean
    string='Cooperator mail template'
Public methods (0)

No public methods.

New fields (19)
  • company_id Many2one → res.company
    change_default=True default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • effective_date Date
    string='Effective date'
  • invoice Many2one → account.invoice
    string='Invoice' args: 'account.invoice'
  • operation_type Selection
    required=True string='Operation Type' args: [('subscription', 'Subscription'), ('transfer', 'Transfer'), ('sell_back', 'Sell Back'), ('convert', 'Conversion')]
  • partner_id Many2one → res.partner
    domain=[('member', '=', True)] required=True string='Cooperator' args: 'res.partner'
  • partner_id_to Many2one → res.partner
    domain=[('cooperator', '=', True)] string='Transfered to' args: 'res.partner'
  • quantity Integer
    required=True string='Number of share'
  • receiver_not_member Boolean
    string='Receiver is not a member'
  • request_date Date
    default=<expr> string='Request date'
  • share_product_id Many2one → product.product
    domain=[('is_share', '=', True)] required=True string='Share type' args: 'product.product'
  • share_short_name Char
    related='share_product_id.short_name' string='Share type name'
  • share_to_product_id Many2one → product.product
    domain=[('is_share', '=', True)] string='Convert to this share type' args: 'product.product'
  • share_to_short_name Char
    related='share_to_product_id.short_name' string='Share to type name'
  • share_to_unit_price Float
    related='share_to_product_id.list_price' string='Share to price'
  • share_unit_price Float
    related='share_product_id.list_price' string='Share price'
  • state Selection
    default='draft' required=True string='State' args: [('draft', 'Draft'), ('waiting', 'Waiting'), ('approved', 'Approved'), ('done', 'Done'), ('cancelled', 'Cancelled'), ('refused', 'Refused')]
  • subscription_amount Float
    compute='_compute_subscription_amount' string='Operation amount'
  • subscription_request One2many → subscription.request
    help="In case on a transfer of share. If the share receiver isn't a effective member then a subscription form should be filled." string='Share Receiver Info' args: 'subscription.request', 'operation_request_id'
  • user_id Many2one → res.users
    default=<expr> readonly=True string='Responsible' args: 'res.users'
Public methods (12)
  • approve_operation(self)
    @api.multi
  • cancel_operation(self)
    @api.multi
  • execute_operation(self)
    @api.multi
  • get_date_now(self)
  • get_subscription_register_vals(self, effective_date)
  • get_total_share_dic(self, partner)
  • hand_share_over(self, partner, share_product_id, quantity)
  • has_share_type(self)
  • refuse_operation(self)
    @api.multi
  • reset_to_draft(self)
    @api.multi
  • submit_operation(self)
    @api.multi
  • validate(self)

New fields (12)
  • bank_account Char
    default=_get_bank_account required=True string='Bank account'
  • cooperator Many2one → res.partner
    default=_get_partner string='Cooperator' args: 'res.partner'
  • email Char
    default=_get_email required=True string='Email'
  • is_company Boolean
    default=_get_is_company string='Is company?'
  • register_number Char
    default=_get_register_number string='Register Company Number'
  • representative_email Char
    default=_get_representative_email string='Representative email'
  • representative_firstname Char
    default=_get_representative_firstname string='Representative first name'
  • representative_lastname Char
    default=_get_representative_lastname string='Representative last name'
  • share_product Many2one → product.product
    default=_default_product_id domain=_get_possible_share required=True string='Share Type' args: 'product.product'
  • share_qty Integer
    required=True string='Share Quantity'
  • share_unit_price Float
    readonly=True related='share_product.list_price' string='Share price'
  • subscription_amount Float
    compute='_compute_subscription_amount' digits=dp.get_precision('Account') readonly=True string='Subscription amount'
Public methods (2)
  • create_subscription(self)
    @api.multi
  • on_change_share_type(self)
    @api.multi@api.onchange('share_product')

New fields (10)
  • by_company Boolean
    string='Can be subscribed by companies?'
  • by_individual Boolean
    string='Can be subscribed by individuals?'
  • customer Boolean
    string='Become customer'
  • default_share_product Boolean
    string='Default share product'
  • display_on_website Boolean
    string='Display on website'
  • force_min_qty Boolean
    string='Force minimum quantity?'
  • is_share Boolean
    string='Is share?'
  • mail_template Many2one → mail.template
    string='Mail template' args: 'mail.template'
  • minimum_quantity Integer
    default=1 string='Minimum quantity'
  • short_name Char
    string='Short name'
Public methods (1)
  • get_web_share_products(self, is_company)
    @api.multi

New fields (34)
  • allow_id_card_upload Boolean
    string='Allow ID Card upload'
  • board_representative Char
    string='Board representative name'
  • bottom_logo1 Binary
    string='Bottom logo 1'
  • bottom_logo2 Binary
    string='Bottom logo 2'
  • coop_email_contact Char
    string='Contact email address for the cooperator'
  • create_user Boolean
    default=False string='Create user for cooperator'
  • data_policy_approval_required Boolean
    string='Is data policy approval required?'
  • data_policy_approval_text Html
    help='Text to display aside the checkbox to approve data policy.' translate=True
  • default_capital_release_request_payment_term Many2one → account.payment.term
    comodel_name='account.payment.term' help='Default payment term to use for capital release requests' string='Default Payment Term'
  • default_country_id Many2one → res.country
    default=<expr> string='Default country' args: 'res.country'
  • default_lang_id Many2one → res.lang
    string='Default lang' args: 'res.lang'
  • display_data_policy_approval Boolean
    help='Choose to display a data policy checkbox on the cooperator website form.'
  • display_financial_risk_approval Boolean
    help='Choose to display a financial risk checkbox on the cooperator website form.'
  • display_generic_rules_approval Boolean
    help='Choose to display generic rules checkbox on the cooperator website form.'
  • display_internal_rules_approval Boolean
    help='Choose to display an internal rules checkbox on the cooperator website form.'
  • display_logo1 Boolean
    string='Display logo 1'
  • display_logo2 Boolean
    string='Display logo 2'
  • financial_risk_approval_required Boolean
    string='Is financial risk approval required?'
  • financial_risk_approval_text Html
    help='Text to display aside the checkbox to approve financial risk.' translate=True
  • generic_rules_approval_required Boolean
    string='Is generic rules approval required?'
  • generic_rules_approval_text Html
    help='Text to display aside the checkbox to approve the generic rules.' translate=True
  • internal_rules_approval_required Boolean
    string='Is internal rules approval required?'
  • internal_rules_approval_text Html
    help='Text to display aside the checkbox to approve internal rules.' translate=True
  • logo_url Char
    compute='_compute_base_logo' string='logo url'
  • property_cooperator_account Many2one → account.account
    comodel_name='account.account' domain=[('internal_type', '=', 'receivable'), ('deprecated', '=', False)] help='This account will be the default one as the receivable account for the cooperators' string='Cooperator Account'
  • send_capital_release_email Boolean
    default=True string='Send Capital Release email'
  • send_certificate_email Boolean
    default=True string='Send certificate email'
  • send_confirmation_email Boolean
    default=True string='Send confirmation email'
  • send_share_transfer_email Boolean
    default=True string='Send Share Transfer Email'
  • send_share_update_email Boolean
    default=True string='Send Share Update Email'
  • send_waiting_list_email Boolean
    default=True string='Send Waiting List email'
  • signature_scan Binary
    string='Board representative signature'
  • subscription_maximum_amount Float
    string='Maximum authorised subscription amount'
  • unmix_share_type Boolean
    default=True help='If checked, A cooperator will be authorised to have only one type of share' string='Unmix share type'
Public methods (4)
  • onchange_data_policy_approval_required(self)
    @api.onchange('data_policy_approval_required')
  • onchange_financial_risk_approval_required(self)
    @api.onchange('financial_risk_approval_required')
  • onchange_generic_rules_approval_required(self)
    @api.onchange('generic_rules_approval_required')
  • onchange_internal_rules_approval_required(self)
    @api.onchange('internal_rules_approval_required')

New fields (20)
  • company_register_number Char
    string='Company Register Number'
  • coop_candidate Boolean
    compute='_compute_coop_candidate' readonly=True store=True string='Cooperator candidate'
  • cooperator Boolean
    copy=False help='Check this box if this contact is a cooperator (effective or not).' readonly=True string='Cooperator'
  • cooperator_register_number Integer
    copy=False string='Cooperator Number'
  • cooperator_type Selection
    compute=_compute_cooperator_type selection='_get_share_type' store=True string='Cooperator Type'
  • data_policy_approved Boolean
    string='Approved Data Policy'
  • effective_date Date
    compute=_compute_effective_date store=True string='Effective Date'
  • financial_risk_approved Boolean
    string='Approved Financial Risk'
  • generic_rules_approved Boolean
    string='Approved generic rules'
  • internal_rules_approved Boolean
    string='Approved Internal Rules'
  • legal_form Selection
    string='Legal form' args: []
  • member Boolean
    copy=False help='Check this box if this cooperator is an effective member.' readonly=True string='Effective cooperator'
  • number_of_share Integer
    compute='_compute_share_info' multi='share' readonly=True string='Number of share'
  • old_member Boolean
    help='Check this box if this cooperator is no more an effective member.' readonly=True string='Old cooperator'
  • representative Boolean
    string='Legal Representative'
  • representative_of_member_company Boolean
    compute='_compute_representative_of_member_company' store=True string='Legal Representative of Member Company'
  • share_ids One2many → share.line
    string='Share Lines' args: 'share.line', 'partner_id'
  • subscription_request_ids One2many → subscription.request
    string='Subscription request' args: 'subscription.request', 'partner_id'
  • total_value Float
    compute='_compute_share_info' multi='share' readonly=True string='Total value of shares'
  • type Selection
    selection_add=[('representative', 'Representative')]
Public methods (5)
  • get_cooperator_from_crn(self, company_register_number)
  • get_cooperator_from_email(self, email)
  • get_representative(self)
    @api.multi
  • has_representative(self)
    @api.multi
  • onchange_parent_id(self)
    @api.onchange('parent_id')

New fields (9)
  • company_currency_id Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Company Currency' args: 'res.currency'
  • company_id Many2one → res.company
    change_default=True default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • effective_date Date
    readonly=True string='Effective Date'
  • partner_id Many2one → res.partner
    ondelete='cascade' readonly=True required=True string='Cooperator' args: 'res.partner'
  • share_number Integer
    readonly=True required=True string='Number of Share'
  • share_product_id Many2one → product.product
    readonly=True required=True string='Share type' args: 'product.product'
  • share_short_name Char
    readonly=True related='share_product_id.short_name' string='Share type name'
  • share_unit_price Monetary
    currency_field='company_currency_id' readonly=True string='Share price'
  • total_amount_line Monetary
    compute='_compute_total_line' currency_field='company_currency_id' string='Total amount line'
Public methods (0)

No public methods.

New fields (3)
  • cooperator Many2one
    related='share_line.partner_id' string='Cooperator'
  • effective_date Date
    default=_get_effective_date required=True string='effective date'
  • share_line Many2one → share.line
    default=_get_share_line string='Share line' args: 'share.line'
Public methods (1)
  • update(self)
    @api.multi

New fields (18)
  • company_currency_id Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Company Currency' args: 'res.currency'
  • company_id Many2one → res.company
    change_default=True default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • date Date
    readonly=True required=True string='Subscription Date'
  • name Char
    readonly=True required=True string='Number Operation'
  • partner_id Many2one → res.partner
    readonly=True required=True string='Cooperator' args: 'res.partner'
  • partner_id_to Many2one → res.partner
    readonly=True string='Transfered to' args: 'res.partner'
  • quantity Integer
    readonly=True string='Number of share'
  • quantity_to Integer
    readonly=True string='Number of share to'
  • register_number_operation Integer
    readonly=True required=True string='Register Number Operation'
  • share_product_id Many2one → product.product
    domain=[('is_share', '=', True)] readonly=True required=True string='Share type' args: 'product.product'
  • share_short_name Char
    readonly=True related='share_product_id.short_name' string='Share type name'
  • share_to_product_id Many2one → product.product
    domain=[('is_share', '=', True)] readonly=True string='Share to type' args: 'product.product'
  • share_to_short_name Char
    readonly=True related='share_to_product_id.short_name' string='Share to type name'
  • share_to_unit_price Monetary
    currency_field='company_currency_id' readonly=True string='Share to price'
  • share_unit_price Monetary
    currency_field='company_currency_id' readonly=True string='Share price'
  • total_amount_line Monetary
    compute='_compute_total_line' currency_field='company_currency_id' string='Total amount line'
  • type Selection
    readonly=True string='Operation Type' args: [('subscription', 'Subscription'), ('transfer', 'Transfer'), ('sell_back', 'Sell Back'), ('convert', 'Conversion')]
  • user_id Many2one → res.users
    default=<expr> readonly=True string='Responsible' args: 'res.users'
Public methods (1)
  • read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
    @api.model

New fields (49)
  • active Boolean
    default=True
  • activities_address Char
    readonly=True states={'draft': [('readonly', False)]} string='Activities address'
  • activities_city Char
    readonly=True states={'draft': [('readonly', False)]} string='Activities city'
  • activities_country_id Many2one → res.country
    ondelete='restrict' readonly=True states={'draft': [('readonly', False)]} string='Activities country' args: 'res.country'
  • activities_zip_code Char
    readonly=True states={'draft': [('readonly', False)]} string='Activities zip Code'
  • address Char
    readonly=True required=True states={'draft': [('readonly', False)]} string='Address'
  • already_cooperator Boolean
    readonly=True states={'draft': [('readonly', False)]} string="I'm already cooperator"
  • birthdate Date
    readonly=True states={'draft': [('readonly', False)]} string='Date of birth'
  • capital_release_request One2many → account.invoice
    readonly=True states={'draft': [('readonly', False)]} string='Capital release request' args: 'account.invoice', 'subscription_request'
  • capital_release_request_date Date
    copy=False help='Keep empty to use the current date' readonly=True states={'draft': [('readonly', False)]} string='Force the capital release request date'
  • city Char
    readonly=True required=True states={'draft': [('readonly', False)]} string='City'
  • company_currency_id Many2one → res.currency
    readonly=True related='company_id.currency_id' string='Company Currency' args: 'res.currency'
  • company_email Char
    readonly=True states={'draft': [('readonly', False)]} string='Company email'
  • company_id Many2one → res.company
    change_default=True default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • company_name Char
    readonly=True states={'draft': [('readonly', False)]} string='Company name'
  • company_register_number Char
    readonly=True states={'draft': [('readonly', False)]} string='Company register number'
  • company_type Selection
    readonly=True states={'draft': [('readonly', False)]} string='Company type' args: []
  • contact_person_function Char
    readonly=True states={'draft': [('readonly', False)]} string='Function'
  • country_id Many2one → res.country
    ondelete='restrict' readonly=True required=True states={'draft': [('readonly', False)]} string='Country' args: 'res.country'
  • data_policy_approved Boolean
    default=False string='Data Policy Approved'
  • date Date
    default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Subscription date request'
  • email Char
    readonly=True required=True states={'draft': [('readonly', False)]} string='Email'
  • financial_risk_approved Boolean
    default=False string='Financial Risk Approved'
  • firstname Char
    readonly=True required=True states={'draft': [('readonly', False)]} string='First name'
  • gender Selection
    readonly=True states={'draft': [('readonly', False)]} string='Gender' args: [('male', _('Male')), ('female', _('Female')), ('other', _('Other'))]
  • generic_rules_approved Boolean
    default=False string='Generic Rules Approved'
  • iban Char
    readonly=True states={'draft': [('readonly', False)]} string='Account Number'
  • internal_rules_approved Boolean
    default=False string='Approved Internal Rules'
  • is_company Boolean
    readonly=True states={'draft': [('readonly', False)]} string='Is a company'
  • is_operation Boolean
    readonly=True states={'draft': [('readonly', False)]} string='Is an operation'
  • is_valid_iban Boolean
    compute='_compute_is_valid_iban' readonly=True store=True string='Valid IBAN?'
  • lang Selection
    default=<expr> readonly=True required=True states={'draft': [('readonly', False)]} string='Language' args: _lang_get
  • lastname Char
    readonly=True required=True states={'draft': [('readonly', False)]} string='Last name'
  • name Char
    compute='_compute_name' store=True string='Name'
  • operation_request_id Many2one → operation.request
    readonly=True states={'draft': [('readonly', False)]} string='Operation Request' args: 'operation.request'
  • ordered_parts Integer
    default=1 readonly=True required=True states={'draft': [('readonly', False)]} string='Number of Share'
  • partner_id Many2one → res.partner
    readonly=True states={'draft': [('readonly', False)]} string='Cooperator' args: 'res.partner'
  • phone Char
    readonly=True states={'draft': [('readonly', False)]} string='Phone'
  • same_address Boolean
    readonly=True states={'draft': [('readonly', False)]} string='Same address'
  • share_product_id Many2one → product.product
    domain=[('is_share', '=', True)] readonly=True required=True states={'draft': [('readonly', False)]} string='Share type' args: 'product.product'
  • share_short_name Char
    readonly=True related='share_product_id.short_name' states={'draft': [('readonly', False)]} string='Share type name'
  • share_unit_price Float
    readonly=True related='share_product_id.list_price' states={'draft': [('readonly', False)]} string='Share price'
  • skip_iban_control Boolean
    help='Check to bypass iban format control.' string='Skip IBAN Control'
  • source Selection
    default='website' readonly=True states={'draft': [('readonly', False)]} string='Source' args: [('website', 'Website'), ('crm', 'CRM'), ('manual', 'Manual'), ('operation', 'Operation')]
  • state Selection
    default='draft' required=True string='State' track_visibility=True args: [('draft', 'Draft'), ('block', 'Blocked'), ('done', 'Done'), ('waiting', 'Waiting'), ('transfer', 'Transfer'), ('cancelled', 'Cancelled'), ('paid', 'paid')]
  • subscription_amount Monetary
    compute='_compute_subscription_amount' currency_field='company_currency_id' readonly=True states={'draft': [('readonly', False)]} string='Subscription amount'
  • type Selection
    default='new' readonly=True states={'draft': [('readonly', False)]} string='Type' args: [('new', 'New Cooperator'), ('increase', 'Increase number of share')]
  • user_id Many2one → res.users
    readonly=True string='Responsible' args: 'res.users'
  • zip_code Char
    readonly=True required=True states={'draft': [('readonly', False)]} string='Zip Code'
Public methods (24)
  • block_subscription_request(self)
    @api.multi
  • cancel_subscription_request(self)
    @api.multi
  • check_empty_string(self, value)
  • check_iban(self, iban)
  • create(self, vals)
    @api.model
  • create_comp_sub_req(self, vals)
    @api.model
  • create_coop_partner(self)
  • create_invoice(self, partner)
  • get_accounting_account(self)
  • get_eater_vals(self, partner, share_product_id)
  • get_invoice_vals(self, partner)
  • get_journal(self)
  • get_mail_template_notif(self, is_company=False)
  • get_partner_company_vals(self)
  • get_partner_vals(self)
  • get_person_info(self, partner)
  • get_representative_vals(self)
  • get_required_field(self)
  • onchange_partner(self)
    @api.onchange('partner_id')
  • put_on_waiting_list(self)
    @api.multi
  • set_membership(self)
  • unblock_subscription_request(self)
    @api.multi
  • update_partner_info(self)
  • validate_subscription_request(self)
    @api.multi

New fields (0)

No new fields.

Public methods (1)
  • validate(self)
    @api.multi