From 90650245d0e62706bb0d0e1dc809b8e10ec537f4 Mon Sep 17 00:00:00 2001 From: Cedric Snauwaert Date: Thu, 31 Mar 2016 10:31:25 +0200 Subject: [PATCH] [FIX] account: update-check should allow aml with debit=credit=0 Problem: if we try to validate an invoice with a line with a discount of 100%, this will create an aml with debit=credit=0 and reconciled flag as True. So when trying to cancel invoice, it is not possible because the check tell us that there is an entry which is reconciled and we can't unreconcile that entry, so the check should just ignore line with debit-credit=0. Also add readonly to general_account_id related field on account.analytic.line. This is to prevent a write while creating the account_move_line in the case of an invoice with analytic account. --- addons/account/models/account_analytic_line.py | 2 +- addons/account/models/account_move.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/account/models/account_analytic_line.py b/addons/account/models/account_analytic_line.py index 39ea202796c..83faccaa15c 100644 --- a/addons/account/models/account_analytic_line.py +++ b/addons/account/models/account_analytic_line.py @@ -11,7 +11,7 @@ class AccountAnalyticLine(models.Model): amount = fields.Monetary(currency_field='company_currency_id') product_uom_id = fields.Many2one('product.uom', string='Unit of Measure') product_id = fields.Many2one('product.product', string='Product') - general_account_id = fields.Many2one('account.account', string='Financial Account', ondelete='restrict', + general_account_id = fields.Many2one('account.account', string='Financial Account', ondelete='restrict', readonly=True, related='move_id.account_id', store=True, domain=[('deprecated', '=', False)]) move_id = fields.Many2one('account.move.line', string='Move Line', ondelete='cascade', index=True) code = fields.Char(size=8) diff --git a/addons/account/models/account_move.py b/addons/account/models/account_move.py index 59ae9883a9c..fcc0460691a 100644 --- a/addons/account/models/account_move.py +++ b/addons/account/models/account_move.py @@ -1074,7 +1074,7 @@ class AccountMoveLine(models.Model): err_msg = _('Move name (id): %s (%s)') % (line.move_id.name, str(line.move_id.id)) if line.move_id.state != 'draft': raise UserError(_('You cannot do this modification on a posted journal entry, you can just change some non legal fields. You must revert the journal entry to cancel it.\n%s.') % err_msg) - if line.reconciled: + if line.reconciled and not (line.debit == 0 and line.credit == 0): raise UserError(_('You cannot do this modification on a reconciled entry. You can just change some non legal fields or you must unreconcile first.\n%s.') % err_msg) if line.move_id.id not in move_ids: move_ids.add(line.move_id.id)