diff --git a/addons/sale_crm/sale_crm.py b/addons/sale_crm/sale_crm.py index 03521356f64..f1828d27b03 100644 --- a/addons/sale_crm/sale_crm.py +++ b/addons/sale_crm/sale_crm.py @@ -26,7 +26,38 @@ class sale_order(osv.osv): _columns = { 'section_id': fields.many2one('crm.case.section', 'Sales Team'), } - + def action_cancel(self, cr, uid, ids, context=None): + res = super(sale_order, self).action_cancel(cr, uid, ids, context=context) + case_pool = self.pool.get('crm.lead') + data_pool = self.pool.get('ir.model.data') + data = data_pool._get_id(cr, uid, 'crm', 'stage_lead6') + res_data = data_pool.read(cr, uid, data, ['res_id']) + lost_stage_id = False + if res_data and res_data.get('res_id'): + lost_stage_id = res_data.get('res_id', False) + if not lost_stage_id: + return res + # After sale cancel, lead also lost + for sale_id in ids: + lead_ids = case_pool.search(cr, uid, [('ref','=','sale.order,%s'%(sale_id))]) + case_pool.write(cr, uid, lead_ids, {'stage_id': lost_stage_id}) + return res + def action_ship_create(self, cr, uid, ids, *args): + res = super(sale_order, self).action_ship_create(cr, uid, ids, *args) + case_pool = self.pool.get('crm.lead') + data_pool = self.pool.get('ir.model.data') + data = data_pool._get_id(cr, uid, 'crm', 'stage_lead5') + res_data = data_pool.read(cr, uid, data, ['res_id']) + win_stage_id = False + if res_data and res_data.get('res_id'): + win_stage_id = res_data.get('res_id', False) + if not win_stage_id: + return res + # After sale confimed, lead also win + for sale_id in ids: + lead_ids = case_pool.search(cr, uid, [('ref','=','sale.order,%s'%(sale_id))]) + case_pool.write(cr, uid, lead_ids, {'stage_id': win_stage_id}) + return res def _get_section(self, cr, uid, context=None): return context.get('context_section_id', False) @@ -36,4 +67,4 @@ class sale_order(osv.osv): sale_order() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: