diff --git a/models/res_partner.py b/models/res_partner.py index 7374a59e5cea886e5bf8950c7eda94f753b90292..7ef62f14953ef7c46e9d841f7f053c039f3c0fd6 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -74,6 +74,27 @@ class ResPartner(models.Model): if partner.parent_id.membership_contact_id == partner: partner.membership_is_contact = True + @api.depends( + "free_member", + "member_lines.state", + "member_lines.category_id", + "member_lines.date_from", + "member_lines.date_to", + "member_lines.date_cancel", + "associate_member.membership_state", + "associate_member.membership_category_ids", + "parent_id", + "parent_id.membership_state", + ) + def _compute_membership_state(self): + """ + Inherit parent function to attribute membership state to childs + """ + super()._compute_membership_state() + for partner in self: + if partner.parent_id and not partner.is_company: + partner.membership_state = partner.parent_id.membership_state + # ------------------------------------------------------ # Onchange / Constraints # ------------------------------------------------------ diff --git a/views/res_partner.xml b/views/res_partner.xml index 37dc33ea73d62d261f01e0e211f9984ce019eeba..285d51e65ea5f64013b1199fdd8f4f0c2c57b0aa 100644 --- a/views/res_partner.xml +++ b/views/res_partner.xml @@ -4,7 +4,7 @@ <odoo> <data> - <!-- Search View --> + <!-- Search View Partner --> <record model="ir.ui.view" id="res_partner_afac_member_filter"> <field name="name">res.partner.afac.member.select</field> <field name="model">res.partner</field> @@ -15,14 +15,24 @@ </xpath> <xpath expr="//filter[@name='inactive']" position="before"> <filter - string="Membres" - name="member" - domain="[('membership_state', 'in', ('free', 'paid'))]" + string="Tous les Membres" + name="all_member" + domain="[('membership_state', 'in', ('free', 'invoiced', 'paid'))]" + /> + <filter + string="Structures Membres" + name="company_member" + domain="[('membership_state', 'in', ('free', 'invoiced', 'paid')), ('is_company', '=', True)]" + /> + <filter + string="Personnes Membres" + name="people_member" + domain="[('membership_state', 'in', ('free', 'invoiced', 'paid')), ('is_company', '!=', True)]" /> <filter string="En attente" name="waiting_member" - domain="[('membership_state', 'in', ('waiting', 'invoiced'))]" + domain="[('membership_state', '=', 'waiting')]" /> <filter string="Anciens membres" @@ -34,7 +44,7 @@ <xpath expr="//filter[@name='group_country']" position="before"> <filter name="group_membership_state" - string="Collège" + string="Statut d'adhésion" context="{'group_by': 'membership_state'}" /> <separator /> @@ -42,6 +52,31 @@ </field> </record> + <!-- Search View Membership --> + <record model="ir.ui.view" id="view_res_partner_member_filter"> + <field name="name">res.partner.afac.member.select</field> + <field name="model">res.partner</field> + <field name="inherit_id" ref="membership.view_res_partner_member_filter" /> + <field name="arch" type="xml"> + <xpath expr="//filter[@name='all_members']" position="before"> + <filter + name="company_members" + string="Structures membres" + domain="[('membership_state', 'in', ['invoiced', 'paid', 'free']), ('is_company', '=', True)]" + /> + <filter + name="people_members" + string="Personnes membres" + domain="[('membership_state', 'in', ['invoiced', 'paid', 'free']), ('is_company', '!=', True)]" + /> + </xpath> + <xpath expr="//filter[@name='all_members']" position="attributes"> + <attribute name="string">Tous les membres</attribute> + <attribute name="help">Personnes et structures</attribute> + </xpath> + </field> + </record> + <!-- Tree View --> <record model="ir.ui.view" id="res_partner_afac_tree"> <field name="name">res.partner.afac.tree</field> @@ -115,6 +150,7 @@ > <group> <group> + <field name="membership_state" /> <field name="membership_is_delegate" /> <field name="membership_is_mandate" /> <field name="membership_is_contact" /> @@ -125,5 +161,10 @@ </field> </record> + <!-- Action --> + <record model="ir.actions.act_window" id="membership.action_membership_members"> + <field name="context">{"search_default_company_members": 1,}</field> + </record> + </data> </odoo>