[IMP] hr: Direclty create user's employee

This commit is contained in:
Lucas Lefèvre
2019-05-31 12:58:15 +02:00
committed by Yannick Tivisse
parent 2d4b026625
commit 95564bcd2c
2 changed files with 33 additions and 22 deletions
+8 -17
View File
@@ -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)
))
+25 -5
View File
@@ -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>