diff --git a/odex25_hr/exp_employee_custody/models/employee_custody.py b/odex25_hr/exp_employee_custody/models/employee_custody.py
index 53bc7b819..4ab770362 100644
--- a/odex25_hr/exp_employee_custody/models/employee_custody.py
+++ b/odex25_hr/exp_employee_custody/models/employee_custody.py
@@ -33,6 +33,7 @@ class EmployeeCustody(models.Model):
department_id = fields.Many2one(related="employee_id.department_id", readonly=True)
job_id = fields.Many2one(related="employee_id.job_id", readonly=True)
country_id = fields.Many2one(related="employee_id.country_id", readonly=True)
+ company_id = fields.Many2one(related="employee_id.company_id", store=True)
def draft(self):
self.state = "draft"
@@ -84,7 +85,7 @@ class EmployeeCustodyLine(models.Model):
amount = fields.Float()
# Relational fields
- employee_custody_line = fields.Many2one(comodel_name='custom.employee.custody') # Inverse field
+ employee_custody_line = fields.Many2one('custom.employee.custody') # Inverse field
EmployeeCustodyLine()
\ No newline at end of file
diff --git a/odex25_hr/exp_employee_custody/security/custody_security.xml b/odex25_hr/exp_employee_custody/security/custody_security.xml
index 7e307a59e..df61107bf 100644
--- a/odex25_hr/exp_employee_custody/security/custody_security.xml
+++ b/odex25_hr/exp_employee_custody/security/custody_security.xml
@@ -2,6 +2,12 @@
+
+ Employee custody multi company rule
+
+ ['|', ('company_id','=',False), ('company_id', 'in', company_ids)]
+
+
Employee: views custody
diff --git a/odex25_hr/exp_payroll_custom/__manifest__.py b/odex25_hr/exp_payroll_custom/__manifest__.py
index 1a0d20c68..f27ac87c4 100644
--- a/odex25_hr/exp_payroll_custom/__manifest__.py
+++ b/odex25_hr/exp_payroll_custom/__manifest__.py
@@ -23,6 +23,7 @@
'data': [
'security/security.xml',
'security/ir.model.access.csv',
+ 'security/ir_rule.xml',
'data/data.xml',
diff --git a/odex25_hr/exp_payroll_custom/models/hr_contract.py b/odex25_hr/exp_payroll_custom/models/hr_contract.py
index 18415ca21..33ff16f81 100644
--- a/odex25_hr/exp_payroll_custom/models/hr_contract.py
+++ b/odex25_hr/exp_payroll_custom/models/hr_contract.py
@@ -288,6 +288,7 @@ class Advantages(models.Model):
comments = fields.Text(string='Comments')
payroll_month = fields.Text(string='Payroll Month', tracking=True)
+ company_id = fields.Many2one('res.company', string='Company', related='employee_id.company_id', store=True)
@api.constrains('date_from', 'date_to', 'amount')
def _chick_date(self):
diff --git a/odex25_hr/exp_payroll_custom/security/ir_rule.xml b/odex25_hr/exp_payroll_custom/security/ir_rule.xml
new file mode 100644
index 000000000..52961af12
--- /dev/null
+++ b/odex25_hr/exp_payroll_custom/security/ir_rule.xml
@@ -0,0 +1,124 @@
+
+
+
+ Employee promotions multi company rule
+
+ ['|', ('company_id','=',False), ('company_id', 'in', company_ids)]
+
+
+
+ Employee reward multi company rule
+
+ ['|', ('company_id','=',False), ('company_id', 'in', company_ids)]
+
+
+
+ Employee hr payslip run multi company rule
+
+ ['|', ('company_id','=',False), ('company_id', 'in', company_ids)]
+
+
+
+ Employee hr_salary_rule multi company rule
+
+ ['|', ('company_id','=',False), ('company_id', 'in', company_ids)]
+
+
+
+ Employee hr_salary_rule multi company rule
+
+ ['|', ('company_id','=',False), ('company_id', 'in', company_ids)]
+
+
+
+ Advance Request Multi Company
+
+
+ ['|', ('company_id','=',False), ('company_id', 'in',company_ids)]
+
+
+
+
+ Employee hr payslip multi company rule
+
+ ['|', ('company_id','=',False), ('company_id', 'in', company_ids)]
+
+
+
+ Employee contract advantage multi company rule
+
+ ['|', ('company_id','=',False), ('company_id', 'in', company_ids)]
+
+
+
+ Salary Advance
+
+
+
+
+
+
+
+
+
+ Salary Advance Rule For Employee
+ [('employee_id.user_id','=',user.id)]
+
+
+
+
+
+
+
+
+
+
+ Employee Payslip
+
+ [('employee_id.user_id.id', '=', user.id),('state', '=', 'transfered')]
+
+
+
+
+ All Payslip
+
+ [(1,'=',1)]
+
+
+
+
+ Employee: views its promotions only
+
+ [('employee_id.user_id','=',user.id)]
+
+
+
+
+ Division/Dep Manager: views promotions of its subordinates
+
+ ['|','|',('employee_id.department_id.manager_id','=',False),
+ ('employee_id.department_id.manager_id.user_id','child_of', [user.id]),
+ ('employee_id.department_id.parent_id.manager_id.user_id','child_of', [user.id])]
+
+
+
+
+
+ Manager: views promotions of all employee
+
+ [(1 ,'=', 1)]
+
+
+
\ No newline at end of file
diff --git a/odex25_hr/exp_payroll_custom/security/security.xml b/odex25_hr/exp_payroll_custom/security/security.xml
index 077dbd3d6..41ee2db2d 100644
--- a/odex25_hr/exp_payroll_custom/security/security.xml
+++ b/odex25_hr/exp_payroll_custom/security/security.xml
@@ -17,123 +17,5 @@
-
- Advance Request Multi Company
-
-
- ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
-
-
-
-
- Salary Advance
-
-
-
-
-
-
-
-
-
- Salary Advance Rule For Employee
- [('employee_id.user_id','=',user.id)]
-
-
-
-
-
-
-
-
-
-
- Employee Payslip
-
- [('employee_id.user_id.id', '=', user.id),('state', '=', 'transfered')]
-
-
-
-
- All Payslip
-
- [(1,'=',1)]
-
-
-
-
-
- Employee hr payslip multi company rule
-
- ['|',('company_id','=',False),('company_id', 'in', company_ids)]
-
-
-
- Employee: views its promotions only
-
- [('employee_id.user_id','=',user.id)]
-
-
-
-
- Division/Dep Manager: views promotions of its subordinates
-
- ['|','|',('employee_id.department_id.manager_id','=',False),
- ('employee_id.department_id.manager_id.user_id','child_of', [user.id]),
- ('employee_id.department_id.parent_id.manager_id.user_id','child_of', [user.id])]
-
-
-
-
-
- Manager: views promotions of all employee
-
- [(1 ,'=', 1)]
-
-
-
-
- Employee promotions multi company rule
-
- ['|',('company_id','=',False),('company_id', 'in', company_ids)]
-
-
-
- Employee reward multi company rule
-
- ['|',('company_id','=',False),('company_id', 'in', company_ids)]
-
-
-
- Employee hr payslip run multi company rule
-
- ['|',('company_id','=',False),('company_id', 'in', company_ids)]
-
-
-
- Employee hr_salary_rule multi company rule
-
- ['|',('company_id','=',False),('company_id', 'in', company_ids)]
-
-
-
- Employee hr_salary_rule multi company rule
-
- ['|',('company_id','=',False),('company_id', 'in', company_ids)]
-
-
-
diff --git a/odex25_hr/exp_payroll_custom/views/contract_advantage.xml b/odex25_hr/exp_payroll_custom/views/contract_advantage.xml
index e80a0e8a4..c7d3349cc 100644
--- a/odex25_hr/exp_payroll_custom/views/contract_advantage.xml
+++ b/odex25_hr/exp_payroll_custom/views/contract_advantage.xml
@@ -100,7 +100,6 @@
parent="exp_hr_payroll.menu_hr_payroll_root" action="employee_advantage_list_action" sequence="10"
groups="hr_base.group_executive_manager,hr_base.group_general_manager,exp_hr_payroll.group_hr_payroll_user"/>
- />
diff --git a/odex25_hr/exp_payroll_promotion/__manifest__.py b/odex25_hr/exp_payroll_promotion/__manifest__.py
index 6b8383494..730daab45 100644
--- a/odex25_hr/exp_payroll_promotion/__manifest__.py
+++ b/odex25_hr/exp_payroll_promotion/__manifest__.py
@@ -15,7 +15,7 @@
'exp_official_mission'],
'data': [
'security/ir.model.access.csv',
-
+ 'data/ir_rule.xml',
'views/hr_employee_view.xml',
'views/hr_payroll_structure_view.xml',
'views/hr_payroll_raise_view.xml',
diff --git a/odex25_hr/exp_payroll_promotion/data/ir_rule.xml b/odex25_hr/exp_payroll_promotion/data/ir_rule.xml
new file mode 100644
index 000000000..f77463c7c
--- /dev/null
+++ b/odex25_hr/exp_payroll_promotion/data/ir_rule.xml
@@ -0,0 +1,10 @@
+
+
+
+
+ Employee hr payroll promotion setting multi company rule
+
+ ['|', ('company_id','=',False), ('company_id', 'in', company_ids)]
+
+
+
diff --git a/odex25_hr/exp_payroll_promotion/models/hr_payroll_promotion_setting.py b/odex25_hr/exp_payroll_promotion/models/hr_payroll_promotion_setting.py
index b0977fb16..c4002050e 100644
--- a/odex25_hr/exp_payroll_promotion/models/hr_payroll_promotion_setting.py
+++ b/odex25_hr/exp_payroll_promotion/models/hr_payroll_promotion_setting.py
@@ -41,6 +41,7 @@ class HrPromotionPromotionSetting(models.Model):
exceptional_timeframe = fields.Integer('Years Between Two Exceptional Promotions')
regular_timeframe = fields.Integer('Years Between Exceptional And Regular Promotion')
+ company_id = fields.Many2one('res.company', string='Company', required=True)
@api.constrains('active', 'date_from', 'date_to')
def check_active(self):
diff --git a/odex25_hr/exp_payroll_promotion/views/hr_payroll_promotion_setting_view.xml b/odex25_hr/exp_payroll_promotion/views/hr_payroll_promotion_setting_view.xml
index a5ddd5801..8c0f5d01a 100644
--- a/odex25_hr/exp_payroll_promotion/views/hr_payroll_promotion_setting_view.xml
+++ b/odex25_hr/exp_payroll_promotion/views/hr_payroll_promotion_setting_view.xml
@@ -17,6 +17,7 @@
+
@@ -98,6 +99,7 @@
+
diff --git a/odex25_hr/hr_base/__manifest__.py b/odex25_hr/hr_base/__manifest__.py
index e3acb4721..0085eac88 100644
--- a/odex25_hr/hr_base/__manifest__.py
+++ b/odex25_hr/hr_base/__manifest__.py
@@ -22,6 +22,7 @@
"security/ir.model.access.csv",
"data/ir_sequence.xml",
"data/ir_cron.xml",
+ "data/ir_rule.xml",
# "views/assets_document_view.xml",
"views/hr_base_view.xml",
"views/employee_iqama_renewal_view.xml",
diff --git a/odex25_hr/hr_base/data/ir_rule.xml b/odex25_hr/hr_base/data/ir_rule.xml
new file mode 100644
index 000000000..3244d6125
--- /dev/null
+++ b/odex25_hr/hr_base/data/ir_rule.xml
@@ -0,0 +1,10 @@
+
+
+
+
+ Employee iqama renewal multi company rule
+
+ ['|', ('company_id','=',False), ('company_id', 'in', company_ids)]
+
+
+
diff --git a/odex25_hr/hr_base/models/employee_iqama_renewal.py b/odex25_hr/hr_base/models/employee_iqama_renewal.py
index 7dde533d2..49a932579 100644
--- a/odex25_hr/hr_base/models/employee_iqama_renewal.py
+++ b/odex25_hr/hr_base/models/employee_iqama_renewal.py
@@ -14,6 +14,7 @@ class EmployeeIqamaRenew(models.Model):
date = fields.Date()
line_ids = fields.One2many("employee.iqama.renewal.line", "line_id")
x_description = fields.Char()
+ company_id = fields.Many2one("res.company", string="Company", default=lambda self: self.env.user.company_id)
state = fields.Selection(
[('draft', _('Draft')), ('submit', _('Submit')), ('hr_depart', _('HR Department')),
('effective_department', _('Effective_Department')),
@@ -196,7 +197,7 @@ class EmployeeIqamaRenewLine(models.Model):
renewal_fees = fields.Float(required=True, default=0)
work_premint_fees = fields.Float(required=True, default=0)
total = fields.Float(readonly=True, compute="get_total_fees")
- line_id = fields.Many2one(comodel_name="employee.iqama.renewal")
+ line_id = fields.Many2one("employee.iqama.renewal", required=True, ondelete="cascade")
iqama_new_expiry = fields.Date()
account_id = fields.Many2one("account.account")
account_id2 = fields.Many2one("account.account")
diff --git a/odex25_hr/hr_base/views/employee_iqama_renewal_view.xml b/odex25_hr/hr_base/views/employee_iqama_renewal_view.xml
index ae467d195..2cf44882b 100644
--- a/odex25_hr/hr_base/views/employee_iqama_renewal_view.xml
+++ b/odex25_hr/hr_base/views/employee_iqama_renewal_view.xml
@@ -121,6 +121,8 @@
attrs="{'readonly':[('state','!=','draft')]}"/>
+
@@ -170,6 +172,7 @@
+
diff --git a/odex25_hr/hr_docs_expiry/__manifest__.py b/odex25_hr/hr_docs_expiry/__manifest__.py
index 9c8473301..ab265b803 100644
--- a/odex25_hr/hr_docs_expiry/__manifest__.py
+++ b/odex25_hr/hr_docs_expiry/__manifest__.py
@@ -9,6 +9,7 @@
"data": [
"security/ir.model.access.csv",
"data/data.xml",
+ "data/ir_rule.xml",
"data/ir_cron.xml",
"data/mail_template.xml",
"views/employee_check_list_view.xml",
diff --git a/odex25_hr/hr_docs_expiry/data/ir_rule.xml b/odex25_hr/hr_docs_expiry/data/ir_rule.xml
new file mode 100644
index 000000000..486b5d16f
--- /dev/null
+++ b/odex25_hr/hr_docs_expiry/data/ir_rule.xml
@@ -0,0 +1,10 @@
+
+
+
+
+ Employee hr employee document multi company rule
+
+ ['|', ('company_id','=',False), ('company_id', 'in', company_ids)]
+
+
+
diff --git a/odex25_hr/hr_docs_expiry/models/employee_documents.py b/odex25_hr/hr_docs_expiry/models/employee_documents.py
index 151c33596..7c26f71a3 100644
--- a/odex25_hr/hr_docs_expiry/models/employee_documents.py
+++ b/odex25_hr/hr_docs_expiry/models/employee_documents.py
@@ -96,7 +96,7 @@ class HrEmployeeDocument(models.Model):
specialization = fields.Char(string="Specialization")
category = fields.Many2one(comodel_name="membership.categorys",string="Category")
- company_id = fields.Many2one('res.company',string="Company", default=lambda self: self.env.user.company_id)
+ company_id = fields.Many2one('res.company',string="Company", related="employee_ref.company_id", store=True)
employee_number = fields.Char(related="employee_ref.contract_id.name", copy=False, string='Employee Number')
diff --git a/odex25_hr/hr_government_relations/models/exit_and_return.py b/odex25_hr/hr_government_relations/models/exit_and_return.py
index 0f6b5dc3a..ccc6e4795 100644
--- a/odex25_hr/hr_government_relations/models/exit_and_return.py
+++ b/odex25_hr/hr_government_relations/models/exit_and_return.py
@@ -56,7 +56,7 @@ class hr_exit_return(models.Model):
iqama_end_date = fields.Date(related="employee_id.iqama_number.expiry_date",string='Identity End Date', readonly=True)
iqama_number = fields.Char(related="employee_id.iqama_number.iqama_id",string='Identity Number', readonly=True)
-
+ company_id = fields.Many2one(related="employee_id.company_id", store=True)
# @api.onchange('employee_id')
# def _get_leave_request_domain(self):
# self.leave_request_id = False
diff --git a/odex25_hr/hr_government_relations/models/request_visa.py b/odex25_hr/hr_government_relations/models/request_visa.py
index 749a0f6eb..50c1f2c31 100644
--- a/odex25_hr/hr_government_relations/models/request_visa.py
+++ b/odex25_hr/hr_government_relations/models/request_visa.py
@@ -47,6 +47,7 @@ class hr_request_visa(models.Model):
account_move_id = fields.Many2one(comodel_name='account.move')
account_journal_id = fields.Many2one(comodel_name='account.journal')
account_debit_id = fields.Many2one(comodel_name='account.account')
+ company_id = fields.Many2one(related="employee_id.company_id", store=True)
def request(self):
self.state = 'request'
diff --git a/odex25_hr/hr_government_relations/security/hr_government_relations_security.xml b/odex25_hr/hr_government_relations/security/hr_government_relations_security.xml
index e288012ff..3d7b1fb8b 100644
--- a/odex25_hr/hr_government_relations/security/hr_government_relations_security.xml
+++ b/odex25_hr/hr_government_relations/security/hr_government_relations_security.xml
@@ -28,6 +28,12 @@
(4, ref('hr_base.group_government_relations')),
]"/>
+
+
+ Employee hr_exit_return multi company rule
+
+ ['|',('company_id','=',False),('company_id', 'in', company_ids)]
+
@@ -37,6 +43,12 @@
+
+ Employee hr_request_visa multi company rule
+
+ ['|',('company_id','=',False),('company_id', 'in', company_ids)]
+
+
Manager: views Request Visa of its subordinates
diff --git a/odex25_hr/hr_holidays_community/security/hr_holidays_security.xml b/odex25_hr/hr_holidays_community/security/hr_holidays_security.xml
index b5a464fdd..722a1f76b 100644
--- a/odex25_hr/hr_holidays_community/security/hr_holidays_security.xml
+++ b/odex25_hr/hr_holidays_community/security/hr_holidays_security.xml
@@ -54,7 +54,7 @@
Leaves multi company rule
- ['|',('company_id','=',False),('company_id','in',[user.company_id.id])]
+ ['|',('company_id','=',False),('company_id','in',company_ids)]