Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • master
  • v1.4.0
  • v1.3.1
  • v1.3.0
  • v1.2.6
  • v1.2.5
  • v1.2.4
  • v1.2.3
  • v1.2.2
  • v1.2.1
  • v1.2.0
  • v1.1.0
  • v1.0.2
  • v1.0.1
  • v1.0.0
15 résultats

mail.yml

Blame
  • res_partner.py NaN Gio
    # Copyright 2021 Le Filament (<http://www.le-filament.com>)
    # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
    
    from odoo import api, fields, models
    
    
    class ResPartner(models.Model):
        _inherit = "res.partner"
    
        # Company Fields
        membership_number = fields.Integer(
            string="N° Adhérent",
        )
        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égataire",
            domain="[('parent_id', '=', id)]",
        )
        membership_is_delegate = fields.Boolean(
            string="Personne Délégataire",
            compute="_compute_membership_is_delegate",
            store=True,
            default=False,
        )
        membership_is_mandate = fields.Boolean(
            string="Personne Mandataire",
            compute="_compute_membership_is_mandate",
            store=True,
            default=False,
        )
        membership_is_contact = fields.Boolean(
            string="Personne Contact Adhésion",
            compute="_compute_membership_is_contact",
            store=True,
            default=False,
        )
        is_membership_archived = fields.Boolean("Membre archivé")
        last_membership_invoice_date = fields.Date(
            string="Date de dernière facture d'adhésion",
            compute="_compute_last_membership_invoice_date",
        )
    
        # ------------------------------------------------------
        # SQL Constraints
        # ------------------------------------------------------
    
        # ------------------------------------------------------
        # Default methods
        # ------------------------------------------------------
    
        # ------------------------------------------------------
        # Computed fields / Search Fields
        # ------------------------------------------------------
        @api.depends("parent_id", "parent_id.membership_delegate_id")
        def _compute_membership_is_delegate(self):
            for partner in self:
                if partner.parent_id.membership_delegate_id == partner:
                    partner.membership_is_delegate = True
    
        @api.depends("parent_id", "parent_id.membership_mandate_id")
        def _compute_membership_is_mandate(self):
            for partner in self:
                if partner.parent_id.membership_mandate_id == partner:
                    partner.membership_is_mandate = True
    
        @api.depends("parent_id", "parent_id.membership_contact_id")
        def _compute_membership_is_contact(self):
            for partner in self:
                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
    
        @api.depends("member_lines")
        def _compute_last_membership_invoice_date(self):
            for partner in self:
                invoices = partner.sudo().member_lines.filtered(
                    lambda line: line.account_invoice_id
                    and line.account_invoice_id.state == "posted"
                ).mapped("date")
                last_invoice_date = max(invoices, default=False)
                partner.last_membership_invoice_date = last_invoice_date
    
        # ------------------------------------------------------
        # Onchange / Constraints
        # ------------------------------------------------------
        @api.onchange("parent_id")
        def _onchange_parent_id(self):
            res = super(ResPartner, self)._onchange_parent_id()
            self.is_membership_archived = self.parent_id.is_membership_archived
            return res
    
        # ------------------------------------------------------
        # CRUD methods (ORM overrides)
        # ------------------------------------------------------
        def write(self, vals):
            """
            Inherit write ORM function and
            apply parent values for child
            """
            res = super(ResPartner, self).write(vals)
            for partner in self:
                # if partner has child, update all childs
                if partner.child_ids:
                    partner.child_ids.update(
                        {"is_membership_archived": partner.is_membership_archived}
                    )
    
            return res
    
        # ------------------------------------------------------
        # Actions
        # ------------------------------------------------------
    
        # ------------------------------------------------------
        # Business methods
        # ------------------------------------------------------