[MERGE] fix of lp:901089
bzr revid: qdp-launchpad@openerp.com-20120224111952-gkdw9z0w169itq97
This commit is contained in:
@@ -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 = {}
|
||||
|
||||
Reference in New Issue
Block a user