diff options
| author | Dhaval Suthar <dut@odoo.com> | 2017-05-10 14:37:37 +0200 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2017-05-10 15:02:17 +0200 |
| commit | 956b9f88f7196aa2bb5f4f339b553a6365e7253b (patch) | |
| tree | 8ac3bbde46a94164b30afdc395b39cbad8d5c83f /addons | |
| parent | 25411cfbd06b2914bc09a4416ec309009aa068f6 (diff) | |
[REF] hr_recruitment: replace report by pivot / graph views
hr.recruitment.report is not necessary anymore as it can be replaced by
classic pivot and graph views on hr.applicant model.
Applicant has been slighty modified to ease reporting
* adding group_operator average on both salary fields;
* adding missin delay to close computation on applicant;
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/hr_recruitment/__init__.py | 1 | ||||
| -rw-r--r-- | addons/hr_recruitment/models/hr_recruitment.py | 6 | ||||
| -rw-r--r-- | addons/hr_recruitment/report/__init__.py | 4 | ||||
| -rw-r--r-- | addons/hr_recruitment/report/hr_recruitment_report.py | 84 | ||||
| -rw-r--r-- | addons/hr_recruitment/report/hr_recruitment_report_views.xml | 73 | ||||
| -rw-r--r-- | addons/hr_recruitment/security/ir.model.access.csv | 1 | ||||
| -rw-r--r-- | addons/hr_recruitment/views/hr_recruitment_views.xml | 12 |
7 files changed, 54 insertions, 127 deletions
diff --git a/addons/hr_recruitment/__init__.py b/addons/hr_recruitment/__init__.py index c3aa29d685e..8134f974fbf 100644 --- a/addons/hr_recruitment/__init__.py +++ b/addons/hr_recruitment/__init__.py @@ -2,4 +2,3 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from . import models -from . import report diff --git a/addons/hr_recruitment/models/hr_recruitment.py b/addons/hr_recruitment/models/hr_recruitment.py index 3080f328457..8fe63cb0dd5 100644 --- a/addons/hr_recruitment/models/hr_recruitment.py +++ b/addons/hr_recruitment/models/hr_recruitment.py @@ -140,8 +140,8 @@ class Applicant(models.Model): job_id = fields.Many2one('hr.job', "Applied Job") salary_proposed_extra = fields.Char("Proposed Salary Extra", help="Salary Proposed by the Organisation, extra advantages") salary_expected_extra = fields.Char("Expected Salary Extra", help="Salary Expected by Applicant, extra advantages") - salary_proposed = fields.Float("Proposed Salary", help="Salary Proposed by the Organisation") - salary_expected = fields.Float("Expected Salary", help="Salary Expected by Applicant") + salary_proposed = fields.Float("Proposed Salary", group_operator="avg", help="Salary Proposed by the Organisation") + salary_expected = fields.Float("Expected Salary", group_operator="avg", help="Salary Expected by Applicant") availability = fields.Date("Availability", help="The date at which the applicant will be available to start working") partner_name = fields.Char("Applicant's Name") partner_phone = fields.Char("Phone", size=32) @@ -151,6 +151,7 @@ class Applicant(models.Model): 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") + delay_close = fields.Float(compute="_compute_day", string='Delay to Close', readonly=True, group_operator="avg", help="Number of Delay to close", store=True) color = fields.Integer("Color Index", default=0) emp_id = fields.Many2one('hr.employee', string="Employee", track_visibility="onchange", help="Employee linked to the applicant.") user_email = fields.Char(related='user_id.email', type="char", string="User Email", readonly=True) @@ -170,6 +171,7 @@ class Applicant(models.Model): date_create = datetime.strptime(self.create_date, tools.DEFAULT_SERVER_DATETIME_FORMAT) date_closed = datetime.strptime(self.date_closed, tools.DEFAULT_SERVER_DATETIME_FORMAT) self.day_close = (date_closed - date_create).total_seconds() / (24.0 * 3600) + self.delay_close = self.day_close - self.day_open @api.multi def _get_attachment_number(self): diff --git a/addons/hr_recruitment/report/__init__.py b/addons/hr_recruitment/report/__init__.py deleted file mode 100644 index f8808cb9486..00000000000 --- a/addons/hr_recruitment/report/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -# -*- encoding: utf-8 -*- -# Part of Odoo. See LICENSE file for full copyright and licensing details. - -from . import hr_recruitment_report diff --git a/addons/hr_recruitment/report/hr_recruitment_report.py b/addons/hr_recruitment/report/hr_recruitment_report.py deleted file mode 100644 index f32133a5421..00000000000 --- a/addons/hr_recruitment/report/hr_recruitment_report.py +++ /dev/null @@ -1,84 +0,0 @@ -# -*- coding: utf-8 -*- -# Part of Odoo. See LICENSE file for full copyright and licensing details. - -from odoo import api, fields, models, tools -from odoo.addons.hr_recruitment.models import hr_recruitment - - -class HrRecruitmentReport(models.Model): - _name = "hr.recruitment.report" - _description = "Recruitments Statistics" - _auto = False - _rec_name = 'date_create' - _order = 'date_create desc' - - active = fields.Boolean('Active') - user_id = fields.Many2one('res.users', 'User', readonly=True) - company_id = fields.Many2one('res.company', 'Company', readonly=True) - date_create = fields.Datetime('Create Date', readonly=True) - date_last_stage_update = fields.Datetime('Last Stage Update', readonly=True) - date_closed = fields.Date('Closed', readonly=True) - job_id = fields.Many2one('hr.job', 'Applied Job', readonly=True) - stage_id = fields.Many2one('hr.recruitment.stage', 'Stage') - type_id = fields.Many2one('hr.recruitment.degree', 'Degree') - department_id = fields.Many2one('hr.department', 'Department', readonly=True) - priority = fields.Selection(hr_recruitment.AVAILABLE_PRIORITIES, 'Appreciation') - salary_prop = fields.Float("Salary Proposed", digits=0) - salary_prop_avg = fields.Float("Avg. Proposed Salary", group_operator="avg", digits=0) - salary_exp = fields.Float("Salary Expected", digits=0) - salary_exp_avg = fields.Float("Avg. Expected Salary", group_operator="avg", digits=0) - partner_id = fields.Many2one('res.partner', 'Partner', readonly=True) - delay_close = fields.Float('Avg. Delay to Close', digits=(16, 2), readonly=True, group_operator="avg", help="Number of Days to close the project issue") - last_stage_id = fields.Many2one('hr.recruitment.stage', 'Last Stage') - medium_id = fields.Many2one('utm.medium', 'Medium', readonly=True, help="This is the method of delivery. Ex: Postcard, Email, or Banner Ad") - source_id = fields.Many2one('utm.source', 'Source', readonly=True, help="This is the source of the link Ex: Search Engine, another domain, or name of email list") - - @api.model_cr - def init(self): - tools.drop_view_if_exists(self._cr, 'hr_recruitment_report') - self._cr.execute(""" - create or replace view hr_recruitment_report as ( - select - min(s.id) as id, - s.active, - s.create_date as date_create, - date(s.date_closed) as date_closed, - s.date_last_stage_update as date_last_stage_update, - s.partner_id, - s.company_id, - s.user_id, - s.job_id, - s.type_id, - s.department_id, - s.priority, - s.stage_id, - s.last_stage_id, - s.medium_id, - s.source_id, - sum(salary_proposed) as salary_prop, - (sum(salary_proposed)/count(*)) as salary_prop_avg, - sum(salary_expected) as salary_exp, - (sum(salary_expected)/count(*)) as salary_exp_avg, - extract('epoch' from (s.write_date-s.create_date))/(3600*24) as delay_close, - count(*) as nbr - from hr_applicant s - group by - s.active, - s.date_open, - s.create_date, - s.write_date, - s.date_closed, - s.date_last_stage_update, - s.partner_id, - s.company_id, - s.user_id, - s.stage_id, - s.last_stage_id, - s.type_id, - s.priority, - s.job_id, - s.department_id, - s.medium_id, - s.source_id - ) - """) diff --git a/addons/hr_recruitment/report/hr_recruitment_report_views.xml b/addons/hr_recruitment/report/hr_recruitment_report_views.xml index 06519474476..44d80331bf5 100644 --- a/addons/hr_recruitment/report/hr_recruitment_report_views.xml +++ b/addons/hr_recruitment/report/hr_recruitment_report_views.xml @@ -2,8 +2,8 @@ <odoo> <data> <record id="view_hr_recruitment_report_pivot" model="ir.ui.view"> - <field name="name">hr.recruitment.report.pivot</field> - <field name="model">hr.recruitment.report</field> + <field name="name">hr.applicant.pivot</field> + <field name="model">hr.applicant</field> <field name="arch" type="xml"> <pivot string="Recruitment Analysis" disable_linking="True"> <field name="stage_id" type="row"/> @@ -13,8 +13,8 @@ </record> <record id="view_hr_recruitment_report_graph" model="ir.ui.view"> - <field name="name">hr.recruitment.report.graph</field> - <field name="model">hr.recruitment.report</field> + <field name="name">hr.applicant.graph</field> + <field name="model">hr.applicant</field> <field name="arch" type="xml"> <graph string="Recruitment Analysis"> <field name="stage_id" type="row"/> @@ -23,35 +23,15 @@ </field> </record> - <!-- Custom reports (aka filters) --> - <record id="filter_recruitment_report_recruiter" model="ir.filters"> - <field name="name">By Recruiter</field> - <field name="model_id">hr.recruitment.report</field> - <field name="user_id" eval="False"/> - <field name="context">{'group_by': ['date_create:month', 'user_id'], 'col_group_by': ['date_create:month']}</field> - </record> - <record id="filter_recruitment_report_job" model="ir.filters"> - <field name="name">By Job</field> - <field name="model_id">hr.recruitment.report</field> - <field name="user_id" eval="False"/> - <field name="context">{'group_by': ['date_create:month', 'job_id'], 'col_group_by': ['date_create:month']}</field> - </record> - <record id="filter_recruitment_report_departmnet" model="ir.filters"> - <field name="name">By Department</field> - <field name="model_id">hr.recruitment.report</field> - <field name="user_id" eval="False"/> - <field name="context">{'group_by': ['date_create:month', 'department_id'], 'col_group_by': ['date_create:month']}</field> - </record> - <record id="view_hr_recruitment_report_search" model="ir.ui.view"> - <field name="name">hr.recruitment.report.search</field> - <field name="model">hr.recruitment.report</field> + <field name="name">hr.applicant.search</field> + <field name="model">hr.applicant</field> <field name="arch" type="xml"> <search string="Recruitment Analysis"> <field name="job_id"/> <field name="department_id"/> <field name="user_id"/> - <filter string="This Year" name="year" domain="[('date_create','<=', time.strftime('%%Y-12-31')),('date_create','>=',time.strftime('%%Y-01-01'))]"/> + <filter string="This Year" name="year" domain="[('create_date','<=', time.strftime('%%Y-12-31')),('create_date','>=',time.strftime('%%Y-01-01'))]"/> <separator/> <filter string="Unassigned" domain="[('user_id', '=', False)]"/> <separator/> @@ -64,7 +44,7 @@ <field name="priority"/> <field name="stage_id"/> <field name="company_id" groups="base.group_multi_company"/> - <field name="date_create"/> + <field name="create_date"/> <field name="date_closed"/> </group> <group expand="1" string="Group By"> @@ -74,7 +54,7 @@ <filter string="Department" name="department" context="{'group_by':'department_id'}"/> <filter string="Stage" context="{'group_by':'stage_id'}" /> <separator/> - <filter string="Creation Week" context="{'group_by':'date_create:week'}" help="Creation Week"/> + <filter string="Creation Week" context="{'group_by':'create_date:week'}" help="Creation Week"/> </group> </search> </field> @@ -82,17 +62,21 @@ <record id="action_hr_recruitment_report_all" model="ir.actions.act_window"> <field name="name">Recruitment Analysis</field> - <field name="res_model">hr.recruitment.report</field> + <field name="res_model">hr.applicant</field> <field name="view_type">form</field> <field name="view_mode">graph,pivot</field> <field name="search_view_id" ref="view_hr_recruitment_report_search"/> + <field name="view_ids" eval="[ + (5, 0, 0), + (0, 0, {'view_mode': 'pivot', 'view_id': ref('view_hr_recruitment_report_pivot')}), + (0, 0, {'view_mode': 'graph', 'view_id': ref('view_hr_recruitment_report_graph')})]"/> <field name="context">{}</field> <!-- force empty --> </record> - <menuitem name="Reporting" id="report_hr_recruitment" parent="menu_hr_recruitment_root" + <menuitem name="Reports" id="report_hr_recruitment" parent="menu_hr_recruitment_root" sequence="99" action="action_hr_recruitment_report_all"/> <record id="action_hr_recruitment_report_filtered_department" model="ir.actions.act_window"> <field name="name">Recruitment Analysis</field> - <field name="res_model">hr.recruitment.report</field> + <field name="res_model">hr.applicant</field> <field name="view_type">form</field> <field name="view_mode">graph,pivot</field> <field name="search_view_id" ref="view_hr_recruitment_report_search"/> @@ -104,7 +88,7 @@ <record id="action_hr_recruitment_report_filtered_job" model="ir.actions.act_window"> <field name="name">Recruitment Analysis</field> - <field name="res_model">hr.recruitment.report</field> + <field name="res_model">hr.applicant</field> <field name="view_type">form</field> <field name="view_mode">graph,pivot</field> <field name="search_view_id" ref="view_hr_recruitment_report_search"/> @@ -114,5 +98,28 @@ </field> </record> + <!-- Custom reports (aka filters) --> + <record id="filter_recruitment_report_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="action_hr_recruitment_report_all"/> + <field name="context">{'group_by': ['create_date:month', 'user_id'], 'col_group_by': ['create_date:month']}</field> + </record> + <record id="filter_recruitment_report_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="action_hr_recruitment_report_all"/> + <field name="context">{'group_by': ['create_date:month', 'job_id'], 'col_group_by': ['create_date:month']}</field> + </record> + <record id="filter_recruitment_report_departmnet" 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="action_hr_recruitment_report_all"/> + <field name="context">{'group_by': ['create_date:month', 'department_id'], 'col_group_by': ['create_date:month']}</field> + </record> + </data> </odoo> diff --git a/addons/hr_recruitment/security/ir.model.access.csv b/addons/hr_recruitment/security/ir.model.access.csv index f996f829c98..a30b91b9667 100644 --- a/addons/hr_recruitment/security/ir.model.access.csv +++ b/addons/hr_recruitment/security/ir.model.access.csv @@ -1,6 +1,5 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_hr_applicant_user,hr.applicant.user,model_hr_applicant,group_hr_recruitment_user,1,1,1,1
-access_hr_recruitment_report,hr.recruitment.report,model_hr_recruitment_report,group_hr_recruitment_user,1,1,1,1
access_hr_recruitment_stage_user,hr.recruitment.stage.user,model_hr_recruitment_stage,group_hr_recruitment_user,1,0,0,0
access_hr_recruitment_stage_manager,hr.recruitment.stage.manager,model_hr_recruitment_stage,group_hr_recruitment_user,1,1,1,1
access_hr_recruitment_degree,hr.recruitment.degree,model_hr_recruitment_degree,group_hr_recruitment_user,1,1,1,1
diff --git a/addons/hr_recruitment/views/hr_recruitment_views.xml b/addons/hr_recruitment/views/hr_recruitment_views.xml index 27a3e33aab2..a970aea785e 100644 --- a/addons/hr_recruitment/views/hr_recruitment_views.xml +++ b/addons/hr_recruitment/views/hr_recruitment_views.xml @@ -323,6 +323,7 @@ <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="view_crm_case_jobs_filter"/> <field name="context">{'search_default_job_id': [active_id], 'default_job_id': active_id}</field> <field name="help" type="html"> <p> @@ -525,7 +526,7 @@ <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,graph,calendar,pivot</field> + <field name="view_mode">kanban,tree,form,pivot,graph,calendar</field> <field name="view_id" eval="False"/> <field name="search_view_id" ref="view_crm_case_jobs_filter"/> <field name="context">{}</field> @@ -556,12 +557,19 @@ </record> <record model="ir.actions.act_window.view" id="action_hr_sec_form_view_act_job"> - <field name="sequence" eval="3"/> + <field name="sequence" eval="2"/> <field name="view_mode">form</field> <field name="view_id" ref="crm_case_form_view_job"/> <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> |
