diff options
| author | ksa (Open ERP) <ksa@tinyerp.co.in> | 2010-04-05 14:10:54 +0530 |
|---|---|---|
| committer | ksa (Open ERP) <ksa@tinyerp.co.in> | 2010-04-05 14:10:54 +0530 |
| commit | 59be5d42e2163f12eec054441fe4a1d6dc724cbc (patch) | |
| tree | 95727629b266aebd47ccc6290e5c52106e5bd4ba /addons/project_issue | |
| parent | 470ee954cd870735f73e487d76cb503ad09921b0 (diff) | |
[IMP]: crm project_issue: implement compute day function in this module
bzr revid: ksa@tinyerp.co.in-20100405084054-vdc6tz5i8dtr1it9
Diffstat (limited to 'addons/project_issue')
| -rw-r--r-- | addons/project_issue/project_issue.py | 81 | ||||
| -rw-r--r-- | addons/project_issue/project_issue_view.xml | 8 |
2 files changed, 52 insertions, 37 deletions
diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py index 03ecfdcc778..0248a6ee7a5 100644 --- a/addons/project_issue/project_issue.py +++ b/addons/project_issue/project_issue.py @@ -37,37 +37,45 @@ class project_issue(osv.osv): _order = "priority, id desc" _inherit = 'crm.case' - def _compute_openday(self, cr, uid, ids, name, args, context={}): - result = {} - for r in self.browse(cr, uid, ids , context): - result[r.id] = 0 - model_id = self.pool.get('ir.model').search(cr, uid, [('model', '=', 'project.issue')]) - log_obj = self.pool.get('crm.case.log') - hist_id = log_obj.search(cr, uid, [('model_id', '=', model_id[0]), \ - ('res_id', '=', r.id), \ - ('name', '=', 'Open')]) - - if hist_id: - # Considering last log for opening case - log = log_obj.browse(cr, uid, hist_id[-1]) - date_lead_open = datetime.strptime(r.create_date, "%Y-%m-%d %H:%M:%S") - date_log_open = datetime.strptime(log.date, "%Y-%m-%d %H:%M:%S") - ans = date_lead_open - date_log_open - duration = float(ans.days) + (float(ans.seconds) / 86400) - result[r.id] = abs(int(duration)) - return result - - def _compute_closeday(self, cr, uid, ids, name, args, context={}): - result = {} - for r in self.browse(cr, uid, ids , context): - result[r.id] = 0 - if r.date_closed: - date_create = datetime.strptime(r.create_date, "%Y-%m-%d %H:%M:%S") - date_close = datetime.strptime(r.date_closed, "%Y-%m-%d %H:%M:%S") - ans = date_close - date_create - duration = float(ans.days) + (float(ans.seconds) / 86400) - result[r.id] = abs(int(duration)) - return result + def _compute_day(self, cr, uid, ids, fields, args, context={}): + """ + @param cr: the current row, from the database cursor, + @param uid: the current user’s ID for security checks, + @param ids: List of Openday’s IDs + @return: difference between current date and log date + @param context: A standard dictionary for contextual values + """ + log_obj = self.pool.get('crm.case.log') + model_obj = self.pool.get('ir.model') + cal_obj = self.pool.get('resource.calendar') + + model_ids = model_obj.search(cr, uid, [('model', '=', self._name)]) + model_id = False + if len(model_ids): + model_id = model_ids[0] + + res = {} + for lead in self.browse(cr, uid, ids , context): + for field in fields: + res[lead.id] = {} + duration = 0 + if field == 'day_open': + if lead.date_open: + date_create = datetime.strptime(lead.create_date, "%Y-%m-%d %H:%M:%S") + date_open = datetime.strptime(lead.date_open, "%Y-%m-%d %H:%M:%S") + + ans = date_open - date_create + duration = float(ans.days) + (float(ans.seconds) / 86400) + + elif field == 'day_close': + if lead.date_closed: + date_create = datetime.strptime(lead.create_date, "%Y-%m-%d %H:%M:%S") + date_close = datetime.strptime(lead.date_closed, "%Y-%m-%d %H:%M:%S") + + ans = date_close - date_create + duration = float(ans.days) + (float(ans.seconds) / 86400) + res[lead.id][field] = abs(int(duration)) + return res _columns = { 'date_closed': fields.datetime('Closed', readonly=True), @@ -84,11 +92,12 @@ class project_issue(osv.osv): 'project_id':fields.many2one('project.project', 'Project'), 'duration': fields.float('Duration'), 'task_id': fields.many2one('project.task', 'Task', domain="[('project_id','=',project_id)]"), - 'day_open': fields.function(_compute_openday, string='Days to Open', \ - method=True, type="integer", store=True), - 'day_close': fields.function(_compute_closeday, string='Days to Close', \ - method=True, type="integer", store=True), - 'assigned_to' : fields.many2one('res.users', 'Assigned to'), + 'date_open': fields.datetime('Opened', readonly=True), + 'day_open': fields.function(_compute_day, string='Days to Open', \ + method=True, multi='day_open', type="integer", store=True), + 'day_close': fields.function(_compute_day, string='Days to Close', \ + method=True, multi='day_close', type="integer", store=True), + 'assigned_to' : fields.many2one('res.users', 'Assigned to'), 'timesheet_ids' : fields.one2many('hr.analytic.timesheet', 'issue_id', 'Timesheets'), 'analytic_account_id' : fields.many2one('account.analytic.account', 'Analytic Account', domain="[('partner_id', '=', partner_id)]", diff --git a/addons/project_issue/project_issue_view.xml b/addons/project_issue/project_issue_view.xml index f09643c2590..1da031fa52e 100644 --- a/addons/project_issue/project_issue_view.xml +++ b/addons/project_issue/project_issue_view.xml @@ -77,7 +77,13 @@ <group col="2" colspan="2"> <separator colspan="2" string="Date"/> <field name="date_closed"/> + <field name="date_open"/> </group> + <group colspan="2" col="2"> + <separator string="Statistics" colspan="2" col="2"/> + <field name="day_open"/> + <field name="day_close"/> + </group> <group col="2" colspan="2"> <separator string="References" colspan="2"/> <field name="id"/> @@ -88,7 +94,7 @@ <separator string="Action Information" colspan="4"/> <field name="name" colspan="4"/> <field name="date" /> - <field name="user_id" /> + <field name="user_id" /> </form> </field> </page> |
