[MERGE] fix of lp:901089

bzr revid: qdp-launchpad@openerp.com-20120224111952-gkdw9z0w169itq97
This commit is contained in:
Quentin (OpenERP)
2012-02-24 12:19:52 +01:00
+22 -8
View File
@@ -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()
@@ -610,11 +625,11 @@ class account_voucher(osv.osv):
ids.reverse()
account_move_lines = move_line_pool.browse(cr, uid, ids, context=context)
#compute the total debit/credit and look for a matching open amount or invoice
for line in account_move_lines:
if line.credit and line.reconcile_partial_id and ttype == 'receipt':
continue
if line.debit and line.reconcile_partial_id and ttype == 'payment':
if _remove_noise_in_o2m():
continue
if invoice_id:
if line.invoice.id == invoice_id:
#if the invoice linked to the voucher line is equal to the invoice_id in context
@@ -640,10 +655,9 @@ class account_voucher(osv.osv):
#voucher line creation
for line in account_move_lines:
if line.credit and line.reconcile_partial_id and ttype == 'receipt':
continue
if line.debit 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:
amount_original = abs(line.amount_currency)
amount_unreconciled = abs(line.amount_residual_currency)
@@ -1069,7 +1083,7 @@ class account_voucher(osv.osv):
voucher_currency = voucher_brw.currency_id and voucher_brw.currency_id.id or voucher_brw.journal_id.company_id.currency_id.id
# We want to set it on the account move line as soon as the original line had a foreign currency
if line.move_line_id.currency_id and line.move_line_id.currency_id.id != company_currency:
# we compute the amount in that foreign currency.
# we compute the amount in that foreign currency.
if line.move_line_id.currency_id.id == current_currency:
# if the voucher and the voucher line share the same currency, there is no computation to do
sign = (move_line['debit'] - move_line['credit']) < 0 and -1 or 1
@@ -1288,7 +1302,7 @@ class account_voucher_line(osv.osv):
def _currency_id(self, cr, uid, ids, name, args, context=None):
'''
This function returns the currency id of a voucher line. It's either the currency of the
This function returns the currency id of a voucher line. It's either the currency of the
associated move line (if any) or the currency of the voucher or the company currency.
'''
res = {}