From 4df403a83385c983ea08eca13b3b109f224f4f66 Mon Sep 17 00:00:00 2001 From: Alberto Re Date: Fri, 7 Oct 2022 16:19:12 +0200 Subject: [PATCH] Fixed the amount_residual_currency on partial reconcile --- .../report/abstract_report.py | 25 +++++++++++++++- .../report/aged_partner_balance.py | 24 +++++++++++++-- account_financial_report/report/open_items.py | 30 +++++++++++++++++-- 3 files changed, 74 insertions(+), 5 deletions(-) diff --git a/account_financial_report/report/abstract_report.py b/account_financial_report/report/abstract_report.py index 5fe1ba47..12274615 100644 --- a/account_financial_report/report/abstract_report.py +++ b/account_financial_report/report/abstract_report.py @@ -66,6 +66,8 @@ class AgedPartnerBalanceReport(models.AbstractModel): company_id, partner_ids, only_posted_moves, + debit_amount_currency, + credit_amount_currency, ): debit_ids = set(debit_ids) credit_ids = set(credit_ids) @@ -87,9 +89,30 @@ class AgedPartnerBalanceReport(models.AbstractModel): for move_line in move_lines: ml_id = move_line["id"] if ml_id in debit_ids: - move_line["amount_residual"] += debit_amount[ml_id] + if move_line.get("amount_residual", False): + move_line["amount_residual"] += debit_amount[ml_id] + else: + move_line["amount_residual"] = debit_amount[ml_id] + if move_line.get("amount_residual_currency", False): + move_line["amount_residual_currency"] += debit_amount_currency[ + ml_id + ] + else: + move_line["amount_residual_currency"] = debit_amount_currency[ml_id] if ml_id in credit_ids: move_line["amount_residual"] -= credit_amount[ml_id] + if move_line.get("amount_residual", False): + move_line["amount_residual"] -= credit_amount[ml_id] + else: + move_line["amount_residual"] = -credit_amount[ml_id] + if move_line.get("amount_residual_currency", False): + move_line["amount_residual_currency"] -= credit_amount_currency[ + ml_id + ] + else: + move_line["amount_residual_currency"] = -credit_amount_currency[ + ml_id + ] # Set amount_currency=0 to keep the same behaviour as in v13 # Conditions: if there is no curency_id defined or it is equal # to the company's curency_id diff --git a/account_financial_report/report/aged_partner_balance.py b/account_financial_report/report/aged_partner_balance.py index 42bc8e23..0bd4c1f5 100644 --- a/account_financial_report/report/aged_partner_balance.py +++ b/account_financial_report/report/aged_partner_balance.py @@ -70,25 +70,41 @@ class AgedPartnerBalanceReport(models.AbstractModel): def _get_account_partial_reconciled(self, company_id, date_at_object): domain = [("max_date", ">", date_at_object), ("company_id", "=", company_id)] - fields = ["debit_move_id", "credit_move_id", "amount"] + fields = ["debit_move_id", "credit_move_id", "amount", "amount_currency"] accounts_partial_reconcile = self.env["account.partial.reconcile"].search_read( domain=domain, fields=fields ) debit_amount = {} + debit_amount_currency = {} credit_amount = {} + credit_amount_currency = {} for account_partial_reconcile_data in accounts_partial_reconcile: debit_move_id = account_partial_reconcile_data["debit_move_id"][0] credit_move_id = account_partial_reconcile_data["credit_move_id"][0] if debit_move_id not in debit_amount.keys(): debit_amount[debit_move_id] = 0.0 + debit_amount_currency[debit_move_id] = 0.0 + debit_amount_currency[debit_move_id] += account_partial_reconcile_data[ + "amount_currency" + ] debit_amount[debit_move_id] += account_partial_reconcile_data["amount"] if credit_move_id not in credit_amount.keys(): credit_amount[credit_move_id] = 0.0 + credit_amount_currency[credit_move_id] = 0.0 credit_amount[credit_move_id] += account_partial_reconcile_data["amount"] + credit_amount_currency[credit_move_id] += account_partial_reconcile_data[ + "amount_currency" + ] account_partial_reconcile_data.update( {"debit_move_id": debit_move_id, "credit_move_id": credit_move_id} ) - return accounts_partial_reconcile, debit_amount, credit_amount + return ( + accounts_partial_reconcile, + debit_amount, + credit_amount, + debit_amount_currency, + credit_amount_currency, + ) def _get_move_lines_data( self, @@ -115,6 +131,8 @@ class AgedPartnerBalanceReport(models.AbstractModel): acc_partial_rec, debit_amount, credit_amount, + debit_amount_currency, + credit_amount_currency, ) = self._get_account_partial_reconciled(company_id, date_at_object) if acc_partial_rec: ml_ids = list(map(operator.itemgetter("id"), move_lines)) @@ -135,6 +153,8 @@ class AgedPartnerBalanceReport(models.AbstractModel): company_id, partner_ids, only_posted_moves, + debit_amount_currency, + credit_amount_currency, ) move_lines = [ move_line diff --git a/account_financial_report/report/open_items.py b/account_financial_report/report/open_items.py index 18300e67..fea1b61e 100644 --- a/account_financial_report/report/open_items.py +++ b/account_financial_report/report/open_items.py @@ -16,25 +16,47 @@ class OpenItemsReport(models.AbstractModel): def _get_account_partial_reconciled(self, company_id, date_at_object): domain = [("max_date", ">", date_at_object), ("company_id", "=", company_id)] - fields = ["debit_move_id", "credit_move_id", "amount"] + fields = [ + "debit_move_id", + "credit_move_id", + "amount", + "debit_amount_currency", + "credit_amount_currency", + ] accounts_partial_reconcile = self.env["account.partial.reconcile"].search_read( domain=domain, fields=fields ) debit_amount = {} + debit_amount_currency = {} credit_amount = {} + credit_amount_currency = {} for account_partial_reconcile_data in accounts_partial_reconcile: debit_move_id = account_partial_reconcile_data["debit_move_id"][0] credit_move_id = account_partial_reconcile_data["credit_move_id"][0] if debit_move_id not in debit_amount.keys(): debit_amount[debit_move_id] = 0.0 + debit_amount_currency[debit_move_id] = 0.0 debit_amount[debit_move_id] += account_partial_reconcile_data["amount"] + debit_amount_currency[debit_move_id] += account_partial_reconcile_data[ + "debit_amount_currency" + ] if credit_move_id not in credit_amount.keys(): credit_amount[credit_move_id] = 0.0 + credit_amount_currency[credit_move_id] = 0.0 credit_amount[credit_move_id] += account_partial_reconcile_data["amount"] + credit_amount_currency[credit_move_id] += account_partial_reconcile_data[ + "credit_amount_currency" + ] account_partial_reconcile_data.update( {"debit_move_id": debit_move_id, "credit_move_id": credit_move_id} ) - return accounts_partial_reconcile, debit_amount, credit_amount + return ( + accounts_partial_reconcile, + debit_amount, + credit_amount, + debit_amount_currency, + credit_amount_currency, + ) def _get_data( self, @@ -60,6 +82,8 @@ class OpenItemsReport(models.AbstractModel): acc_partial_rec, debit_amount, credit_amount, + debit_amount_currency, + credit_amount_currency, ) = self._get_account_partial_reconciled(company_id, date_at_object) if acc_partial_rec: ml_ids = list(map(operator.itemgetter("id"), move_lines)) @@ -80,6 +104,8 @@ class OpenItemsReport(models.AbstractModel): company_id, partner_ids, only_posted_moves, + debit_amount_currency, + credit_amount_currency, ) move_lines = [ move_line