[merge]
bzr revid: rvalyi@gmail.com-20100709124725-4ptd3k4563ibe662 bzr revid: rvalyi@gmail.com-20100709133938-4m9k8nsvn4gjri24 bzr revid: rvalyi@gmail.com-20100709143843-c63tnhepvgu6ts3x
This commit is contained in:
@@ -86,6 +86,11 @@ class project_phase(osv.osv):
|
||||
return False
|
||||
return True
|
||||
|
||||
def _get_default_uom_id(self, cr, uid):
|
||||
model_data_obj = self.pool.get('ir.model.data')
|
||||
model_data_id = model_data_obj._get_id(cr, uid, 'product', 'uom_hour')
|
||||
return model_data_obj.read(cr, uid, [model_data_id], ['res_id'])[0]['res_id']
|
||||
|
||||
_columns = {
|
||||
'name': fields.char("Name", size=64, required=True),
|
||||
'date_start': fields.datetime('Start Date', help="Starting Date of the phase"),
|
||||
@@ -137,7 +142,6 @@ class project_phase(osv.osv):
|
||||
"""
|
||||
uom_obj = self.pool.get('product.uom')
|
||||
resource_obj = self.pool.get('resource.resource')
|
||||
model_data_obj = self.pool.get('ir.model.data')
|
||||
cal_obj = self.pool.get('resource.calendar')
|
||||
calendar_id = phase.project_id.resource_calendar_id and phase.project_id.resource_calendar_id.id or False
|
||||
resource_id = resource_obj.search(cr, uid, [('user_id', '=', phase.responsible_id.id)])
|
||||
@@ -147,7 +151,7 @@ class project_phase(osv.osv):
|
||||
cal_id = res.get('calendar_id', False) and res.get('calendar_id')[0] or False
|
||||
if cal_id:
|
||||
calendar_id = cal_id
|
||||
default_uom_id = model_data_obj._get_id(cr, uid, 'product', 'uom_hour')
|
||||
default_uom_id = self._get_default_uom_id(cr, uid)
|
||||
avg_hours = uom_obj._compute_qty(cr, uid, phase.product_uom.id, phase.duration, default_uom_id)
|
||||
work_times = cal_obj.interval_min_get(cr, uid, calendar_id, date_end, avg_hours or 0.0, resource_id and resource_id[0] or False)
|
||||
dt_start = work_times[0][0].strftime('%Y-%m-%d %H:%M:%S')
|
||||
@@ -160,7 +164,6 @@ class project_phase(osv.osv):
|
||||
Check And Compute date_end of phase if change in date_end > older time.
|
||||
"""
|
||||
uom_obj = self.pool.get('product.uom')
|
||||
model_data_obj = self.pool.get('ir.model.data')
|
||||
resource_obj = self.pool.get('resource.resource')
|
||||
cal_obj = self.pool.get('resource.calendar')
|
||||
calendar_id = phase.project_id.resource_calendar_id and phase.project_id.resource_calendar_id.id or False
|
||||
@@ -171,7 +174,7 @@ class project_phase(osv.osv):
|
||||
cal_id = res.get('calendar_id', False) and res.get('calendar_id')[0] or False
|
||||
if cal_id:
|
||||
calendar_id = cal_id
|
||||
default_uom_id = model_data_obj._get_id(cr, uid, 'product', 'uom_hour')
|
||||
default_uom_id = self._get_default_uom_id(cr, uid)
|
||||
avg_hours = uom_obj._compute_qty(cr, uid, phase.product_uom.id, phase.duration, default_uom_id)
|
||||
work_times = cal_obj.interval_get(cr, uid, calendar_id, date_start, avg_hours or 0.0, resource_id and resource_id[0] or False)
|
||||
dt_end = work_times[-1][1].strftime('%Y-%m-%d %H:%M:%S')
|
||||
@@ -181,7 +184,6 @@ class project_phase(osv.osv):
|
||||
resource_calendar_obj = self.pool.get('resource.calendar')
|
||||
resource_obj = self.pool.get('resource.resource')
|
||||
uom_obj = self.pool.get('product.uom')
|
||||
model_data_obj = self.pool.get('ir.model.data')
|
||||
if context is None:
|
||||
context = {}
|
||||
if context.get('scheduler',False):
|
||||
@@ -195,7 +197,7 @@ class project_phase(osv.osv):
|
||||
cal_id = resource_obj.browse(cr, uid, resource_id[0], context=context).calendar_id.id
|
||||
if cal_id:
|
||||
calendar_id = cal_id
|
||||
default_uom_id = model_data_obj._get_id(cr, uid, 'product', 'uom_hour')
|
||||
default_uom_id = self._get_default_uom_id(cr, uid)
|
||||
avg_hours = uom_obj._compute_qty(cr, uid, phase.product_uom.id, phase.duration, default_uom_id)
|
||||
|
||||
# Change the date_start and date_end
|
||||
@@ -246,6 +248,8 @@ class project_resource_allocation(osv.osv):
|
||||
'resource_id': fields.many2one('resource.resource', 'Resource', required=True),
|
||||
'phase_id': fields.many2one('project.phase', 'Project Phase', required=True),
|
||||
'useability': fields.float('Usability', help="Usability of this resource for this project phase in percentage (=50%)"),
|
||||
'date_start': fields.related('phase_id', 'date_start', type='datetime', string='Start Date'),
|
||||
'date_end': fields.related('phase_id', 'date_end', type='datetime', string='End Date'),
|
||||
}
|
||||
_defaults = {
|
||||
'useability': 100,
|
||||
|
||||
@@ -31,9 +31,36 @@
|
||||
<field name="resource_id"/>
|
||||
<field name="phase_id"/>
|
||||
<field name="useability"/>
|
||||
<field name="date_start"/>
|
||||
<field name="date_end"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_project_resource_allocation_calendar" model="ir.ui.view">
|
||||
<field name="name">project.resource.allocation.calendar</field>
|
||||
<field name="model">project.resource.allocation</field>
|
||||
<field name="type">calendar</field>
|
||||
<field name="arch" type="xml">
|
||||
<calendar color="resource_id" date_stop="date_end" date_start="date_start" string="Resource Allocations">
|
||||
<field name="resource_id"/>
|
||||
<field name="useability"/>
|
||||
</calendar>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_project_resource_allocation_gantt" model="ir.ui.view">
|
||||
<field name="name">project.resource.allocation.gantt</field>
|
||||
<field name="model">project.resource.allocation</field>
|
||||
<field name="type">gantt</field>
|
||||
<field name="arch" type="xml">
|
||||
<gantt color="resource_id" date_stop="date_end" date_start="date_start" string="Resource Allocations">
|
||||
<level object="resource.resource" link="resource_id" domain="[]">
|
||||
<field name="useability"/>
|
||||
</level>
|
||||
</gantt>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_project_resource_allocation_search" model="ir.ui.view">
|
||||
<field name="name">project.resource.allocation.search</field>
|
||||
@@ -58,7 +85,7 @@
|
||||
<field name="name">Resource Allocations</field>
|
||||
<field name="res_model">project.resource.allocation</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_mode">tree,form,calendar,gantt</field>
|
||||
<field name="context">{'search_default_resource': 1} </field>
|
||||
<!--<field name="search_view_id" ref="view_project_phase_search"/>-->
|
||||
</record>
|
||||
|
||||
@@ -60,7 +60,6 @@ class project_compute_phases(osv.osv_memory):
|
||||
phase_obj = self.pool.get('project.phase')
|
||||
resource_obj = self.pool.get('resource.resource')
|
||||
uom_obj = self.pool.get('product.uom')
|
||||
model_data_obj = self.pool.get('ir.model.data')
|
||||
phase_resource_obj = False
|
||||
|
||||
if context is None:
|
||||
@@ -82,7 +81,7 @@ class project_compute_phases(osv.osv_memory):
|
||||
'vacation': tuple(leaves),
|
||||
'efficiency': time_efficiency
|
||||
})
|
||||
default_uom_id = model_data_obj._get_id(cr, uid, 'product', 'uom_hour')
|
||||
default_uom_id = phase_obj._get_default_uom_id(cr, uid)
|
||||
avg_hours = uom_obj._compute_qty(cr, uid, phase.product_uom.id, phase.duration, default_uom_id)
|
||||
duration = str(avg_hours) + 'H'
|
||||
# Create a new project for each phase
|
||||
|
||||
Reference in New Issue
Block a user