You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							98 lines
						
					
					
						
							4.5 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							98 lines
						
					
					
						
							4.5 KiB
						
					
					
				
								# -*- coding: utf-8 -*-
							 | 
						|
								##############################################################################
							 | 
						|
								#
							 | 
						|
								#    Cybrosys Technologies Pvt. Ltd.
							 | 
						|
								#    Copyright (C) 2016-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
							 | 
						|
								#    Author: Nilmar Shereef(<http://www.cybrosys.com>)
							 | 
						|
								#    you can modify it under the terms of the GNU LESSER
							 | 
						|
								#    GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
							 | 
						|
								#
							 | 
						|
								#    It is forbidden to publish, distribute, sublicense, or sell copies
							 | 
						|
								#    of the Software or modified copies of the Software.
							 | 
						|
								#
							 | 
						|
								#    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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
							 | 
						|
								#
							 | 
						|
								#    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
							 | 
						|
								#    GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
							 | 
						|
								#    If not, see <http://www.gnu.org/licenses/>.
							 | 
						|
								#
							 | 
						|
								##############################################################################
							 | 
						|
								from openerp.osv import fields, osv
							 | 
						|
								from openerp import tools
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								class ProjectSubtaskHistory(osv.osv):
							 | 
						|
								    _name = "report.project.subtask.user"
							 | 
						|
								    _description = "Sub Tasks by user and project"
							 | 
						|
								    _auto = False
							 | 
						|
								    _columns = {
							 | 
						|
								        'name': fields.char(string='Sub Task', readonly=True),
							 | 
						|
								        'user_id': fields.many2one('res.users', string='Assigned To', readonly=True),
							 | 
						|
								        'date_start': fields.datetime(string='Assignation Date', readonly=True),
							 | 
						|
								        'no_of_days': fields.integer(string='# of Days', size=128, readonly=True),
							 | 
						|
								        'date_deadline': fields.date(string='Deadline', readonly=True),
							 | 
						|
								        'date_last_stage_update': fields.datetime(string='Last Stage Update', readonly=True),
							 | 
						|
								        'task_id': fields.many2one('project.task', string='Task', readonly=True),
							 | 
						|
								        'closing_days': fields.float(string='Days to Close', digits=(16, 2), readonly=True, group_operator="avg",
							 | 
						|
								                                     help="Number of Days to close the task"),
							 | 
						|
								        'opening_days': fields.float(string='Days to Assign', digits=(16, 2), readonly=True, group_operator="avg",
							 | 
						|
								                                     help="Number of Days to Open the task"),
							 | 
						|
								        'delay_endings_days': fields.float(string='Over passed Deadline', digits=(16, 2), readonly=True),
							 | 
						|
								        'nbr': fields.integer(string='# of Tasks', readonly=True),  # TDE FIXME master: rename into nbr_tasks
							 | 
						|
								        'priority': fields.selection([('0', 'Low'), ('1', 'Normal'), ('2', 'High')],
							 | 
						|
								                                     string='Priority', size=1, readonly=True),
							 | 
						|
								        'company_id': fields.many2one('res.company', string='Company', readonly=True),
							 | 
						|
								        'stage_id': fields.many2one('project.sub_task.type', string='Stage'),
							 | 
						|
								    }
							 | 
						|
								    _order = 'name desc'
							 | 
						|
								
							 | 
						|
								    def _select(self):
							 | 
						|
								        select_str = """
							 | 
						|
								             SELECT
							 | 
						|
								                    (select 1 ) AS nbr,
							 | 
						|
								                    t.id as id,
							 | 
						|
								                    t.date_start as date_start,
							 | 
						|
								                    t.date_deadline as date_deadline,
							 | 
						|
								                    abs((extract('epoch' from (t.write_date-t.date_start)))/(3600*24))  as no_of_days,
							 | 
						|
								                    t.task_ref as task_id,
							 | 
						|
								                    t.assigned_user as user_id,
							 | 
						|
								                    t.date_last_stage_update as date_last_stage_update,
							 | 
						|
								                    t.priority,
							 | 
						|
								                    t.name as name,
							 | 
						|
								                    t.company_id,
							 | 
						|
								                    t.stage_id as stage_id,
							 | 
						|
								                    (extract('epoch' from (t.write_date-t.create_date)))/(3600*24)  as closing_days,
							 | 
						|
								                    (extract('epoch' from (t.date_start-t.create_date)))/(3600*24)  as opening_days,
							 | 
						|
								                    (extract('epoch' from (t.date_deadline-(now() at time zone 'UTC'))))/(3600*24)  as delay_endings_days
							 | 
						|
								        """
							 | 
						|
								        return select_str
							 | 
						|
								
							 | 
						|
								    def _group_by(self):
							 | 
						|
								        group_by_str = """
							 | 
						|
								                GROUP BY
							 | 
						|
								                    t.id,
							 | 
						|
								                    create_date,
							 | 
						|
								                    write_date,
							 | 
						|
								                    date_start,
							 | 
						|
								                    date_deadline,
							 | 
						|
								                    date_last_stage_update,
							 | 
						|
								                    t.assigned_user,
							 | 
						|
								                    t.priority,
							 | 
						|
								                    name,
							 | 
						|
								                    t.company_id,
							 | 
						|
								                    stage_id
							 | 
						|
								        """
							 | 
						|
								        return group_by_str
							 | 
						|
								
							 | 
						|
								    def init(self, cr):
							 | 
						|
								        tools.sql.drop_view_if_exists(cr, 'report_project_subtask_user')
							 | 
						|
								        cr.execute("""
							 | 
						|
								            CREATE view report_project_subtask_user as
							 | 
						|
								              %s
							 | 
						|
								              FROM project_sub_task t
							 | 
						|
								                WHERE t.active = 'true'
							 | 
						|
								                %s
							 | 
						|
								        """% (self._select(), self._group_by()))
							 |