diff --git a/contract/__manifest__.py b/contract/__manifest__.py index 41400aacd..4752f3c2b 100644 --- a/contract/__manifest__.py +++ b/contract/__manifest__.py @@ -24,7 +24,7 @@ 'security/contract_tag.xml', 'security/ir.model.access.csv', 'security/contract_security.xml', - 'security/contract_resiliate_reason.xml', + 'security/contract_terminate_reason.xml', 'report/report_contract.xml', 'report/contract_views.xml', 'data/contract_cron.xml', @@ -32,7 +32,7 @@ 'data/mail_template.xml', 'wizards/contract_line_wizard.xml', 'wizards/contract_manually_create_invoice.xml', - 'wizards/contract_contract_resiliate.xml', + 'wizards/contract_contract_terminate.xml', 'views/abstract_contract_line.xml', 'views/contract.xml', 'views/contract_line.xml', @@ -40,7 +40,7 @@ 'views/contract_template_line.xml', 'views/res_partner_view.xml', 'views/res_config_settings.xml', - 'views/contract_resiliate_reason.xml', + 'views/contract_terminate_reason.xml', ], 'installable': True, } diff --git a/contract/models/__init__.py b/contract/models/__init__.py index c09f4495a..e1b4b30cb 100644 --- a/contract/models/__init__.py +++ b/contract/models/__init__.py @@ -12,4 +12,4 @@ from . import res_partner from . import contract_tag from . import res_company from . import res_config_settings -from . import contract_resiliate_reason +from . import contract_terminate_reason diff --git a/contract/models/contract.py b/contract/models/contract.py index d4dd9a333..e6f55cd8b 100644 --- a/contract/models/contract.py +++ b/contract/models/contract.py @@ -93,25 +93,25 @@ class ContractContract(models.Model): ) tag_ids = fields.Many2many(comodel_name="contract.tag", string="Tags") note = fields.Text(string="Notes") - is_resiliated = fields.Boolean( - string="Resiliated", readonly=True, copy=False + is_terminated = fields.Boolean( + string="Terminated", readonly=True, copy=False ) - resiliate_reason_id = fields.Many2one( - comodel_name="contract.resiliate.reason", - string="Resiliate Reason", + terminate_reason_id = fields.Many2one( + comodel_name="contract.terminate.reason", + string="Termination Reason", ondelete="restrict", readonly=True, copy=False, track_visibility="onchange", ) - resiliate_comment = fields.Text( - string="Resiliate Comment", + terminate_comment = fields.Text( + string="Termination Comment", readonly=True, copy=False, track_visibility="onchange", ) - resiliate_date = fields.Date( - string="Resiliate Date", + terminate_date = fields.Date( + string="Termination Date", readonly=True, copy=False, track_visibility="onchange", @@ -483,13 +483,13 @@ class ContractContract(models.Model): return contracts_to_invoice._recurring_create_invoice(date_ref) @api.multi - def action_resiliate_contract(self): + def action_terminate_contract(self): self.ensure_one() context = {"default_contract_id": self.id} return { 'type': 'ir.actions.act_window', - 'name': _('Resiliate Contract'), - 'res_model': 'contract.contract.resiliate', + 'name': _('Terminate Contract'), + 'res_model': 'contract.contract.terminate', 'view_type': 'form', 'view_mode': 'form', 'target': 'new', @@ -497,27 +497,27 @@ class ContractContract(models.Model): } @api.multi - def _resiliate_contract( - self, resiliate_reason_id, resiliate_comment, resiliate_date + def _terminate_contract( + self, terminate_reason_id, terminate_comment, terminate_date ): self.ensure_one() - if not self.env.user.has_group("contract.can_resiliate_contract"): - raise UserError(_('You are not allowed to resiliate contracts.')) - self.contract_line_ids.filtered('is_stop_allowed').stop(resiliate_date) + if not self.env.user.has_group("contract.can_terminate_contract"): + raise UserError(_('You are not allowed to terminate contracts.')) + self.contract_line_ids.filtered('is_stop_allowed').stop(terminate_date) self.write({ - 'is_resiliated': True, - 'resiliate_reason_id': resiliate_reason_id.id, - 'resiliate_comment': resiliate_comment, - 'resiliate_date': resiliate_date, + 'is_terminated': True, + 'terminate_reason_id': terminate_reason_id.id, + 'terminate_comment': terminate_comment, + 'terminate_date': terminate_date, }) return True @api.multi - def action_cancel_contract_resiliation(self): + def action_cancel_contract_termination(self): self.ensure_one() self.write({ - 'is_resiliated': False, - 'resiliate_reason_id': False, - 'resiliate_comment': False, - 'resiliate_date': False, + 'is_terminated': False, + 'terminate_reason_id': False, + 'terminate_comment': False, + 'terminate_date': False, }) diff --git a/contract/models/contract_line.py b/contract/models/contract_line.py index 34c156f46..0c4de8667 100644 --- a/contract/models/contract_line.py +++ b/contract/models/contract_line.py @@ -296,11 +296,11 @@ class ContractLine(models.Model): 'successor_contract_line_id', 'predecessor_contract_line_id', 'is_canceled', - 'contract_id.is_resiliated', + 'contract_id.is_terminated', ) def _compute_allowed(self): for rec in self: - if rec.contract_id.is_resiliated: + if rec.contract_id.is_terminated: rec.update({ 'is_plan_successor_allowed': False, 'is_stop_plan_successor_allowed': False, @@ -1174,7 +1174,7 @@ class ContractLine(models.Model): ).id return { 'type': 'ir.actions.act_window', - 'name': 'Resiliate contract line', + 'name': 'Terminate contract line', 'res_model': 'contract.line.wizard', 'view_type': 'form', 'view_mode': 'form', @@ -1262,7 +1262,7 @@ class ContractLine(models.Model): @api.model def _contract_line_to_renew_domain(self): return [ - ('contract_id.is_resiliated', '=', False), + ('contract_id.is_terminated', '=', False), ('is_auto_renew', '=', True), ('is_canceled', '=', False), ('termination_notice_date', '<=', fields.Date.context_today(self)), diff --git a/contract/models/contract_resiliate_reason.py b/contract/models/contract_resiliate_reason.py deleted file mode 100644 index 50bd3c105..000000000 --- a/contract/models/contract_resiliate_reason.py +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright 2020 ACSONE SA/NV -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - -from odoo import fields, models - - -class ContractResiliateReason(models.Model): - - _name = 'contract.resiliate.reason' - _description = 'Contract Resiliation Reason' - - name = fields.Char(required=True) - resiliate_comment_required = fields.Boolean( - string="Require a resiliation comment", default=True - ) diff --git a/contract/models/contract_terminate_reason.py b/contract/models/contract_terminate_reason.py new file mode 100644 index 000000000..21f2c0c1c --- /dev/null +++ b/contract/models/contract_terminate_reason.py @@ -0,0 +1,15 @@ +# Copyright 2020 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ContractTerminateReason(models.Model): + + _name = 'contract.terminate.reason' + _description = 'Contract Termination Reason' + + name = fields.Char(required=True) + terminate_comment_required = fields.Boolean( + string="Require a termination comment", default=True + ) diff --git a/contract/security/contract_resiliate_reason.xml b/contract/security/contract_terminate_reason.xml similarity index 66% rename from contract/security/contract_resiliate_reason.xml rename to contract/security/contract_terminate_reason.xml index d5fe5e4d2..b34cd9089 100644 --- a/contract/security/contract_resiliate_reason.xml +++ b/contract/security/contract_terminate_reason.xml @@ -4,9 +4,9 @@ - - contract.resiliate.reason access manager - + + contract.terminate.reason access manager + @@ -14,9 +14,9 @@ - - contract.resiliate.reason access user - + + contract.terminate.reason access user + diff --git a/contract/security/groups.xml b/contract/security/groups.xml index 638e0ab05..a954b2a21 100644 --- a/contract/security/groups.xml +++ b/contract/security/groups.xml @@ -4,8 +4,8 @@ - - Contract: Can Resiliate Contracts + + Contract: Can Terminate Contracts diff --git a/contract/tests/test_contract.py b/contract/tests/test_contract.py index df5b9c86d..53daf7180 100644 --- a/contract/tests/test_contract.py +++ b/contract/tests/test_contract.py @@ -110,8 +110,8 @@ class TestContractBase(common.SavepointCase): ) cls.acct_line.product_id.is_auto_renew = True cls.contract.company_id.create_new_line_at_contract_line_renew = True - cls.resiliate_reason = cls.env['contract.resiliate.reason'].create({ - 'name': 'resiliate_reason' + cls.terminate_reason = cls.env['contract.terminate.reason'].create({ + 'name': 'terminate_reason' }) @@ -2368,50 +2368,50 @@ class TestContract(TestContractBase): self.acct_line.recurring_next_date, to_date('2019-06-01') ) - def test_action_resiliate_contract(self): - action = self.contract.action_resiliate_contract() + def test_action_terminate_contract(self): + action = self.contract.action_terminate_contract() wizard = ( self.env[action['res_model']] .with_context(action['context']) .create( { - 'resiliate_date': '2018-03-01', - 'resiliate_reason_id': self.resiliate_reason.id, - 'resiliate_comment': 'resiliate_comment', + 'terminate_date': '2018-03-01', + 'terminate_reason_id': self.terminate_reason.id, + 'terminate_comment': 'terminate_comment', } ) ) self.assertEqual(wizard.contract_id, self.contract) with self.assertRaises(UserError): - wizard.resiliate_contract() - group_can_resiliate_contract = self.env.ref( - "contract.can_resiliate_contract" + wizard.terminate_contract() + group_can_terminate_contract = self.env.ref( + "contract.can_terminate_contract" ) - group_can_resiliate_contract.users |= self.env.user - wizard.resiliate_contract() - self.assertTrue(self.contract.is_resiliated) - self.assertEqual(self.contract.resiliate_date, to_date('2018-03-01')) + group_can_terminate_contract.users |= self.env.user + wizard.terminate_contract() + self.assertTrue(self.contract.is_terminated) + self.assertEqual(self.contract.terminate_date, to_date('2018-03-01')) self.assertEqual( - self.contract.resiliate_reason_id.id, self.resiliate_reason.id + self.contract.terminate_reason_id.id, self.terminate_reason.id ) - self.assertEqual(self.contract.resiliate_comment, 'resiliate_comment') - self.contract.action_cancel_contract_resiliation() - self.assertFalse(self.contract.is_resiliated) - self.assertFalse(self.contract.resiliate_reason_id) - self.assertFalse(self.contract.resiliate_comment) + self.assertEqual(self.contract.terminate_comment, 'terminate_comment') + self.contract.action_cancel_contract_termination() + self.assertFalse(self.contract.is_terminated) + self.assertFalse(self.contract.terminate_reason_id) + self.assertFalse(self.contract.terminate_comment) - def test_resiliate_date_before_last_date_invoiced(self): + def test_terminate_date_before_last_date_invoiced(self): self.contract.recurring_create_invoice() self.assertEqual( self.acct_line.last_date_invoiced, to_date('2018-02-14') ) - group_can_resiliate_contract = self.env.ref( - "contract.can_resiliate_contract" + group_can_terminate_contract = self.env.ref( + "contract.can_terminate_contract" ) - group_can_resiliate_contract.users |= self.env.user + group_can_terminate_contract.users |= self.env.user with self.assertRaises(ValidationError): - self.contract._resiliate_contract( - self.resiliate_reason, - 'resiliate_comment', + self.contract._terminate_contract( + self.terminate_reason, + 'terminate_comment', to_date('2018-02-13'), ) diff --git a/contract/views/contract.xml b/contract/views/contract.xml index 60d9a76bc..cabb8f0a6 100644 --- a/contract/views/contract.xml +++ b/contract/views/contract.xml @@ -7,38 +7,38 @@ contract.contract
- -