Merge pull request #4693 from expsa/Jaz-3737

[IMP] hr_base, *: activate multi-company for various custom models
This commit is contained in:
abdurrahman-saber 2025-09-17 05:03:07 +03:00 committed by GitHub
commit e5e160a30b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
22 changed files with 191 additions and 125 deletions

View File

@ -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()

View File

@ -2,6 +2,12 @@
<odoo>
<data noupdate="0">
<record id="employee_custody_rule_comp_rule" model="ir.rule">
<field name="name">Employee custody multi company rule</field>
<field name="model_id" ref="model_custom_employee_custody"/>
<field name="domain_force">['|', ('company_id','=',False), ('company_id', 'in', company_ids)]</field>
</record>
<record id="custom_employee_custody_emp_rule" model="ir.rule">
<field name="name">Employee: views custody</field>
<field name="model_id" ref="model_custom_employee_custody"/>

View File

@ -23,6 +23,7 @@
'data': [
'security/security.xml',
'security/ir.model.access.csv',
'security/ir_rule.xml',
'data/data.xml',

View File

@ -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):

View File

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="employee_promotion_rule_comp_rule" model="ir.rule">
<field name="name">Employee promotions multi company rule</field>
<field name="model_id" ref="model_employee_promotions" />
<field name="domain_force">['|', ('company_id','=',False), ('company_id', 'in', company_ids)]</field>
</record>
<record id="employee_reward_rule_comp_rule" model="ir.rule">
<field name="name">Employee reward multi company rule</field>
<field name="model_id" ref="model_hr_employee_reward" />
<field name="domain_force">['|', ('company_id','=',False), ('company_id', 'in', company_ids)]</field>
</record>
<record id="hr_payslip_run_rule_comp_rule" model="ir.rule">
<field name="name">Employee hr payslip run multi company rule</field>
<field name="model_id" ref="model_hr_payslip_run" />
<field name="domain_force">['|', ('company_id','=',False), ('company_id', 'in', company_ids)]</field>
</record>
<record id="salary_rule_comp_rule" model="ir.rule">
<field name="name">Employee hr_salary_rule multi company rule</field>
<field name="model_id" ref="model_hr_salary_rule" />
<field name="domain_force">['|', ('company_id','=',False), ('company_id', 'in', company_ids)]</field>
</record>
<record id="hr_payroll_structure_comp_rule" model="ir.rule">
<field name="name">Employee hr_salary_rule multi company rule</field>
<field name="model_id" ref="model_hr_payroll_structure" />
<field name="domain_force">['|', ('company_id','=',False), ('company_id', 'in', company_ids)]</field>
</record>
<record id="rule_advance_salary_multi_company" model="ir.rule">
<field name="name">Advance Request Multi Company</field>
<field name="model_id" ref="model_salary_advance"/>
<field eval="True" name="global"/>
<field name="domain_force">['|', ('company_id','=',False), ('company_id', 'in',company_ids)]
</field>
</record>
<record id="hr_payslip_rule_comp_rule" model="ir.rule">
<field name="name">Employee hr payslip multi company rule</field>
<field name="model_id" ref="model_hr_payslip"/>
<field name="domain_force">['|', ('company_id','=',False), ('company_id', 'in', company_ids)]</field>
</record>
<record id="contract_advantage_rule_comp_rule" model="ir.rule">
<field name="name">Employee contract advantage multi company rule</field>
<field name="model_id" ref="model_contract_advantage"/>
<field name="domain_force">['|', ('company_id','=',False), ('company_id', 'in', company_ids)]</field>
</record>
<record id="hr_salary_advance_manager_rule" model="ir.rule">
<field name="name">Salary Advance</field>
<field name="model_id" ref="model_salary_advance"/>
<field name="groups" eval="[(4, ref('hr.group_hr_user')),(4, ref('account.group_account_user'))]"/>
<field name="perm_write" eval="True"/>
<field name="perm_read" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
<record id="hr_salary_advance_employee_rule" model="ir.rule">
<field name="name">Salary Advance Rule For Employee</field>
<field name="domain_force">[('employee_id.user_id','=',user.id)]</field>
<field name="global" eval="True"/>
<field name="model_id" ref="model_salary_advance"/>
<field name="groups" eval="[(4,ref('base.group_user'))]"/>
<field name="perm_write" eval="True"/>
<field name="perm_read" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
<record id="hr_payroll_rule_employee" model="ir.rule">
<field name="name">Employee Payslip</field>
<field name="model_id" ref="model_hr_payslip"/>
<field name="domain_force">[('employee_id.user_id.id', '=', user.id),('state', '=', 'transfered')]</field>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
</record>
<record id="hr_payslip_contributor_rule" model="ir.rule">
<field name="name">All Payslip</field>
<field name="model_id" ref="model_hr_payslip"/>
<field name="domain_force">[(1,'=',1)]</field>
<field name="groups" eval="[(4, ref('exp_payroll_custom.group_hr_payroll_contributor')),
(4, ref('hr_base.group_general_manager')),
(4, ref('exp_hr_payroll.group_hr_payroll_user')),
(4, ref('hr_base.group_executive_manager')),
(4, ref('hr.group_hr_manager')),
(4, ref('hr_base.group_account_manager')),
(4, ref('exp_payroll_custom.group_payroll_expense_manger')),
(4, ref('exp_payroll_custom.group_payroll_finance_review'))]"/>
</record>
<record id="employee_promotion_employee_rule" model="ir.rule">
<field name="name">Employee: views its promotions only</field>
<field name="model_id" ref="model_employee_promotions"/>
<field name="domain_force">[('employee_id.user_id','=',user.id)]</field>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
</record>
<record id="employee_promotion_division_manager_rule" model="ir.rule">
<field name="name">Division/Dep Manager: views promotions of its subordinates</field>
<field name="model_id" ref="model_employee_promotions"/>
<field name="domain_force">['|','|',('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])]
</field>
<field name="groups"
eval="[(4, ref('hr_base.group_department_manager')),(4, ref('hr_base.group_division_manager'))]"/>
</record>
<record id="employee_promotion_all_rule" model="ir.rule">
<field name="name">Manager: views promotions of all employee</field>
<field name="model_id" ref="model_employee_promotions" />
<field name="domain_force">[(1 ,'=', 1)]</field>
<field name="groups"
eval="[(3, ref('hr_base.group_account_manager')),
(4, ref('hr_base.group_executive_manager')),
(4, ref('hr_base.group_general_manager')),
(4, ref('hr.group_hr_manager'))]" />
</record>
</odoo>

View File

@ -17,123 +17,5 @@
<field name="category_id" ref="base.module_category_payroll_localization"/>
</record>
<record id="rule_advance_salary_multi_company" model="ir.rule">
<field name="name">Advance Request Multi Company</field>
<field name="model_id" ref="model_salary_advance"/>
<field eval="True" name="global"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
</field>
</record>
<record id="hr_salary_advance_manager_rule" model="ir.rule">
<field name="name">Salary Advance</field>
<field name="model_id" ref="model_salary_advance"/>
<field name="groups" eval="[(4, ref('hr.group_hr_user')),(4, ref('account.group_account_user'))]"/>
<field name="perm_write" eval="True"/>
<field name="perm_read" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
<record id="hr_salary_advance_employee_rule" model="ir.rule">
<field name="name">Salary Advance Rule For Employee</field>
<field name="domain_force">[('employee_id.user_id','=',user.id)]</field>
<field name="global" eval="True"/>
<field name="model_id" ref="model_salary_advance"/>
<field name="groups" eval="[(4,ref('base.group_user'))]"/>
<field name="perm_write" eval="True"/>
<field name="perm_read" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
<record id="hr_payroll_rule_employee" model="ir.rule">
<field name="name">Employee Payslip</field>
<field name="model_id" ref="model_hr_payslip"/>
<field name="domain_force">[('employee_id.user_id.id', '=', user.id),('state', '=', 'transfered')]</field>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
</record>
<record id="hr_payslip_contributor_rule" model="ir.rule">
<field name="name">All Payslip</field>
<field name="model_id" ref="model_hr_payslip"/>
<field name="domain_force">[(1,'=',1)]</field>
<field name="groups" eval="[(4, ref('exp_payroll_custom.group_hr_payroll_contributor')),
(4, ref('hr_base.group_general_manager')),
(4, ref('exp_hr_payroll.group_hr_payroll_user')),
(4, ref('hr_base.group_executive_manager')),
(4, ref('hr.group_hr_manager')),
(4, ref('hr_base.group_account_manager')),
(4, ref('exp_payroll_custom.group_payroll_expense_manger')),
(4, ref('exp_payroll_custom.group_payroll_finance_review')),
]"/>
<!-- (4, ref('hr.group_hr_manager')),(4, ref('hr.group_hr_user')),-->
</record>
<record id="hr_payslip_rule_comp_rule" model="ir.rule">
<field name="name">Employee hr payslip multi company rule</field>
<field name="model_id" ref="model_hr_payslip"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<record id="employee_promotion_employee_rule" model="ir.rule">
<field name="name">Employee: views its promotions only</field>
<field name="model_id" ref="model_employee_promotions"/>
<field name="domain_force">[('employee_id.user_id','=',user.id)]</field>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
</record>
<record id="employee_promotion_division_manager_rule" model="ir.rule">
<field name="name">Division/Dep Manager: views promotions of its subordinates</field>
<field name="model_id" ref="model_employee_promotions"/>
<field name="domain_force">['|','|',('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])]
</field>
<field name="groups"
eval="[(4, ref('hr_base.group_department_manager')),(4, ref('hr_base.group_division_manager'))]"/>
</record>
<record id="employee_promotion_all_rule" model="ir.rule">
<field name="name">Manager: views promotions of all employee</field>
<field name="model_id" ref="model_employee_promotions"/>
<field name="domain_force">[(1 ,'=', 1)]</field>
<field name="groups" eval="[(3, ref('hr_base.group_account_manager')),
(4, ref('hr_base.group_executive_manager')),
(4, ref('hr_base.group_general_manager')),
(4, ref('hr.group_hr_manager'))]"/>
</record>
<record id="employee_promotion_rule_comp_rule" model="ir.rule">
<field name="name">Employee promotions multi company rule</field>
<field name="model_id" ref="model_employee_promotions"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<record id="employee_reward_rule_comp_rule" model="ir.rule">
<field name="name">Employee reward multi company rule</field>
<field name="model_id" ref="model_hr_employee_reward"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<record id="hr_payslip_run_rule_comp_rule" model="ir.rule">
<field name="name">Employee hr payslip run multi company rule</field>
<field name="model_id" ref="model_hr_payslip_run"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<record id="salary_rule_comp_rule" model="ir.rule">
<field name="name">Employee hr_salary_rule multi company rule</field>
<field name="model_id" ref="model_hr_salary_rule"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<record id="hr_payroll_structure_comp_rule" model="ir.rule">
<field name="name">Employee hr_salary_rule multi company rule</field>
<field name="model_id" ref="model_hr_payroll_structure"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
</data>
</odoo>

View File

@ -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"/>
/>
<!-- groups="hr.group_hr_user,hr.group_hr_manager,hr_base.group_executive_manager,hr_base.group_general_manager,exp_hr_payroll.group_hr_payroll_user"-->
<!-- -->

View File

@ -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',

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="hr_payroll_promotion_setting_rule_comp_rule" model="ir.rule">
<field name="name">Employee hr payroll promotion setting multi company rule</field>
<field name="model_id" ref="model_hr_payroll_promotion_setting"/>
<field name="domain_force">['|', ('company_id','=',False), ('company_id', 'in', company_ids)]</field>
</record>
</odoo>

View File

@ -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):

View File

@ -17,6 +17,7 @@
<field name="date_from"/>
<field name="active"/>
<field name="date_to"/>
<field name="company_id"/>
</group>
</group>
<notebook>
@ -98,6 +99,7 @@
<field name="date_from"/>
<field name="date_to"/>
<field name="active"/>
<field name="company_id"/>
</tree>
</field>
</record>

View File

@ -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",

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="employee_iqama_renewal_rule_comp_rule" model="ir.rule">
<field name="name">Employee iqama renewal multi company rule</field>
<field name="model_id" ref="model_employee_iqama_renewal"/>
<field name="domain_force">['|', ('company_id','=',False), ('company_id', 'in', company_ids)]</field>
</record>
</odoo>

View File

@ -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")

View File

@ -121,6 +121,8 @@
attrs="{'readonly':[('state','!=','draft')]}"/>
<field name="date" string="Date" widget="date" required="True"
attrs="{'readonly':[('state','!=','draft')]}"/>
<field name="company_id" string="Company" required="True"
attrs="{'readonly':[('state','!=','draft')]}"/>
</group>
<field name="line_ids" string="Employees">
<tree editable="bottom">
@ -170,6 +172,7 @@
<field name="name" string="Ref"/>
<field name="x_description" string="Description"/>
<field name="line_ids" string="Employees"/>
<field name="company_id" string="Company"/>
<field name="date" string="Date" widget="date"/>
<field name="state" string="State"/>
</tree>

View File

@ -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",

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="hr_employee_document_rule_comp_rule" model="ir.rule">
<field name="name">Employee hr employee document multi company rule</field>
<field name="model_id" ref="model_hr_employee_document"/>
<field name="domain_force">['|', ('company_id','=',False), ('company_id', 'in', company_ids)]</field>
</record>
</odoo>

View File

@ -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')

View File

@ -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

View File

@ -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'

View File

@ -28,6 +28,12 @@
(4, ref('hr_base.group_government_relations')),
]"/>
</record>
<record id="hr_exit_return_comp_rule" model="ir.rule">
<field name="name">Employee hr_exit_return multi company rule</field>
<field name="model_id" ref="model_hr_exit_return"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<!--#########################################Request Visa<###########################-->
<record id="hr_request_visa_employee_rule" model="ir.rule">
@ -37,6 +43,12 @@
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
</record>
<record id="hr_request_visa_comp_rule" model="ir.rule">
<field name="name">Employee hr_request_visa multi company rule</field>
<field name="model_id" ref="model_hr_request_visa"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<record id="hr_request_visa_manager_rule" model="ir.rule">
<field name="name"> Manager: views Request Visa of its subordinates </field>
<field name="model_id" ref="model_hr_request_visa"/>

View File

@ -54,7 +54,7 @@
<field name="name">Leaves multi company rule</field>
<field name="model_id" ref="model_hr_holidays_status"/>
<field name="global" eval="True"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','in',[user.company_id.id])]</field>
<field name="domain_force">['|',('company_id','=',False),('company_id','in',company_ids)]</field>
</record>
</odoo>