From 4b8e15c3fa8addc933ba44994362be295bdcc86a Mon Sep 17 00:00:00 2001 From: Juan Rial Date: Tue, 24 Jun 2014 18:17:18 +0200 Subject: [PATCH] Performance improvement: defer optional write() - there's another one coming later, values can be combined. --- addons/account/account_invoice.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py index 96d63c545c6..9fd2d1bc896 100644 --- a/addons/account/account_invoice.py +++ b/addons/account/account_invoice.py @@ -903,6 +903,7 @@ class account_invoice(osv.osv): move_obj = self.pool.get('account.move') if context is None: context = {} + inv_date = {} for inv in self.browse(cr, uid, ids, context=context): if not inv.journal_id.sequence_id: raise osv.except_osv(_('Error!'), _('Please define sequence on the journal related to this invoice.')) @@ -914,7 +915,7 @@ class account_invoice(osv.osv): ctx = context.copy() ctx.update({'lang': inv.partner_id.lang}) if not inv.date_invoice: - self.write(cr, uid, [inv.id], {'date_invoice': fields.date.context_today(self,cr,uid,context=context)}, context=ctx) + inv_date = {'date_invoice': fields.date.context_today(self,cr,uid,context=context)} company_currency = self.pool['res.company'].browse(cr, uid, inv.company_id.id).currency_id.id # create the analytical lines # one move line per invoice line @@ -1048,7 +1049,9 @@ class account_invoice(osv.osv): move_id = move_obj.create(cr, uid, move, context=ctx) new_move_name = move_obj.browse(cr, uid, move_id, context=ctx).name # make the invoice point to that move - self.write(cr, uid, [inv.id], {'move_id': move_id,'period_id':period_id, 'move_name':new_move_name}, context=ctx) + vals = inv_date + vals.update(move_id=move_id, period_id=period_id, move_name=new_move_name) + self.write(cr, uid, [inv.id], vals, context=ctx) # Pass invoice in context in method post: used if you want to get the same # account move reference when creating the same invoice after a cancelled one: move_obj.post(cr, uid, [move_id], context=ctx)