From e0fbf0c042f0a424bc59fb09c47e07582cb3e704 Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Mon, 3 Jul 2023 14:30:15 +0530 Subject: [PATCH 1/3] refactor: checkbox for enabling auto ERR creation (cherry picked from commit 6644311c8b4c2398729e6b07ef5845f7fed6795e) # Conflicts: # erpnext/setup/doctype/company/company.json --- erpnext/setup/doctype/company/company.json | 59 ++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/erpnext/setup/doctype/company/company.json b/erpnext/setup/doctype/company/company.json index f087d996ffe..47ab36a7013 100644 --- a/erpnext/setup/doctype/company/company.json +++ b/erpnext/setup/doctype/company/company.json @@ -90,6 +90,9 @@ "depreciation_cost_center", "capital_work_in_progress_account", "asset_received_but_not_billed", + "exchange_rate_revaluation_settings_section", + "auto_exchange_rate_revaluation", + "auto_err_frequency", "budget_detail", "exception_budget_approver_role", "registration_info", @@ -694,6 +697,58 @@ "label": "Default Provisional Account", "no_copy": 1, "options": "Account" +<<<<<<< HEAD +======= + }, + { + "fieldname": "advance_payments_section", + "fieldtype": "Section Break", + "label": "Advance Payments" + }, + { + "depends_on": "eval:doc.book_advance_payments_in_separate_party_account", + "fieldname": "default_advance_received_account", + "fieldtype": "Link", + "label": "Default Advance Received Account", + "mandatory_depends_on": "book_advance_payments_as_liability", + "options": "Account" + }, + { + "depends_on": "eval:doc.book_advance_payments_in_separate_party_account", + "fieldname": "default_advance_paid_account", + "fieldtype": "Link", + "label": "Default Advance Paid Account", + "mandatory_depends_on": "book_advance_payments_as_liability", + "options": "Account" + }, + { + "fieldname": "column_break_fwcf", + "fieldtype": "Column Break" + }, + { + "default": "0", + "description": "Enabling this option will allow you to record -

1. Advances Received in a Liability Account instead of the Asset Account

2. Advances Paid in an Asset Account instead of the Liability Account", + "fieldname": "book_advance_payments_in_separate_party_account", + "fieldtype": "Check", + "label": "Book Advance Payments in Separate Party Account" + }, + { + "fieldname": "exchange_rate_revaluation_settings_section", + "fieldtype": "Section Break", + "label": "Exchange Rate Revaluation Settings" + }, + { + "default": "0", + "fieldname": "auto_exchange_rate_revaluation", + "fieldtype": "Check", + "label": "Auto Create Exchange Rate Revaluation" + }, + { + "fieldname": "auto_err_frequency", + "fieldtype": "Select", + "label": "Frequency", + "options": "Daily\nWeekly" +>>>>>>> 6644311c8b (refactor: checkbox for enabling auto ERR creation) } ], "icon": "fa fa-building", @@ -701,7 +756,11 @@ "image_field": "company_logo", "is_tree": 1, "links": [], +<<<<<<< HEAD "modified": "2022-08-16 16:09:02.327724", +======= + "modified": "2023-07-03 14:29:56.262188", +>>>>>>> 6644311c8b (refactor: checkbox for enabling auto ERR creation) "modified_by": "Administrator", "module": "Setup", "name": "Company", From 862c5145c168af46e37c3dd03ea9ebadb61006f7 Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Mon, 3 Jul 2023 14:35:33 +0530 Subject: [PATCH 2/3] refactor: submit and make JV through background job (cherry picked from commit 4f51c5a433ca8cf3fd688e262e100f63c98b65f9) # Conflicts: # erpnext/setup/doctype/company/company.json --- .../exchange_rate_revaluation.py | 6 +++ erpnext/accounts/utils.py | 44 +++++++++++++++++++ erpnext/hooks.py | 4 ++ erpnext/setup/doctype/company/company.json | 14 ++++++ 4 files changed, 68 insertions(+) diff --git a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py index 598db642f33..c52ea24f25a 100644 --- a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py +++ b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py @@ -93,6 +93,12 @@ class ExchangeRateRevaluation(Document): return True + def fetch_and_calculate_accounts_data(self): + accounts = self.get_accounts_data() + if accounts: + for acc in accounts: + self.append("accounts", acc) + @frappe.whitelist() def get_accounts_data(self): self.validate_mandatory() diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py index 99c4fb31b5e..0bd3e354dfb 100644 --- a/erpnext/accounts/utils.py +++ b/erpnext/accounts/utils.py @@ -1388,6 +1388,50 @@ def check_and_delete_linked_reports(report): frappe.delete_doc("Desktop Icon", icon) +def create_err_and_its_journals(companies: list = 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 + + 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() + + +def auto_create_exchange_rate_revaluation_daily() -> None: + """ + Executed by background job + """ + companies = frappe.db.get_all( + "Company", + filters={"auto_exchange_rate_revaluation": 1, "auto_err_frequency": "Daily"}, + fields=["name", "submit_err_jv"], + ) + create_err_and_its_journals(companies) + + +def auto_create_exchange_rate_revaluation_weekly() -> None: + """ + Executed by background job + """ + companies = frappe.db.get_all( + "Company", + filters={"auto_exchange_rate_revaluation": 1, "auto_err_frequency": "Weekly"}, + fields=["name", "submit_err_jv"], + ) + create_err_and_its_journals(companies) + + def get_payment_ledger_entries(gl_entries, cancel=0): ple_map = [] if gl_entries: diff --git a/erpnext/hooks.py b/erpnext/hooks.py index 0ba8a89bea3..0ac7baacaed 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -420,6 +420,10 @@ scheduler_events = { "erpnext.selling.doctype.quotation.quotation.set_expired_status", "erpnext.buying.doctype.supplier_quotation.supplier_quotation.set_expired_status", "erpnext.accounts.doctype.process_statement_of_accounts.process_statement_of_accounts.send_auto_email", + "erpnext.accounts.utils.auto_create_exchange_rate_revaluation_daily", + ], + "weekly": [ + "erpnext.accounts.utils.auto_create_exchange_rate_revaluation_weekly", ], "daily_long": [ "erpnext.setup.doctype.email_digest.email_digest.send", diff --git a/erpnext/setup/doctype/company/company.json b/erpnext/setup/doctype/company/company.json index 47ab36a7013..c1163097d06 100644 --- a/erpnext/setup/doctype/company/company.json +++ b/erpnext/setup/doctype/company/company.json @@ -93,6 +93,7 @@ "exchange_rate_revaluation_settings_section", "auto_exchange_rate_revaluation", "auto_err_frequency", + "submit_err_jv", "budget_detail", "exception_budget_approver_role", "registration_info", @@ -748,7 +749,16 @@ "fieldtype": "Select", "label": "Frequency", "options": "Daily\nWeekly" +<<<<<<< HEAD >>>>>>> 6644311c8b (refactor: checkbox for enabling auto ERR creation) +======= + }, + { + "default": "0", + "fieldname": "submit_err_jv", + "fieldtype": "Check", + "label": "Submit ERR Journals?" +>>>>>>> 4f51c5a433 (refactor: submit and make JV through background job) } ], "icon": "fa fa-building", @@ -756,11 +766,15 @@ "image_field": "company_logo", "is_tree": 1, "links": [], +<<<<<<< HEAD <<<<<<< HEAD "modified": "2022-08-16 16:09:02.327724", ======= "modified": "2023-07-03 14:29:56.262188", >>>>>>> 6644311c8b (refactor: checkbox for enabling auto ERR creation) +======= + "modified": "2023-07-07 05:41:41.537256", +>>>>>>> 4f51c5a433 (refactor: submit and make JV through background job) "modified_by": "Administrator", "module": "Setup", "name": "Company", From 881476b4fb1b6723b46f6a8f353677bad7351b17 Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Mon, 10 Jul 2023 15:09:37 +0530 Subject: [PATCH 3/3] chore: fix merge conflict --- erpnext/setup/doctype/company/company.json | 48 +--------------------- 1 file changed, 1 insertion(+), 47 deletions(-) diff --git a/erpnext/setup/doctype/company/company.json b/erpnext/setup/doctype/company/company.json index c1163097d06..38f1c0bcdb2 100644 --- a/erpnext/setup/doctype/company/company.json +++ b/erpnext/setup/doctype/company/company.json @@ -698,40 +698,6 @@ "label": "Default Provisional Account", "no_copy": 1, "options": "Account" -<<<<<<< HEAD -======= - }, - { - "fieldname": "advance_payments_section", - "fieldtype": "Section Break", - "label": "Advance Payments" - }, - { - "depends_on": "eval:doc.book_advance_payments_in_separate_party_account", - "fieldname": "default_advance_received_account", - "fieldtype": "Link", - "label": "Default Advance Received Account", - "mandatory_depends_on": "book_advance_payments_as_liability", - "options": "Account" - }, - { - "depends_on": "eval:doc.book_advance_payments_in_separate_party_account", - "fieldname": "default_advance_paid_account", - "fieldtype": "Link", - "label": "Default Advance Paid Account", - "mandatory_depends_on": "book_advance_payments_as_liability", - "options": "Account" - }, - { - "fieldname": "column_break_fwcf", - "fieldtype": "Column Break" - }, - { - "default": "0", - "description": "Enabling this option will allow you to record -

1. Advances Received in a Liability Account instead of the Asset Account

2. Advances Paid in an Asset Account instead of the Liability Account", - "fieldname": "book_advance_payments_in_separate_party_account", - "fieldtype": "Check", - "label": "Book Advance Payments in Separate Party Account" }, { "fieldname": "exchange_rate_revaluation_settings_section", @@ -749,16 +715,12 @@ "fieldtype": "Select", "label": "Frequency", "options": "Daily\nWeekly" -<<<<<<< HEAD ->>>>>>> 6644311c8b (refactor: checkbox for enabling auto ERR creation) -======= }, { "default": "0", "fieldname": "submit_err_jv", "fieldtype": "Check", "label": "Submit ERR Journals?" ->>>>>>> 4f51c5a433 (refactor: submit and make JV through background job) } ], "icon": "fa fa-building", @@ -766,15 +728,7 @@ "image_field": "company_logo", "is_tree": 1, "links": [], -<<<<<<< HEAD -<<<<<<< HEAD - "modified": "2022-08-16 16:09:02.327724", -======= - "modified": "2023-07-03 14:29:56.262188", ->>>>>>> 6644311c8b (refactor: checkbox for enabling auto ERR creation) -======= "modified": "2023-07-07 05:41:41.537256", ->>>>>>> 4f51c5a433 (refactor: submit and make JV through background job) "modified_by": "Administrator", "module": "Setup", "name": "Company", @@ -837,4 +791,4 @@ "sort_order": "ASC", "states": [], "track_changes": 1 -} \ No newline at end of file +}