summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephane Wirtel <stw@openerp.com>2012-08-08 16:04:24 +0200
committerStephane Wirtel <stw@openerp.com>2012-08-08 16:04:24 +0200
commit7b6ca2cbfdca157c24c0a3e69e5ddd7b3f3d23d5 (patch)
tree26d81ab1997fa6bd05812dbaa532fe06ddcbfa1b
parent6fffe4ba643a6a4b7f45088591ea29f1231bda61 (diff)
parent1a1a92e81105ff125800ae9c249c0ecc5bbe6b6a (diff)
[MERGE] lp:~openerp-dev/openobject-addons/trunk-addons_issue2_project-rpr
bzr revid: stw@openerp.com-20120808140424-gop7xnjpjj993pt8
-rw-r--r--addons/base_status/base_state.py29
-rw-r--r--addons/project/project_view.xml4
2 files changed, 30 insertions, 3 deletions
diff --git a/addons/base_status/base_state.py b/addons/base_status/base_state.py
index 35995ac7da3..4247e67f435 100644
--- a/addons/base_status/base_state.py
+++ b/addons/base_status/base_state.py
@@ -19,7 +19,7 @@
#
##############################################################################
-from osv import fields
+from osv import fields, osv
from tools.translate import _
class base_state(object):
@@ -92,6 +92,24 @@ class base_state(object):
data.update(self.onchange_partner_address_id(cr, uid, ids, addr['contact'])['value'])
return {'value': data}
+ def case_escalate(self, cr, uid, ids, context=None):
+ """ Escalates case to parent level """
+ cases = self.browse(cr, uid, ids, context=context)
+ cases[0].state # fill browse record cache, for _action having old and new values
+ data = {'active': True}
+ for case in cases:
+ parent_id = case.section_id.parent_id
+ if parent_id:
+ data['section_id'] = parent_id.id
+ if parent_id.change_responsible and parent_id.user_id:
+ data['user_id'] = parent_id.user_id.id
+ else:
+ raise osv.except_osv(_('Error !'), _('You can not escalate, you are already at the top level regarding your sales-team category.'))
+ self.write(cr, uid, [case.id], data, context=context)
+ case.case_escalate_send_note(parent_id, context=context)
+ self._action(cr, uid, cases, 'escalate', context=context)
+ return True
+
def case_open(self, cr, uid, ids, context=None):
""" Opens case """
cases = self.browse(cr, uid, ids, context=context)
@@ -170,6 +188,15 @@ class base_state(object):
self.message_append_note(cr, uid, [id], body=msg, context=context)
return True
+ def case_escalate_send_note(self, cr, uid, ids, new_section=None, context=None):
+ for id in ids:
+ if new_section:
+ msg = '%s has been <b>escalated</b> to <b>%s</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context), new_section.name)
+ else:
+ msg = '%s has been <b>escalated</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
+ self.message_append_note(cr, uid, [id], 'System Notification', msg, context=context)
+ return True
+
def case_close_send_note(self, cr, uid, ids, context=None):
for id in ids:
msg = _('%s has been <b>closed</b>.') % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml
index 48d9cd2136b..6c593b13c26 100644
--- a/addons/project/project_view.xml
+++ b/addons/project/project_view.xml
@@ -89,7 +89,7 @@
<group>
<group>
<field name="user_id" string="Project Manager" attrs="{'readonly':[('state','in',['close', 'cancelled'])]}"/>
- <field name="partner_id" on_change="onchange_partner_id(partner_id)"/>
+ <field name="partner_id" string = "Contact" on_change="onchange_partner_id(partner_id)"/>
<field name="privacy_visibility"/>
<field name="analytic_account_id" invisible="1" required="0"/>
</group>
@@ -193,7 +193,7 @@
<field name="date" invisible="1"/>
<field name="name" string="Project Name"/>
<field name="user_id" string="Project Manager"/>
- <field name="partner_id" string="Partner"/>
+ <field name="partner_id" string="Contact"/>
<field name="parent_id" string="Parent" invisible="1"/>
<field name="planned_hours" widget="float_time"/>
<field name="total_hours" widget="float_time"/>