summaryrefslogtreecommitdiff
path: root/addons/project_issue
diff options
context:
space:
mode:
authorksa (Open ERP) <ksa@tinyerp.co.in>2010-04-05 14:10:54 +0530
committerksa (Open ERP) <ksa@tinyerp.co.in>2010-04-05 14:10:54 +0530
commit59be5d42e2163f12eec054441fe4a1d6dc724cbc (patch)
tree95727629b266aebd47ccc6290e5c52106e5bd4ba /addons/project_issue
parent470ee954cd870735f73e487d76cb503ad09921b0 (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.py81
-rw-r--r--addons/project_issue/project_issue_view.xml8
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>