diff --git a/models/res_partner.py b/models/res_partner.py index 3b55f1051bb4d009a9667caa0b2ce4e24938d632..b3f3b495b5f2a60e87980c3e0fd7240519e6d3fa 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -7,7 +7,7 @@ import time from datetime import datetime, timedelta from odoo import _, api, fields, models -from odoo.exceptions import ValidationError +from odoo.exceptions import UserError, ValidationError _logger = logging.getLogger(__name__) @@ -44,6 +44,11 @@ class ScopPartner(models.Model): except Exception: return [("is_company", "=", True)] + # Inherit parent + active = fields.Boolean( + tracking=True, + ) + # Infos générales - champs non affichés is_cooperative = fields.Boolean("Est une coopérative") current_user_ur_id = fields.Many2one( @@ -847,6 +852,24 @@ class ScopPartner(models.Model): partner.commercial_company_name or partner.sudo().parent_id.name, ) + def action_archive(self): + """ + Lève une erreur si une coopérative qui n'est pas à l'état abandonné fait partie des + items à archiver + """ + coop_ids = self.filtered( + lambda p: p.is_cooperative and p.project_status != "7_abandonne" + ) + if coop_ids: + raise UserError( + _( + "Il n'est pas possible d'archiver une coopérative qui n'est pas en " + "statut abandonné." + ) + ) + else: + return super().action_archive() + # ------------------------------------------------------ # Computed Fields # ------------------------------------------------------