[ADD] hr(_recruitement): onboarding tour
Also some tweaks in views (mainly wording)
This commit is contained in:
committed by
Aaron Bohy
parent
025dcfcd68
commit
3f4c062023
@@ -32,7 +32,7 @@ class Job(models.Model):
|
||||
_description = "Job Position"
|
||||
_inherit = ['mail.thread']
|
||||
|
||||
name = fields.Char(string='Job Name', required=True, index=True, translate=True)
|
||||
name = fields.Char(string='Job Title', required=True, index=True, translate=True)
|
||||
expected_employees = fields.Integer(compute='_compute_employees', string='Total Forecasted Employees', store=True,
|
||||
help='Expected number of employees for this job position after new recruitment.')
|
||||
no_of_employee = fields.Integer(compute='_compute_employees', string="Current Number of Employees", store=True,
|
||||
@@ -48,7 +48,7 @@ class Job(models.Model):
|
||||
company_id = fields.Many2one('res.company', string='Company', default=lambda self: self.env.user.company_id)
|
||||
state = fields.Selection([
|
||||
('recruit', 'Recruitment in Progress'),
|
||||
('open', 'Recruitment Closed')
|
||||
('open', 'Not Recruiting')
|
||||
], string='Status', readonly=True, required=True, track_visibility='always', copy=False, default='recruit', help="Set whether the recruitment process is open or closed for this job position.")
|
||||
|
||||
_sql_constraints = [
|
||||
|
||||
@@ -336,19 +336,19 @@
|
||||
<form string="Job">
|
||||
<header>
|
||||
<button name="set_recruit" string="Launch Recruitment" states="open" type="object" class="oe_highlight" groups="base.group_user"/>
|
||||
<button name="set_open" string="Stop Recruitment" states="recruit" type="object" class="oe_highlight" groups="base.group_user"/>
|
||||
<button name="set_open" string="Stop Recruitment" states="recruit" type="object" groups="base.group_user"/>
|
||||
<field name="state" widget="statusbar" statusbar_visible="recruit,open"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="oe_button_box" name="button_box"/>
|
||||
<div class="oe_title">
|
||||
<label for="name" class="oe_edit_only"/>
|
||||
<h1><field name="name" placeholder="Job Position Name"/></h1>
|
||||
<h1><field name="name" placeholder="e.g. Sales Manager"/></h1>
|
||||
</div>
|
||||
<group name="employee_data">
|
||||
<group>
|
||||
<field name="department_id" class="oe_inline"/>
|
||||
<field name="no_of_recruitment" class="oe_inline"/>
|
||||
<field name="department_id"/>
|
||||
<field name="no_of_recruitment"/>
|
||||
</group>
|
||||
</group>
|
||||
<div attrs="{'invisible': [('state', '!=', 'recruit')]}">
|
||||
@@ -358,7 +358,6 @@
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" widget="mail_followers"/>
|
||||
<field name="message_ids" widget="mail_thread"/>
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
|
||||
@@ -26,6 +26,7 @@ You can define the different phases of interviews and easily rate the applicant
|
||||
'web_kanban_gauge',
|
||||
'utm',
|
||||
'document',
|
||||
'web_tour',
|
||||
],
|
||||
'data': [
|
||||
'security/hr_recruitment_security.xml',
|
||||
@@ -38,6 +39,7 @@ You can define the different phases of interviews and easily rate the applicant
|
||||
'views/hr_recruitment_templates.xml',
|
||||
'views/hr_department_views.xml',
|
||||
'views/hr_job_views.xml',
|
||||
'views/tour_views.xml',
|
||||
],
|
||||
'demo': ['data/hr_recruitment_demo.xml'],
|
||||
'test': ['test/recruitment_process.yml'],
|
||||
|
||||
@@ -91,3 +91,7 @@ class Job(models.Model):
|
||||
@api.multi
|
||||
def action_set_no_of_recruitment(self, value):
|
||||
return self.write({'no_of_recruitment': value})
|
||||
|
||||
@api.multi
|
||||
def close_dialog(self):
|
||||
return {'type': 'ir.actions.act_window_close'}
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
odoo.define('hr_recruitment.tour', function(require) {
|
||||
"use strict";
|
||||
|
||||
var core = require('web.core');
|
||||
var tour = require('web_tour.tour');
|
||||
|
||||
var _t = core._t;
|
||||
|
||||
tour.register('hr_recruitment_tour', {
|
||||
'skip_enabled': true,
|
||||
}, [{
|
||||
trigger: '.o_app[data-menu-xmlid="hr_recruitment.menu_hr_recruitment_root"], .oe_menu_toggler[data-menu-xmlid="hr_recruitment.menu_hr_recruitment_root"]',
|
||||
content: _t('Want to <b>start recruiting</b> like a pro? <i>Start here.</i>'),
|
||||
position: 'bottom',
|
||||
}, {
|
||||
trigger: ".oe_kanban_action_button",
|
||||
extra_trigger: '.o_hr_recruitment_kanban',
|
||||
content: _t("Let\'s have a look at the <b>applications pipeline</b> for this job position."),
|
||||
position: "bottom"
|
||||
}, {
|
||||
trigger: ".o_kanban_applicant .o_column_quick_create",
|
||||
content: _t("Add columns to define the <b>interview stages</b>.<br/><i>e.g. New > Qualified > First Interview > Recruited</i>"),
|
||||
position: "right"
|
||||
}, {
|
||||
trigger: ".breadcrumb li:not(.active):last",
|
||||
extra_trigger: '.o_kanban_applicant',
|
||||
content: _t("Use the breadcrumbs to <b>go back to the dashboard</b>."),
|
||||
position: "bottom"
|
||||
}, {
|
||||
trigger: ".o_job_alias",
|
||||
extra_trigger: '.o_hr_recruitment_kanban',
|
||||
content: _t("Try to send an email to this address, it will create an application automatically."),
|
||||
position: "bottom"
|
||||
}]);
|
||||
|
||||
});
|
||||
@@ -12,7 +12,7 @@
|
||||
<field name="name">hr.job.kanban</field>
|
||||
<field name="model">hr.job</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban class="oe_background_grey o_kanban_dashboard o_hr_recruitment_kanban">
|
||||
<kanban class="oe_background_grey o_kanban_dashboard o_hr_recruitment_kanban" on_create="hr_recruitment.create_job_simple">
|
||||
<field name="name"/>
|
||||
<field name="alias_name"/>
|
||||
<field name="alias_domain"/>
|
||||
@@ -31,10 +31,8 @@
|
||||
<div class="o_kanban_card_header">
|
||||
<div class="o_kanban_card_header_title">
|
||||
<div class="o_primary"><t t-esc="record.name.value"/></div>
|
||||
<div class="o_secondary">
|
||||
<span><t t-esc="record.department_id.value"/></span>
|
||||
<span t-if="record.manager_id.value">(<t t-esc="record.manager_id.value"/>)</span>
|
||||
<small t-if="record.alias_name.value and record.alias_domain.value and record.state.raw_value == 'recruit'"><i class="fa fa-envelope-o"></i> <field name="alias_id"/></small>
|
||||
<div t-if="record.alias_name.value and record.alias_domain.value and record.state.raw_value == 'recruit'" class="o_secondary o_job_alias">
|
||||
<small> <i class="fa fa-envelope-o"></i> <field name="alias_id"/> </small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="o_kanban_manage_button_section">
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
<link rel="stylesheet" href="/hr_recruitment/static/src/css/job_position.css"/>
|
||||
|
||||
<script type="text/javascript" src="/hr_recruitment/static/src/js/job_position.js"></script>
|
||||
<script type="text/javascript" src="/hr_recruitment/static/src/js/tour.js"></script>
|
||||
</xpath>
|
||||
</template>
|
||||
</data>
|
||||
|
||||
@@ -259,7 +259,7 @@
|
||||
<field name="name">Hr Applicants kanban</field>
|
||||
<field name="model">hr.applicant</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban default_group_by="stage_id">
|
||||
<kanban default_group_by="stage_id" class="o_kanban_applicant">
|
||||
<field name="stage_id" options='{"group_by_tooltip": {"requirements": "Requirements"}}'/>
|
||||
<field name="color"/>
|
||||
<field name="priority"/>
|
||||
@@ -390,6 +390,41 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_job_simple_form" model="ir.ui.view">
|
||||
<field name="name">hr.job.simple.form</field>
|
||||
<field name="model">hr.job</field>
|
||||
<field name="priority">200</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Create a Job Position">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="name" class="oe_inline" placeholder="e.g. Sales Manager"/>
|
||||
<label for="alias_name" string="Job Email" attrs="{'invisible': [('alias_domain', '=', False)]}" help="Define a specific contact address for this job position. If you keep it empty, the default email address will be used which is in human resources settings"/>
|
||||
<div name="alias_def" attrs="{'invisible': [('alias_domain', '=', False)]}">
|
||||
<field name="alias_id" class="oe_read_only" string="Email Alias" required="0"/>
|
||||
<div class="oe_edit_only" name="edit_alias">
|
||||
<field name="alias_name" class="oe_inline"/>@<field name="alias_domain" class="oe_inline" readonly="1"/>
|
||||
</div>
|
||||
</div>
|
||||
</group>
|
||||
<footer>
|
||||
<button string="Create" name="close_dialog" type="object" class="btn-primary"/>
|
||||
<button string="Discard" class="btn-default" special="cancel"/>
|
||||
</footer>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="create_job_simple" model="ir.actions.act_window">
|
||||
<field name="name">Create a Job Position</field>
|
||||
<field name="res_model">hr.job</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="view_id" ref="hr_job_simple_form"/>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="hr_job_survey" model="ir.ui.view">
|
||||
<field name="name">hr.job.form1</field>
|
||||
<field name="model">hr.job</field>
|
||||
@@ -454,13 +489,13 @@
|
||||
<field name="res_model">hr.job</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">kanban,form</field>
|
||||
<field name="context">{'search_default_in_recruitment': 1}</field>
|
||||
<field name="context">{}</field>
|
||||
<field name="help" type="html">
|
||||
<p class="oe_view_nocontent_create">
|
||||
Click here to create a new job. You can remove the "In Recruitment" filter to display all the job positions.
|
||||
</p>
|
||||
<p>
|
||||
Define job position profile and manage recruitment in a context of a particular job: print interview survey, define number of expected new employees, and manage its recruitment pipe
|
||||
Click here to create a new job position.
|
||||
</p><p>
|
||||
Once a job position is created, you can track related applications
|
||||
and manage the recruitment process.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
@@ -474,10 +509,11 @@
|
||||
<field name="context">{'search_default_in_recruitment': 1}</field>
|
||||
<field name="help" type="html">
|
||||
<p class="oe_view_nocontent_create">
|
||||
Click here to create a new job. You can remove the "In Recruitment" filter to display all the job positions.
|
||||
</p>
|
||||
<p>
|
||||
Define job position profile and manage recruitment in a context of a particular job: print interview survey, define number of expected new employees, and manage its recruitment pipe
|
||||
Click here to create a new job position.
|
||||
</p><p>
|
||||
Once a job position is created, you can track the applicants
|
||||
and manage the recruitment process related to the job
|
||||
position.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
@@ -580,7 +616,12 @@
|
||||
<field name="context">{'create': False}</field>
|
||||
<field name="help" type="html">
|
||||
<p>
|
||||
Search through resumes and motivation letters.
|
||||
No document yet.
|
||||
</p><p>
|
||||
This menu helps you search through resumes and motivation
|
||||
letters. Odoo automatically indexes .PDF, .DOC, DOCX, .TXT
|
||||
files so that you can search keywords from the content of these
|
||||
files.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<!-- Make the xmlid of menus required by the HR Recruitment tour available in webclient -->
|
||||
<record id="menu_hr_recruitment_root" model="ir.ui.menu">
|
||||
<field name="load_xmlid" eval="True"/>
|
||||
</record>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user