Skip to content
Snippets Groups Projects
Commit 76513813 authored by Benjamin - Le Filament's avatar Benjamin - Le Filament
Browse files

[add] contacts membership & number sequence

parent b5d452ab
Branches
No related tags found
No related merge requests found
......@@ -11,6 +11,8 @@
'data': [
# security
'security/ir.model.access.csv',
# datas
'data/membership_sequence.xml',
# views
'views/membership_membership_line.xml',
'views/res_partner.xml',
......
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2021 Le Filament
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<data noupdate="1">
<record id="membership_number_seq" model="ir.sequence">
<field name="name">AFAC : Num Adherent</field>
<field name="code">afac.membership.number</field>
<field name="prefix"></field>
<field eval="1" name="number_next"/>
<field eval="1" name="number_increment"/>
<field eval="False" name="company_id"/>
</record>
</data>
</odoo>
......@@ -8,7 +8,26 @@ class ResPartner(models.Model):
_inherit = 'res.partner'
# Company Fields
membership_number = fields.Integer(string='N° Adhérent')
membership_number = fields.Integer(
string='N° Adhérent',
compute='_compute_membership_number',
store=True
)
membership_contact_id = fields.Many2one(
comodel_name='res.partner',
string='Contact Adhésion',
domain="[('parent_id', '=', id)]"
)
membership_mandate_id = fields.Many2one(
comodel_name='res.partner',
string='Contact Mandataire',
domain="[('parent_id', '=', id)]"
)
membership_delegate_id = fields.Many2one(
comodel_name='res.partner',
string='Contact Délégué',
domain="[('parent_id', '=', id)]"
)
# ------------------------------------------------------
# SQL Constraints
......@@ -21,6 +40,11 @@ class ResPartner(models.Model):
# ------------------------------------------------------
# Computed fields / Search Fields
# ------------------------------------------------------
@api.depends('membership_state')
def _compute_membership_number(self):
for partner in self:
if partner.membership_number == 0 and partner.membership_state != 'none':
self.membership_number = self.env['ir.sequence'].next_by_code('afac.membership.number')
# ------------------------------------------------------
# Onchange / Constraints
......
......@@ -27,6 +27,21 @@
</field>
</record>
<!-- Tree View -->
<record model="ir.ui.view" id="res_partner_afac_tree">
<field name="name">res.partner.afac.tree</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_tree"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='category_id']" position="after">
<field name="membership_number" optional="hide"/>
<field name="membership_mandate_id" optional="hide"/>
<field name="membership_delegate_id" optional="hide"/>
<field name="membership_contact_id" optional="hide"/>
</xpath>
</field>
</record>
<!-- Form view -->
<record model="ir.ui.view" id="res_partner_membership_form">
......@@ -49,6 +64,54 @@
<xpath expr="//field[@name='associate_member']" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
<xpath expr="//field[@name='member_lines']" position="before">
<separator></separator>
<group>
<group>
<field name="membership_mandate_id" options="{'no_create': True}"/>
<field name="membership_delegate_id" options="{'no_create': True}"/>
</group>
<group>
<field name="membership_contact_id" options="{'no_create': True}"/>
</group>
</group>
</xpath>
</field>
</record>
<!-- Form view -->
<record model="ir.ui.view" id="res_partner_membership_form">
<field name="name">res.partner.membership.form.inherit</field>
<field name="inherit_id" ref="membership.view_partner_form"/>
<field name="model">res.partner</field>
<field name="arch" type="xml">
<xpath expr="//page[@name='membership']" position="attributes">
<attribute name="attrs">{'invisible': [('is_company', '!=', True)]}</attribute>
</xpath>
<xpath expr="//field[@name='free_member']" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
<xpath expr="//field[@name='free_member']" position="before">
<field name="membership_number"/>
</xpath>
<xpath expr="//button[@name='%(membership.action_membership_invoice_view)d']" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
<xpath expr="//field[@name='associate_member']" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
<xpath expr="//field[@name='member_lines']" position="before">
<separator></separator>
<group>
<group>
<field name="membership_mandate_id" options="{'no_create': True}"/>
<field name="membership_delegate_id" options="{'no_create': True}"/>
</group>
<group>
<field name="membership_contact_id" options="{'no_create': True}"/>
</group>
</group>
</xpath>
</field>
</record>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment