[FIX] account_payment: supplier invoice on more then one payment oder
The field move_line_id only shows account move lines that still have
an amount to pay. This was lost during 333e83fc5b
.
opw: 625946
This commit is contained in:
parent
74497a667f
commit
9562bf8398
|
@ -19,12 +19,47 @@
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
from openerp.osv import osv
|
from openerp.osv import fields, osv
|
||||||
from openerp.tools.translate import _
|
from openerp.tools.translate import _
|
||||||
|
from operator import itemgetter
|
||||||
|
|
||||||
class account_move_line(osv.osv):
|
class account_move_line(osv.osv):
|
||||||
_inherit = "account.move.line"
|
_inherit = "account.move.line"
|
||||||
|
|
||||||
|
def _amount_residual(self, cr, uid, ids, field_names, args, context=None):
|
||||||
|
return self._amount_residual(self, cr, uid, ids, field_names, args, context=context)
|
||||||
|
|
||||||
|
def _to_pay_search(self, cr, uid, obj, name, args, context=None):
|
||||||
|
if not args:
|
||||||
|
return []
|
||||||
|
line_obj = self.pool.get('account.move.line')
|
||||||
|
query = line_obj._query_get(cr, uid, context={})
|
||||||
|
where = ' and '.join(map(lambda x: '''(SELECT
|
||||||
|
CASE WHEN l.amount_currency < 0
|
||||||
|
THEN - l.amount_currency
|
||||||
|
ELSE l.credit
|
||||||
|
END - coalesce(sum(pl.amount_currency), 0)
|
||||||
|
FROM payment_line pl
|
||||||
|
INNER JOIN payment_order po ON (pl.order_id = po.id)
|
||||||
|
WHERE move_line_id = l.id
|
||||||
|
AND po.state != 'cancel'
|
||||||
|
) %(operator)s %%s ''' % {'operator': x[1]}, args))
|
||||||
|
sql_args = tuple(map(itemgetter(2), args))
|
||||||
|
|
||||||
|
cr.execute(('''SELECT id
|
||||||
|
FROM account_move_line l
|
||||||
|
WHERE account_id IN (select id
|
||||||
|
FROM account_account
|
||||||
|
WHERE type=%s AND active)
|
||||||
|
AND reconcile_id IS null
|
||||||
|
AND credit > 0
|
||||||
|
AND ''' + where + ' and ' + query), ('payable',)+sql_args )
|
||||||
|
|
||||||
|
res = cr.fetchall()
|
||||||
|
if not res:
|
||||||
|
return [('id', '=', '0')]
|
||||||
|
return [('id', 'in', map(lambda x:x[0], res))]
|
||||||
|
|
||||||
def line2bank(self, cr, uid, ids, payment_type=None, context=None):
|
def line2bank(self, cr, uid, ids, payment_type=None, context=None):
|
||||||
"""
|
"""
|
||||||
Try to return for each Ledger Posting line a corresponding bank
|
Try to return for each Ledger Posting line a corresponding bank
|
||||||
|
@ -57,5 +92,10 @@ class account_move_line(osv.osv):
|
||||||
raise osv.except_osv(_('Error!'), _('There is no partner defined on the entry line.'))
|
raise osv.except_osv(_('Error!'), _('There is no partner defined on the entry line.'))
|
||||||
return line2bank
|
return line2bank
|
||||||
|
|
||||||
|
_columns = {
|
||||||
|
'amount_to_pay': fields.function(_amount_residual,
|
||||||
|
type='float', string='Amount to pay', fnct_search=_to_pay_search),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||||
|
|
|
@ -93,7 +93,7 @@
|
||||||
<notebook>
|
<notebook>
|
||||||
<page string="Payment">
|
<page string="Payment">
|
||||||
<group col="4">
|
<group col="4">
|
||||||
<field name="move_line_id" on_change="onchange_move_line(move_line_id,parent.mode,parent.date_prefered,parent.date_scheduled,currency,company_currency)" domain="[('reconcile_id','=', False), ('credit', '>',0), ('account_id.reconcile', '=', True)] "/>
|
<field name="move_line_id" on_change="onchange_move_line(move_line_id,parent.mode,parent.date_prefered,parent.date_scheduled,currency,company_currency)" domain="[('reconcile_id','=', False), ('credit', '>',0), ('account_id.reconcile', '=', True),('amount_to_pay','>', 0)] "/>
|
||||||
<separator colspan="4" string="Transaction Information"/>
|
<separator colspan="4" string="Transaction Information"/>
|
||||||
<field name="date"/>
|
<field name="date"/>
|
||||||
<label for="amount_currency" string="Amount"/>
|
<label for="amount_currency" string="Amount"/>
|
||||||
|
|
Loading…
Reference in New Issue