[REM] project_timesheet: report_timesheet_task_user

This commit is contained in:
rsi-odoo
2014-10-31 12:51:55 +05:30
committed by Richard Mathot
parent 35a4e08751
commit 287f65744b
7 changed files with 6 additions and 182 deletions
+3 -4
View File
@@ -2,7 +2,7 @@
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
# Copyright (C) 2004-2014 OpenERP S.A. (<https://www.odoo.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -18,7 +18,6 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import project_timesheet
import report
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
import project_timesheet
+2 -4
View File
@@ -2,7 +2,7 @@
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
# Copyright (C) 2004-2014 OpenERP S.A. (<https://www.odoo.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -34,11 +34,10 @@ with the effect of creating, editing and deleting either ways.
'author': 'OpenERP SA',
'website': 'https://www.odoo.com/page/project-management',
'images': ['images/invoice_task_work.jpeg', 'images/my_timesheet.jpeg', 'images/working_hour.jpeg'],
'depends': ['resource', 'project', 'hr_timesheet_sheet', 'hr_timesheet_invoice', 'account_analytic_analysis', 'procurement'],
'depends': ['resource', 'project', 'hr_timesheet', 'hr_timesheet_invoice', 'account_analytic_analysis', 'procurement'],
'data': [
'security/ir.model.access.csv',
'security/project_timesheet_security.xml',
'report/task_report_view.xml',
'project_timesheet_view.xml',
],
'demo': ['project_timesheet_demo.xml'],
@@ -49,4 +48,3 @@ with the effect of creating, editing and deleting either ways.
'installable': True,
'auto_install': True,
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -1,22 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import task_report
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -1,83 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from datetime import datetime
from dateutil.relativedelta import relativedelta
from openerp.osv import fields,osv
from openerp import tools
class report_timesheet_task_user(osv.osv):
_name = "report.timesheet.task.user"
_auto = False
_order = "name"
def get_hrs_timesheet(self, cr, uid, ids, name, args, context):
result = {}
for record in self.browse(cr, uid, ids, context):
last_date = datetime.strptime(record.name, '%Y-%m-%d') + relativedelta(months=1) - relativedelta(days=1)
obj = self.pool.get('hr_timesheet_sheet.sheet.day')
sheet_ids = obj.search(cr, uid, [('sheet_id.user_id','=',record.user_id.id),('name','>=',record.name),('name','<=',last_date.strftime('%Y-%m-%d'))])
data_days = obj.read(cr, uid, sheet_ids, ['name','sheet_id.user_id','total_attendance'])
total = 0.0
for day_attendance in data_days:
total += day_attendance['total_attendance']
result[record.id] = total
return result
_columns = {
'name': fields.char('Date'),
'year': fields.char('Year', size=4, required=False, readonly=True),
'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),
('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month', readonly=True),
'user_id': fields.many2one('res.users', 'User',readonly=True),
'timesheet_hrs': fields.function(get_hrs_timesheet, string="Timesheet Hours"),
'task_hrs' : fields.float('Task Hours'),
}
def init(self, cr):
tools.drop_view_if_exists(cr, 'report_timesheet_task_user')
cr.execute(""" create or replace view report_timesheet_task_user as (
select
((r.id*12)+to_number(months.m_id,'999999'))::integer as id,
months.name as name,
r.id as user_id,
to_char(to_date(months.name, 'YYYY/MM/DD'),'YYYY') as year,
to_char(to_date(months.name, 'YYYY/MM/DD'),'MM') as month,
(select sum(hours) from project_task_work where user_id = r.id and date between to_date(months.name, 'YYYY/MM/DD') and (to_date(months.name, 'YYYY/MM/DD') + interval '1 month' -
interval '1 day') ) as task_hrs
from res_users r,
(select to_char(p.date,'YYYY-MM-01') as name,
to_char(p.date,'YYYYMM') as m_id
from project_task_work p
union
select to_char(h.name,'YYYY-MM-01') as name,
to_char(h.name,'YYYYMM') as m_id
from hr_timesheet_sheet_sheet_day h) as months
group by
r.id,months.m_id,months.name,
to_char(to_date(months.name, 'YYYY/MM/DD'),'YYYY') ,
to_char(to_date(months.name, 'YYYY/MM/DD'),'MM')
) """)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -1,51 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<menuitem
id="hr.menu_hr_reporting"
name="Human Resources"
parent="base.menu_reporting"
sequence="60" />
<!-- Report for Users' Timesheet and Task Hours per Month -->
<record id="view_report_timesheet_task_user_search" model="ir.ui.view">
<field name="name">report.timesheet.task.user.search</field>
<field name="model">report.timesheet.task.user</field>
<field name="arch" type="xml">
<search string="Tasks by User">
<field name="name" string="Date"/>
<field name="user_id"/>
<group expand="1" string="Group By">
<filter string="User" name="group_user_id" icon="terp-personal" context="{'group_by':'user_id'}"/>
<filter string="Month" icon="terp-go-month" context="{'group_by':'month'}" help="Group by month of date"/>
<filter string="Year" icon="terp-go-year" context="{'group_by':'year'}" help="Group by year of date"/>
</group>
</search>
</field>
</record>
<record id="view_task_hour_per_month_graph" model="ir.ui.view">
<field name="name">report.timesheet.task.user.graph</field>
<field name="model">report.timesheet.task.user</field>
<field name="arch" type="xml">
<graph string="Task Hours Per Month" type="bar">
<field name="user_id"/>
<field name="task_hrs" operator="+"/>
<field name="timesheet_hrs" operator="+"/>
</graph>
</field>
</record>
<record id="action_report_timesheet_task_user" model="ir.actions.act_window">
<field name="name">Task Hours Per Month</field>
<field name="res_model">report.timesheet.task.user</field>
<field name="view_type">form</field>
<field name="view_mode">graph</field>
<field name="context">{'search_default_year':1,'search_default_month':1, 'search_default_group_user_id':1}</field>
</record>
<menuitem id="menu_timesheet_task_user" parent="hr.menu_hr_reporting_timesheet"
action="action_report_timesheet_task_user" sequence="1"/>
</data>
</openerp>
@@ -1,6 +1,4 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_report_timesheet_task_user_manager,report.timesheet.task.user.manager,model_report_timesheet_task_user,project.group_project_manager,1,1,1,1
access_hr_analytic_timesheet_user,hr.analytic.timesheet.user,hr_timesheet_sheet.model_hr_analytic_timesheet,project.group_project_user,1,1,1,0
access_hr_timesheet_sheet_sheet_user,hr.timesheet.sheet.sheet.user,hr_timesheet_sheet.model_hr_timesheet_sheet_sheet,project.group_project_user,1,1,1,0
access_hr_analytic_timesheet_user,hr.analytic.timesheet.user,hr_timesheet.model_hr_analytic_timesheet,project.group_project_user,1,1,1,0
access_sale_order_manager,sale.order,sale.model_sale_order,project.group_project_manager,1,0,0,0
access_sale_order_user,sale.order,sale.model_sale_order,project.group_project_user,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_report_timesheet_task_user_manager access_hr_analytic_timesheet_user report.timesheet.task.user.manager hr.analytic.timesheet.user model_report_timesheet_task_user hr_timesheet.model_hr_analytic_timesheet project.group_project_manager project.group_project_user 1 1 1 1 0
access_hr_analytic_timesheet_user hr.analytic.timesheet.user hr_timesheet_sheet.model_hr_analytic_timesheet project.group_project_user 1 1 1 0
access_hr_timesheet_sheet_sheet_user hr.timesheet.sheet.sheet.user hr_timesheet_sheet.model_hr_timesheet_sheet_sheet project.group_project_user 1 1 1 0
3 access_sale_order_manager sale.order sale.model_sale_order project.group_project_manager 1 0 0 0
4 access_sale_order_user sale.order sale.model_sale_order project.group_project_user 1 0 0 0
@@ -38,16 +38,6 @@
user_id: res_users_hrmanager0
product_id: product_product_hrmanger0
journal_id: account_analytic_journal_hrtimesheet0
-
Create a timesheet sheet for HR manager
-
!record {model: hr_timesheet_sheet.sheet, id: hr_timesheet_sheet_sheet_sheetforhrmanager0}:
date_from: !eval "'%s-05-01' %(datetime.now().year)"
date_to: !eval "'%s-05-31' %(datetime.now().year)"
name: Sheet for hr manager
state: new
user_id: res_users_hrmanager0
employee_id : 'hr_employee_hrmanager0'
-
Create a project 'Timesheet Management'
-
@@ -73,8 +63,3 @@
hours: 10.0
name: Get work calendar of all employees
user_id: res_users_hrmanager0
-
Check for timesheet_ids in HR manager's timesheet
-
!assert {model: hr_timesheet_sheet.sheet, id: hr_timesheet_sheet_sheet_sheetforhrmanager0, string: After hr manager's work task, length of timesheet line of current timesheet must be greater then 1}:
- len(timesheet_ids) > 0