From 6b07caac88336ad997dbd9fb4593810effc0a354 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Mon, 9 Mar 2015 09:15:19 +0100 Subject: [PATCH] [FIX] account_payment_partner: Fix for finding account move lines without invoice (manual entries in receivables/payables) --- .../wizard/payment_order_create.py | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/account_payment_partner/wizard/payment_order_create.py b/account_payment_partner/wizard/payment_order_create.py index c26b7f9d9..a07ed280e 100644 --- a/account_payment_partner/wizard/payment_order_create.py +++ b/account_payment_partner/wizard/payment_order_create.py @@ -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