summaryrefslogtreecommitdiff
path: root/addons/account
diff options
context:
space:
mode:
Diffstat (limited to 'addons/account')
-rw-r--r--addons/account/models/account_reconcile_model.py3
-rw-r--r--addons/account/tests/test_reconciliation_matching_rules.py38
2 files changed, 35 insertions, 6 deletions
diff --git a/addons/account/models/account_reconcile_model.py b/addons/account/models/account_reconcile_model.py
index 4b866bcbbb6..5a7a99f1ed8 100644
--- a/addons/account/models/account_reconcile_model.py
+++ b/addons/account/models/account_reconcile_model.py
@@ -884,8 +884,7 @@ class AccountReconcileModel(models.Model):
# Statement line amount is equal to the total residual.
if line_currency.is_zero(line_residual_after_reconciliation):
return True
-
- reconciled_percentage = (abs(line_residual) - abs(line_residual_after_reconciliation)) / abs(line_residual) * 100
+ reconciled_percentage = 100 - abs(line_residual_after_reconciliation) / abs(line_residual - line_residual_after_reconciliation) * 100
return reconciled_percentage >= self.match_total_amount_param
def _filter_candidates(self, candidates, aml_ids_to_exclude, reconciled_amls_ids):
diff --git a/addons/account/tests/test_reconciliation_matching_rules.py b/addons/account/tests/test_reconciliation_matching_rules.py
index c00fe13cbbd..ed01c56526b 100644
--- a/addons/account/tests/test_reconciliation_matching_rules.py
+++ b/addons/account/tests/test_reconciliation_matching_rules.py
@@ -350,7 +350,7 @@ class TestReconciliationMatchingRules(AccountTestInvoicingCommon):
def test_matching_fields_match_total_amount(self):
# Check match_total_amount: line amount >= total residual amount.
self.rule_1.match_total_amount_param = 90.0
- self.bank_line_1.amount += 5
+ self.bank_line_1.amount += 10
self._check_statement_matching(self.rule_1, {
self.bank_line_1.id: {'aml_ids': [self.invoice_line_1.id], 'model': self.rule_1, 'status': 'write_off', 'partner': self.bank_line_1.partner_id},
self.bank_line_2.id: {'aml_ids': [
@@ -361,11 +361,11 @@ class TestReconciliationMatchingRules(AccountTestInvoicingCommon):
self.cash_line_1.id: {'aml_ids': [self.invoice_line_4.id], 'model': self.rule_1, 'partner': self.cash_line_1.partner_id},
})
self.rule_1.match_total_amount_param = 100.0
- self.bank_line_1.amount -= 5
+ self.bank_line_1.amount -= 10
# Check match_total_amount: line amount <= total residual amount.
self.rule_1.match_total_amount_param = 90.0
- self.bank_line_1.amount -= 5
+ self.bank_line_1.amount -= 10
self._check_statement_matching(self.rule_1, {
self.bank_line_1.id: {'aml_ids': [self.invoice_line_1.id], 'model': self.rule_1, 'status': 'write_off', 'partner': self.bank_line_1.partner_id},
self.bank_line_2.id: {'aml_ids': [
@@ -376,7 +376,37 @@ class TestReconciliationMatchingRules(AccountTestInvoicingCommon):
self.cash_line_1.id: {'aml_ids': [self.invoice_line_4.id], 'model': self.rule_1, 'partner': self.cash_line_1.partner_id},
})
self.rule_1.match_total_amount_param = 100.0
- self.bank_line_1.amount += 5
+ self.bank_line_1.amount += 10
+
+ # Check match_total_amount: line amount >= total residual amount, match_total_amount_param just not matched.
+ self.rule_1.match_total_amount_param = 90.0
+ self.bank_line_1.amount += 10.01
+ self._check_statement_matching(self.rule_1, {
+ self.bank_line_1.id: {'aml_ids': []},
+ self.bank_line_2.id: {'aml_ids': [
+ self.invoice_line_1.id,
+ self.invoice_line_2.id,
+ self.invoice_line_3.id,
+ ], 'model': self.rule_1, 'partner': self.bank_line_2.partner_id},
+ self.cash_line_1.id: {'aml_ids': [self.invoice_line_4.id], 'model': self.rule_1, 'partner': self.cash_line_1.partner_id},
+ })
+ self.rule_1.match_total_amount_param = 100.0
+ self.bank_line_1.amount -= 10.01
+
+ # Check match_total_amount: line amount <= total residual amount, match_total_amount_param just not matched.
+ self.rule_1.match_total_amount_param = 90.0
+ self.bank_line_1.amount -= 10.01
+ self._check_statement_matching(self.rule_1, {
+ self.bank_line_1.id: {'aml_ids': []},
+ self.bank_line_2.id: {'aml_ids': [
+ self.invoice_line_1.id,
+ self.invoice_line_2.id,
+ self.invoice_line_3.id,
+ ], 'model': self.rule_1, 'partner': self.bank_line_2.partner_id},
+ self.cash_line_1.id: {'aml_ids': [self.invoice_line_4.id], 'model': self.rule_1, 'partner': self.cash_line_1.partner_id},
+ })
+ self.rule_1.match_total_amount_param = 100.0
+ self.bank_line_1.amount += 10.01
def test_matching_fields_match_partner_category_ids(self):
test_category = self.env['res.partner.category'].create({'name': 'Consulting Services'})