From b10e7bf7b5ca45bfa999ef49954d1d09717358f2 Mon Sep 17 00:00:00 2001 From: ravibharathi656 Date: Wed, 5 Nov 2025 16:39:45 +0530 Subject: [PATCH] refactor: enqueue exchange rate revaluation per company --- erpnext/accounts/utils.py | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py index 03ac3ebab4f..351e5e4ac1e 100644 --- a/erpnext/accounts/utils.py +++ b/erpnext/accounts/utils.py @@ -1786,24 +1786,22 @@ def check_and_delete_linked_reports(report): frappe.delete_doc("Desktop Icon", icon) -def create_err_and_its_journals(companies: list | None = None) -> None: - if companies: - for company in companies: - err = frappe.new_doc("Exchange Rate Revaluation") - err.company = company.name - err.posting_date = nowdate() - err.rounding_loss_allowance = 0.0 +def create_err_and_its_journals(company: dict) -> None: + err = frappe.new_doc("Exchange Rate Revaluation") + err.company = company.name + err.posting_date = nowdate() + err.rounding_loss_allowance = 0.0 - err.fetch_and_calculate_accounts_data() - if err.accounts: - err.save().submit() - response = err.make_jv_entries() + err.fetch_and_calculate_accounts_data() + if err.accounts: + err.save().submit() + response = err.make_jv_entries() - if company.submit_err_jv: - jv = response.get("revaluation_jv", None) - jv and frappe.get_doc("Journal Entry", jv).submit() - jv = response.get("zero_balance_jv", None) - jv and frappe.get_doc("Journal Entry", jv).submit() + if company.submit_err_jv: + jv = response.get("revaluation_jv", None) + jv and frappe.get_doc("Journal Entry", jv).submit() + jv = response.get("zero_balance_jv", None) + jv and frappe.get_doc("Journal Entry", jv).submit() def _auto_create_exchange_rate_revaluation_for(frequency: str) -> None: @@ -1816,7 +1814,14 @@ def _auto_create_exchange_rate_revaluation_for(frequency: str) -> None: filters={"auto_exchange_rate_revaluation": 1, "auto_err_frequency": frequency}, fields=["name", "submit_err_jv"], ) - create_err_and_its_journals(companies) + + if companies: + for company in companies: + frappe.enqueue( + "erpnext.accounts.utils.create_err_and_its_journals", + company=company, + queue="long", + ) def auto_create_exchange_rate_revaluation_daily() -> None: