diff --git a/check_run/check_run/__init__.py b/check_run/check_run/__init__.py index c10c1ca3..6b52509a 100644 --- a/check_run/check_run/__init__.py +++ b/check_run/check_run/__init__.py @@ -4,9 +4,8 @@ import json import frappe - -from erpnext.accounts.doctype.purchase_invoice.purchase_invoice import PurchaseInvoice from erpnext.accounts.doctype.journal_entry.journal_entry import JournalEntry +from erpnext.accounts.doctype.purchase_invoice.purchase_invoice import PurchaseInvoice from hrms.hr.doctype.expense_claim.expense_claim import ExpenseClaim diff --git a/check_run/check_run/doctype/check_run/check_run.js b/check_run/check_run/doctype/check_run/check_run.js index 1a950f2b..c9c58a47 100644 --- a/check_run/check_run/doctype/check_run/check_run.js +++ b/check_run/check_run/doctype/check_run/check_run.js @@ -45,6 +45,7 @@ frappe.ui.form.on('Check Run', { e.stopPropagation() }) } + change_amount_label(frm) settings_button(frm) permit_first_user(frm) get_defaults(frm) @@ -445,3 +446,15 @@ function check_settings(frm) { }) } } + +function change_amount_label(frm) { + frappe + .xcall('check_run.check_run.doctype.check_run.check_run.get_default_currency', { company: frm.doc.company }) + .then(r => { + if (r) { + if (r != frm.pay_to_account_currency) { + cur_frm.fields_dict.amount_check_run.set_label('Estimated Amount in Check Run') + } + } + }) +} diff --git a/check_run/check_run/doctype/check_run/check_run.py b/check_run/check_run/doctype/check_run/check_run.py index 009f3d9d..9813798a 100644 --- a/check_run/check_run/doctype/check_run/check_run.py +++ b/check_run/check_run/doctype/check_run/check_run.py @@ -921,3 +921,8 @@ def get_authorized_role_for_ach(doc): "role_allowed_to_download_ach_file_multiple_times", ) return role + + +@frappe.whitelist() +def get_default_currency(company): + return frappe.db.get_value("Company", company, "default_currency") diff --git a/check_run/check_run/doctype/check_run/test_check_run.py b/check_run/check_run/doctype/check_run/test_check_run.py index 3f829765..ef82f53f 100644 --- a/check_run/check_run/doctype/check_run/test_check_run.py +++ b/check_run/check_run/doctype/check_run/test_check_run.py @@ -1,9 +1,10 @@ # Copyright (c) 2022, AgriTheory and Contributors # See license.txt -import frappe import unittest +import frappe + class TestCheckRun(unittest.TestCase): pass diff --git a/check_run/overrides/payment_entry.py b/check_run/overrides/payment_entry.py index 8656185e..396630eb 100644 --- a/check_run/overrides/payment_entry.py +++ b/check_run/overrides/payment_entry.py @@ -1,16 +1,17 @@ # Copyright (c) 2023, AgriTheory and contributors # For license information, please see license.txt +import json + import frappe -from frappe.utils import get_link_to_form, comma_and, flt -from erpnext.accounts.general_ledger import make_gl_entries, process_gl_map -from frappe.utils.data import getdate from erpnext.accounts.doctype.payment_entry.payment_entry import ( PaymentEntry, get_outstanding_reference_documents, ) +from erpnext.accounts.general_ledger import make_gl_entries, process_gl_map from frappe import _ -import json +from frappe.utils import comma_and, flt, get_link_to_form +from frappe.utils.data import getdate class CheckRunPaymentEntry(PaymentEntry): @@ -60,7 +61,7 @@ def get_valid_reference_doctypes(self): """ Because Check Run processes multiple payment entries in a background queue, errors generally do not include enough data to identify the problem since there were written and remain appropriate for the context of an individual - Payment Entry. This code is copied from: + Payment Entry. This code is copied from: https://github.com/frappe/erpnext/blob/version-14/erpnext/accounts/doctype/payment_entry/payment_entry.py#L164 diff --git a/check_run/public/js/check_run/check_run.js b/check_run/public/js/check_run/check_run.js index 00f7c3c9..9793c801 100644 --- a/check_run/public/js/check_run/check_run.js +++ b/check_run/public/js/check_run/check_run.js @@ -50,11 +50,22 @@ check_run.mount = frm => { frm.$check_run.provide('$check_run', check_run) } -check_run.total = frm => { +check_run.total = async frm => { let _frm = unref(frm) let r = Object.values(check_run.transactions).reduce((partialSum, t) => { return t.pay ? partialSum + t.amount : partialSum }, 0) - _frm.set_value('amount_check_run', r) + + var company_currency = frappe.get_doc(':Company', _frm.doc.company).default_currency + + var amount_check_run = await frappe.xcall('erpnext.setup.utils.get_exchange_rate', { + from_currency: _frm.pay_to_account_currency, + to_currency: company_currency, + }) + if (r > 0) { + _frm.set_value('amount_check_run', r * amount_check_run) + } else { + _frm.set_value('amount_check_run', r) + } return r } diff --git a/check_run/tests/setup.py b/check_run/tests/setup.py index 5b4afc7c..012a21b1 100644 --- a/check_run/tests/setup.py +++ b/check_run/tests/setup.py @@ -2,12 +2,11 @@ import types import frappe -from frappe.utils.data import add_days, flt -from frappe.desk.page.setup_wizard.setup_wizard import setup_complete -from erpnext.setup.utils import enable_all_roles_and_domains, set_defaults_for_tests from erpnext.accounts.doctype.account.account import update_account_number from erpnext.accounts.doctype.purchase_invoice.purchase_invoice import make_debit_note - +from erpnext.setup.utils import enable_all_roles_and_domains, set_defaults_for_tests +from frappe.desk.page.setup_wizard.setup_wizard import setup_complete +from frappe.utils.data import add_days, flt from check_run.tests.fixtures import employees, suppliers, tax_authority