1239 lines
62 KiB
XML
1239 lines
62 KiB
XML
<?xml version="1.0"?>
|
|
<odoo>
|
|
<data>
|
|
|
|
<!-- Stage -->
|
|
<record id="hr_job_stage_act" model="ir.actions.act_window">
|
|
<field name="name">Recruitment / Applicants Stages</field>
|
|
<field name="res_model">hr.recruitment.stage</field>
|
|
<field name="domain">[]</field>
|
|
<field name="context">{}</field>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
Add a new stage in the recruitment process
|
|
</p><p>
|
|
Define here your stages of the recruitment process, for example:
|
|
qualification call, first interview, second interview, refused,
|
|
hired.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Applicants -->
|
|
<record model="ir.ui.view" id="crm_case_tree_view_job">
|
|
<field name="name">Applicants</field>
|
|
<field name="model">hr.applicant</field>
|
|
<field name="arch" type="xml">
|
|
<tree string="Applicants" multi_edit="1" sample="1">
|
|
<field name="message_needaction" invisible="1"/>
|
|
<field name="last_stage_id" invisible="1"/>
|
|
<field name="date_last_stage_update" invisible="1"/>
|
|
<field name="partner_name" readonly="1" optional="show"/>
|
|
<field name="type_id" invisible="1"/>
|
|
<field name="job_id" optional="show"/>
|
|
<field name="name" readonly="1" optional="show"/>
|
|
<field name="stage_id" optional="show"/>
|
|
<field name="application_status" optional="show" attrs="{'invisible': [('application_status', '=', 'ongoing')]}"/>
|
|
<field name="refuse_reason_id" optional='hide'/>
|
|
<field name="priority" widget="priority" optional="show"/>
|
|
<field name="email_from" readonly="1" optional="hide"/>
|
|
<field name="partner_mobile" widget="phone" readonly="1" optional="show" class="text-end"/>
|
|
<field name="categ_ids" widget="many2many_tags" options="{'color_field': 'color'}" optional="show"/>
|
|
<field name="user_id" widget="many2one_avatar_user" optional="show"/>
|
|
<field name="interviewer_ids" widget="many2many_avatar_user" optional="hide"/>
|
|
<field name="create_date" readonly="1" widget="date" optional="show"/>
|
|
<field name="partner_phone" widget="phone" readonly="1" optional="hide"/>
|
|
<field name="medium_id" optional="hide"/>
|
|
<field name="source_id" readonly="1" optional="hide"/>
|
|
<field name="salary_expected" optional="hide"/>
|
|
<field name="salary_proposed" optional="hide"/>
|
|
<field name="availability" optional="hide"/>
|
|
<field name="department_id" invisible="context.get('invisible_department', True)" readonly="1"/>
|
|
<field name="company_id" invisible="1"/>
|
|
<field name="company_id" groups="base.group_multi_company" readonly="1" optional="hide"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="hr_applicant_view_tree_activity" model="ir.ui.view">
|
|
<field name="name">hr.applicant.view.tree.activity</field>
|
|
<field name="model">hr.applicant</field>
|
|
<field name="arch" type="xml">
|
|
<tree string="Next Activities" decoration-danger="activity_date_deadline < current_date" default_order="activity_date_deadline">
|
|
<field name="name"/>
|
|
<field name="partner_id"/>
|
|
<field name="activity_date_deadline"/>
|
|
<field name="activity_type_id"/>
|
|
<field name="activity_summary"/>
|
|
<field name="stage_id"/>
|
|
<field name="activity_exception_decoration" widget="activity_exception"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="hr_applicant_view_form">
|
|
<field name="name">Jobs - Recruitment Form</field>
|
|
<field name="model">hr.applicant</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Jobs - Recruitment Form" class="o_applicant_form">
|
|
<field name="company_id" invisible="1"/>
|
|
<field name="emp_id" invisible="1"/>
|
|
<field name="meeting_ids" invisible="1"/>
|
|
<field name="refuse_reason_id" invisible="1"/>
|
|
<header>
|
|
<button string="Create Employee" name="create_employee_from_applicant" type="object" data-hotkey="v" groups="hr_recruitment.group_hr_recruitment_user"
|
|
class="o_create_employee" attrs="{'invisible': ['|', '|', ('emp_id', '!=', False), ('active', '=', False), ('date_closed', '=', False)]}"/>
|
|
<button string="Refuse" name="archive_applicant" type="object" attrs="{'invisible': [('active', '=', False)]}" data-hotkey="x"/>
|
|
<button string="Restore" name="toggle_active" type="object" attrs="{'invisible': [('active', '=', True)]}" data-hotkey="z"/>
|
|
<field name="stage_id" widget="statusbar" options="{'clickable': '1', 'fold_field': 'fold'}" attrs="{'invisible': [('active', '=', False),('emp_id', '=', False)]}"/>
|
|
</header>
|
|
<sheet>
|
|
<div class="oe_button_box" name="button_box">
|
|
<button name="action_open_employee"
|
|
type="object"
|
|
class="oe_stat_button"
|
|
icon="fa-id-card-o"
|
|
groups="hr.group_hr_user"
|
|
attrs="{'invisible': [('emp_id', '=', False)]}">
|
|
<div class="o_field_widget o_stat_info">
|
|
<span class="o_stat_text"><field name="employee_name" readonly="1"/></span>
|
|
<span class="o_stat_value">Employee</span>
|
|
</div>
|
|
</button>
|
|
<button name="action_applications_email"
|
|
class="oe_stat_button"
|
|
icon="fa-pencil"
|
|
type="object"
|
|
context="{'active_test': False}"
|
|
attrs="{'invisible': [('application_count', '=' , 0)]}">
|
|
<field name="application_count" widget="statinfo" string="Other applications"/>
|
|
</button>
|
|
<button name="action_makeMeeting" class="oe_stat_button" icon="fa-calendar" type="object" attrs="{'invisible': [('id', '=', False)]}">
|
|
<div class="o_field_widget o_stat_info">
|
|
<span class="o_stat_value"><field name="meeting_display_text" /></span>
|
|
<span class="o_stat_text"><field name="meeting_display_date" readonly="1"/></span>
|
|
</div>
|
|
</button>
|
|
</div>
|
|
<widget name="web_ribbon" title="Refused" bg_color="bg-danger" attrs="{'invisible': ['|', ('active', '=', True), ('refuse_reason_id', '=', False)]}"/>
|
|
<widget name="web_ribbon" title="Hired" attrs="{'invisible': [('date_closed', '=', False)]}" />
|
|
<field name="active" invisible="1"/>
|
|
<field name="legend_normal" invisible="1"/>
|
|
<field name="legend_blocked" invisible="1"/>
|
|
<field name="legend_done" invisible="1"/>
|
|
<div class="oe_title pe-0">
|
|
<label for="name" class="oe_edit_only"/>
|
|
<h1 class="d-flex justify-content-between align-items-center">
|
|
<field name="name" placeholder="e.g. Sales Manager 2 year experience"/>
|
|
<field name="kanban_state" widget="state_selection"/>
|
|
</h1>
|
|
<h2 class="o_row">
|
|
<div>
|
|
<label for="partner_name" class="oe_edit_only"/>
|
|
<field name="partner_name" placeholder="e.g. John Doe"/>
|
|
</div>
|
|
</h2>
|
|
</div>
|
|
<group>
|
|
<group>
|
|
<field name="partner_id" invisible="1" />
|
|
<field name="refuse_reason_id" attrs="{'invisible': [('active', '=', True)]}"/>
|
|
<field name="email_from" widget="email"/>
|
|
<field name="email_cc" groups="base.group_no_one"/>
|
|
<field name="partner_phone" widget="phone"/>
|
|
<field name="partner_mobile" widget="phone"/>
|
|
<field name="linkedin_profile" widget="url"/>
|
|
<field name="type_id" placeholder="Degree"/>
|
|
|
|
</group>
|
|
<group>
|
|
<field name="interviewer_ids" options="{'no_create': True, 'no_create_edit': True}" widget="many2many_avatar_user" />
|
|
<field name="user_id" widget="many2one_avatar_user"/>
|
|
<field name="date_closed" attrs="{'invisible': [('date_closed', '=', False)]}" />
|
|
<field name="priority" widget="priority"/>
|
|
<field name="source_id"/>
|
|
<field name="medium_id"/>
|
|
<field name="categ_ids" placeholder="Tags" widget="many2many_tags" options="{'color_field': 'color', 'no_create_edit': True}"/>
|
|
</group>
|
|
<group string="Job">
|
|
<field name="job_id"/>
|
|
<field name="department_id"/>
|
|
<field name="company_id" groups="base.group_multi_company" invisible="1" options='{"no_open":True}' />
|
|
</group>
|
|
<group string="Contract" name="recruitment_contract">
|
|
<label for="salary_expected"/>
|
|
<div class="o_row">
|
|
<field name="salary_expected"/>
|
|
<span attrs="{'invisible':[('salary_expected_extra','=',False)]}"> + </span>
|
|
<field name="salary_expected_extra" placeholder="Extra advantages..."/>
|
|
</div>
|
|
<label for="salary_proposed"/>
|
|
<div class="o_row">
|
|
<field name="salary_proposed"/>
|
|
<span attrs="{'invisible':[('salary_proposed_extra','=',False)]}"> + </span>
|
|
<field name="salary_proposed_extra" placeholder="Extra advantages..."/>
|
|
</div>
|
|
<field name="availability"/>
|
|
</group>
|
|
</group>
|
|
<notebook>
|
|
<page string="Application Summary">
|
|
<field name="description" placeholder="Motivations..."/>
|
|
</page>
|
|
</notebook>
|
|
</sheet>
|
|
<div class="o_attachment_preview" groups="hr_recruitment.group_applicant_cv_display"/>
|
|
<div class="oe_chatter">
|
|
<field name="message_follower_ids"/>
|
|
<field name="activity_ids"/>
|
|
<field name="message_ids" options="{'open_attachments': True}"/>
|
|
</div>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="hr_applicant_view_form_interviewer" model="ir.ui.view">
|
|
<field name="model">hr.applicant</field>
|
|
<field name="inherit_id" ref="hr_applicant_view_form"/>
|
|
<field name="priority">50</field>
|
|
<field name="mode">primary</field>
|
|
<field name="arch" type="xml">
|
|
<xpath expr="//form" position="attributes">
|
|
<attribute name="js_class">hr_recruitment_interviewer</attribute>
|
|
<attribute name="class">o_applicant_form</attribute>
|
|
</xpath>
|
|
<xpath expr="//group[@name='recruitment_contract']" position="replace"/>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="crm_case_pivot_view_job">
|
|
<field name="name">Jobs - Recruitment</field>
|
|
<field name="model">hr.applicant</field>
|
|
<field name="arch" type="xml">
|
|
<pivot string="Job Applications" sample="1">
|
|
<field name="create_date" type="row"/>
|
|
<field name="stage_id" type="col"/>
|
|
<field name="color" invisible="1"/>
|
|
</pivot>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="crm_case_graph_view_job">
|
|
<field name="name">Jobs - Recruitment Graph</field>
|
|
<field name="model">hr.applicant</field>
|
|
<field name="arch" type="xml">
|
|
<graph string="Cases By Stage and Estimates" sample="1">
|
|
<field name="stage_id"/>
|
|
</graph>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="hr_applicant_view_search_bis" model="ir.ui.view">
|
|
<field name="name">hr.applicant.view.search</field>
|
|
<field name="model">hr.applicant</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Search Applicants">
|
|
<field string="Applicant" name="partner_name"
|
|
filter_domain="['|', '|', ('name', 'ilike', self), ('partner_name', 'ilike', self), ('email_from', 'ilike', self)]"/>
|
|
<field string="Email" name="email_from" filter_domain="[('email_from', 'ilike', self)]"/>
|
|
<field name="job_id"/>
|
|
<field name="department_id" operator="child_of"/>
|
|
<field name="user_id"/>
|
|
<field name="stage_id" domain="[]"/>
|
|
<field name="categ_ids"/>
|
|
<field name="refuse_reason_id"/>
|
|
<field name="attachment_ids" filter_domain="[('attachment_ids.index_content', 'ilike', self)]" string="Attachments"/>
|
|
<filter string="My Applications" name="my_applications" domain="[('user_id', '=', uid)]"/>
|
|
<filter string="Unassigned" name="unassigned" domain="[('user_id', '=', False)]"/>
|
|
<separator/>
|
|
<filter string="Ready for Next Stage" name="done" domain="[('kanban_state', '=', 'done')]"/>
|
|
<filter string="Blocked" name="blocked" domain="[('kanban_state', '=', 'blocked')]"/>
|
|
<filter string="Reserve" name="reserve" domain="[('job_id', '=', False)]"/>
|
|
<separator/>
|
|
<filter string="Creation Date" name="filter_create" date="create_date"/>
|
|
<filter string="Last Stage Update" name="filter_date_last_stage_update" date="date_last_stage_update"/>
|
|
<separator/>
|
|
<filter string="Unread Messages" name="message_needaction" domain="[('message_needaction', '=', True)]"/>
|
|
<separator/>
|
|
<filter string="Archived" name="inactive" domain="[('active', '=', False), ('refuse_reason_id', '=', False)]"/>
|
|
<filter string="Refused" name="refused" domain="[('active', '=', False), ('refuse_reason_id', '!=', False)]"/>
|
|
<separator/>
|
|
<filter invisible="1" string="Late Activities" name="activities_overdue"
|
|
domain="[('my_activity_date_deadline', '<', context_today().strftime('%Y-%m-%d'))]"
|
|
help="Show all records which has next action date is before today"/>
|
|
<filter invisible="1" string="Today Activities" name="activities_today"
|
|
domain="[('my_activity_date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"/>
|
|
<filter invisible="1" string="Future Activities" name="activities_upcoming_all"
|
|
domain="[('my_activity_date_deadline', '>', context_today().strftime('%Y-%m-%d'))]"/>
|
|
<separator/>
|
|
<filter invisible="1" string="Running Applicants" name="running_applicant_activities"
|
|
domain="[('stage_id.hired_stage', '=', False)]"/>
|
|
<separator/>
|
|
<group expand="0" string="Group By">
|
|
<filter string="Job" name="job" domain="[]" context="{'group_by': 'job_id'}"/>
|
|
<filter string="Stage" name="stage" domain="[]" context="{'group_by': 'stage_id'}"/>
|
|
<filter string="Responsible" name="responsible" domain="[]" context="{'group_by': 'user_id'}"/>
|
|
<filter string="Creation Date" name="creation_date" context="{'group_by': 'create_date'}"/>
|
|
<filter string="Last Stage Update" name="last_stage_update" context="{'group_by': 'date_last_stage_update'}"/>
|
|
<filter string="Refuse Reason" name="refuse_reason_id" domain="[]" context="{'group_by': 'refuse_reason_id'}"/>
|
|
<filter string="Degree" name="degree" domain="[]" context="{'group_by': 'type_id'}"/>
|
|
<filter string="Tags" name="group_by_categ_ids" context="{'group_by':'categ_ids'}"/>
|
|
</group>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="hr_recruitment_source_view_search" model="ir.ui.view">
|
|
<field name="name">hr.recruitment.source.view.search</field>
|
|
<field name="model">hr.recruitment.source</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Search Source">
|
|
<field name="source_id"/>
|
|
<field name="job_id"/>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.ui.view" id="hr_applicant_calendar_view">
|
|
<field name="name">Hr Applicants Calendar</field>
|
|
<field name="model">hr.applicant</field>
|
|
<field name="priority" eval="2"/>
|
|
<field name="arch" type="xml">
|
|
<calendar string="Applicants" mode="month" date_start="activity_date_deadline" color="user_id" event_limit="5" hide_time="true">
|
|
<field name="partner_name"/>
|
|
<field name="job_id"/>
|
|
<field name="priority" widget="priority"/>
|
|
<field name="activity_summary"/>
|
|
<field name="user_id" filters="1" invisible="1"/>
|
|
</calendar>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="quick_create_applicant_form" model="ir.ui.view">
|
|
<field name="name">hr.applicant.form.quick_create</field>
|
|
<field name="model">hr.applicant</field>
|
|
<field name="priority">1000</field>
|
|
<field name="arch" type="xml">
|
|
<form>
|
|
<group>
|
|
<field name="name"/>
|
|
<field name="partner_name" placeholder="e.g. John Doe"/>
|
|
<field name="email_from"/>
|
|
<field name="job_id" options="{'no_open': True}"/>
|
|
<field name="company_id" invisible="1"/>
|
|
</group>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Hr Applicant Kanban View -->
|
|
<record model="ir.ui.view" id="hr_kanban_view_applicant">
|
|
<field name="name">Hr Applicants kanban</field>
|
|
<field name="model">hr.applicant</field>
|
|
<field name="arch" type="xml">
|
|
<kanban default_group_by="stage_id" class="o_kanban_applicant" quick_create_view="hr_recruitment.quick_create_applicant_form" sample="1">
|
|
<field name="stage_id" options='{"group_by_tooltip": {"requirements": "Requirements"}}'/>
|
|
<field name="date_closed"/>
|
|
<field name="color"/>
|
|
<field name="priority"/>
|
|
<field name="user_id"/>
|
|
<field name="user_email"/>
|
|
<field name="partner_name"/>
|
|
<field name="type_id"/>
|
|
<field name="partner_id"/>
|
|
<field name="job_id"/>
|
|
<field name="department_id"/>
|
|
<field name="attachment_number"/>
|
|
<field name="active"/>
|
|
<field name="activity_ids" />
|
|
<field name="activity_state" />
|
|
<field name="refuse_reason_id" />
|
|
<progressbar field="activity_state" colors='{"planned": "success", "overdue": "danger", "today": "warning"}'/>
|
|
<templates>
|
|
<t t-name="kanban-box">
|
|
<div t-attf-class="{{!selection_mode ? 'oe_kanban_color_' + kanban_getcolor(record.color.raw_value) : ''}} oe_kanban_card oe_kanban_global_click oe_applicant_kanban oe_semantic_html_override">
|
|
<field name="date_closed" invisible="1"/>
|
|
<div class="ribbon ribbon-top-right pe-none" attrs="{'invisible': [('date_closed', '=', False)]}">
|
|
<span class="bg-success">Hired</span>
|
|
</div>
|
|
<span class="badge rounded-pill text-bg-danger float-end me-4" attrs="{'invisible': ['|', ('active', '=', True), ('refuse_reason_id', '=', False)]}">Refused</span>
|
|
<div class="o_dropdown_kanban dropdown">
|
|
<a class="dropdown-toggle o-no-caret btn" role="button" data-bs-toggle="dropdown" href="#" aria-label="Dropdown menu" title="Dropdown menu" data-bs-display="static">
|
|
<span class="fa fa-ellipsis-v"/>
|
|
</a>
|
|
<div class="dropdown-menu" role="menu">
|
|
<a role="menuitem" name="action_makeMeeting" type="object" class="dropdown-item">Schedule Interview</a>
|
|
<a role="menuitem" name="archive_applicant" type="object" class="dropdown-item">Refuse</a>
|
|
<a role="menuitem" name="archive_applicant" type="object" class="dropdown-item">Archive</a>
|
|
<t t-if="widget.deletable"><a role="menuitem" type="delete" class="dropdown-item">Delete</a></t>
|
|
<div role="separator" class="dropdown-divider"></div>
|
|
<ul class="oe_kanban_colorpicker text-center" data-field="color"/>
|
|
</div>
|
|
</div>
|
|
<div class="oe_kanban_content">
|
|
<div class="o_kanban_record_top">
|
|
<div class="o_kanban_record_headings">
|
|
<b class="o_kanban_record_title mt8" t-if="record.partner_name.raw_value">
|
|
<field name="partner_name"/><br/>
|
|
</b><t t-else="1">
|
|
<i class="o_kanban_record_title"><field name="name"/></i><br/>
|
|
</t>
|
|
<div class="o_kanban_record_subtitle" invisible="context.get('search_default_job_id', False)">
|
|
<field name="job_id"/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<field name="categ_ids" widget="many2many_tags" options="{'color_field': 'color'}"/>
|
|
<t t-if="record.partner_mobile.raw_value"><i class="fa fa-mobile mr4" role="img" aria-label="Mobile" title="Mobile"/><field name="partner_mobile" widget="phone"/><br/></t>
|
|
<div class="o_kanban_record_bottom mt4">
|
|
<div class="oe_kanban_bottom_left">
|
|
<div class="float-start mr4" groups="base.group_user">
|
|
<field name="priority" widget="priority"/>
|
|
</div>
|
|
<div class="o_kanban_inline_block mr8">
|
|
<field name="activity_ids" widget="kanban_activity"/>
|
|
</div>
|
|
</div>
|
|
<div class="oe_kanban_bottom_right">
|
|
<a name="action_open_attachments" type="object">
|
|
<span title='Documents'><i class='fa fa-paperclip' role="img" aria-label="Documents"/>
|
|
<t t-esc="record.attachment_number.raw_value"/>
|
|
</span>
|
|
</a>
|
|
<div class="o_kanban_state_with_padding ms-1 me-2" >
|
|
<field name="kanban_state" widget="state_selection"/>
|
|
<field name="legend_normal" invisible="1"/>
|
|
<field name="legend_blocked" invisible="1"/>
|
|
<field name="legend_done" invisible="1"/>
|
|
</div>
|
|
<field name="user_id" widget="many2one_avatar_user"/>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="clearfix"></div>
|
|
</div>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="hr_applicant_view_activity" model="ir.ui.view">
|
|
<field name="name">hr.applicant.activity</field>
|
|
<field name="model">hr.applicant</field>
|
|
<field name="arch" type="xml">
|
|
<activity string="Applicants">
|
|
<templates>
|
|
<div t-name="activity-box">
|
|
<div>
|
|
<field name="name" display="full"/>
|
|
<field name="partner_name" muted="1" display="full"/>
|
|
</div>
|
|
</div>
|
|
</templates>
|
|
</activity>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.actions.act_window" id="action_hr_job_applications">
|
|
<field name="name">Applications</field>
|
|
<field name="res_model">hr.applicant</field>
|
|
<field name="view_mode">kanban,tree,form,graph,calendar,pivot,activity</field>
|
|
<field name="search_view_id" ref="hr_applicant_view_search_bis"/>
|
|
<field name="context">{'search_default_job_id': [active_id], 'default_job_id': active_id, 'search_default_stage':1,'dialog_size':'medium'}</field>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_empty_folder">
|
|
No applications yet
|
|
</p><p>
|
|
Odoo helps you track applicants in the recruitment
|
|
process and follow up all operations: meetings, interviews, etc.
|
|
</p><p>
|
|
Applicants and their attached CV are created automatically when an email is sent.
|
|
If you install the document management modules, all resumes are indexed automatically,
|
|
so that you can easily search through their content.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.actions.act_window" id="action_hr_job_sources">
|
|
<field name="name">Jobs Sources</field>
|
|
<field name="res_model">hr.recruitment.source</field>
|
|
<field name="view_mode">tree,kanban</field>
|
|
<field name="search_view_id" ref="hr_recruitment_source_view_search"/>
|
|
<field name="context">{'search_default_job_id': [active_id], 'default_job_id': active_id}</field>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
Want to analyse where applications come from ?
|
|
</p><p>
|
|
Use emails and links trackers
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.actions.act_window" id="action_hr_applicant_new">
|
|
<field name="res_model">hr.applicant</field>
|
|
<field name="view_mode">form</field>
|
|
<field name="context">{'form_view_initial_mode': 'edit', 'default_job_id': active_id}</field>
|
|
</record>
|
|
|
|
<!-- Jobs -->
|
|
<record id="view_job_filter_recruitment" model="ir.ui.view">
|
|
<field name="name">Job</field>
|
|
<field name="model">hr.job</field>
|
|
<field name="inherit_id" ref="hr.view_job_filter"/>
|
|
<field name="arch" type="xml">
|
|
<xpath expr="//field[@name='department_id']" position="after">
|
|
<filter string="My Favorites" name="my_favorite_jobs" domain="[('favorite_user_ids', 'in', uid)]"/>
|
|
<separator/>
|
|
</xpath>
|
|
</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" class="o_hr_job_simple_form" >
|
|
<group>
|
|
<field name="name" class="o_job_name oe_inline" placeholder="e.g. Sales Manager"/>
|
|
<label for="alias_name" string="Application 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" dir="ltr">
|
|
<field name="alias_name" class="oe_inline o_job_alias" placeholder="e.g. sales-manager"/>@<field name="alias_domain" class="oe_inline" readonly="1"/>
|
|
</div>
|
|
<div class="text-muted" attrs="{'invisible': [('alias_domain', '=', False)]}">Applicants can send resume to this email address,<br/>it will create an application automatically</div>
|
|
</div>
|
|
</group>
|
|
<footer>
|
|
<button string="Create" type="object" name="close_dialog" class="btn-primary o_create_job" data-hotkey="q"/>
|
|
<button string="Discard" class="btn-secondary" special="cancel" data-hotkey="z"/>
|
|
</footer>
|
|
</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_mode">form</field>
|
|
<field name="view_id" ref="hr_job_simple_form"/>
|
|
<field name="target">new</field>
|
|
<field name="context">{'dialog_size' : 'medium'}</field>
|
|
</record>
|
|
|
|
|
|
<record id="hr_job_survey" model="ir.ui.view">
|
|
<field name="name">hr.job.form1</field>
|
|
<field name="model">hr.job</field>
|
|
<field name="inherit_id" ref="hr.view_hr_job_form"/>
|
|
<field name="arch" type="xml">
|
|
<div name="recruitment_target" position="after">
|
|
<field name="user_id" widget="many2one_avatar_user"/>
|
|
<field name="interviewer_ids" widget="many2many_tags" options="{'no_create': True, 'no_create_edit': True}" />
|
|
</div>
|
|
<xpath expr="//field[@name='department_id']" position="after">
|
|
<label for="address_id"/>
|
|
<div class="o_row">
|
|
<span attrs="{'invisible': [('address_id', '!=', False)]}" class="oe_read_only">Remote</span>
|
|
<field name="address_id" context="{'show_address': 1}" options="{'always_reload': True}" placeholder="Remote"/>
|
|
</div>
|
|
<label for="alias_name" string="Email Alias" 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" dir="ltr">
|
|
<field name="alias_name" class="oe_inline"/>@<field name="alias_domain" class="oe_inline" readonly="1"/>
|
|
</div>
|
|
</div>
|
|
</xpath>
|
|
<xpath expr="//field[@name='contract_type_id']" position="after">
|
|
<field name="company_id" groups="base.group_multi_company"/>
|
|
</xpath>
|
|
|
|
<div name="button_box" position="inside">
|
|
<button class="oe_stat_button"
|
|
icon="fa-pencil"
|
|
name="%(action_hr_job_applications)d"
|
|
context="{'default_user_id': user_id, 'active_test': False}"
|
|
type="action">
|
|
<field name="all_application_count" widget="statinfo" string="Job Applications"/>
|
|
</button>
|
|
<button class="oe_stat_button"
|
|
icon="fa-file-text-o"
|
|
name="action_open_attachments"
|
|
type="object"
|
|
attrs="{'invisible': [('documents_count','=',0)]}">
|
|
<field name="documents_count" widget="statinfo" string="Documents"/>
|
|
</button>
|
|
<button class="oe_stat_button" type="action"
|
|
name="%(action_hr_job_sources)d" icon="fa-bar-chart-o"
|
|
context="{'default_job_id': active_id}">
|
|
<div class="o_field_widget o_stat_info">
|
|
<span class="o_stat_text">Trackers</span>
|
|
</div>
|
|
</button>
|
|
</div>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- hr related job position menu action -->
|
|
<record model="ir.actions.act_window" id="action_hr_job_config">
|
|
<field name="name">Job Positions</field>
|
|
<field name="res_model">hr.job</field>
|
|
<field name="view_mode">tree,kanban,form</field>
|
|
<field name="view_ids" eval="[(5, 0, 0),
|
|
(0, 0, {'view_mode': 'tree', 'view_id': ref('hr.view_hr_job_tree')}),
|
|
(0, 0, {'view_mode': 'kanban', 'view_id': ref('hr.hr_job_view_kanban')}),
|
|
(0, 0, {'view_mode': 'form', 'view_id': ref('hr.view_hr_job_form')})]"/>
|
|
<field name="context">{'search_default_in_recruitment': 1}</field>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
Ready to recruit more efficiently?
|
|
</p><p>
|
|
Let's create a job position.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<!--
|
|
hr.applicant.refuse.reason views
|
|
-->
|
|
<record id="hr_applicant_refuse_reason_view_form" model="ir.ui.view">
|
|
<field name="name">Applicant refuse reason form</field>
|
|
<field name="model">hr.applicant.refuse.reason</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Refuse Reason">
|
|
<sheet>
|
|
<widget name="web_ribbon" text="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
|
|
<div class="oe_title">
|
|
<div class="oe_edit_only">
|
|
<label for="name"/>
|
|
</div>
|
|
<h1>
|
|
<field name="name"/>
|
|
</h1>
|
|
<field name="active" invisible="1"/>
|
|
</div>
|
|
<group>
|
|
<field name="template_id" context="{'default_model': 'hr.applicant'}"/>
|
|
</group>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="hr_applicant_refuse_reason_view_tree" model="ir.ui.view">
|
|
<field name="name">Applicant refuse reason tree</field>
|
|
<field name="model">hr.applicant.refuse.reason</field>
|
|
<field name="arch" type="xml">
|
|
<tree string="Refuse Reason" editable="bottom">
|
|
<field name="name"/>
|
|
<field name="template_id" context="{'default_model': 'hr.applicant'}"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="hr_applicant_refuse_reason_action" model="ir.actions.act_window">
|
|
<field name="name">Refuse Reasons</field>
|
|
<field name="res_model">hr.applicant.refuse.reason</field>
|
|
<field name="view_mode">tree,form</field>
|
|
</record>
|
|
|
|
######################## JOB OPPORTUNITIES (menu) ###########################
|
|
<record model="ir.actions.act_window" id="crm_case_categ0_act_job">
|
|
<field name="name">Applications</field>
|
|
<field name="res_model">hr.applicant</field>
|
|
<field name="view_mode">kanban,tree,form,pivot,graph,calendar,activity</field>
|
|
<field name="view_id" eval="False"/>
|
|
<field name="search_view_id" ref="hr_applicant_view_search_bis"/>
|
|
<field name="context">{'search_default_stage':1}</field>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_empty_folder">
|
|
No applications yet
|
|
</p><p>
|
|
Odoo helps you track applicants in the recruitment
|
|
process and follow up all operations: meetings, interviews, etc.
|
|
</p><p>
|
|
Applicants and their attached CV are created automatically when an email is sent.
|
|
If you install the document management modules, all resumes are indexed automatically,
|
|
so that you can easily search through their content.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record model="ir.actions.act_window.view" id="action_hr_sec_kanban_view_act_job">
|
|
<field name="sequence" eval="1"/>
|
|
<field name="view_mode">kanban</field>
|
|
<field name="view_id" ref="hr_kanban_view_applicant"/>
|
|
<field name="act_window_id" ref="crm_case_categ0_act_job"/>
|
|
</record>
|
|
|
|
<record model="ir.actions.act_window.view" id="action_hr_sec_tree_view_act_job">
|
|
<field name="sequence" eval="0"/>
|
|
<field name="view_mode">tree</field>
|
|
<field name="view_id" ref="crm_case_tree_view_job"/>
|
|
<field name="act_window_id" ref="crm_case_categ0_act_job"/>
|
|
</record>
|
|
|
|
<record model="ir.actions.act_window.view" id="action_hr_sec_form_view_act_job">
|
|
<field name="sequence" eval="2"/>
|
|
<field name="view_mode">form</field>
|
|
<field name="view_id" ref="hr_applicant_view_form"/>
|
|
<field name="act_window_id" ref="crm_case_categ0_act_job"/>
|
|
</record>
|
|
|
|
<record id="hr_applicant_action_view_pivot" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="3"/>
|
|
<field name="view_mode">pivot</field>
|
|
<field name="view_id" ref="crm_case_pivot_view_job"/>
|
|
<field name="act_window_id" ref="crm_case_categ0_act_job"/>
|
|
</record>
|
|
|
|
<record id="action_hr_sec_graph_view_act_job" model="ir.actions.act_window.view">
|
|
<field name="sequence" eval="4"/>
|
|
<field name="view_mode">graph</field>
|
|
<field name="view_id" ref="crm_case_graph_view_job"/>
|
|
<field name="act_window_id" ref="crm_case_categ0_act_job"/>
|
|
</record>
|
|
|
|
<menuitem
|
|
name="Recruitment"
|
|
id="menu_hr_recruitment_root"
|
|
web_icon="hr_recruitment,static/description/icon.svg"
|
|
groups="hr_recruitment.group_hr_recruitment_user,hr_recruitment.group_hr_recruitment_interviewer"
|
|
sequence="210"/>
|
|
|
|
<menuitem id="menu_hr_recruitment_configuration" name="Configuration" parent="menu_hr_recruitment_root"
|
|
groups="group_hr_recruitment_user" sequence="100"/>
|
|
|
|
<!-- ALL JOBS REQUESTS -->
|
|
<menuitem id="menu_hr_recruitment_config_jobs" name="Job Positions" parent="menu_hr_recruitment_configuration" sequence="10" />
|
|
|
|
<menuitem id="menu_hr_recruitment_config_applications" name="Applications" parent="menu_hr_recruitment_configuration" sequence="20" />
|
|
|
|
<menuitem id="menu_hr_recruitment_config_employees" name="Employees" parent="menu_hr_recruitment_configuration" sequence="30" />
|
|
|
|
<menuitem id="menu_hr_recruitment_config_activities" name="Activities" parent="menu_hr_recruitment_configuration" sequence="40" />
|
|
|
|
<menuitem
|
|
id="menu_hr_applicant_refuse_reason"
|
|
action="hr_applicant_refuse_reason_action"
|
|
parent="menu_hr_recruitment_config_applications"
|
|
sequence="10"/>
|
|
|
|
<menuitem
|
|
name="Applications"
|
|
parent="menu_hr_recruitment_root"
|
|
id="menu_crm_case_categ0_act_job" sequence="2"/>
|
|
|
|
<menuitem
|
|
name="All Applications"
|
|
parent="menu_crm_case_categ0_act_job"
|
|
id="menu_crm_case_categ_all_app" action="crm_case_categ0_act_job" sequence="2"/>
|
|
|
|
<!-- Resume and Letters -->
|
|
<record id="ir_attachment_view_search_inherit_hr_recruitment" model="ir.ui.view">
|
|
<field name="name">ir.attachment.search.inherit.recruitment</field>
|
|
<field name="model">ir.attachment</field>
|
|
<field name="mode">primary</field>
|
|
<field name="inherit_id" ref="base.view_attachment_search"/>
|
|
<field name="arch" type="xml">
|
|
<xpath expr="//field[@name='create_date']" position="after">
|
|
<field name="index_content" string="Content"/>
|
|
</xpath>
|
|
<xpath expr="//filter[@name='my_documents_filter']" position="attributes">
|
|
<attribute name='invisible'>1</attribute>
|
|
</xpath>
|
|
<xpath expr="//filter[@name='url_filter']" position="attributes">
|
|
<attribute name='invisible'>1</attribute>
|
|
</xpath>
|
|
<xpath expr="//filter[@name='binary_filter']" position="attributes">
|
|
<attribute name='invisible'>1</attribute>
|
|
</xpath>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="ir_attachment_hr_recruitment_list_view" model="ir.ui.view">
|
|
<field name="model">ir.attachment</field>
|
|
<field name="mode">primary</field>
|
|
<field name="arch" type="xml">
|
|
<tree>
|
|
<field name="name" invisible="1"/>
|
|
<field name="res_id" invisible="1"/>
|
|
<field name="res_model" invisible="1"/>
|
|
<field name="datas" widget="binary" readonly="1" filename="name" string="File"/>
|
|
<field name="res_name" widget="applicant_char" string="Applicant" attrs="{'invisible': [('res_model', '!=', 'hr.applicant')]}"/>
|
|
<field name="create_date"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Stage Tree View -->
|
|
<record model="ir.ui.view" id="hr_recruitment_stage_tree">
|
|
<field name="name">hr.recruitment.stage.tree</field>
|
|
<field name="model">hr.recruitment.stage</field>
|
|
<field name="arch" type="xml">
|
|
<tree string="Stages">
|
|
<field name="sequence" widget="handle"/>
|
|
<field name="name"/>
|
|
<field name="fold"/>
|
|
<field name="hired_stage"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Stage Kanban View -->
|
|
<record id="view_hr_recruitment_stage_kanban" model="ir.ui.view">
|
|
<field name="name">hr.recruitment.stage.kanban</field>
|
|
<field name="model">hr.recruitment.stage</field>
|
|
<field name="arch" type="xml">
|
|
<kanban>
|
|
<field name="name"/>
|
|
<field name="fold"/>
|
|
<templates>
|
|
<t t-name="kanban-box">
|
|
<div t-attf-class="oe_kanban_global_click">
|
|
<div>
|
|
<strong><field name="name"/></strong>
|
|
</div>
|
|
<div>
|
|
<span>Folded in Recruitment Pipe: </span>
|
|
<field name="fold" widget="boolean"/>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Stage Form View -->
|
|
<record model="ir.ui.view" id="hr_recruitment_stage_form">
|
|
<field name="name">hr.recruitment.stage.form</field>
|
|
<field name="model">hr.recruitment.stage</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Stage">
|
|
<sheet>
|
|
<group name="stage_definition" string="Stage Definition">
|
|
<group>
|
|
<field name="name"/>
|
|
<field name="sequence" groups="base.group_no_one"/>
|
|
<field name="template_id" domain= "[('model_id.model', '=', 'hr.applicant')]"/>
|
|
</group>
|
|
<group name="stage_details">
|
|
<field name="fold"/>
|
|
<field name="hired_stage"/>
|
|
<field name="is_warning_visible" invisible="1"/>
|
|
<span attrs="{'invisible': [('is_warning_visible', '=', False)]}">
|
|
<span
|
|
class="fa fa-exclamation-triangle text-danger ps-3">
|
|
</span>
|
|
<span class="text-danger">
|
|
All applications will lose their hired date and hired status.
|
|
</span>
|
|
</span>
|
|
<field name="job_ids" widget="many2many_tags"/>
|
|
</group>
|
|
</group>
|
|
<group name="tooltips" string="Tooltips">
|
|
<p class="text-muted" colspan="2">
|
|
You can define here the labels that will be displayed for the kanban state instead
|
|
of the default labels.
|
|
</p>
|
|
<label for="legend_normal" string=" " class="o_status"/>
|
|
<field name="legend_normal" nolabel="1"/>
|
|
<label for="legend_blocked" string=" " class="o_status o_status_red"/>
|
|
<field name="legend_blocked" nolabel="1"/>
|
|
<label for="legend_done" string=" " class="o_status o_status_green"/>
|
|
<field name="legend_done" nolabel="1"/>
|
|
</group>
|
|
<separator string="Requirements"/>
|
|
<field name="requirements"/>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Stage Action -->
|
|
<record id="hr_recruitment_stage_act" model="ir.actions.act_window">
|
|
<field name="name">Stages</field>
|
|
<field name="res_model">hr.recruitment.stage</field>
|
|
<field name="view_mode">tree,kanban,form</field>
|
|
<field name="view_id" ref="hr_recruitment_stage_tree"/>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
Add a new stage in the recruitment process
|
|
</p><p>
|
|
Don't forget to specify the department if your recruitment process
|
|
is different according to the job position.
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<menuitem
|
|
id="menu_hr_recruitment_stage"
|
|
name="Stages"
|
|
parent="menu_hr_recruitment_config_jobs"
|
|
action="hr_recruitment_stage_act"
|
|
groups="base.group_no_one"
|
|
sequence="1"/>
|
|
|
|
<menuitem
|
|
id="menu_hr_recruitment_contract_type"
|
|
action="hr.hr_contract_type_action"
|
|
parent="menu_hr_recruitment_config_jobs"
|
|
sequence="2"
|
|
groups="hr.group_hr_user"/>
|
|
|
|
<!-- Tag Form View -->
|
|
<record id="hr_applicant_category_view_form" model="ir.ui.view">
|
|
<field name="name">hr.applicant.category.form</field>
|
|
<field name="model">hr.applicant.category</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Tags">
|
|
<sheet>
|
|
<group>
|
|
<field name="name"/>
|
|
<field name="color"/>
|
|
</group>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="hr_applicant_category_view_tree" model="ir.ui.view">
|
|
<field name="name">hr.applicant.category.tree</field>
|
|
<field name="model">hr.applicant.category</field>
|
|
<field name="arch" type="xml">
|
|
<tree string="Tags" editable="bottom">
|
|
<field name="name"/>
|
|
<field name="color" groups="base.group_no_one"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Tag Action -->
|
|
<record id="hr_applicant_category_action" model="ir.actions.act_window">
|
|
<field name="name">Tags</field>
|
|
<field name="res_model">hr.applicant.category</field>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
Add a new tag
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<menuitem
|
|
id="hr_applicant_category_menu"
|
|
parent="menu_hr_recruitment_config_applications"
|
|
action="hr_applicant_category_action"
|
|
sequence="20" groups="base.group_no_one"/>
|
|
|
|
<!-- Degree Tree View -->
|
|
<record model="ir.ui.view" id="hr_recruitment_degree_tree">
|
|
<field name="name">hr.recruitment.degree.tree</field>
|
|
<field name="model">hr.recruitment.degree</field>
|
|
<field name="arch" type="xml">
|
|
<tree string="Degree" editable="bottom">
|
|
<field name="sequence" widget="handle"/>
|
|
<field name="name"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Degree Form View -->
|
|
<record model="ir.ui.view" id="hr_recruitment_degree_form">
|
|
<field name="name">hr.recruitment.degree.form</field>
|
|
<field name="model">hr.recruitment.degree</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Degree">
|
|
<sheet>
|
|
<group>
|
|
<field name="name"/>
|
|
<field name="sequence" groups="base.group_no_one"/>
|
|
</group>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Degree Action -->
|
|
<record id="hr_recruitment_degree_action" model="ir.actions.act_window">
|
|
<field name="name">Degree</field>
|
|
<field name="res_model">hr.recruitment.degree</field>
|
|
<field name="view_id" ref="hr_recruitment_degree_tree"/>
|
|
</record>
|
|
|
|
<menuitem
|
|
id="menu_hr_recruitment_degree"
|
|
name="Degrees"
|
|
parent="menu_hr_recruitment_config_applications"
|
|
action="hr_recruitment_degree_action"
|
|
sequence="1" groups="base.group_no_one"/>
|
|
|
|
<!-- Source Kanban View -->
|
|
<record id="hr_recruitment_source_kanban" model="ir.ui.view">
|
|
<field name="name">hr.recruitment.source.kanban</field>
|
|
<field name="model">hr.recruitment.source</field>
|
|
<field name="arch" type="xml">
|
|
<kanban class="o_kanban_mobile" create="0" sample="1">
|
|
<field name="job_id"/>
|
|
<field name="email"/>
|
|
<field name="has_domain"/>
|
|
<templates>
|
|
<t t-name="kanban-box">
|
|
<div class="oe_kanban_card oe_kanban_global_click">
|
|
<div class="oe_kanban_content">
|
|
<div class="o_kanban_record_top">
|
|
<div class="o_kanban_record_headings row">
|
|
<div class="col-4">
|
|
<h3 class="o_kanban_record_title"><field name="source_id"/></h3>
|
|
</div>
|
|
<div class="col-8 text-end">
|
|
<div><field name="job_id"/></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="o_kanban_record_body mt-3">
|
|
<div class="text-end">
|
|
<field name="email" attrs="{'invisible': [('has_domain', '=', False)]}" widget="email"/>
|
|
<button name="create_alias" class="btn btn-primary mb-2" type="object" attrs="{'invisible': ['|', ('has_domain', '=', False), ('email', '!=', False)]}">Generate Email</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</templates>
|
|
</kanban>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Source Tree View -->
|
|
<record model="ir.ui.view" id="hr_recruitment_source_tree">
|
|
<field name="name">hr.recruitment.source.tree</field>
|
|
<field name="model">hr.recruitment.source</field>
|
|
<field name="arch" type="xml">
|
|
<tree string="Sources of Applicants" editable="top" class="o_recruitment_list" sample="1">
|
|
<field name="has_domain" invisible="1"/>
|
|
<field name="source_id" placeholder="e.g. LinkedIn" decoration-bf="1" attrs="{'readonly': [('id', '!=', False)]}"/>
|
|
<field name="medium_id" optional="hidden"/>
|
|
<field name="job_id" attrs="{'readonly': [('id', '!=', False)]}"/>
|
|
<field name="email" attrs="{'invisible': [('email', '=', False)]}" widget="email"/>
|
|
<button name="create_alias" string="Generate Email" class="btn btn-primary" type="object" attrs="{'invisible': ['|', ('has_domain', '=', False), ('email', '!=', False)]}"/>
|
|
</tree>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="hr_applicant_action_from_department" model="ir.actions.act_window">
|
|
<field name="name">New Applications</field>
|
|
<field name="res_model">hr.applicant</field>
|
|
<field name="view_mode">kanban,tree,form,graph,calendar,pivot</field>
|
|
<field name="context">{
|
|
'search_default_department_id': active_id,
|
|
'default_department_id': active_id}
|
|
</field>
|
|
<field name="domain">[('stage_id.sequence','<=','1')]</field>
|
|
</record>
|
|
|
|
<!--Hr Employee inherit search view-->
|
|
<record id="hr_employee_view_search" model="ir.ui.view">
|
|
<field name="name">hr.employee.search.inherit</field>
|
|
<field name="model">hr.employee</field>
|
|
<field name="inherit_id" ref="hr.view_employee_filter"/>
|
|
<field name="arch" type="xml">
|
|
<xpath expr="//field[@name='job_id']" position="after">
|
|
<filter name="newly_hired_employee" string="Newly Hired" domain="[('newly_hired_employee', '=', True)]" groups="hr_recruitment.group_hr_recruitment_user"/>
|
|
</xpath>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="hr_employee_action_from_department" model="ir.actions.act_window">
|
|
<field name="name">Newly Hired Employees</field>
|
|
<field name="res_model">hr.employee</field>
|
|
<field name="view_mode">kanban,tree,form</field>
|
|
<field name="context">{
|
|
'search_default_newly_hired_employee': 1,
|
|
'search_default_department_id': [active_id],
|
|
'default_department_id': active_id}
|
|
</field>
|
|
<field name="search_view_id" ref="hr_employee_view_search"/>
|
|
</record>
|
|
|
|
<record id="hr_applicant_view_pivot" model="ir.ui.view">
|
|
<field name="name">hr.applicant.pivot</field>
|
|
<field name="model">hr.applicant</field>
|
|
<field name="arch" type="xml">
|
|
<pivot string="Recruitment Analysis" sample="1">
|
|
<field name="stage_id" type="row"/>
|
|
<field name="job_id" type="col"/>
|
|
<field name="name"/>
|
|
</pivot>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="hr_applicant_view_graph" model="ir.ui.view">
|
|
<field name="name">hr.applicant.graph</field>
|
|
<field name="model">hr.applicant</field>
|
|
<field name="arch" type="xml">
|
|
<graph string="Recruitment Analysis" sample="1">
|
|
<field name="stage_id"/>
|
|
<field name="job_id"/>
|
|
</graph>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="hr_applicant_view_search" model="ir.ui.view">
|
|
<field name="name">hr.applicant.search</field>
|
|
<field name="model">hr.applicant</field>
|
|
<field name="priority">32</field>
|
|
<field name="arch" type="xml">
|
|
<search string="Recruitment Analysis">
|
|
<field name="job_id"/>
|
|
<field name="department_id" operator="child_of"/>
|
|
<field name="user_id"/>
|
|
<filter string="Creation Date" name="year" date="create_date" default_period="this_year"/>
|
|
<separator/>
|
|
<filter string="Unassigned" name="unassigned" domain="[('user_id', '=', False)]"/>
|
|
<filter string="Reserve" name="reserve" domain="[('job_id', '=', False)]"/>
|
|
<separator/>
|
|
<filter string="New" name="new" domain="[('stage_id.sequence', '=', 1)]"/>
|
|
<separator/>
|
|
<filter string="Ongoing" name="ongoing" domain="[('active', '=', True)]"/>
|
|
<filter string="Refused" name="refused" domain="[('active', '=', False)]"/>
|
|
<separator/>
|
|
<filter string="Archived" name="archived" domain="[('active', '=', False)]"/>
|
|
<separator/>
|
|
<group expand="0" string="Extended Filters">
|
|
<field name="priority"/>
|
|
<field name="stage_id"/>
|
|
<field name="company_id" groups="base.group_multi_company"/>
|
|
<field name="create_date"/>
|
|
<field name="date_closed"/>
|
|
</group>
|
|
<group expand="1" string="Group By">
|
|
<filter string="Responsible" name='User' context="{'group_by':'user_id'}"/>
|
|
<filter string="Company" name="company" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
|
|
<filter string="Jobs" name="job" context="{'group_by':'job_id'}"/>
|
|
<filter string="Department" name="department" context="{'group_by':'department_id'}"/>
|
|
<filter string="Tags" name="group_by_categ_ids" context="{'group_by':'categ_ids'}"/>
|
|
<filter string="Stage" name="stage" context="{'group_by':'stage_id'}" />
|
|
<separator/>
|
|
<filter string="Creation Date" name="creation_month" context="{'group_by':'create_date:month'}" help="Creation Date"/>
|
|
</group>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="hr_applicant_action_analysis" model="ir.actions.act_window">
|
|
<field name="name">Recruitment Analysis</field>
|
|
<field name="res_model">hr.applicant</field>
|
|
<field name="view_mode">graph,pivot</field>
|
|
<field name="search_view_id" ref="hr_applicant_view_search"/>
|
|
<field name="view_ids" eval="[
|
|
(5, 0, 0),
|
|
(0, 0, {'view_mode': 'graph', 'view_id': ref('hr_applicant_view_graph')}),
|
|
(0, 0, {'view_mode': 'pivot', 'view_id': ref('hr_applicant_view_pivot')})]"/>
|
|
<field name="context">{'search_default_creation_month': 1, 'search_default_job': 2}</field>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
No data yet!
|
|
</p>
|
|
</field>
|
|
</record>
|
|
<menuitem name="Reporting" id="report_hr_recruitment" parent="menu_hr_recruitment_root" groups="group_hr_recruitment_user"
|
|
sequence="99"/>
|
|
|
|
<menuitem name="Recruitment Analysis" id="hr_applicant_report_menu" parent="report_hr_recruitment"
|
|
sequence="50" action="hr_applicant_action_analysis"/>
|
|
<record id="action_hr_recruitment_report_filtered_department" model="ir.actions.act_window">
|
|
<field name="name">Recruitment Analysis</field>
|
|
<field name="res_model">hr.applicant</field>
|
|
<field name="view_mode">graph,pivot</field>
|
|
<field name="search_view_id" ref="hr_applicant_view_search"/>
|
|
<field name="context">{
|
|
'search_default_department_id': [active_id],
|
|
'default_department_id': active_id}
|
|
</field>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
No data yet!
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="action_hr_recruitment_report_filtered_job" model="ir.actions.act_window">
|
|
<field name="name">Recruitment Analysis</field>
|
|
<field name="res_model">hr.applicant</field>
|
|
<field name="view_mode">graph,pivot</field>
|
|
<field name="search_view_id" ref="hr_applicant_view_search"/>
|
|
<field name="context">{
|
|
'search_default_creation_month': 1,
|
|
'search_default_job_id': [active_id],
|
|
'default_job_id': active_id}
|
|
</field>
|
|
<field name="help" type="html">
|
|
<p class="o_view_nocontent_smiling_face">
|
|
No data yet!
|
|
</p>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="action_applicant_send_mail" model="ir.actions.server">
|
|
<field name="name">Send Email</field>
|
|
<field name="model_id" ref="hr_recruitment.model_hr_applicant"/>
|
|
<field name="binding_model_id" ref="hr_recruitment.model_hr_applicant"/>
|
|
<field name="binding_view_types">list</field>
|
|
<field name="state">code</field>
|
|
<field name="code">action = records.action_send_email()</field>
|
|
</record>
|
|
|
|
<!-- Custom reports (aka filters) -->
|
|
<record id="hr_applicant_filter_recruiter" model="ir.filters">
|
|
<field name="name">By Recruiter</field>
|
|
<field name="model_id">hr.applicant</field>
|
|
<field name="user_id" eval="False"/>
|
|
<field name="action_id" ref="hr_applicant_action_analysis"/>
|
|
<field name="context">{'group_by': ['create_date:month', 'user_id']}</field>
|
|
</record>
|
|
<record id="hr_applicant_filter_job" model="ir.filters">
|
|
<field name="name">By Job</field>
|
|
<field name="model_id">hr.applicant</field>
|
|
<field name="user_id" eval="False"/>
|
|
<field name="action_id" ref="hr_applicant_action_analysis"/>
|
|
<field name="context">{'group_by': ['create_date:month', 'job_id']}</field>
|
|
</record>
|
|
<record id="hr_applicant_filter_department" model="ir.filters">
|
|
<field name="name">By Department</field>
|
|
<field name="model_id">hr.applicant</field>
|
|
<field name="user_id" eval="False"/>
|
|
<field name="action_id" ref="hr_applicant_action_analysis"/>
|
|
<field name="context">{'group_by': ['create_date:month', 'department_id']}</field>
|
|
</record>
|
|
|
|
<menuitem
|
|
id="menu_hr_recruitment_utm"
|
|
parent="menu_hr_recruitment_configuration"
|
|
name="UTMs"
|
|
groups="base.group_no_one"
|
|
sequence="15"/>
|
|
|
|
<menuitem
|
|
id="menu_hr_recruitment_utm_sources"
|
|
parent="menu_hr_recruitment_utm"
|
|
name="Sources"
|
|
action="utm.utm_source_action"
|
|
groups="base.group_no_one"
|
|
sequence="15"/>
|
|
|
|
<menuitem
|
|
id="menu_hr_recruitment_utm_mediums"
|
|
parent="menu_hr_recruitment_utm"
|
|
name="Mediums"
|
|
action="utm.utm_medium_action"
|
|
groups="base.group_no_one"
|
|
sequence="15"/>
|
|
|
|
</data>
|
|
</odoo>
|