[FIX] account_payment_partner: Fix for finding account move lines without invoice (manual entries in receivables/payables)

This commit is contained in:
Pedro M. Baeza
2015-03-09 09:15:19 +01:00
parent bb2713aa71
commit 6b07caac88

View File

@@ -30,8 +30,29 @@ class PaymentOrderCreate(models.TransientModel):
def extend_payment_order_domain(self, payment_order, domain):
res = super(PaymentOrderCreate, self).extend_payment_order_domain(
payment_order, domain)
domain += ['|', '|',
('invoice', '=', False),
# Monkey patch for fixing problem with the core search function
# when args has ('invoice', '=', False), referred in the issue #4857
# (https://github.com/odoo/odoo/issues/4857)
#
# Original domain:
# domain += ['|', '|',
# ('invoice', '=', False),
# ('invoice.payment_mode_id', '=', False),
# ('invoice.payment_mode_id', '=', payment_order.mode.id)]
self.env.cr.execute(
"SELECT l.id "
"FROM account_move_line l "
"LEFT OUTER JOIN account_invoice i "
"ON l.move_id = i.move_id "
"INNER JOIN account_account a "
"ON a.id = l.account_id "
"WHERE i.id IS NULL"
" AND l.reconcile_id IS NULL"
" AND a.type in ('receivable', 'payable')")
ids = [x[0] for x in self.env.cr.fetchall()]
domain += ['|',
('id', 'in', ids),
'|',
('invoice.payment_mode_id', '=', False),
('invoice.payment_mode_id', '=', payment_order.mode.id)]
return res