From cb85ff64ca8e62576d8118a82ab3fbc6fe272e75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Valyi?= <> Date: Thu, 24 Mar 2011 15:26:31 +0530 Subject: [PATCH 1/3] [FIX] Account: dog slow invoice cancel because validate for every line; patch included lp bug: https://launchpad.net/bugs/740353 fixed bzr revid: ara@tinyerp.com-20110324095631-pgup0qjn8s9jar0f --- addons/account/account_move_line.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py index faf6b1cd897..880d92fe8b3 100644 --- a/addons/account/account_move_line.py +++ b/addons/account/account_move_line.py @@ -1087,12 +1087,15 @@ class account_move_line(osv.osv): move_obj = self.pool.get('account.move') self._update_check(cr, uid, ids, context) result = False + move_ids = [] for line in self.browse(cr, uid, ids, context=context): + if line.move_id not in move_ids: + move_ids.append(line.move_id.id) context['journal_id'] = line.journal_id.id context['period_id'] = line.period_id.id result = super(account_move_line, self).unlink(cr, uid, [line.id], context=context) - if check: - move_obj.validate(cr, uid, [line.move_id.id], context=context) + if check: + move_obj.validate(cr, uid, move_ids, context=context) return result def _check_date(self, cr, uid, vals, context=None, check=True): From 19c0ebbd4594533d67fe1a65873e0346af9aaa0f Mon Sep 17 00:00:00 2001 From: "ARA (OpenERP)" Date: Fri, 25 Mar 2011 14:05:49 +0530 Subject: [PATCH 2/3] [FIX] account: slow invoice cancel because validate for every line bzr revid: ara@tinyerp.com-20110325083549-ud6qd6hxhzimsb1l --- addons/account/account_move_line.py | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py index 880d92fe8b3..d0dd4b2c805 100644 --- a/addons/account/account_move_line.py +++ b/addons/account/account_move_line.py @@ -1094,6 +1094,7 @@ class account_move_line(osv.osv): context['journal_id'] = line.journal_id.id context['period_id'] = line.period_id.id result = super(account_move_line, self).unlink(cr, uid, [line.id], context=context) + move_ids = list(set(move_ids)) if check: move_obj.validate(cr, uid, move_ids, context=context) return result From 26469cf092ecd090a2b2e35712b7aefcfff76191 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Fri, 25 Mar 2011 16:38:54 +0100 Subject: [PATCH 3/3] [FIX] account/account_move_line: proper use of set() bzr revid: qdp-launchpad@openerp.com-20110325153854-jtxryt1cw7rm5a7p --- addons/account/account_move_line.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py index d0dd4b2c805..83a67df9178 100644 --- a/addons/account/account_move_line.py +++ b/addons/account/account_move_line.py @@ -1087,15 +1087,14 @@ class account_move_line(osv.osv): move_obj = self.pool.get('account.move') self._update_check(cr, uid, ids, context) result = False - move_ids = [] + move_ids = set() for line in self.browse(cr, uid, ids, context=context): - if line.move_id not in move_ids: - move_ids.append(line.move_id.id) + move_ids.add(line.move_id.id) context['journal_id'] = line.journal_id.id context['period_id'] = line.period_id.id result = super(account_move_line, self).unlink(cr, uid, [line.id], context=context) - move_ids = list(set(move_ids)) - if check: + move_ids = list(move_ids) + if check and move_ids: move_obj.validate(cr, uid, move_ids, context=context) return result