diff --git a/addons/crm/crm.py b/addons/crm/crm.py
index 5e2b0a57052..9c51e1a9cab 100644
--- a/addons/crm/crm.py
+++ b/addons/crm/crm.py
@@ -151,8 +151,8 @@ class crm_case_rule(osv.osv):
'active': fields.boolean('Active'),
'sequence': fields.integer('Sequence'),
- 'trg_state_from': fields.selection([('','')]+AVAILABLE_STATES, 'Case state from', size=16),
- 'trg_state_to': fields.selection([('','')]+AVAILABLE_STATES, 'Case state to', size=16),
+ 'trg_state_from': fields.selection([('',''),('escalate','Escalate')]+AVAILABLE_STATES, 'Case state from', size=16),
+ 'trg_state_to': fields.selection([('',''),('escalate','Escalate')]+AVAILABLE_STATES, 'Case state to', size=16),
'trg_date_type': fields.selection([
('none','None'),
@@ -260,8 +260,6 @@ class crm_case(osv.osv):
'date': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
}
_order = 'priority, date_deadline, id'
-
-
def _action(self, cr, uid, cases, state_to, scrit=[], context={}):
action_ids = self.pool.get('crm.case.rule').search(cr, uid, scrit)
level = MAX_LEVEL
@@ -485,6 +483,20 @@ class crm_case(osv.osv):
self._action(cr,uid, cases, 'done')
return True
+ def case_escalate(self, cr, uid, ids, *args):
+ cases = self.browse(cr, uid, ids)
+ for case in cases:
+ data = {'active':True, 'user_id': False}
+ if case.section_id.parent_id:
+ data['section_id'] = case.section_id.parent_id.id
+ else:
+ raise osv.except_osv('Error !', 'You can not escalate this case.\nYou are already at the top level.')
+ self.write(cr, uid, ids, data)
+ self.__history(cr, uid, cases, 'escalate')
+ self._action(cr, uid, cases, 'escalate')
+ return True
+
+
def case_open(self, cr, uid, ids, *args):
cases = self.browse(cr, uid, ids)
self.__log(cr, uid, cases, 'open')
diff --git a/addons/crm/crm_view.xml b/addons/crm/crm_view.xml
index 047a963463b..bcd90dfc4de 100644
--- a/addons/crm/crm_view.xml
+++ b/addons/crm/crm_view.xml
@@ -260,11 +260,12 @@
-
+
+