diff options
| author | Raphaël Valyi <rvalyi@gmail.com> | 2010-07-09 11:38:43 -0300 |
|---|---|---|
| committer | Raphaël Valyi <rvalyi@gmail.com> | 2010-07-09 11:38:43 -0300 |
| commit | cd0adfc702940924b09bd38d4356e4728fa06155 (patch) | |
| tree | 831eaffb3f027fde99d3aef1bdb4fa4ba077025b /addons/project_long_term | |
| parent | 424cbecb024e73fb19ef7c4af92e918562560f33 (diff) | |
| parent | 6ad5e679300776a7125d558698ac29d7e43f7d44 (diff) | |
[merge]
bzr revid: rvalyi@gmail.com-20100709124725-4ptd3k4563ibe662
bzr revid: rvalyi@gmail.com-20100709133938-4m9k8nsvn4gjri24
bzr revid: rvalyi@gmail.com-20100709143843-c63tnhepvgu6ts3x
Diffstat (limited to 'addons/project_long_term')
| -rw-r--r-- | addons/project_long_term/project_long_term.py | 16 | ||||
| -rw-r--r-- | addons/project_long_term/project_long_term_view.xml | 29 | ||||
| -rw-r--r-- | addons/project_long_term/wizard/project_compute_phases.py | 3 |
3 files changed, 39 insertions, 9 deletions
diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py index a6fbcb22ab7..8eaf9c6b96a 100644 --- a/addons/project_long_term/project_long_term.py +++ b/addons/project_long_term/project_long_term.py @@ -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, diff --git a/addons/project_long_term/project_long_term_view.xml b/addons/project_long_term/project_long_term_view.xml index 4170c0064d0..91347f0bbfe 100644 --- a/addons/project_long_term/project_long_term_view.xml +++ b/addons/project_long_term/project_long_term_view.xml @@ -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> diff --git a/addons/project_long_term/wizard/project_compute_phases.py b/addons/project_long_term/wizard/project_compute_phases.py index 3ee15bc6c5a..f4c5fbae443 100644 --- a/addons/project_long_term/wizard/project_compute_phases.py +++ b/addons/project_long_term/wizard/project_compute_phases.py @@ -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 |
