[UPD] hr_base: add create user server action in hr employee

This commit is contained in:
Samir Ladoui 2024-11-14 15:04:07 +01:00
parent 4c88afaf70
commit 03990f7166
6 changed files with 94 additions and 0 deletions

View File

@ -47,6 +47,7 @@
"views/hr_employee_attachments.xml",
"views/hr_penalty_register_view.xml",
"views/employee_iqama_document_view.xml",
"views/res_users_views.xml",
"views/menus_view.xml",
'report/hr_layout.xml',
"report/employee_dependents_report_template.xml",

View File

@ -28,3 +28,4 @@ from . import hr_employee_attachments
from . import resource
from . import assets_document
from . import hr_department
from . import res_users

View File

@ -575,6 +575,26 @@ class HrEmployee(models.Model):
def onchange_line_man(self):
self.r_manager = self.line_man
def action_create_user(self):
self.ensure_one()
if self.user_id:
raise ValidationError(_("This employee already has an user."))
return {
'name': _('Create User'),
'type': 'ir.actions.act_window',
'res_model': 'res.users',
'view_mode': 'form',
'view_id': self.env.ref('hr_base.view_users_simple_form').id,
'target': 'new',
'context': {
'default_create_employee_id': self.id,
'default_name': self.name,
'default_phone': self.work_phone,
'default_mobile': self.mobile_phone,
'default_login': self.work_email,
}
}
def draft_state(self):
for item in self:
state = item.state

View File

@ -0,0 +1,29 @@
from odoo import models, fields, api
from odoo.tools.misc import clean_context
class ResUsers(models.Model):
_inherit = 'res.users'
create_employee = fields.Boolean(store=False, default=True, copy=False, string="Technical field, whether to create an employee")
create_employee_id = fields.Many2one('hr.employee', store=False, copy=False, string="Technical field, bind user to this employee on create")
@api.model_create_multi
def create(self, vals_list):
res = super().create(vals_list)
employee_create_vals = []
for user, vals in zip(res, vals_list):
if not vals.get('create_employee') and not vals.get('create_employee_id'):
continue
if vals.get('create_employee_id'):
self.env['hr.employee'].browse(vals.get('create_employee_id')).user_id = user
else:
employee_create_vals.append(dict(
name=user.name,
company_id=user.env.company.id,
**self.env['hr.employee']._sync_user(user)
))
if employee_create_vals:
self.env['hr.employee'].with_context(clean_context(self.env.context)).create(employee_create_vals)
return res

View File

@ -463,6 +463,30 @@
</field>
</record>
<record id="view_users_simple_form_inherit_hr" model="ir.ui.view">
<field name="name">view.users.simple.form.inherit.hr</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_simple_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='mobile']" position="after">
<field name="create_employee_id" force_save="1" invisible="1"/>
<field name="create_employee" force_save="1" string="Create Employee" invisible="not context.get('allow_create_employee', True)" attrs="{'invisible': [('create_employee_id', '>', 0)]}"/>
</xpath>
</field>
</record>
<record id="action_hr_employee_create_user" model="ir.actions.server">
<field name="name">Create User</field>
<field name="model_id" ref="model_hr_employee"/>
<field name="binding_model_id" ref="model_hr_employee"/>
<field name="binding_view_types">form</field>
<field name="groups_id" eval="[(4, ref('base.group_erp_manager'))]"/>
<field name="state">code</field>
<field name="code">
action = records.action_create_user()
</field>
</record>
<!-- end hr.employee -->
<record id="view_hr_job_form_inherit" model="ir.ui.view">

View File

@ -0,0 +1,19 @@
<?xml version='1.0' encoding='utf-8'?>
<odoo>
<record id="view_users_simple_form" model="ir.ui.view">
<field name="name">view.users.simple.form.hr</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_simple_form"/>
<field name="mode">primary</field>
<field name="arch" type="xml">
<sheet position="after">
<footer>
<button string="Save" special="save" class="btn btn-primary"/>
<button string="Cancel" special="cancel" class="btn btn-secondary"/>
</footer>
</sheet>
</field>
</record>
</odoo>