+ def _get_next_followup_level_id_optimized(self, cr, uid, ids, name, arg, context=None):
+ res = {}
+ for partner in self.browse(cr, uid, ids):
+ latest_id = partner.latest_followup_level_id
+ if latest_id:
+ latest = latest_id
+ else:
+ latest = False
+
+ delay = False
+ newlevel = False
+ if latest: #if latest exists
+ newlevel = latest.id
+ old_delay = latest.delay
+ else:
+ old_delay = False
+ fl_ar = self.pool.get('account_followup.followup.line').search(cr, uid, [('followup_id.company_id.id','=', partner.company_id.id)])
+
+ for fl_obj in self.pool.get('account_followup.followup.line').browse(cr, uid, fl_ar):
+ if not old_delay:
+ if not delay or fl_obj.delay < delay:
+ delay = fl_obj.delay
+ newlevel = fl_obj.id
+ else:
+ if (not delay and (fl_obj.delay > old_delay)) or ((fl_obj.delay < delay) and (fl_obj.delay > old_delay)):
+ delay = fl_obj.delay
+ newlevel = fl_obj.id
+ res[partner.id] = newlevel
+ #Now search one level higher
+ return res
+