summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorKinjal Mehta <kme@odoo.com>2016-06-29 10:59:44 +0530
committerYannick Tivisse <yti@odoo.com>2016-08-22 12:48:56 +0200
commit3912beff314c8d55f48a44c946e6a625f78a6a8d (patch)
tree15c57a9430beda3314d5cbd9b85a3f598bb125ed /addons
parent3df8c253e3164c1b5dfe95a7c6b589d88b706219 (diff)
[MOVE] hr_recruitment_survey: Make a bridge module with survey related code
============== Specifications ============== Add an option in the settings to use the surveys or not By default : do not use interview forms. If the option is false : on the job application, hide the Interview form field
Diffstat (limited to 'addons')
-rw-r--r--addons/hr_recruitment/README.md7
-rw-r--r--addons/hr_recruitment/__openerp__.py6
-rw-r--r--addons/hr_recruitment/data/hr_recruitment_data.xml6
-rw-r--r--addons/hr_recruitment/data/hr_recruitment_demo.xml13
-rw-r--r--addons/hr_recruitment/data/survey_survey_data.xml229
-rw-r--r--addons/hr_recruitment/models/hr_job.py7
-rw-r--r--addons/hr_recruitment/models/hr_recruitment.py23
-rw-r--r--addons/hr_recruitment/models/hr_recruitment_config_settings.py5
-rw-r--r--addons/hr_recruitment/security/hr_recruitment_security.xml4
-rw-r--r--addons/hr_recruitment/security/ir.model.access.csv1
-rw-r--r--addons/hr_recruitment/test/recruitment_process.yml7
-rw-r--r--addons/hr_recruitment/views/hr_job_views.xml15
-rw-r--r--addons/hr_recruitment/views/hr_recruitment_config_settings_views.xml1
-rw-r--r--addons/hr_recruitment/views/hr_recruitment_views.xml33
-rw-r--r--addons/hr_recruitment_survey/README.md6
-rw-r--r--addons/hr_recruitment_survey/__init__.py3
-rw-r--r--addons/hr_recruitment_survey/__openerp__.py25
-rw-r--r--addons/hr_recruitment_survey/data/hr_job_demo.xml29
-rw-r--r--addons/hr_recruitment_survey/data/survey_survey_data.xml227
-rw-r--r--addons/hr_recruitment_survey/models/__init__.py4
-rw-r--r--addons/hr_recruitment_survey/models/hr_applicant.py32
-rw-r--r--addons/hr_recruitment_survey/models/hr_job.py15
-rw-r--r--addons/hr_recruitment_survey/security/hr_recruitment_survey_security.xml8
-rw-r--r--addons/hr_recruitment_survey/security/ir.model.access.csv2
-rw-r--r--addons/hr_recruitment_survey/test/recruitment_process.yml5
-rw-r--r--addons/hr_recruitment_survey/views/hr_applicant_views.xml62
-rw-r--r--addons/hr_recruitment_survey/views/hr_job_views.xml40
27 files changed, 472 insertions, 343 deletions
diff --git a/addons/hr_recruitment/README.md b/addons/hr_recruitment/README.md
index ba303cca12f..433a5a8a299 100644
--- a/addons/hr_recruitment/README.md
+++ b/addons/hr_recruitment/README.md
@@ -37,10 +37,3 @@ time by automating some communications with email templates.
Documents like resumes and motivation letters are indexed automatically,
allowing you to easily find for specific skills and build up a database of
profiles.
-
-Integrated Surveys
-------------------
-
-Create your own interview canvas based on our best practices. Use the survey
-designer to adapt questions to your own process. Ask the applicant to fill in
-the survey online, or the interviewer to use it during real interviews.
diff --git a/addons/hr_recruitment/__openerp__.py b/addons/hr_recruitment/__openerp__.py
index 1489c1ef49c..a12cc06ec17 100644
--- a/addons/hr_recruitment/__openerp__.py
+++ b/addons/hr_recruitment/__openerp__.py
@@ -6,21 +6,20 @@
'version': '1.0',
'category': 'Human Resources',
'sequence': 90,
- 'summary': 'Jobs, Recruitment, Applications, Job Interviews, Surveys',
+ 'summary': 'Jobs, Recruitment, Applications, Job Interviews',
'description': """
Manage job positions and the recruitment process
================================================
This application allows you to easily keep track of jobs, vacancies, applications, interviews...
-It is integrated with the mail gateway to automatically fetch email sent to <jobs@yourcompany.com> in the list of applications. It's also integrated with the document management system to store and search in the CV base and find the candidate that you are looking for. Similarly, it is integrated with the survey module to allow you to define interviews for different jobs.
+It is integrated with the mail gateway to automatically fetch email sent to <jobs@yourcompany.com> in the list of applications. It's also integrated with the document management system to store and search in the CV base and find the candidate that you are looking for. Similarly, it may integrated with the survey module to allow you to define interviews for different jobs.
You can define the different phases of interviews and easily rate the applicant from the kanban view.
""",
'website': 'https://www.odoo.com/page/recruitment',
'depends': [
'decimal_precision',
'hr',
- 'survey',
'calendar',
'fetchmail',
'web_kanban_gauge',
@@ -31,7 +30,6 @@ You can define the different phases of interviews and easily rate the applicant
'data': [
'security/hr_recruitment_security.xml',
'security/ir.model.access.csv',
- 'data/survey_survey_data.xml',
'data/hr_recruitment_data.xml',
'views/hr_recruitment_views.xml',
'report/hr_recruitment_report_views.xml',
diff --git a/addons/hr_recruitment/data/hr_recruitment_data.xml b/addons/hr_recruitment/data/hr_recruitment_data.xml
index 029a8b28951..faf6c6b897c 100644
--- a/addons/hr_recruitment/data/hr_recruitment_data.xml
+++ b/addons/hr_recruitment/data/hr_recruitment_data.xml
@@ -7,9 +7,9 @@
<field name="res_id" ref="mail.channel_all_employees"/>
<field name="message_type">notification</field>
<field name="subtype_id" ref="mail.mt_comment"/>
- <field name="subject">Recruitment application installed!</field>
- <field name="body"><![CDATA[<p>Manage job positions and your company's recruitment process. This application is integrated with the Survey application to help you define interviews for different jobs.</p>
-<p>Job applications sent by email are automatically integrate in Odoo.</p>]]></field>
+ <field name="subject">Recruitment Process application installed!</field>
+ <field name="body"><![CDATA[<p>Manage job positions and your company's recruitment process. This application may be integrated with the Survey application to help you define interviews for different jobs.</p>
+<p>Job applications sent by email will automatically be integrated in Odoo.</p>]]></field>
</record>
<!-- Meeting Types (for interview meetings) -->
diff --git a/addons/hr_recruitment/data/hr_recruitment_demo.xml b/addons/hr_recruitment/data/hr_recruitment_demo.xml
index 138955526ba..81bfdecb589 100644
--- a/addons/hr_recruitment/data/hr_recruitment_demo.xml
+++ b/addons/hr_recruitment/data/hr_recruitment_demo.xml
@@ -25,37 +25,26 @@
<field name="fold" eval="True"/>
</record>
- <!--Manage the job_id to get in hr.applicant-->
+ <!--Manage the job_id to get in hr.applicant-->
<record id="hr.job_developer" model="hr.job">
<field name="state">recruit</field>
<field name="no_of_recruitment">4</field>
- <field name="survey_id" ref="recruitment_form"/>
- </record>
- <record id="hr.job_ceo" model="hr.job">
- <field name="survey_id" ref="recruitment_form"/>
- </record>
- <record id="hr.job_cto" model="hr.job">
- <field name="survey_id" ref="recruitment_form"/>
</record>
<record id="hr.job_consultant" model="hr.job">
<field name="state">recruit</field>
<field name="no_of_recruitment">1</field>
- <field name="survey_id" ref="recruitment_form"/>
</record>
<record id="hr.job_hrm" model="hr.job">
<field name="no_of_recruitment">1</field>
<field name="state">recruit</field>
- <field name="survey_id" ref="recruitment_form"/>
</record>
<record id="hr.job_marketing" model="hr.job">
<field name="state">recruit</field>
<field name="no_of_recruitment">3</field>
- <field name="survey_id" ref="recruitment_form"/>
</record>
<record id="hr.job_trainee" model="hr.job">
<field name="state">recruit</field>
<field name="no_of_recruitment">6</field>
- <field name="survey_id" ref="recruitment_form"/>
</record>
<record id="hr_case_salesman0" model="hr.applicant">
diff --git a/addons/hr_recruitment/data/survey_survey_data.xml b/addons/hr_recruitment/data/survey_survey_data.xml
deleted file mode 100644
index 6a5d4142a1c..00000000000
--- a/addons/hr_recruitment/data/survey_survey_data.xml
+++ /dev/null
@@ -1,229 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<odoo>
- <data>
- <!-- Recruitment Form -->
- <record model="survey.survey" id="recruitment_form">
- <field name="title">Recruitment Form</field>
- <field name="stage_id" ref="survey.stage_permanent" />
- <field name="auth_required" eval="True" />
- <field name="users_can_go_back" eval="True" />
- <field name="description">&lt;p&gt;This form is intended to help the responsible of a recruitment interview.&lt;/p&gt;</field>
- <field name="thank_you_message">&lt;p&gt;&lt;/p&gt;</field>
- </record>
- <!-- Page 1 -->
- <record model="survey.page" id="recruitment_1">
- <field name="title">Basic information</field>
- <field name="survey_id" ref="recruitment_form" />
- <field name="sequence">1</field>
- <field name="description">&lt;p&gt;&lt;/p&gt;</field>
- </record>
- <record model="survey.question" id="recruitment_1_1">
- <field name="page_id" ref="recruitment_1" />
- <field name="sequence">1</field>
- <field name="question">From which university will you graduate?</field>
- <field name="type">textbox</field>
- </record>
- <record model="survey.question" id="recruitment_1_2">
- <field name="page_id" ref="recruitment_1" />
- <field name="sequence">2</field>
- <field name="question">What is your gender?</field>
- <field name="type">simple_choice</field>
- <field name="display_mode">dropdown</field>
- </record>
- <record model="survey.label" id="recruitment_1_2_1">
- <field name="question_id" ref="recruitment_1_2"/>
- <field name="sequence">1</field>
- <field name="value">Male</field>
- </record>
- <record model="survey.label" id="recruitment_1_2_2">
- <field name="question_id" ref="recruitment_1_2"/>
- <field name="sequence">2</field>
- <field name="value">Female</field>
- </record>
- <record model="survey.question" id="recruitment_1_3">
- <field name="page_id" ref="recruitment_1" />
- <field name="sequence">3</field>
- <field name="question">What age group do you belong to?</field>
- <field name="type">simple_choice</field>
- <field name="display_mode">columns</field>
- <field name="column_nb">4</field>
- </record>
- <record model="survey.label" id="recruitment_1_3_1">
- <field name="question_id" ref="recruitment_1_3"/>
- <field name="sequence">1</field>
- <field name="value">0-15</field>
- </record>
- <record model="survey.label" id="recruitment_1_3_2">
- <field name="question_id" ref="recruitment_1_3"/>
- <field name="sequence">2</field>
- <field name="value">16-20</field>
- </record>
- <record model="survey.label" id="recruitment_1_3_3">
- <field name="question_id" ref="recruitment_1_3"/>
- <field name="sequence">3</field>
- <field name="value">21-30</field>
- </record>
-
- <record model="survey.label" id="recruitment_1_3_4">
- <field name="question_id" ref="recruitment_1_3"/>
- <field name="sequence">4</field>
- <field name="value">31-40</field>
- </record>
- <record model="survey.label" id="recruitment_1_3_5">
- <field name="question_id" ref="recruitment_1_3"/>
- <field name="sequence">5</field>
- <field name="value">41-50</field>
- </record>
- <record model="survey.label" id="recruitment_1_3_6">
- <field name="question_id" ref="recruitment_1_3"/>
- <field name="sequence">6</field>
- <field name="value">51-60</field>
- </record>
- <record model="survey.label" id="recruitment_1_3_7">
- <field name="question_id" ref="recruitment_1_3"/>
- <field name="sequence">7</field>
- <field name="value">61-70</field>
- </record>
- <record model="survey.label" id="recruitment_1_3_8">
- <field name="question_id" ref="recruitment_1_3"/>
- <field name="sequence">8</field>
- <field name="value">71+</field>
- </record>
- <!-- Page 2 -->
- <record model="survey.page" id="recruitment_2">
- <field name="title">Education and Activities</field>
- <field name="survey_id" ref="recruitment_form" />
- <field name="sequence">2</field>
- <field name="description">&lt;p&gt;&lt;/p&gt;</field>
- </record>
- <record model="survey.question" id="recruitment_2_1">
- <field name="page_id" ref="recruitment_2" />
- <field name="sequence">1</field>
- <field name="question">Knowledge</field>
- <field name="type">free_text</field>
- </record>
- <record model="survey.question" id="recruitment_2_2">
- <field name="page_id" ref="recruitment_2" />
- <field name="sequence">2</field>
- <field name="question">Education</field>
- <field name="type">free_text</field>
- </record>
- <record model="survey.question" id="recruitment_2_3">
- <field name="page_id" ref="recruitment_2" />
- <field name="sequence">3</field>
- <field name="question">Experience</field>
- <field name="type">free_text</field>
- </record>
- <record model="survey.question" id="recruitment_2_4">
- <field name="page_id" ref="recruitment_2" />
- <field name="sequence">4</field>
- <field name="question">Activities</field>
- <field name="type">free_text</field>
- </record>
- <!-- Page 3 -->
- <record model="survey.page" id="recruitment_3">
- <field name="title">Importance</field>
- <field name="survey_id" ref="recruitment_form" />
- <field name="sequence">3</field>
- <field name="description">&lt;p&gt;&lt;/p&gt;</field>
- </record>
- <record model="survey.question" id="recruitment_3_1">
- <field name="page_id" ref="recruitment_3" />
- <field name="sequence">1</field>
- <field name="question">Rate the Importance</field>
- <field name="type">matrix</field>
- <field name="matrix_subtype">simple</field>
- </record>
- <record model="survey.label" id="rcol_3_1_1">
- <field name="question_id" ref="recruitment_3_1"/>
- <field name="sequence">1</field>
- <field name="value">Not important</field>
- </record>
- <record model="survey.label" id="rcol_3_1_2">
- <field name="question_id" ref="recruitment_3_1"/>
- <field name="sequence">2</field>
- <field name="value">Somewhat important</field>
- </record>
- <record model="survey.label" id="rcol_3_1_3">
- <field name="question_id" ref="recruitment_3_1"/>
- <field name="sequence">3</field>
- <field name="value">Important</field>
- </record>
- <record model="survey.label" id="rcol_3_1_4">
- <field name="question_id" ref="recruitment_3_1"/>
- <field name="sequence">4</field>
- <field name="value">Very important</field>
- </record>
- <record model="survey.label" id="rcol_3_1_5">
- <field name="question_id" ref="recruitment_3_1"/>
- <field name="sequence">5</field>
- <field name="value">Most important</field>
- </record>
-
- <record model="survey.label" id="rrow_2_1_1">
- <field name="question_id_2" ref="recruitment_3_1"/>
- <field name="sequence">1</field>
- <field name="value">Good pay</field>
- </record>
- <record model="survey.label" id="rrow_2_1_2">
- <field name="question_id_2" ref="recruitment_3_1"/>
- <field name="sequence">2</field>
- <field name="value">Getting on with colleagues</field>
- </record>
- <record model="survey.label" id="rrow_2_1_3">
- <field name="question_id_2" ref="recruitment_3_1"/>
- <field name="sequence">3</field>
- <field name="value">Office environment</field>
- </record>
- <record model="survey.label" id="rrow_2_1_4">
- <field name="question_id_2" ref="recruitment_3_1"/>
- <field name="sequence">4</field>
- <field name="value">Desk space</field>
- </record>
- <record model="survey.label" id="rrow_2_1_5">
- <field name="question_id_2" ref="recruitment_3_1"/>
- <field name="sequence">5</field>
- <field name="value">State of the art technology</field>
- </record>
- <record model="survey.label" id="rrow_2_1_6">
- <field name="question_id_2" ref="recruitment_3_1"/>
- <field name="sequence">6</field>
- <field name="value">Office location</field>
- </record>
- <record model="survey.label" id="rrow_2_1_7">
- <field name="question_id_2" ref="recruitment_3_1"/>
- <field name="sequence">7</field>
- <field name="value">Good management</field>
- </record>
- <record model="survey.label" id="rrow_2_1_8">
- <field name="question_id_2" ref="recruitment_3_1"/>
- <field name="sequence">8</field>
- <field name="value">Freebies such as tea, coffee and stationery</field>
- </record>
- <record model="survey.label" id="rrow_2_1_9">
- <field name="question_id_2" ref="recruitment_3_1"/>
- <field name="sequence">9</field>
- <field name="value">Perks such as free parking, gym passes</field>
- </record>
- <record model="survey.label" id="rrow_2_1_10">
- <field name="question_id_2" ref="recruitment_3_1"/>
- <field name="sequence">10</field>
- <field name="value">No out of hours working</field>
- </record>
- <record model="survey.label" id="rrow_2_1_11">
- <field name="question_id_2" ref="recruitment_3_1"/>
- <field name="sequence">11</field>
- <field name="value">Dress code</field>
- </record>
- <record model="survey.label" id="rrow_2_1_12">
- <field name="question_id_2" ref="recruitment_3_1"/>
- <field name="sequence">12</field>
- <field name="value">Regular meetings</field>
- </record>
- <record model="survey.label" id="rrow_2_1_13">
- <field name="question_id_2" ref="recruitment_3_1"/>
- <field name="sequence">13</field>
- <field name="value">Good social life</field>
- </record>
- </data>
-</odoo>
diff --git a/addons/hr_recruitment/models/hr_job.py b/addons/hr_recruitment/models/hr_job.py
index d7ea3e55467..b29e12ea5a3 100644
--- a/addons/hr_recruitment/models/hr_job.py
+++ b/addons/hr_recruitment/models/hr_job.py
@@ -22,9 +22,6 @@ class Job(models.Model):
user_id = fields.Many2one('res.users', "Recruitment Responsible", track_visibility='onchange')
document_ids = fields.One2many('ir.attachment', compute='_compute_document_ids', string="Applications")
documents_count = fields.Integer(compute='_compute_document_ids', string="Documents")
- survey_id = fields.Many2one(
- 'survey.survey', "Interview Form",
- help="Choose an interview form for this job position and you will be able to print/answer this interview from all applicants who apply for this job")
alias_id = fields.Many2one(
'mail.alias', "Alias", ondelete="restrict", required=True,
help="Email alias for this job position. New emails will automatically create new applicants for this job position.")
@@ -74,10 +71,6 @@ class Job(models.Model):
return super(Job, self)._track_subtype(init_values)
@api.multi
- def action_print_survey(self):
- return self.survey_id.action_print_survey()
-
- @api.multi
def action_get_attachment_tree_view(self):
action = self.env.ref('base.action_attachment').read()[0]
action['context'] = {
diff --git a/addons/hr_recruitment/models/hr_recruitment.py b/addons/hr_recruitment/models/hr_recruitment.py
index 87e675590ac..9f038f78cd1 100644
--- a/addons/hr_recruitment/models/hr_recruitment.py
+++ b/addons/hr_recruitment/models/hr_recruitment.py
@@ -148,8 +148,6 @@ class Applicant(models.Model):
partner_mobile = fields.Char("Mobile", size=32)
type_id = fields.Many2one('hr.recruitment.degree', "Degree")
department_id = fields.Many2one('hr.department', "Department")
- survey = fields.Many2one('survey.survey', related='job_id.survey_id', string="Survey") # TDE FIXME: rename to survey_id
- response_id = fields.Many2one('survey.user_input', "Response", ondelete="set null", oldname="response")
reference = fields.Char("Referred By")
day_open = fields.Float(compute='_compute_day', string="Days to Open")
day_close = fields.Float(compute='_compute_day', string="Days to Close")
@@ -323,27 +321,6 @@ class Applicant(models.Model):
}
return res
- @api.multi
- def action_start_survey(self):
- self.ensure_one()
- # create a response and link it to this applicant
- if not self.response_id:
- response = self.env['survey.user_input'].create({'survey_id': self.survey.id, 'partner_id': self.partner_id.id})
- self.response_id = response.id
- else:
- response = self.response_id
- # grab the token of the response and start surveying
- return self.survey.with_context(survey_token=response.token).action_start_survey()
-
- @api.multi
- def action_print_survey(self):
- """ If response is available then print this response otherwise print survey form (print template of the survey) """
- self.ensure_one()
- if not self.response_id:
- return self.survey.action_print_survey()
- else:
- response = self.response_id
- return self.survey.with_context(survey_token=response.token).action_print_survey()
@api.multi
def action_get_attachment_tree_view(self):
diff --git a/addons/hr_recruitment/models/hr_recruitment_config_settings.py b/addons/hr_recruitment/models/hr_recruitment_config_settings.py
index b885ed6afff..7e8893a6161 100644
--- a/addons/hr_recruitment/models/hr_recruitment_config_settings.py
+++ b/addons/hr_recruitment/models/hr_recruitment_config_settings.py
@@ -12,3 +12,8 @@ class RecruitmentSettings(models.TransientModel):
(0, "Do not manage CVs and motivation letter"),
(1, 'Allow the automatic indexation of resumes')
], string='Resumes')
+
+ module_hr_recruitment_survey = fields.Selection(selection=[
+ (0, "Do not use interview forms"),
+ (1, "Use interview forms during the recruitment process")
+ ], string='Interview Form')
diff --git a/addons/hr_recruitment/security/hr_recruitment_security.xml b/addons/hr_recruitment/security/hr_recruitment_security.xml
index 2b9f2c64eec..4f0380c94cd 100644
--- a/addons/hr_recruitment/security/hr_recruitment_security.xml
+++ b/addons/hr_recruitment/security/hr_recruitment_security.xml
@@ -9,9 +9,5 @@
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
- <record id="base.group_hr_user" model="res.groups">
- <field name="implied_ids" eval="[(4, ref('base.group_survey_user'))]"/>
- </record>
-
</data>
</odoo>
diff --git a/addons/hr_recruitment/security/ir.model.access.csv b/addons/hr_recruitment/security/ir.model.access.csv
index 168d71e8469..2d1be8d77f3 100644
--- a/addons/hr_recruitment/security/ir.model.access.csv
+++ b/addons/hr_recruitment/security/ir.model.access.csv
@@ -5,7 +5,6 @@ access_hr_recruitment_stage_user,hr.recruitment.stage.user,model_hr_recruitment_
access_hr_recruitment_stage_manager,hr.recruitment.stage.manager,model_hr_recruitment_stage,base.group_hr_manager,1,1,1,1
access_hr_recruitment_degree,hr.recruitment.degree,model_hr_recruitment_degree,base.group_hr_user,1,1,1,1
access_res_partner_hr_user,res.partner.user,base.model_res_partner,base.group_hr_user,1,1,1,1
-access_survey_hr_user,survey.hr.user,survey.model_survey_survey,base.group_hr_user,1,1,1,0
access_calendar_event_hruser,calendar.event.hruser,calendar.model_calendar_event,base.group_hr_user,1,1,1,1
access_hr_recruitment_source_hr_officer,hr.recruitment.source,model_hr_recruitment_source,base.group_hr_user,1,1,1,1
access_hr_recruitment_source_all,hr.recruitment.source,model_hr_recruitment_source,,1,0,0,0
diff --git a/addons/hr_recruitment/test/recruitment_process.yml b/addons/hr_recruitment/test/recruitment_process.yml
index 142c10e4be2..19ec05f5891 100644
--- a/addons/hr_recruitment/test/recruitment_process.yml
+++ b/addons/hr_recruitment/test/recruitment_process.yml
@@ -47,10 +47,3 @@
-
!python {model: hr.applicant, id: hr_case_programmer}: |
self.action_makeMeeting()
--
- I print Applicant fill up the interview quetion
--
- !python {model: hr.applicant, id: False}: |
- context = self.env.context.copy()
- context.update({'active_model': 'hr.applicant', 'active_ids': [ref("hr_recruitment.hr_case_programmer")], 'active_id': ref("hr_recruitment.hr_case_programmer")})
- self.browse(ref('hr_case_programmer')).with_context(context).action_print_survey()
diff --git a/addons/hr_recruitment/views/hr_job_views.xml b/addons/hr_recruitment/views/hr_job_views.xml
index 74c2b6419e9..c2f7edf6ec7 100644
--- a/addons/hr_recruitment/views/hr_job_views.xml
+++ b/addons/hr_recruitment/views/hr_job_views.xml
@@ -22,7 +22,6 @@
<field name="document_ids"/>
<field name="no_of_hired_employee"/>
<field name="manager_id"/>
- <field name="survey_id"/>
<field name="state"/>
<field name="user_id"/>
<templates>
@@ -57,13 +56,7 @@
</div>
</div>
- <div class="row">
- <div class="col-xs-12">
- <a t-if="record.survey_id.raw_value" name="action_print_survey" type="object" title="Display Interview Form">Interview Form</a>
- </div>
- </div>
-
- <div class="row">
+ <div class="row" name="recruitment">
<div class="col-xs-12">
<a t-if="record.state.raw_value == 'recruit'" name="set_open" type="object">Recruitment Done</a>
</div>
@@ -93,13 +86,9 @@
<div>
<a name="%(action_hr_job_applications)d" type="action">Applications</a>
</div>
- <div>
+ <div name="documents">
<a name="action_get_attachment_tree_view" type="object">Documents</a>
</div>
- <div>
- <a t-if="record.survey_id.raw_value" name="action_print_survey" type="object" title="Display Interview Form">Interview Form</a>
- <span t-if="!record.survey_id.raw_value">No Interview Form</span>
- </div>
</div>
<div class="col-xs-4 o_kanban_card_manage_section o_kanban_manage_new">
<div class="o_kanban_card_manage_title">
diff --git a/addons/hr_recruitment/views/hr_recruitment_config_settings_views.xml b/addons/hr_recruitment/views/hr_recruitment_config_settings_views.xml
index 8eb6a18f76b..d4a11e5f7b1 100644
--- a/addons/hr_recruitment/views/hr_recruitment_config_settings_views.xml
+++ b/addons/hr_recruitment/views/hr_recruitment_config_settings_views.xml
@@ -12,6 +12,7 @@
</header>
<group string="Recruitment">
<field name="module_document" widget="radio"/>
+ <field name="module_hr_recruitment_survey" widget="radio"/>
</group>
</form>
</field>
diff --git a/addons/hr_recruitment/views/hr_recruitment_views.xml b/addons/hr_recruitment/views/hr_recruitment_views.xml
index 3f2ebc1ce59..b9495c433c6 100644
--- a/addons/hr_recruitment/views/hr_recruitment_views.xml
+++ b/addons/hr_recruitment/views/hr_recruitment_views.xml
@@ -40,8 +40,6 @@
<field name="date_action" invisible="context.get('invisible_next_date', True)"/>
<field name="medium_id"/>
<field name="source_id"/>
- <field name="survey" invisible="1"/>
- <field name="response_id" invisible="1"/>
<field name="priority"/>
<field name="type_id" invisible="1"/>
<field name="availability" invisible="1"/>
@@ -71,29 +69,6 @@
<span class="o_stat_text">Meetings</span>
</div>
</button>
- <button name="action_start_survey"
- class="oe_stat_button"
- icon="fa-user"
- type="object"
- help="Answer related job question"
- context="{'survey_id': survey}"
- attrs="{'invisible':[('survey','=',False)]}">
- <div class="o_form_field o_stat_info">
- <span class="o_stat_text">Start</span>
- <span class="o_stat_text">Interview</span>
- </div>
- </button>
- <button name="action_print_survey"
- class="oe_stat_button"
- icon="fa-print"
- type="object"
- help="Print interview report"
- attrs="{'invisible':[('survey','=',False)]}">
- <div class="o_form_field o_stat_info">
- <span class="o_stat_text">Print</span>
- <span class="o_stat_text">Interview</span>
- </div>
- </button>
<button name="action_get_attachment_tree_view"
class="oe_stat_button"
icon="fa-book"
@@ -149,8 +124,6 @@
<field name="reference"/>
</group>
<group string="Job">
- <field name="survey" invisible="1"/>
- <field name="response_id" invisible="1"/>
<field name="job_id"/>
<field name="department_id"/>
<field name="company_id" groups="base.group_multi_company" options='{"no_open":True}' />
@@ -263,7 +236,6 @@
<field name="stage_id" options='{"group_by_tooltip": {"requirements": "Requirements"}}'/>
<field name="color"/>
<field name="priority"/>
- <field name="survey"/>
<field name="user_id"/>
<field name="user_email"/>
<field name="partner_name"/>
@@ -433,11 +405,6 @@
<field name="arch" type="xml">
<group name="employee_data" position="inside">
<group>
- <label for="survey_id" groups="base.group_user"/>
- <div groups="base.group_user" class="o_row">
- <field name="survey_id"/>
- <button string="Display Interview Form" name="action_print_survey" type="object" attrs="{'invisible':[('survey_id','=',False)]}" class="oe_link"/>
- </div>
<field name="address_id" context="{'show_address': 1}" domain= "[('is_company', '=', True )]" options="{'always_reload': True}"/>
</group>
</group>
diff --git a/addons/hr_recruitment_survey/README.md b/addons/hr_recruitment_survey/README.md
new file mode 100644
index 00000000000..20d4cd670ea
--- /dev/null
+++ b/addons/hr_recruitment_survey/README.md
@@ -0,0 +1,6 @@
+Integrated Surveys
+-------------------
+
+Create your own interview canvas based on our best practices. Use the survey
+designer to adapt questions to your own process. Ask the applicant to fill in
+the survey online, or the interviewer to use it during real interviews.
diff --git a/addons/hr_recruitment_survey/__init__.py b/addons/hr_recruitment_survey/__init__.py
new file mode 100644
index 00000000000..c7b5ac7e1f2
--- /dev/null
+++ b/addons/hr_recruitment_survey/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+import models
diff --git a/addons/hr_recruitment_survey/__openerp__.py b/addons/hr_recruitment_survey/__openerp__.py
new file mode 100644
index 00000000000..cb9424a33db
--- /dev/null
+++ b/addons/hr_recruitment_survey/__openerp__.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+{
+ 'name': "Hr Recruitment Interview Forms",
+ 'version': '1.0',
+ 'category': 'Human Resources Survey',
+ 'summary': 'Surveys',
+ 'description': """
+ Use interview forms during recruitment process.
+ This module is integrated with the survey module
+ to allow you to define interviews for different jobs.
+ """,
+ 'depends': ['survey', 'hr_recruitment'],
+ 'data': [
+ 'security/hr_recruitment_survey_security.xml',
+ 'security/ir.model.access.csv',
+ 'data/survey_survey_data.xml',
+ 'views/hr_job_views.xml',
+ 'views/hr_applicant_views.xml',
+ ],
+ 'demo': [
+ 'data/hr_job_demo.xml',
+ ],
+ 'test': ['test/recruitment_process.yml'],
+ 'auto_install': False,
+}
diff --git a/addons/hr_recruitment_survey/data/hr_job_demo.xml b/addons/hr_recruitment_survey/data/hr_job_demo.xml
new file mode 100644
index 00000000000..6d63e9faabc
--- /dev/null
+++ b/addons/hr_recruitment_survey/data/hr_job_demo.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <data noupdate="1">
+
+ <!--Manage the job_id to get in hr.applicant-->
+ <record id="hr.job_developer" model="hr.job">
+ <field name="survey_id" ref="recruitment_form"/>
+ </record>
+ <record id="hr.job_ceo" model="hr.job">
+ <field name="survey_id" ref="recruitment_form"/>
+ </record>
+ <record id="hr.job_cto" model="hr.job">
+ <field name="survey_id" ref="recruitment_form"/>
+ </record>
+ <record id="hr.job_consultant" model="hr.job">
+ <field name="survey_id" ref="recruitment_form"/>
+ </record>
+ <record id="hr.job_hrm" model="hr.job">
+ <field name="survey_id" ref="recruitment_form"/>
+ </record>
+ <record id="hr.job_marketing" model="hr.job">
+ <field name="survey_id" ref="recruitment_form"/>
+ </record>
+ <record id="hr.job_trainee" model="hr.job">
+ <field name="survey_id" ref="recruitment_form"/>
+ </record>
+
+ </data>
+</odoo>
diff --git a/addons/hr_recruitment_survey/data/survey_survey_data.xml b/addons/hr_recruitment_survey/data/survey_survey_data.xml
new file mode 100644
index 00000000000..d9228f4fb47
--- /dev/null
+++ b/addons/hr_recruitment_survey/data/survey_survey_data.xml
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <!-- Recruitment Form -->
+ <record id="recruitment_form" model="survey.survey">
+ <field name="title">Recruitment Form</field>
+ <field name="stage_id" ref="survey.stage_permanent" />
+ <field name="auth_required" eval="True" />
+ <field name="users_can_go_back" eval="True" />
+ <field name="description">&lt;p&gt;This form is intended to help the responsible of a recruitment interview.&lt;/p&gt;</field>
+ <field name="thank_you_message">&lt;p&gt;&lt;/p&gt;</field>
+ </record>
+ <!-- Page 1 -->
+ <record id="recruitment_1" model="survey.page">
+ <field name="title">Basic information</field>
+ <field name="survey_id" ref="recruitment_form" />
+ <field name="sequence">1</field>
+ <field name="description">&lt;p&gt;&lt;/p&gt;</field>
+ </record>
+ <record id="recruitment_1_1" model="survey.question">
+ <field name="page_id" ref="recruitment_1" />
+ <field name="sequence">1</field>
+ <field name="question">From which university will you graduate?</field>
+ <field name="type">textbox</field>
+ </record>
+ <record id="recruitment_1_2" model="survey.question">
+ <field name="page_id" ref="recruitment_1" />
+ <field name="sequence">2</field>
+ <field name="question">What is your gender?</field>
+ <field name="type">simple_choice</field>
+ <field name="display_mode">dropdown</field>
+ </record>
+ <record id="recruitment_1_2_1" model="survey.label">
+ <field name="question_id" ref="recruitment_1_2"/>
+ <field name="sequence">1</field>
+ <field name="value">Male</field>
+ </record>
+ <record id="recruitment_1_2_2" model="survey.label">
+ <field name="question_id" ref="recruitment_1_2"/>
+ <field name="sequence">2</field>
+ <field name="value">Female</field>
+ </record>
+ <record id="recruitment_1_3" model="survey.question">
+ <field name="page_id" ref="recruitment_1" />
+ <field name="sequence">3</field>
+ <field name="question">What age group do you belong to?</field>
+ <field name="type">simple_choice</field>
+ <field name="display_mode">columns</field>
+ <field name="column_nb">4</field>
+ </record>
+ <record id="recruitment_1_3_1" model="survey.label">
+ <field name="question_id" ref="recruitment_1_3"/>
+ <field name="sequence">1</field>
+ <field name="value">0-15</field>
+ </record>
+ <record id="recruitment_1_3_2" model="survey.label">
+ <field name="question_id" ref="recruitment_1_3"/>
+ <field name="sequence">2</field>
+ <field name="value">16-20</field>
+ </record>
+ <record id="recruitment_1_3_3" model="survey.label">
+ <field name="question_id" ref="recruitment_1_3"/>
+ <field name="sequence">3</field>
+ <field name="value">21-30</field>
+ </record>
+
+ <record id="recruitment_1_3_4" model="survey.label">
+ <field name="question_id" ref="recruitment_1_3"/>
+ <field name="sequence">4</field>
+ <field name="value">31-40</field>
+ </record>
+ <record id="recruitment_1_3_5" model="survey.label">
+ <field name="question_id" ref="recruitment_1_3"/>
+ <field name="sequence">5</field>
+ <field name="value">41-50</field>
+ </record>
+ <record id="recruitment_1_3_6" model="survey.label">
+ <field name="question_id" ref="recruitment_1_3"/>
+ <field name="sequence">6</field>
+ <field name="value">51-60</field>
+ </record>
+ <record id="recruitment_1_3_7" model="survey.label">
+ <field name="question_id" ref="recruitment_1_3"/>
+ <field name="sequence">7</field>
+ <field name="value">61-70</field>
+ </record>
+ <record id="recruitment_1_3_8" model="survey.label">
+ <field name="question_id" ref="recruitment_1_3"/>
+ <field name="sequence">8</field>
+ <field name="value">71+</field>
+ </record>
+ <!-- Page 2 -->
+ <record id="recruitment_2" model="survey.page">
+ <field name="title">Education and Activities</field>
+ <field name="survey_id" ref="recruitment_form" />
+ <field name="sequence">2</field>
+ <field name="description">&lt;p&gt;&lt;/p&gt;</field>
+ </record>
+ <record id="recruitment_2_1" model="survey.question">
+ <field name="page_id" ref="recruitment_2" />
+ <field name="sequence">1</field>
+ <field name="question">Knowledge</field>
+ <field name="type">free_text</field>
+ </record>
+ <record id="recruitment_2_2" model="survey.question">
+ <field name="page_id" ref="recruitment_2" />
+ <field name="sequence">2</field>
+ <field name="question">Education</field>
+ <field name="type">free_text</field>
+ </record>
+ <record id="recruitment_2_3" model="survey.question">
+ <field name="page_id" ref="recruitment_2" />
+ <field name="sequence">3</field>
+ <field name="question">Experience</field>
+ <field name="type">free_text</field>
+ </record>
+ <record id="recruitment_2_4" model="survey.question">
+ <field name="page_id" ref="recruitment_2" />
+ <field name="sequence">4</field>
+ <field name="question">Activities</field>
+ <field name="type">free_text</field>
+ </record>
+ <!-- Page 3 -->
+ <record id="recruitment_3" model="survey.page">
+ <field name="title">Importance</field>
+ <field name="survey_id" ref="recruitment_form" />
+ <field name="sequence">3</field>
+ <field name="description">&lt;p&gt;&lt;/p&gt;</field>
+ </record>
+ <record id="recruitment_3_1" model="survey.question">
+ <field name="page_id" ref="recruitment_3" />
+ <field name="sequence">1</field>
+ <field name="question">Rate the Importance</field>
+ <field name="type">matrix</field>
+ <field name="matrix_subtype">simple</field>
+ </record>
+ <record id="rcol_3_1_1" model="survey.label">
+ <field name="question_id" ref="recruitment_3_1"/>
+ <field name="sequence">1</field>
+ <field name="value">Not important</field>
+ </record>
+ <record id="rcol_3_1_2" model="survey.label">
+ <field name="question_id" ref="recruitment_3_1"/>
+ <field name="sequence">2</field>
+ <field name="value">Somewhat important</field>
+ </record>
+ <record id="rcol_3_1_3" model="survey.label">
+ <field name="question_id" ref="recruitment_3_1"/>
+ <field name="sequence">3</field>
+ <field name="value">Important</field>
+ </record>
+ <record id="rcol_3_1_4" model="survey.label">
+ <field name="question_id" ref="recruitment_3_1"/>
+ <field name="sequence">4</field>
+ <field name="value">Very important</field>
+ </record>
+ <record id="rcol_3_1_5" model="survey.label">
+ <field name="question_id" ref="recruitment_3_1"/>
+ <field name="sequence">5</field>
+ <field name="value">Most important</field>
+ </record>
+
+ <record id="rrow_2_1_1" model="survey.label">
+ <field name="question_id_2" ref="recruitment_3_1"/>
+ <field name="sequence">1</field>
+ <field name="value">Good pay</field>
+ </record>
+ <record id="rrow_2_1_2" model="survey.label">
+ <field name="question_id_2" ref="recruitment_3_1"/>
+ <field name="sequence">2</field>
+ <field name="value">Getting on with colleagues</field>
+ </record>
+ <record id="rrow_2_1_3" model="survey.label">
+ <field name="question_id_2" ref="recruitment_3_1"/>
+ <field name="sequence">3</field>
+ <field name="value">Office environment</field>
+ </record>
+ <record id="rrow_2_1_4" model="survey.label">
+ <field name="question_id_2" ref="recruitment_3_1"/>
+ <field name="sequence">4</field>
+ <field name="value">Desk space</field>
+ </record>
+ <record id="rrow_2_1_5" model="survey.label">
+ <field name="question_id_2" ref="recruitment_3_1"/>
+ <field name="sequence">5</field>
+ <field name="value">State of the art technology</field>
+ </record>
+ <record id="rrow_2_1_6" model="survey.label">
+ <field name="question_id_2" ref="recruitment_3_1"/>
+ <field name="sequence">6</field>
+ <field name="value">Office location</field>
+ </record>
+ <record id="rrow_2_1_7" model="survey.label">
+ <field name="question_id_2" ref="recruitment_3_1"/>
+ <field name="sequence">7</field>
+ <field name="value">Good management</field>
+ </record>
+ <record id="rrow_2_1_8" model="survey.label">
+ <field name="question_id_2" ref="recruitment_3_1"/>
+ <field name="sequence">8</field>
+ <field name="value">Freebies such as tea, coffee and stationery</field>
+ </record>
+ <record id="rrow_2_1_9" model="survey.label">
+ <field name="question_id_2" ref="recruitment_3_1"/>
+ <field name="sequence">9</field>
+ <field name="value">Perks such as free parking, gym passes</field>
+ </record>
+ <record id="rrow_2_1_10" model="survey.label">
+ <field name="question_id_2" ref="recruitment_3_1"/>
+ <field name="sequence">10</field>
+ <field name="value">No out of hours working</field>
+ </record>
+ <record id="rrow_2_1_11" model="survey.label">
+ <field name="question_id_2" ref="recruitment_3_1"/>
+ <field name="sequence">11</field>
+ <field name="value">Dress code</field>
+ </record>
+ <record id="rrow_2_1_12" model="survey.label">
+ <field name="question_id_2" ref="recruitment_3_1"/>
+ <field name="sequence">12</field>
+ <field name="value">Regular meetings</field>
+ </record>
+ <record id="rrow_2_1_13" model="survey.label">
+ <field name="question_id_2" ref="recruitment_3_1"/>
+ <field name="sequence">13</field>
+ <field name="value">Good social life</field>
+ </record>
+</odoo>
diff --git a/addons/hr_recruitment_survey/models/__init__.py b/addons/hr_recruitment_survey/models/__init__.py
new file mode 100644
index 00000000000..f5b757062b4
--- /dev/null
+++ b/addons/hr_recruitment_survey/models/__init__.py
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+
+import hr_job
+import hr_applicant
diff --git a/addons/hr_recruitment_survey/models/hr_applicant.py b/addons/hr_recruitment_survey/models/hr_applicant.py
new file mode 100644
index 00000000000..c83649269bb
--- /dev/null
+++ b/addons/hr_recruitment_survey/models/hr_applicant.py
@@ -0,0 +1,32 @@
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models
+
+
+class Applicant(models.Model):
+ _inherit = "hr.applicant"
+
+ survey_id = fields.Many2one('survey.survey', related='job_id.survey_id', string="Survey")
+ response_id = fields.Many2one('survey.user_input', "Response", ondelete="set null", oldname="response")
+
+ @api.multi
+ def action_start_survey(self):
+ self.ensure_one()
+ # create a response and link it to this applicant
+ if not self.response_id:
+ response = self.env['survey.user_input'].create({'survey_id': self.survey_id.id, 'partner_id': self.partner_id.id})
+ self.response_id = response.id
+ else:
+ response = self.response_id
+ # grab the token of the response and start surveying
+ return self.survey_id.with_context(survey_token=response.token).action_start_survey()
+
+ @api.multi
+ def action_print_survey(self):
+ """ If response is available then print this response otherwise print survey form (print template of the survey) """
+ self.ensure_one()
+ if not self.response_id:
+ return self.survey_id.action_print_survey()
+ else:
+ response = self.response_id
+ return self.survey_id.with_context(survey_token=response.token).action_print_survey()
diff --git a/addons/hr_recruitment_survey/models/hr_job.py b/addons/hr_recruitment_survey/models/hr_job.py
new file mode 100644
index 00000000000..9f424d34b52
--- /dev/null
+++ b/addons/hr_recruitment_survey/models/hr_job.py
@@ -0,0 +1,15 @@
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models
+
+
+class Job(models.Model):
+ _inherit = "hr.job"
+
+ survey_id = fields.Many2one(
+ 'survey.survey', "Interview Form",
+ help="Choose an interview form for this job position and you will be able to print/answer this interview from all applicants who apply for this job")
+
+ @api.multi
+ def action_print_survey(self):
+ return self.survey_id.action_print_survey()
diff --git a/addons/hr_recruitment_survey/security/hr_recruitment_survey_security.xml b/addons/hr_recruitment_survey/security/hr_recruitment_survey_security.xml
new file mode 100644
index 00000000000..6b91d0bb7cc
--- /dev/null
+++ b/addons/hr_recruitment_survey/security/hr_recruitment_survey_security.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <data noupdate="1">
+ <record id="base.group_hr_user" model="res.groups">
+ <field name="implied_ids" eval="[(4, ref('base.group_survey_user'))]"/>
+ </record>
+ </data>
+</odoo>
diff --git a/addons/hr_recruitment_survey/security/ir.model.access.csv b/addons/hr_recruitment_survey/security/ir.model.access.csv
new file mode 100644
index 00000000000..696c7d29670
--- /dev/null
+++ b/addons/hr_recruitment_survey/security/ir.model.access.csv
@@ -0,0 +1,2 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_survey_hr_user,survey.hr.user,survey.model_survey_survey,base.group_hr_user,1,1,1,0
diff --git a/addons/hr_recruitment_survey/test/recruitment_process.yml b/addons/hr_recruitment_survey/test/recruitment_process.yml
new file mode 100644
index 00000000000..48a445d815c
--- /dev/null
+++ b/addons/hr_recruitment_survey/test/recruitment_process.yml
@@ -0,0 +1,5 @@
+-
+ I print Applicant fill up the interview question
+-
+ !python {model: hr.applicant, id: hr_recruitment.hr_case_programmer}: |
+ self.action_print_survey()
diff --git a/addons/hr_recruitment_survey/views/hr_applicant_views.xml b/addons/hr_recruitment_survey/views/hr_applicant_views.xml
new file mode 100644
index 00000000000..02f0ff3f668
--- /dev/null
+++ b/addons/hr_recruitment_survey/views/hr_applicant_views.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <record id="crm_case_tree_view_job_inherit" model="ir.ui.view">
+ <field name="name">hr.applicant.tree.inherit</field>
+ <field name="model">hr.applicant</field>
+ <field name="inherit_id" ref="hr_recruitment.crm_case_tree_view_job"/>
+ <field name="arch" type="xml">
+ <xpath expr="//field[@name='source_id']" position="after">
+ <field name="survey_id" invisible="1"/>
+ <field name="response_id" invisible="1"/>
+ </xpath>
+ </field>
+ </record>
+
+ <record id="crm_case_form_view_job_inherit" model="ir.ui.view">
+ <field name="name">hr.applicant.form.inherit</field>
+ <field name="model">hr.applicant</field>
+ <field name="inherit_id" ref="hr_recruitment.crm_case_form_view_job"/>
+ <field name="arch" type="xml">
+ <xpath expr="//button[@name='action_makeMeeting']" position="after">
+ <button name="action_start_survey"
+ class="oe_stat_button"
+ icon="fa-user"
+ type="object"
+ help="Answer related job question"
+ context="{'survey_id': survey_id}"
+ attrs="{'invisible':[('survey_id','=',False)]}">
+ <div class="o_form_field o_stat_info">
+ <span class="o_stat_text">Start</span>
+ <span class="o_stat_text">Interview</span>
+ </div>
+ </button>
+ <button name="action_print_survey"
+ class="oe_stat_button"
+ icon="fa-print"
+ type="object"
+ help="Print interview report"
+ attrs="{'invisible':[('survey_id','=',False)]}">
+ <div class="o_form_field o_stat_info">
+ <span class="o_stat_text">Print</span>
+ <span class="o_stat_text">Interview</span>
+ </div>
+ </button>
+ </xpath>
+ <xpath expr="//field[@name='job_id']" position="before">
+ <field name="survey_id" invisible="1"/>
+ <field name="response_id" invisible="1"/>
+ </xpath>
+ </field>
+ </record>
+
+ <record id="hr_kanban_view_applicant_inherit" model="ir.ui.view">
+ <field name="name">hr.applicants.kanban.inherit</field>
+ <field name="model">hr.applicant</field>
+ <field name="inherit_id" ref="hr_recruitment.hr_kanban_view_applicant"/>
+ <field name="arch" type="xml">
+ <xpath expr="//field[@name='user_id']" position="before">
+ <field name="survey_id"/>
+ </xpath>
+ </field>
+ </record>
+</odoo>
diff --git a/addons/hr_recruitment_survey/views/hr_job_views.xml b/addons/hr_recruitment_survey/views/hr_job_views.xml
new file mode 100644
index 00000000000..1a0d5f4e6dd
--- /dev/null
+++ b/addons/hr_recruitment_survey/views/hr_job_views.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <record id="hr_job_survey_inherit" model="ir.ui.view">
+ <field name="name">hr.job.form.inherit</field>
+ <field name="model">hr.job</field>
+ <field name="inherit_id" ref="hr_recruitment.hr_job_survey"/>
+ <field name="arch" type="xml">
+ <xpath expr="//field[@name='address_id']" position="before">
+ <label for="survey_id" groups="base.group_user"/>
+ <div groups="base.group_user" class="o_row">
+ <field name="survey_id"/>
+ <button string="Display Interview Form" name="action_print_survey" type="object" attrs="{'invisible':[('survey_id','=',False)]}" class="oe_link"/>
+ </div>
+ </xpath>
+ </field>
+ </record>
+ <record id="view_hr_job_kanban_inherit" model="ir.ui.view">
+ <field name="name">hr.job.kanban.inherit</field>
+ <field name="model">hr.job</field>
+ <field name="inherit_id" ref="hr_recruitment.view_hr_job_kanban"/>
+ <field name="arch" type="xml">
+ <xpath expr="//field[@name='manager_id']" position="after">
+ <field name="survey_id"/>
+ </xpath>
+ <xpath expr='//div[@name="recruitment"]' position="before">
+ <div class="row">
+ <div class="col-xs-12">
+ <a t-if="record.survey_id.raw_value" name="action_print_survey" type="object" title="Display Interview Form">Interview Form</a>
+ </div>
+ </div>
+ </xpath>
+ <xpath expr='//div[@name="documents"]' position="after">
+ <div>
+ <a t-if="record.survey_id.raw_value" name="action_print_survey" type="object" title="Display Interview Form">Interview Form</a>
+ <span t-if="!record.survey_id.raw_value">No Interview Form</span>
+ </div>
+ </xpath>
+ </field>
+ </record>
+</odoo>