From 2f4a82f7f6318a9f2bfbfae0c056731209f00e5c Mon Sep 17 00:00:00 2001 From: "ARA (OpenERP)" Date: Fri, 1 Apr 2011 18:18:04 +0530 Subject: [PATCH 1/3] [FIX] account: Cancel of invoice throws error, validate of move_id is invalid lp bug: https://launchpad.net/bugs/746544 fixed bzr revid: ara@tinyerp.com-20110401124804-rvbqlbaosphsqv8c --- addons/account/account_move_line.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py index 83a67df9178..e5c06213061 100644 --- a/addons/account/account_move_line.py +++ b/addons/account/account_move_line.py @@ -1085,15 +1085,26 @@ class account_move_line(osv.osv): if context is None: context = {} move_obj = self.pool.get('account.move') + analytic_obj = self.pool.get('account.analytic.line') self._update_check(cr, uid, ids, context) result = False move_ids = set() + analytic_ids = set() + move_line_ids = set() for line in self.browse(cr, uid, ids, context=context): 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_line_ids.add(line.id) + for obj in line.analytic_lines: + analytic_ids.add(obj.id) + + analytic_ids = list(analytic_ids) move_ids = list(move_ids) + + if analytic_ids: + analytic_obj.unlink(cr,uid, analytic_ids, context=context) + result = super(account_move_line, self).unlink(cr, uid, list(move_line_ids), context=context) if check and move_ids: move_obj.validate(cr, uid, move_ids, context=context) return result From 08695d543309b3f64581440f70037699861a337c Mon Sep 17 00:00:00 2001 From: "ARA (OpenERP)" Date: Mon, 4 Apr 2011 12:09:17 +0530 Subject: [PATCH 2/3] [FIX] account: Cancel of invoice throws error, validate of move_id is invalid bzr revid: ara@tinyerp.com-20110404063917-kunaq8rj59pvvjsf --- addons/account/account_move_line.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py index e5c06213061..2cbe9de9630 100644 --- a/addons/account/account_move_line.py +++ b/addons/account/account_move_line.py @@ -1093,11 +1093,9 @@ class account_move_line(osv.osv): move_line_ids = set() for line in self.browse(cr, uid, ids, context=context): move_ids.add(line.move_id.id) - context['journal_id'] = line.journal_id.id - context['period_id'] = line.period_id.id move_line_ids.add(line.id) - for obj in line.analytic_lines: - analytic_ids.add(obj.id) + for analytic in line.analytic_lines: + analytic_ids.add(analytic.id) analytic_ids = list(analytic_ids) move_ids = list(move_ids) From ad590ddc86b73d31265f5ea6913cee74f96a755a Mon Sep 17 00:00:00 2001 From: "ARA (OpenERP)" Date: Mon, 25 Apr 2011 11:41:14 +0530 Subject: [PATCH 3/3] [FIX] account: Cancel of invoice throws error, validate of move_id is invalid bzr revid: ara@tinyerp.com-20110425061114-nq2mzpc8w082hu3j --- addons/account/account_analytic_line.py | 2 +- addons/account/account_move_line.py | 15 +++------------ 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/addons/account/account_analytic_line.py b/addons/account/account_analytic_line.py index a93dc70b2fb..08123c8f460 100644 --- a/addons/account/account_analytic_line.py +++ b/addons/account/account_analytic_line.py @@ -32,7 +32,7 @@ class account_analytic_line(osv.osv): 'product_uom_id': fields.many2one('product.uom', 'UoM'), 'product_id': fields.many2one('product.product', 'Product'), 'general_account_id': fields.many2one('account.account', 'General Account', required=True, ondelete='restrict'), - 'move_id': fields.many2one('account.move.line', 'Move Line', ondelete='restrict', select=True), + 'move_id': fields.many2one('account.move.line', 'Move Line', ondelete='cascade', select=True), 'journal_id': fields.many2one('account.analytic.journal', 'Analytic Journal', required=True, ondelete='restrict', select=True), 'code': fields.char('Code', size=8), 'ref': fields.char('Ref.', size=64), diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py index 2cbe9de9630..83a67df9178 100644 --- a/addons/account/account_move_line.py +++ b/addons/account/account_move_line.py @@ -1085,24 +1085,15 @@ class account_move_line(osv.osv): if context is None: context = {} move_obj = self.pool.get('account.move') - analytic_obj = self.pool.get('account.analytic.line') self._update_check(cr, uid, ids, context) result = False move_ids = set() - analytic_ids = set() - move_line_ids = set() for line in self.browse(cr, uid, ids, context=context): move_ids.add(line.move_id.id) - move_line_ids.add(line.id) - for analytic in line.analytic_lines: - analytic_ids.add(analytic.id) - - analytic_ids = list(analytic_ids) + 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(move_ids) - - if analytic_ids: - analytic_obj.unlink(cr,uid, analytic_ids, context=context) - result = super(account_move_line, self).unlink(cr, uid, list(move_line_ids), context=context) if check and move_ids: move_obj.validate(cr, uid, move_ids, context=context) return result