mirror of
https://github.com/frappe/erpnext.git
synced 2026-09-19 19:37:56 +00:00
Merge pull request #57477 from frappe/mergify/bp/version-15-hotfix/pr-57476
refactor: configurable date in reverse ERR journals (backport #57476)
This commit is contained in:
@@ -619,15 +619,26 @@ class ExchangeRateRevaluation(Document):
|
|||||||
if journals:
|
if journals:
|
||||||
from erpnext.accounts.doctype.journal_entry.journal_entry import make_reverse_journal_entry
|
from erpnext.accounts.doctype.journal_entry.journal_entry import make_reverse_journal_entry
|
||||||
|
|
||||||
for x in journals:
|
if drafts := frappe.db.get_all(
|
||||||
reversal = make_reverse_journal_entry(x)
|
"Journal Entry",
|
||||||
reversal.posting_date = nowdate()
|
filters={"docstatus": 0, "reversal_of": ["in", journals]},
|
||||||
reversal.submit()
|
pluck="name",
|
||||||
frappe.msgprint(
|
):
|
||||||
_("Revaluation journal for {0} has been created: {1}").format(
|
part = "journals are" if len(drafts) > 1 else "journal is"
|
||||||
frappe.bold(x), get_link_to_form("Journal Entry", reversal.name)
|
doc_links = ", ".join(["{}".format(get_link_to_form("Journal Entry", x)) for x in drafts])
|
||||||
)
|
frappe.throw(
|
||||||
|
msg=_("Reverse {0} already available in draft status: {1}").format(part, doc_links),
|
||||||
)
|
)
|
||||||
|
else:
|
||||||
|
for x in journals:
|
||||||
|
reversal = make_reverse_journal_entry(x)
|
||||||
|
reversal.posting_date = nowdate()
|
||||||
|
reversal.save()
|
||||||
|
frappe.msgprint(
|
||||||
|
_("A draft reverse journal for {0} has been created: {1}").format(
|
||||||
|
frappe.bold(x), get_link_to_form("Journal Entry", reversal.name)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def calculate_exchange_rate_using_last_gle(company, account, party_type, party):
|
def calculate_exchange_rate_using_last_gle(company, account, party_type, party):
|
||||||
|
|||||||
@@ -361,6 +361,14 @@ class TestExchangeRateRevaluation(AccountsTestMixin, FrappeTestCase):
|
|||||||
self.assertFalse(ret.get("reversals_posted"))
|
self.assertFalse(ret.get("reversals_posted"))
|
||||||
|
|
||||||
err.make_reverse_journal()
|
err.make_reverse_journal()
|
||||||
|
# submit
|
||||||
|
draft = frappe.db.get_all(
|
||||||
|
"Journal Entry",
|
||||||
|
filters={"docstatus": 0, "reversal_of": je.name, "voucher_type": "Exchange Rate Revaluation"},
|
||||||
|
pluck="name",
|
||||||
|
)
|
||||||
|
self.assertIsNotNone(draft)
|
||||||
|
frappe.get_doc("Journal Entry", draft[0]).submit()
|
||||||
ret = err.check_journal_and_reversal()
|
ret = err.check_journal_and_reversal()
|
||||||
self.assertTrue(ret.get("journals_posted"))
|
self.assertTrue(ret.get("journals_posted"))
|
||||||
self.assertTrue(ret.get("reversals_posted"))
|
self.assertTrue(ret.get("reversals_posted"))
|
||||||
|
|||||||
@@ -516,6 +516,7 @@ $.extend(erpnext.journal_entry, {
|
|||||||
lock_reversal_entry: function (frm) {
|
lock_reversal_entry: function (frm) {
|
||||||
frm.fields
|
frm.fields
|
||||||
.filter((field) => field.has_input)
|
.filter((field) => field.has_input)
|
||||||
|
.filter((field) => field.df.fieldname != "posting_date")
|
||||||
.forEach((field) => frm.set_df_property(field.df.fieldname, "read_only", 1));
|
.forEach((field) => frm.set_df_property(field.df.fieldname, "read_only", 1));
|
||||||
frm.set_df_property("accounts", "read_only", 1);
|
frm.set_df_property("accounts", "read_only", 1);
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user