diff --git a/models/scop_liste_ministere.py b/models/scop_liste_ministere.py index 370b481b0d0ee86ce0766aae309e70f25eef174d..c65700e8e1b8d8d6181b164d7263759961c71cc3 100644 --- a/models/scop_liste_ministere.py +++ b/models/scop_liste_ministere.py @@ -48,6 +48,11 @@ class ScopListeMinistere(models.Model): # CHAMPS LISTE MINISTERE # ----- active = fields.Boolean(default=True, tracking=True) + is_wrong_ddets = fields.Boolean( + string="Incohérence DDETS", + compute="_compute_is_wrong_ddets", + search="_search_is_wrong_ddets" + ) partner_id = fields.Many2one( "res.partner", string="Coopérative", @@ -673,6 +678,28 @@ class ScopListeMinistere(models.Model): # ------------------------------------------------------ # Computed fields # ------------------------------------------------------ + def _compute_is_wrong_ddets(self): + for lm in self: + lm.is_wrong_ddets = False + if lm.partner_id and lm.direccte_id and lm.status not in ["6_transmis", "7_cloture"]: + if lm.partner_id.zip_departement != lm.direccte_id.zip_departement: + lm.is_wrong_ddets = True + + def _search_is_wrong_ddets(self, operator, value): + if operator not in ('=', '!='): + raise UserError(_('Opérateur invalide %s', operator)) + + lm_ids = self.search([("status", "not in", ["6_transmis", "7_cloture"])]) + wrong_lm_ids = lm_ids.filtered( + lambda lm: lm.partner_id and lm.direccte_id and lm.partner_id.zip_departement != lm.direccte_id.zip_departement + ) + if (operator == '=' and value is True) or (operator in ('<>', '!=') and value is False): + values = wrong_lm_ids + else: + values = lm_ids - wrong_lm_ids + + return [('id', 'in', values.ids)] + @api.depends( "scop_liasse_fiscale_id", "scop_liasse_fiscale_id.L2050_DCLO", diff --git a/views/scop_liste_ministere.xml b/views/scop_liste_ministere.xml index 26b914d727fdf410cc7541bea2f437c018b27516..6e11f145f8d272675caff5ef800adb33f643fb25 100644 --- a/views/scop_liste_ministere.xml +++ b/views/scop_liste_ministere.xml @@ -70,6 +70,12 @@ domain="[('is_dead', '=', False)]" /> <separator /> + <filter + name="is_wrong_ddets_filter" + string="Incohérence affectation DDETS" + domain="[('is_wrong_ddets', '=', True)]" + /> + <separator /> <filter name="is_jo_published" string="Publié au J.O." @@ -532,6 +538,15 @@ name="direccte_id" options="{'no_create': 1, 'no_edit': 1}" /> + <field name="is_wrong_ddets" invisible="1" /> + <div + class="alert alert-danger" + role="alert" + colspan="2" + attrs="{'invisible': [('is_wrong_ddets', '!=', True)]}" + > + La DDETS ne semble pas être affectée correctement ! + </div> </group> <group string="Pointage des documents"> <field name="pointage_lettre_agrement" />