diff --git a/edi_oca/models/edi_exchange_type.py b/edi_oca/models/edi_exchange_type.py index db09a74198..c29bb70fc1 100644 --- a/edi_oca/models/edi_exchange_type.py +++ b/edi_oca/models/edi_exchange_type.py @@ -30,7 +30,7 @@ class EDIExchangeType(models.Model): _name = "edi.exchange.type" _description = "EDI Exchange Type" - active = fields.Boolean(default=True) + active = fields.Boolean(default=True, inverse="_inverse_active") backend_id = fields.Many2one( string="Backend", comodel_name="edi.backend", @@ -161,6 +161,12 @@ class EDIExchangeType(models.Model): ) ] + def _inverse_active(self): + for rec in self: + # Disable rules if type gets disabled + if not rec.active: + rec.rule_ids.active = False + @api.depends("advanced_settings_edit") def _compute_advanced_settings(self): for rec in self: diff --git a/edi_oca/tests/test_exchange_type.py b/edi_oca/tests/test_exchange_type.py index f640ebbd61..7655c47bf1 100644 --- a/edi_oca/tests/test_exchange_type.py +++ b/edi_oca/tests/test_exchange_type.py @@ -123,3 +123,25 @@ def test_filename_pattern_settings(self): date_pattern: '%Y-%m-%d-%H-%M' """ self._test_exchange_filename("Test-File-2022-04-28-10-37.csv") + + def test_archive_rules(self): + exc_type = self.exchange_type_out + rule1 = exc_type.rule_ids.create( + { + "type_id": exc_type.id, + "name": "Fake partner rule", + "model_id": self.env["ir.model"]._get("res.partner").id, + } + ) + rule2 = exc_type.rule_ids.create( + { + "type_id": exc_type.id, + "name": "Fake user rule", + "model_id": self.env["ir.model"]._get("res.users").id, + } + ) + exc_type.active = False + rule1.invalidate_cache() + rule2.invalidate_cache() + self.assertFalse(rule1.active) + self.assertFalse(rule2.active) diff --git a/edi_oca/views/edi_exchange_type_views.xml b/edi_oca/views/edi_exchange_type_views.xml index a210c935cd..fcc4611f90 100644 --- a/edi_oca/views/edi_exchange_type_views.xml +++ b/edi_oca/views/edi_exchange_type_views.xml @@ -73,7 +73,7 @@ context="{'default_type_id': active_id}" > - + @@ -168,7 +168,14 @@ tree,form [] - {'search_default_filter_all': 1} + + {'search_default_filter_all': 1, 'active_test': False}