mirror of
https://github.com/bringout/oca-ocb-hr.git
synced 2026-04-27 03:12:05 +02:00
Initial commit: Hr packages
This commit is contained in:
commit
62531cd146
2820 changed files with 1432848 additions and 0 deletions
|
|
@ -0,0 +1,16 @@
|
|||
<?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="priority">70</field>
|
||||
<field name="inherit_id" ref="digest.digest_digest_view_form" />
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//group[@name='kpis']/group[last()]" position="before">
|
||||
<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>
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
<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="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="//templates" position="before">
|
||||
<t groups="hr_recruitment.group_hr_recruitment_user">
|
||||
<field name="new_applicant_count"/>
|
||||
<field name="new_hired_employee"/>
|
||||
<field name="expected_employee"/>
|
||||
</t>
|
||||
</xpath>
|
||||
|
||||
<xpath expr="//div[hasclass('o_kanban_primary_right')]" position="inside">
|
||||
<t groups="hr_recruitment.group_hr_recruitment_user">
|
||||
<div t-if="record.new_applicant_count.raw_value > 0" class="row ml16">
|
||||
<div class="col">
|
||||
<a name="%(hr_applicant_action_from_department)d" type="action">
|
||||
<field name="new_applicant_count"/> New Applicants
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</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" groups="hr_recruitment.group_hr_recruitment_user">
|
||||
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_config_employees" action="action_hr_department"/>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,201 @@
|
|||
<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" limit="40" action="%(action_hr_job_applications)d" type="action">
|
||||
<field name="active"/>
|
||||
<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="user_id"/>
|
||||
<field name="application_count"/>
|
||||
<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">
|
||||
<field name="is_favorite" widget="boolean_favorite" nolabel="1"/>
|
||||
<div class="o_primary ps-3">
|
||||
<span class="o_text_overflow"><t t-esc="record.name.value"/></span>
|
||||
</div>
|
||||
<div class="ps-3 text-muted">
|
||||
<field name="user_id" />
|
||||
</div>
|
||||
<div class="ps-3 o_secondary" groups="base.group_multi_company">
|
||||
<small><i class="fa fa-building-o" role="img" aria-label="Company" title="Company"></i> <field name="company_id"/></small>
|
||||
</div>
|
||||
<div t-if="record.alias_name.value and record.alias_domain.value" class="ps-3 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" groups="hr_recruitment.group_hr_recruitment_user">
|
||||
<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_recruitment_job_container o_kanban_card_content mt-0 mt-sm-3">
|
||||
<div class="row">
|
||||
<div class="col-7">
|
||||
<button class="btn btn-primary" name="%(action_hr_job_applications)d" type="action">
|
||||
<field name="new_application_count"/> New Applications
|
||||
</button>
|
||||
</div>
|
||||
<ul class="col-5 o_job_activities">
|
||||
<li>
|
||||
<a name="edit_job" type="edit" t-attf-class="{{ record.no_of_recruitment.raw_value > 0 ? 'to-recruit' : 'text-secondary' }}" groups="!hr_recruitment.group_hr_recruitment_interviewer">
|
||||
<field name="no_of_recruitment"/> To Recruit
|
||||
</a>
|
||||
<span t-attf-class="{{ record.no_of_recruitment.raw_value > 0 ? 'to-recruit' : 'text-secondary' }}" groups="hr_recruitment.group_hr_recruitment_interviewer">
|
||||
<field name="no_of_recruitment"/> To Recruit
|
||||
</span>
|
||||
</li>
|
||||
<li t-if="record.application_count.raw_value > 0">
|
||||
<field name="application_count"/> Applications
|
||||
</li>
|
||||
<li class="text-warning" t-if="record.activities_today.raw_value > 0">
|
||||
<a name="action_open_today_activities" type="object" class="text-warning"><field name="activities_today"/> Activities Today</a>
|
||||
</li>
|
||||
<li t-if="record.activities_overdue.raw_value > 0">
|
||||
<a name="action_open_late_activities" type="object" class="text-danger"><field name="activities_overdue"/> Late Activities</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div name="kanban_boxes" class="row flex-nowrap" groups="hr_recruitment.group_hr_recruitment_user"></div>
|
||||
</div>
|
||||
<div class="container o_recruitment_job_container o_kanban_card_manage_pane dropdown-menu" role="menu">
|
||||
<div class="row">
|
||||
<div class="col-6 o_kanban_card_manage_section">
|
||||
<div role="menuitem" class="o_kanban_card_manage_title">
|
||||
<span>View</span>
|
||||
</div>
|
||||
<div role="menuitem" name="menu_view_applications">
|
||||
<a name="%(action_hr_job_applications)d" type="action">Applications</a>
|
||||
</div>
|
||||
<div role="menuitem">
|
||||
<a name="action_open_activities" type="object">Activities</a>
|
||||
</div>
|
||||
<div role="menuitem">
|
||||
<a name="%(action_hr_job_sources)d" type="action" context="{'default_job_id': active_id}">Trackers</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 o_kanban_card_manage_section">
|
||||
<div role="menuitem" class="o_kanban_card_manage_title">
|
||||
<span>New</span>
|
||||
</div>
|
||||
<div role="menuitem" name="menu_new_applications">
|
||||
<a name="%(hr_recruitment.action_hr_applicant_new)d" type="action">Application</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 o_kanban_card_manage_section">
|
||||
<div role="menuitem" class="o_kanban_card_manage_title">
|
||||
<span>Reporting</span>
|
||||
</div>
|
||||
<div role="menuitem" name="o_kanban_job_reporting">
|
||||
<a name="%(hr_recruitment.action_hr_recruitment_report_filtered_job)d" type="action">Analysis</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="o_kanban_card_manage_settings row">
|
||||
<div class="col-6" role="menuitem" aria-haspopup="true">
|
||||
<ul class="oe_kanban_colorpicker" data-field="color" role="popup"/>
|
||||
</div>
|
||||
<div class="col-6" role="menuitem">
|
||||
<a class="dropdown-item" t-if="widget.editable" name="edit_job" type="edit">Configuration</a>
|
||||
<a class="dropdown-item" t-if="record.active.raw_value" name="toggle_active" type="object">Archive</a>
|
||||
<a class="dropdown-item" t-if="!record.active.raw_value" name="toggle_active" type="object">Unarchive</a>
|
||||
</div>
|
||||
</div>
|
||||
</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="priority">20</field>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//filter[@name='my_favorite_jobs']" position="after">
|
||||
<searchpanel>
|
||||
<field name="company_id" groups="base.group_multi_company" icon="fa-building" enable_counters="1"/>
|
||||
<field name="department_id" icon="fa-users" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
<filter string="My Job Positions" name="my_positions" domain="[('user_id', '=', uid)]"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_job_view_tree_inherit" model="ir.ui.view">
|
||||
<field name="model">hr.job</field>
|
||||
<field name="inherit_id" ref="hr.view_hr_job_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="department_id" position="after">
|
||||
<field name="application_count" string="Applications"/>
|
||||
</field>
|
||||
<field name="no_of_recruitment" position="after">
|
||||
<field name="alias_name" invisible="1"/>
|
||||
<field name="alias_id" attrs="{'invisible': [('alias_name', '=', False)]}" optional="hide"/>
|
||||
<field name="user_id" widget="many2one_avatar_user" optional="hide"/>
|
||||
</field>
|
||||
</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,tree,form</field>
|
||||
<field name="view_id" ref="hr_recruitment.view_hr_job_kanban"/>
|
||||
<field name="view_ids" eval="[(5, 0, 0),
|
||||
(0, 0, {'view_mode': 'kanban', 'view_id': ref('hr_recruitment.view_hr_job_kanban')}),
|
||||
(0, 0, {'view_mode': 'tree', 'view_id': ref('hr_recruitment.hr_job_view_tree_inherit')}),
|
||||
(0, 0, {'view_mode': 'form', 'view_id': ref('hr.view_hr_job_form')})]"/>
|
||||
<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" groups="hr_recruitment.group_hr_recruitment_user" />
|
||||
|
||||
<!-- Job Positions filtered for interviewers -->
|
||||
<record model="ir.actions.act_window" id="action_hr_job_interviewer">
|
||||
<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">{'create': False}</field>
|
||||
<field name="domain">[
|
||||
'|',
|
||||
('interviewer_ids', 'in', uid),
|
||||
('extended_interviewer_ids', 'in', uid),
|
||||
]</field>
|
||||
</record>
|
||||
<menuitem name="By Job Positions" parent="menu_crm_case_categ0_act_job"
|
||||
id="menu_hr_job_position_interviewer" action="action_hr_job_interviewer"
|
||||
sequence="1" groups="hr_recruitment.group_hr_recruitment_interviewer" />
|
||||
</odoo>
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,22 @@
|
|||
<?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', '=', False), ('res_model', '=', 'hr.applicant')]</field>
|
||||
<field name="context">{'default_res_model': 'hr.applicant'}</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_empty_folder">
|
||||
No data to display
|
||||
</p>
|
||||
<p>
|
||||
Try to add some records, or make sure that there is no active filter in the search bar.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
<menuitem id="hr_recruitment_menu_config_activity_type"
|
||||
action="mail_activity_type_action_config_hr_applicant"
|
||||
parent="menu_hr_recruitment_config_activities"/>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,96 @@
|
|||
<?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="Send Interview Survey"/>
|
||||
<div class="text-muted">
|
||||
Send an Interview Survey to the applicant during
|
||||
the recruitment process
|
||||
</div>
|
||||
<div class="content-group" id="interview_forms"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-6 o_setting_box" id="sms">
|
||||
<div class="o_setting_right_pane" id="sms_settings">
|
||||
<div class="o_form_label">
|
||||
Send SMS
|
||||
<a href="https://www.odoo.com/documentation/16.0/applications/marketing/sms_marketing/pricing/pricing_and_faq.html" title="Documentation" class="ms-1 o_doc_link" target="_blank"></a>
|
||||
</div>
|
||||
<div class="text-muted">
|
||||
Send texts to your contacts
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-6 o_setting_box" id="display_cv">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="group_applicant_cv_display"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="group_applicant_cv_display" string="CV Display"/>
|
||||
<div class="text-muted">
|
||||
Display CV on application form
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-6 o_setting_box" title="Use OCR to fill data from a picture of the CV or the file itself">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="module_hr_recruitment_extract" widget="upgrade_boolean"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane" id="recruitment_extract_settings">
|
||||
<label string="CV Digitization (OCR)" for="module_hr_recruitment_extract"/>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific."/>
|
||||
<div class="text-muted">
|
||||
Digitize your CV to extract name and email automatically.
|
||||
</div>
|
||||
</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>
|
||||
Loading…
Add table
Add a link
Reference in a new issue