diff options
Diffstat (limited to 'addons/hr_recruitment/views')
| -rw-r--r-- | addons/hr_recruitment/views/digest_views.xml | 15 | ||||
| -rw-r--r-- | addons/hr_recruitment/views/hr_department_views.xml | 46 | ||||
| -rw-r--r-- | addons/hr_recruitment/views/hr_job_views.xml | 126 | ||||
| -rw-r--r-- | addons/hr_recruitment/views/hr_recruitment_templates.xml | 16 | ||||
| -rw-r--r-- | addons/hr_recruitment/views/hr_recruitment_views.xml | 1069 | ||||
| -rw-r--r-- | addons/hr_recruitment/views/mail_activity_views.xml | 14 | ||||
| -rw-r--r-- | addons/hr_recruitment/views/res_config_settings_views.xml | 61 |
7 files changed, 1347 insertions, 0 deletions
diff --git a/addons/hr_recruitment/views/digest_views.xml b/addons/hr_recruitment/views/digest_views.xml new file mode 100644 index 00000000..a4e33f24 --- /dev/null +++ b/addons/hr_recruitment/views/digest_views.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <record id="digest_digest_view_form" model="ir.ui.view"> + <field name="name">digest.digest.view.form.inherit.hr.recruitment</field> + <field name="model">digest.digest</field> + <field name="inherit_id" ref="digest.digest_digest_view_form" /> + <field name="arch" type="xml"> + <xpath expr="//group[@name='kpi_general']" position="after"> + <group name="kpi_hr" string="Recruitment" groups="hr_recruitment.group_hr_recruitment_user"> + <field name="kpi_hr_recruitment_new_colleagues"/> + </group> + </xpath> + </field> + </record> +</odoo> diff --git a/addons/hr_recruitment/views/hr_department_views.xml b/addons/hr_recruitment/views/hr_department_views.xml new file mode 100644 index 00000000..d2225293 --- /dev/null +++ b/addons/hr_recruitment/views/hr_department_views.xml @@ -0,0 +1,46 @@ +<odoo> + <!--Hr Department Inherit Kanban view--> + <record id="hr_department_view_kanban" model="ir.ui.view"> + <field name="name">hr.department.kanban.inherit</field> + <field name="model">hr.department</field> + <field name="inherit_id" ref="hr.hr_department_view_kanban"/> + <field name="groups_id" eval="[(4,ref('hr_recruitment.group_hr_recruitment_user'))]"/> + <field name="arch" type="xml"> + <data> + <xpath expr="//templates" position="before"> + <field name="new_applicant_count"/> + <field name="new_hired_employee"/> + <field name="expected_employee"/> + </xpath> + + <xpath expr="//div[hasclass('o_kanban_primary_right')]" position="inside"> + <div t-if="record.new_applicant_count.raw_value > 0" class="row ml16"> + <div class="col-9"> + <a name="%(hr_applicant_action_from_department)d" type="action"> + New Applicants + </a> + </div> + <div class="col-3 text-right"> + <field name="new_applicant_count"/> + </div> + </div> + </xpath> + + <xpath expr="//div[hasclass('o_kanban_manage_reports')]" position="inside"> + <a role="menuitem" class="dropdown-item" name="%(action_hr_recruitment_report_filtered_department)d" type="action"> + Recruitments + </a> + </xpath> + </data> + </field> + </record> + + <record id="action_hr_department" model="ir.actions.act_window"> + <field name="name">Departments</field> + <field name="res_model">hr.department</field> + <field name="view_mode">tree,form</field> + </record> + + <menuitem id="menu_hr_department" name="Departments" + parent="menu_hr_recruitment_configuration" action="action_hr_department"/> +</odoo> diff --git a/addons/hr_recruitment/views/hr_job_views.xml b/addons/hr_recruitment/views/hr_job_views.xml new file mode 100644 index 00000000..8bbbb7e8 --- /dev/null +++ b/addons/hr_recruitment/views/hr_job_views.xml @@ -0,0 +1,126 @@ +<odoo> + + <record model="ir.actions.act_window" id="action_hr_job_new_application"> + <field name="name">New Application</field> + <field name="res_model">hr.applicant</field> + <field name="view_mode">form</field> + <field name="context">{'search_default_job_id': [active_id], 'default_job_id': active_id}</field> + </record> + + <record id="view_hr_job_kanban" model="ir.ui.view"> + <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" on_create="hr_recruitment.create_job_simple" sample="1"> + <field name="name"/> + <field name="alias_name"/> + <field name="alias_domain"/> + <field name="is_favorite"/> + <field name="department_id"/> + <field name="no_of_recruitment"/> + <field name="color"/> + <field name="new_application_count"/> + <field name="no_of_hired_employee"/> + <field name="manager_id"/> + <field name="state"/> + <field name="user_id"/> + <templates> + <t t-name="kanban-box"> + <div t-attf-class="#{!selection_mode ? kanban_color(record.color.raw_value) : ''}"> + <div class="o_kanban_card_header"> + <div class="o_kanban_card_header_title"> + <div class="o_primary col-12"> + <span><t t-esc="record.name.value"/></span> + </div> + <div class="o_kanban_record_subtitle col-12 text-muted"> + <field name="user_id" /> + </div> + <field name="is_favorite" widget="boolean_favorite" nolabel="1"/> + <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" role="img" aria-label="Alias" title="Alias"></i> <field name="alias_id"/> </small> + </div> + </div> + <div class="o_kanban_manage_button_section"> + <a class="o_kanban_manage_toggle_button" href="#"><i class="fa fa-ellipsis-v" role="img" aria-label="Manage" title="Manage"/></a> + </div> + </div> + <div class="container o_kanban_card_content"> + <t t-if="record.state.raw_value == 'recruit'"> + <div class="row"> + <div class="col-6"> + <button class="btn btn-primary" name="%(action_hr_job_applications)d" type="action"> + <field name="application_count"/> Applications + </button> + </div> + <div class="col-6"> + <field name="new_application_count"/> New Applications <br/> + <field name="no_of_recruitment"/> To Recruit + </div> + </div> + </t> + <t t-if="record.state.raw_value == 'open'"> + <div class="row"> + <div class="col-12 o_kanban_primary_left"> + <button class="btn btn-secondary" name="set_recruit" type="object">Start Recruitment</button> + </div> + </div> + </t> + <div name="kanban_boxes" class="row o_recruitment_kanban_boxes"> + <div class="o_recruitment_kanban_box o_kanban_primary_bottom bottom_block" style="padding-left:8px;"> + <div class="col-6"></div> + <div class="col-6 o_link_trackers"> + <a role="button" name="%(hr_recruitment.action_hr_job_sources)d" type="action" class="btn btn-sm "> + <span title="Link Trackers"><i class="fa fa-lg fa-envelope" role="img" aria-label="Link Trackers"/></span> + </a> + </div> + </div> + </div> + </div> + <div class="o_kanban_card_manage_pane dropdown-menu" role="menu"> + <div class="o_kanban_card_manage_section"> + <div role="menuitem"><a t-if="record.state.raw_value == 'recruit'" name="set_open" type="object">Recruitment Done</a></div> + <div role="menuitem"><a t-if="record.state.raw_value == 'open'" name="set_recruit" type="object">Start recruitment</a></div> + <div role="menuitem"><a t-if="widget.editable" name="edit_job" type="edit">Edit</a></div> + </div> + <div role="menuitem" aria-haspopup="true"> + <ul class="oe_kanban_colorpicker" data-field="color" role="menu"/> + </div> + </div> + <div class="o_hr_job_boxes"> + <a class="o_hr_job_box" name="%(action_hr_job_applications)d" type="action"/> + </div> + </div> + </t> + </templates> + </kanban> + </field> + </record> + + <record id="hr_job_search_view" model="ir.ui.view"> + <field name="name">hr.job.search</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 Job Positions" name="my_positions" domain="[('user_id', '=', uid)]"/> + </xpath> + </field> + </record> + + <!-- hr related job position menu action --> + <record model="ir.actions.act_window" id="action_hr_job"> + <field name="name">Job Positions</field> + <field name="res_model">hr.job</field> + <field name="view_mode">kanban,form</field> + <field name="view_id" ref="hr_recruitment.view_hr_job_kanban"/> + <field name="context">{}</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> + <menuitem name="By Job Positions" parent="menu_crm_case_categ0_act_job" id="menu_hr_job_position" action="action_hr_job" sequence="1"/> +</odoo> diff --git a/addons/hr_recruitment/views/hr_recruitment_templates.xml b/addons/hr_recruitment/views/hr_recruitment_templates.xml new file mode 100644 index 00000000..a4fce728 --- /dev/null +++ b/addons/hr_recruitment/views/hr_recruitment_templates.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <data> + <template id="assets_backend" name="hr_recruitment assets" inherit_id="web.assets_backend"> + <xpath expr="." position="inside"> + <link rel="stylesheet" type="text/scss" href="/hr_recruitment/static/src/scss/hr_job.scss"/> + <script type="text/javascript" src="/hr_recruitment/static/src/js/recruitment.js"></script> + <script type="text/javascript" src="/hr_recruitment/static/src/js/tours/hr_recruitment.js"></script> + </xpath> + </template> + <template id="assets_tests" name="HR Recruitment Assets Tests" inherit_id="web.assets_tests"> + <xpath expr="." position="inside"> + </xpath> + </template> + </data> +</odoo> diff --git a/addons/hr_recruitment/views/hr_recruitment_views.xml b/addons/hr_recruitment/views/hr_recruitment_views.xml new file mode 100644 index 00000000..3b337210 --- /dev/null +++ b/addons/hr_recruitment/views/hr_recruitment_views.xml @@ -0,0 +1,1069 @@ +<?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="create_date" readonly="1" widget="date" optional="show"/> + <field name="date_last_stage_update" invisible="1"/> + <field name="partner_name" readonly="1"/> + <field name="name" readonly="1"/> + <field name="partner_mobile" widget="phone" readonly="1" optional="show"/> + <field name="partner_phone" widget="phone" readonly="1" optional="hide"/> + <field name="email_from" readonly="1" optional="hide"/> + <field name="job_id"/> + <field name="categ_ids" widget="many2many_tags" options="{'color_field': 'color'}" optional="show"/> + <field name="priority" widget="priority" optional="show"/> + <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="type_id" invisible="1"/> + <field name="availability" optional="hide"/> + <field name="department_id" invisible="context.get('invisible_department', True)" readonly="1"/> + <field name="user_id" widget="many2one_avatar_user" optional="show"/> + <field name="company_id" groups="base.group_multi_company" readonly="1" optional="hide"/> + <field name="stage_id"/> + </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"> + <header> + <button string="Create Employee" name="create_employee_from_applicant" type="object" + class="oe_highlight o_create_employee" attrs="{'invisible': ['|',('emp_id', '!=', False),('active', '=', False)]}"/> + <button string="Refuse" name="archive_applicant" type="object" attrs="{'invisible': [('active', '=', False)]}"/> + <button string="Restore" name="toggle_active" type="object" attrs="{'invisible': [('active', '=', True)]}"/> + <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_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" + help="Schedule interview with this applicant"> + <field name="meeting_count" widget="statinfo" string="Meetings"/> + </button> + </div> + <widget name="web_ribbon" title="Refused" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/> + <field name="kanban_state" widget="kanban_state_selection"/> + <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"> + <label for="name" class="oe_edit_only"/> + <h1><field name="name"/></h1> + <h2 class="o_row"> + <div> + <label for="partner_name" class="oe_edit_only"/> + <field name="partner_name"/> + </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="type_id" placeholder="Degree"/> + </group> + <group> + <field name="categ_ids" widget="many2many_tags" options="{'color_field': 'color', 'no_create_edit': True}"/> + <field name="user_id" domain="[('share', '=', False)]"/> + <field name="priority" widget="priority"/> + <field name="medium_id" groups="base.group_no_one" /> + <field name="source_id"/> + </group> + <group string="Job"> + <field name="job_id"/> + <field name="department_id"/> + <field name="company_id" groups="base.group_multi_company" options='{"no_open":True}' /> + </group> + <group string="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"/> + <field name="emp_id" invisible="1"/> + </group> + </group> + <separator string="Application Summary"/> + <field name="description" placeholder="Feedback of interviews..."/> + </sheet> + <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 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" type="bar" orientation="vertical" stacked="True" sample="1"> + <field name="stage_id" type="col"/> + </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')]"/> + <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 / Refused" name="inactive" domain="[('active', '=', 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/> + <group expand="0" string="Group By"> + <filter string="Responsible" name="responsible" domain="[]" context="{'group_by': 'user_id'}"/> + <filter string="Job" name="job" domain="[]" context="{'group_by': 'job_id'}"/> + <filter string="Degree" name="degree" domain="[]" context="{'group_by': 'type_id'}"/> + <filter string="Stage" name="stage" domain="[]" context="{'group_by': 'stage_id'}"/> + <filter string="Refuse Reason" name="refuse_reason_id" domain="[]" context="{'group_by': 'refuse_reason_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'}"/> + </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"/> + <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="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" /> + <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"> + <span class="badge badge-pill badge-danger pull-right mr-4" attrs="{'invisible': [('active', '=', True)]}">Refused</span> + <div class="o_dropdown_kanban dropdown"> + <a class="dropdown-toggle o-no-caret btn" role="button" data-toggle="dropdown" href="#" aria-label="Dropdown menu" title="Dropdown menu" data-display="static"> + <span class="fa fa-ellipsis-v"/> + </a> + <div class="dropdown-menu" role="menu"> + <t t-if="widget.deletable"><a role="menuitem" type="delete" class="dropdown-item">Delete</a></t> + <a role="menuitem" name="action_makeMeeting" type="object" class="dropdown-item">Schedule Interview</a> + <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-left 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_get_attachment_tree_view" 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 ml-1 mr-2" > + <field name="kanban_state" widget="kanban_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="oe_clear"></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</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}</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</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> + + <!-- 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="//filter[@name='in_position']" position="before"> + <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" > + <sheet> + <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"> + <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" name="close_dialog" type="object" class="btn-primary o_create_job"/> + <button string="Discard" class="btn-secondary" 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_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> + <field name="inherit_id" ref="hr.view_hr_job_form"/> + <field name="arch" type="xml"> + <xpath expr="//field[@name='department_id']" position="after"> + <field name="address_id" context="{'show_address': 1}" domain= "[('is_company', '=', True )]" options="{'always_reload': True}"/> + <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"> + <field name="alias_name" class="oe_inline"/>@<field name="alias_domain" class="oe_inline" readonly="1"/> + </div> + </div> + </xpath> + <field name="no_of_recruitment" position="after"> + <field name="user_id" domain="[('share', '=', False)]"/> + </field> + <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="Applications"/> + </button> + <button class="oe_stat_button" + icon="fa-file-text-o" + name="action_get_attachment_tree_view" + type="object"> + <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> + </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"/> + </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">{}</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="0"/> + <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="1"/> + <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.png" + groups="hr_recruitment.group_hr_recruitment_user" + sequence="80"/> + + <menuitem id="menu_hr_recruitment_configuration" name="Configuration" parent="menu_hr_recruitment_root" + sequence="100"/> + + <!-- ALL JOBS REQUESTS --> + <menuitem parent="menu_hr_recruitment_configuration" id="menu_hr_job_position_config" action="action_hr_job_config" sequence="10"/> + + <menuitem + id="menu_hr_applicant_refuse_reason" + action="hr_applicant_refuse_reason_action" + parent="menu_hr_recruitment_configuration" + 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 model="ir.actions.server" id="hr_applicant_resumes_server"> + <field name="name">hr.applicant.resumes.server</field> + <field name="model_id" ref="hr_recruitment.model_hr_applicant"/> + <field name="state">code</field> + <field name="code"> +act = env.ref('hr_recruitment.hr_applicant_resumes').read()[0] +act['domain'] = [('res_model', '=', 'hr.applicant'), '|', ('company_id', '=', False), ('company_id', '=', env.user.company_id.id)] +action = act + </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"/> + </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="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_configuration" + action="hr_recruitment_stage_act" + groups="base.group_no_one" + sequence="1"/> + + <!-- 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_configuration" + action="hr_applicant_category_action" + sequence="2" 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_configuration" + action="hr_recruitment_degree_action" + sequence="5" groups="base.group_no_one"/> + + <!-- 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="source_id" placeholder="e.g. LinkedIn" decoration-bf="1" attrs="{'readonly': [('id', '!=', False)]}"/> + <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': [('email', '!=', False)]}"/> + </tree> + </field> + </record> + <record id="hr_recruitment_source_action" model="ir.actions.act_window"> + <field name="name">Sources of Applicants</field> + <field name="res_model">hr.recruitment.source</field> + </record> + + <menuitem + id="menu_hr_recruitment_source" + parent="menu_hr_recruitment_configuration" + action="hr_recruitment_source_action" + groups="base.group_no_one" + sequence="10"/> + + <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"/> + </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" type="row"/> + <field name="job_id" type="col"/> + </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)]"/> + <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="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" + 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_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> + + <!-- 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> + + </data> +</odoo> diff --git a/addons/hr_recruitment/views/mail_activity_views.xml b/addons/hr_recruitment/views/mail_activity_views.xml new file mode 100644 index 00000000..949b4911 --- /dev/null +++ b/addons/hr_recruitment/views/mail_activity_views.xml @@ -0,0 +1,14 @@ +<?xml version="1.0"?> +<odoo> + <!-- Activity types config --> + <record id="mail_activity_type_action_config_hr_applicant" model="ir.actions.act_window"> + <field name="name">Activity Types</field> + <field name="res_model">mail.activity.type</field> + <field name="view_mode">tree,form</field> + <field name="domain">['|', ('res_model_id', '=', False), ('res_model_id.model', '=', 'hr.applicant')]</field> + <field name="context">{'default_res_model': 'hr.applicant'}</field> + </record> + <menuitem id="hr_recruitment_menu_config_activity_type" + action="mail_activity_type_action_config_hr_applicant" + parent="menu_hr_recruitment_configuration"/> +</odoo>
\ No newline at end of file diff --git a/addons/hr_recruitment/views/res_config_settings_views.xml b/addons/hr_recruitment/views/res_config_settings_views.xml new file mode 100644 index 00000000..51361c3c --- /dev/null +++ b/addons/hr_recruitment/views/res_config_settings_views.xml @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="utf-8"?> +<odoo> + <data> + <record id="res_config_settings_view_form" model="ir.ui.view"> + <field name="name">res.config.settings.view.form.inherit.hr.recruitment</field> + <field name="model">res.config.settings</field> + <field name="priority" eval="75"/> + <field name="inherit_id" ref="base.res_config_settings_view_form"/> + <field name="arch" type="xml"> + <xpath expr="//div[hasclass('settings')]" position="inside"> + <div class="app_settings_block" data-string="Recruitment" string="Recruitment" data-key="hr_recruitment" groups="hr_recruitment.group_hr_recruitment_manager"> + <h2>Job Posting</h2> + <div class="row mt16 o_settings_container" name="online_posting_setting_container"> + <div class="col-12 col-lg-6 o_setting_box" id="publish_available_jobs_setting"> + <div class="o_setting_left_pane"> + <field name="module_website_hr_recruitment"/> + </div> + <div class="o_setting_right_pane"> + <label for="module_website_hr_recruitment" string="Online Posting"/> + <div class="text-muted"> + Publish available jobs on your website + </div> + </div> + </div> + </div> + <h2>Recruitment Process</h2> + <div class="row mt16 o_settings_container" name="recruitment_process_div"> + <div class="col-12 col-lg-6 o_setting_box" + id="interview_forms_setting" + title="Use interview forms tailored to each job position during the recruitment process. Select the form to use in the job position detail form. This relies on the Survey app."> + <div class="o_setting_left_pane"> + <field name="module_hr_recruitment_survey"/> + </div> + <div class="o_setting_right_pane"> + <label for="module_hr_recruitment_survey" string="Interview Forms"/> + <div class="text-muted"> + Use interview forms during recruitment process + </div> + <div class="content-group" id="interview_forms"/> + </div> + </div> + </div> + </div> + </xpath> + </field> + </record> + + <record id="action_hr_recruitment_configuration" model="ir.actions.act_window"> + <field name="name">Settings</field> + <field name="type">ir.actions.act_window</field> + <field name="res_model">res.config.settings</field> + <field name="view_mode">form</field> + <field name="target">inline</field> + <field name="context">{'module' : 'hr_recruitment', 'bin_size': False}</field> + </record> + + <menuitem id="menu_hr_recruitment_global_settings" name="Settings" + parent="menu_hr_recruitment_configuration" sequence="0" action="action_hr_recruitment_configuration" + groups="base.group_system"/> + </data> +</odoo> |
