[IMP] hr: Direclty create user's employee
This commit is contained in:
committed by
Yannick Tivisse
parent
2d4b026625
commit
95564bcd2c
@@ -51,16 +51,12 @@ class User(models.Model):
|
||||
certificate = fields.Selection(related='employee_id.certificate', readonly=False, related_sudo=False)
|
||||
study_field = fields.Char(related='employee_id.study_field', readonly=False, related_sudo=False)
|
||||
study_school = fields.Char(related='employee_id.study_school', readonly=False, related_sudo=False)
|
||||
employee_warning = fields.Char("Missing employee warning", compute='_compute_employee_warning')
|
||||
employee_count = fields.Integer(compute='_compute_employee_count')
|
||||
|
||||
@api.depends('groups_id', 'employee_ids', 'active')
|
||||
def _compute_employee_warning(self):
|
||||
""" Fill warning only for active internal user (employee) not linked to hr.employee """
|
||||
@api.depends('employee_ids')
|
||||
def _compute_employee_count(self):
|
||||
for user in self:
|
||||
if not user.employee_ids and not user.share and user.active:
|
||||
user.employee_warning = _("Don't forget to create the linked employee.")
|
||||
else:
|
||||
user.employee_warning = False
|
||||
user.employee_count = len(user.employee_ids)
|
||||
|
||||
def __init__(self, pool, cr):
|
||||
""" Override of __init__ to add access rights.
|
||||
@@ -183,12 +179,7 @@ class User(models.Model):
|
||||
@api.multi
|
||||
def action_create_employee(self):
|
||||
self.ensure_one()
|
||||
form_view = self.env.ref('hr.view_employee_form')
|
||||
return {
|
||||
'name': _('Create Employee'),
|
||||
'type': 'ir.actions.act_window',
|
||||
'res_model': 'hr.employee',
|
||||
'views': [(form_view.id, 'form')],
|
||||
'target': 'new',
|
||||
'context': {'default_user_id': self.id}
|
||||
}
|
||||
self.env['hr.employee'].create(dict(
|
||||
user_id=self.id,
|
||||
**self.env['hr.employee']._sync_user(self)
|
||||
))
|
||||
|
||||
@@ -165,16 +165,36 @@
|
||||
<field name="view_id" ref="hr.res_users_view_form_profile"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_employee_action_from_user" model="ir.actions.act_window">
|
||||
<field name="name">Employees</field>
|
||||
<field name="res_model">hr.employee</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">kanban,tree,form</field>
|
||||
<field name="domain">[('user_id', '=', active_id)]</field>
|
||||
</record>
|
||||
|
||||
<record id="res_users_view_form" model="ir.ui.view">
|
||||
<field name="name">res.users.form.inherit</field>
|
||||
<field name="model">res.users</field>
|
||||
<field name="inherit_id" ref="base.view_users_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='image']" position="before">
|
||||
<div groups="hr.group_hr_user" class="alert alert-danger text-center" role="alert" attrs="{'invisible': [('employee_warning', '=', False)]}">
|
||||
<a class="close" data-dismiss="alert" href="#">x</a>
|
||||
<field name="employee_warning" nolabel="1" class="oe_inline"/> <button class="oe_inline oe_link p-0" type="object" name="action_create_employee">Click here to create it.</button>.
|
||||
</div>
|
||||
|
||||
<xpath expr="//header" position="inside">
|
||||
<field name="share" invisible="1"/>
|
||||
<field name="employee_ids" invisible="1"/>
|
||||
<button string="Create employee"
|
||||
type="object" name="action_create_employee"
|
||||
attrs="{'invisible': ['|', '|', ('id', '=', False), ('share', '=', True), ('employee_count', '>', 0)]}"/>
|
||||
<!-- share is not correclty recomputed because it depends on fields of reified view => invisible before saving (id=False) -->
|
||||
</xpath>
|
||||
<xpath expr="//div[@name='button_box']" position="inside">
|
||||
<button name="%(hr_employee_action_from_user)d"
|
||||
class="oe_stat_button"
|
||||
icon="fa-users"
|
||||
attrs="{'invisible': [('employee_count', '=', 0)]}"
|
||||
type="action">
|
||||
<field name="employee_count" widget="statinfo" string="Employee(s)"/>
|
||||
</button>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
Reference in New Issue
Block a user