From bdf3e9bca3e4c9cfbe2d1e0f15dc75070470ce65 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Fri, 24 Feb 2012 11:23:05 +0100 Subject: [PATCH] [FIX] account_voucher: correct fix for lp:901089 lp bug: https://launchpad.net/bugs/901089 fixed bzr revid: qdp-launchpad@openerp.com-20120224102305-6yqsk0vaasydcxum --- addons/account_voucher/account_voucher.py | 25 +++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/addons/account_voucher/account_voucher.py b/addons/account_voucher/account_voucher.py index 6253720e094..3ed173cca85 100644 --- a/addons/account_voucher/account_voucher.py +++ b/addons/account_voucher/account_voucher.py @@ -547,6 +547,21 @@ class account_voucher(osv.osv): @return: Returns a dict which contains new values, and context """ + def _remove_noise_in_o2m(): + """if the line is partially reconciled, then we must pay attention to display it only once and + in the good o2m. + This function returns True if the line is considered as noise and should not be displayed + """ + if line.reconcile_partial_id: + sign = 1 if ttype == 'receipt' else -1 + if currency_id == line.currency_id.id: + if line.amount_residual_currency * sign <= 0: + return True + else: + if line.amount_residual * sign <= 0: + return True + return False + if context is None: context = {} context_multi_currency = context.copy() @@ -612,10 +627,7 @@ class account_voucher(osv.osv): #compute the total debit/credit and look for a matching open amount or invoice for line in account_move_lines: - #if the line is partially reconciled, then we must pay attention to display it only once and in the good o2m - if line.debit and line.reconcile_partial_id and ttype == 'receipt': - continue - if line.credit and line.reconcile_partial_id and ttype == 'payment': + if _remove_noise_in_o2m(): continue if invoice_id: @@ -643,10 +655,7 @@ class account_voucher(osv.osv): #voucher line creation for line in account_move_lines: - #if the line is partially reconciled, then we must pay attention to display it only once and in the good o2m - if line.debit and line.reconcile_partial_id and ttype == 'receipt': - continue - if line.credit and line.reconcile_partial_id and ttype == 'payment': + if _remove_noise_in_o2m(): continue if line.currency_id and currency_id==line.currency_id.id: