From 11dd9b3395f73b8d2e6b4c766943db766b01d845 Mon Sep 17 00:00:00 2001 From: metatroncubeswdev Date: Sun, 30 Aug 2026 02:34:41 -0400 Subject: [PATCH] Block salary letters for archived employees --- .../mcs_simple_payroll/models/hr_contract.py | 25 ++++++++++++++++++- .../views/hr_contract_views.xml | 3 ++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/addons/mcs_simple_payroll/models/hr_contract.py b/addons/mcs_simple_payroll/models/hr_contract.py index a5ccafa..87ecf27 100644 --- a/addons/mcs_simple_payroll/models/hr_contract.py +++ b/addons/mcs_simple_payroll/models/hr_contract.py @@ -1,4 +1,5 @@ -from odoo import fields, models +from odoo import _, fields, models +from odoo.exceptions import UserError class HrContract(models.Model): @@ -22,10 +23,32 @@ class HrContract(models.Model): string="Letter Signed Date", tracking=True ) mcs_salary_revision_notes = fields.Text(string="Salary Revision Notes") + mcs_employee_active = fields.Boolean( + string="Employee Active", + related="employee_id.active", + ) def action_mcs_generate_salary_revision_letter(self): today = fields.Date.context_today(self) for contract in self: + if not contract.employee_id.active: + raise UserError( + _( + "Salary revision letters cannot be generated for archived employees." + ) + ) + if contract.state != "open": + raise UserError( + _( + "Salary revision letters can only be generated for running contracts." + ) + ) + if contract.mcs_salary_revision_state == "archived": + raise UserError( + _( + "This salary revision letter is archived and cannot be generated." + ) + ) if contract.mcs_salary_revision_state == "draft": contract.write( { diff --git a/addons/mcs_simple_payroll/views/hr_contract_views.xml b/addons/mcs_simple_payroll/views/hr_contract_views.xml index ad701b6..5cc1951 100644 --- a/addons/mcs_simple_payroll/views/hr_contract_views.xml +++ b/addons/mcs_simple_payroll/views/hr_contract_views.xml @@ -5,11 +5,12 @@ -