diff --git a/addons/account/models/reconciliation_widget.py b/addons/account/models/reconciliation_widget.py index 8bcd22ab50d..c7700ae823a 100644 --- a/addons/account/models/reconciliation_widget.py +++ b/addons/account/models/reconciliation_widget.py @@ -522,22 +522,16 @@ class AccountReconciliation(models.AbstractModel): ]) domain = expression.OR([domain_reconciliation, domain_matching]) - partner_domain = [] if partner_id: - partner_domain = [('partner_id', '=', partner_id)] - domain = expression.AND([domain, partner_domain]) + domain = expression.AND([domain, [('partner_id', '=', partner_id)]]) # Domain factorized for all reconciliation use cases if search_str: str_domain = self._domain_move_lines(search_str=search_str) - if not partner_id: - partner_domain = [('partner_id.name', 'ilike', search_str)] - str_domain = expression.OR([ str_domain, - partner_domain, + [('partner_id.name', 'ilike', search_str)] ]) - domain = expression.AND([ domain, str_domain @@ -553,7 +547,6 @@ class AccountReconciliation(models.AbstractModel): if st_line.company_id.account_bank_reconciliation_start: domain = expression.AND([domain, [('date', '>=', st_line.company_id.account_bank_reconciliation_start)]]) - return domain @api.model diff --git a/addons/account/tests/test_reconciliation_widget.py b/addons/account/tests/test_reconciliation_widget.py index 2bee0773251..840059ceb5c 100644 --- a/addons/account/tests/test_reconciliation_widget.py +++ b/addons/account/tests/test_reconciliation_widget.py @@ -58,6 +58,7 @@ class TestReconciliationWidget(TestReconciliation): def test_filter_partner1(self): inv1 = self.create_invoice(currency_id=self.currency_euro_id) inv2 = self.create_invoice(currency_id=self.currency_euro_id) + partner = inv1.partner_id receivable1 = inv1.move_id.line_ids.filtered(lambda l: l.account_id.internal_type == 'receivable') receivable2 = inv2.move_id.line_ids.filtered(lambda l: l.account_id.internal_type == 'receivable') @@ -76,7 +77,31 @@ class TestReconciliationWidget(TestReconciliation): 'date': time.strftime('%Y-07-15'), }) - # This is like opening the widget, and type "deco" in the filter + # This is like input a partner in the widget + mv_lines_rec = self.env['account.reconciliation.widget'].get_move_lines_for_bank_statement_line( + bank_stmt_line.id, + partner_id=partner.id, + excluded_ids=[], + search_str=False + ) + mv_lines_ids = [l['id'] for l in mv_lines_rec] + + self.assertTrue(receivable1.id in mv_lines_ids) + self.assertTrue(receivable2.id in mv_lines_ids) + + # With a partner set, type the invoice reference in the filter + mv_lines_rec = self.env['account.reconciliation.widget'].get_move_lines_for_bank_statement_line( + bank_stmt_line.id, + partner_id=partner.id, + excluded_ids=[], + search_str=inv1.reference + ) + mv_lines_ids = [l['id'] for l in mv_lines_rec] + + self.assertTrue(receivable1.id in mv_lines_ids) + self.assertFalse(receivable2.id in mv_lines_ids) + + # Without a partner set, type "deco" in the filter mv_lines_rec = self.env['account.reconciliation.widget'].get_move_lines_for_bank_statement_line( bank_stmt_line.id, partner_id=False, @@ -88,8 +113,7 @@ class TestReconciliationWidget(TestReconciliation): self.assertTrue(receivable1.id in mv_lines_ids) self.assertTrue(receivable2.id in mv_lines_ids) - # This is like clicking on the first receivable - partner = inv1.partner_id + # With a partner set, type "deco" in the filter and click on the first receivable mv_lines_rec = self.env['account.reconciliation.widget'].get_move_lines_for_bank_statement_line( bank_stmt_line.id, partner_id=partner.id,