[IMP] Burndown chart & Cumulative Flow, Planned vs Remaining Time on kanban
bzr revid: fp@tinyerp.com-20111213043344-2nodtou03uy9zyo8
This commit is contained in:
parent
c2c27af2b6
commit
faf59411b4
|
@ -920,21 +920,24 @@ class task(osv.osv):
|
|||
self.log(cr, uid, id, message)
|
||||
return True
|
||||
|
||||
def set_remaining_time_1(self, cr, uid, ids, context=None):
|
||||
self.write(cr, uid, ids, {'remaining_hours': 1.0}, context=context)
|
||||
def set_remaining_time(self, cr, uid, ids, remaining_time=1.0, context=None):
|
||||
for task in self.browse(cr, uid, ids, context=context):
|
||||
if (task.state=='draft') or (task.planned_hours==0.0):
|
||||
self.write(cr, uid, [task.id], {'planned_hours': remaining_time}, context=context)
|
||||
self.write(cr, uid, ids, {'remaining_hours': remaining_time}, context=context)
|
||||
return True
|
||||
|
||||
def set_remaining_time_1(self, cr, uid, ids, context=None):
|
||||
return self.set_remaining_time(cr, uid, ids, 1.0, context)
|
||||
|
||||
def set_remaining_time_2(self, cr, uid, ids, context=None):
|
||||
self.write(cr, uid, ids, {'remaining_hours': 2.0}, context=context)
|
||||
return True
|
||||
return self.set_remaining_time(cr, uid, ids, 2.0, context)
|
||||
|
||||
def set_remaining_time_5(self, cr, uid, ids, context=None):
|
||||
self.write(cr, uid, ids, {'remaining_hours': 5.0}, context=context)
|
||||
return True
|
||||
return self.set_remaining_time(cr, uid, ids, 5.0, context)
|
||||
|
||||
def set_remaining_time_10(self, cr, uid, ids, context=None):
|
||||
self.write(cr, uid, ids, {'remaining_hours': 10.0}, context=context)
|
||||
return True
|
||||
return self.set_remaining_time(cr, uid, ids, 10.0, context)
|
||||
|
||||
def set_kanban_state_blocked(self, cr, uid, ids, context=None):
|
||||
self.write(cr, uid, ids, {'kanban_state': 'blocked'}, context=context)
|
||||
|
@ -979,6 +982,7 @@ class task(osv.osv):
|
|||
self.pool.get('project.task.history').create(cr, uid, {
|
||||
'task_id': task.id,
|
||||
'remaining_hours': task.remaining_hours,
|
||||
'planned_hours': task.planned_hours,
|
||||
'kanban_state': task.kanban_state,
|
||||
'type_id': task.type_id.id,
|
||||
'state': task.state,
|
||||
|
@ -1158,7 +1162,8 @@ class project_task_history(osv.osv):
|
|||
'end_date': fields.function(_get_date, string='End Date', type="date", store={
|
||||
'project.task.history': (_get_related_date, None, 20)
|
||||
}),
|
||||
'remaining_hours': fields.float('Remaining Hours', digits=(16,2)),
|
||||
'remaining_hours': fields.float('Remaining Time', digits=(16,2)),
|
||||
'planned_hours': fields.float('Planned Time', digits=(16,2)),
|
||||
'user_id': fields.many2one('res.users', 'Responsible'),
|
||||
}
|
||||
_defaults = {
|
||||
|
@ -1186,7 +1191,7 @@ class project_task_history_cumulative(osv.osv):
|
|||
id as history_id,
|
||||
date+generate_series(0, CAST((coalesce(end_date,DATE 'tomorrow')::date - date)AS integer)-1) as date,
|
||||
task_id, type_id, user_id, kanban_state, state,
|
||||
remaining_hours
|
||||
remaining_hours, planned_hours
|
||||
FROM
|
||||
project_task_history
|
||||
) as history
|
||||
|
|
|
@ -378,6 +378,7 @@
|
|||
type="object" class="oe_kanban_button"><t t-esc="time[0]"/></a
|
||||
><b t-if="time[1]" class="oe_kanban_button oe_kanban_button_active"><t t-esc="Math.round(hours)"/></b
|
||||
></t>
|
||||
<a name="do_open" states="draft" string="Open and validate estimated time" type="object" icon="kanban-apply"/>
|
||||
</span>
|
||||
</div>
|
||||
<div class="oe_kanban_clear"/>
|
||||
|
|
|
@ -25,6 +25,18 @@
|
|||
<field name="type">graph</field>
|
||||
<field name="arch" type="xml">
|
||||
<graph string="Project Tasks" type="bar">
|
||||
<field name="date"/>
|
||||
<field name="planned_hours" operator="+"/>
|
||||
<field name="type_id" group="True"/>
|
||||
</graph>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_task_history_burndown_graph" model="ir.ui.view">
|
||||
<field name="name">project.task.history.burndown.graph</field>
|
||||
<field name="model">project.task.history.burndown</field>
|
||||
<field name="type">graph</field>
|
||||
<field name="arch" type="xml">
|
||||
<graph string="Burndown Chart of Tasks" type="bar">
|
||||
<field name="date"/>
|
||||
<field name="remaining_hours" operator="+"/>
|
||||
<field name="type_id" group="True"/>
|
||||
|
@ -32,12 +44,13 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="view_task_history_search" model="ir.ui.view">
|
||||
<field name="name">project.task.history.cumulative.search</field>
|
||||
<field name="model">project.task.history.cumulative</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Task's Cumulative Flow">
|
||||
<search string="Task's Analysis">
|
||||
<group>
|
||||
<filter name="open" string="In Progress" domain="[('state','in',('open','draft'))]" help="In Progress Tasks" icon="terp-camera_test"/>
|
||||
<filter string="Pending" domain="[('state','=','pending')]" context="{'show_delegated':False}" help="Pending Tasks" icon="terp-gtk-media-pause"/>
|
||||
|
@ -69,13 +82,28 @@
|
|||
<field name="res_model">project.task.history.cumulative</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">graph,tree</field>
|
||||
<field name="view_id" ref="view_task_history_graph"/>
|
||||
<field eval="False" name="filter"/>
|
||||
<field name="context">{"search_default_open":1, "search_default_this_month": 1}</field>
|
||||
<field name="context">{"search_default_open":1, "search_default_this_month": 1, "search_default_project_id": project_id}</field>
|
||||
</record>
|
||||
<menuitem action="action_view_task_history_cumulative"
|
||||
id="menu_action_view_task_history_cumulative"
|
||||
parent="project_report_task" />
|
||||
|
||||
|
||||
<record id="action_view_task_history_burndown" model="ir.actions.act_window">
|
||||
<field name="name">Burndown Chart</field>
|
||||
<field name="res_model">project.task.history.cumulative</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">graph,tree</field>
|
||||
<field name="view_id" ref="view_task_history_burndown_graph"/>
|
||||
<field eval="False" name="filter"/>
|
||||
<field name="context">{"search_default_open":1, "search_default_this_month": 1, "search_default_project_id": project_id}</field>
|
||||
</record>
|
||||
<menuitem action="action_view_task_history_burndown"
|
||||
id="menu_action_view_task_history_burndown"
|
||||
parent="project_report_task" />
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
Loading…
Reference in New Issue