Merge pull request #40257 from GursheenK/remove-balance-fetching-in-JV
perf: remove unnecessary fetching of balances in JV
This commit is contained in:
@@ -184,7 +184,6 @@ var update_jv_details = function(doc, r) {
|
|||||||
$.each(r, function(i, d) {
|
$.each(r, function(i, d) {
|
||||||
var row = frappe.model.add_child(doc, "Journal Entry Account", "accounts");
|
var row = frappe.model.add_child(doc, "Journal Entry Account", "accounts");
|
||||||
frappe.model.set_value(row.doctype, row.name, "account", d.account)
|
frappe.model.set_value(row.doctype, row.name, "account", d.account)
|
||||||
frappe.model.set_value(row.doctype, row.name, "balance", d.balance)
|
|
||||||
});
|
});
|
||||||
refresh_field("accounts");
|
refresh_field("accounts");
|
||||||
}
|
}
|
||||||
@@ -193,7 +192,6 @@ erpnext.accounts.JournalEntry = class JournalEntry extends frappe.ui.form.Contro
|
|||||||
onload() {
|
onload() {
|
||||||
this.load_defaults();
|
this.load_defaults();
|
||||||
this.setup_queries();
|
this.setup_queries();
|
||||||
this.setup_balance_formatter();
|
|
||||||
erpnext.accounts.dimensions.setup_dimension_filters(this.frm, this.frm.doctype);
|
erpnext.accounts.dimensions.setup_dimension_filters(this.frm, this.frm.doctype);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -292,19 +290,6 @@ erpnext.accounts.JournalEntry = class JournalEntry extends frappe.ui.form.Contro
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_balance_formatter() {
|
|
||||||
const formatter = function(value, df, options, doc) {
|
|
||||||
var currency = frappe.meta.get_field_currency(df, doc);
|
|
||||||
var dr_or_cr = value ? ('<label>' + (value > 0.0 ? __("Dr") : __("Cr")) + '</label>') : "";
|
|
||||||
return "<div style='text-align: right'>"
|
|
||||||
+ ((value==null || value==="") ? "" : format_currency(Math.abs(value), currency))
|
|
||||||
+ " " + dr_or_cr
|
|
||||||
+ "</div>";
|
|
||||||
};
|
|
||||||
this.frm.fields_dict.accounts.grid.update_docfield_property('balance', 'formatter', formatter);
|
|
||||||
this.frm.fields_dict.accounts.grid.update_docfield_property('party_balance', 'formatter', formatter);
|
|
||||||
}
|
|
||||||
|
|
||||||
reference_name(doc, cdt, cdn) {
|
reference_name(doc, cdt, cdn) {
|
||||||
var d = frappe.get_doc(cdt, cdn);
|
var d = frappe.get_doc(cdt, cdn);
|
||||||
|
|
||||||
@@ -400,23 +385,22 @@ frappe.ui.form.on("Journal Entry Account", {
|
|||||||
if(!d.account && d.party_type && d.party) {
|
if(!d.account && d.party_type && d.party) {
|
||||||
if(!frm.doc.company) frappe.throw(__("Please select Company"));
|
if(!frm.doc.company) frappe.throw(__("Please select Company"));
|
||||||
return frm.call({
|
return frm.call({
|
||||||
method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_party_account_and_balance",
|
method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_party_account_and_currency",
|
||||||
child: d,
|
child: d,
|
||||||
args: {
|
args: {
|
||||||
company: frm.doc.company,
|
company: frm.doc.company,
|
||||||
party_type: d.party_type,
|
party_type: d.party_type,
|
||||||
party: d.party,
|
party: d.party,
|
||||||
cost_center: d.cost_center
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
cost_center: function(frm, dt, dn) {
|
cost_center: function(frm, dt, dn) {
|
||||||
erpnext.journal_entry.set_account_balance(frm, dt, dn);
|
erpnext.journal_entry.set_account_details(frm, dt, dn);
|
||||||
},
|
},
|
||||||
|
|
||||||
account: function(frm, dt, dn) {
|
account: function(frm, dt, dn) {
|
||||||
erpnext.journal_entry.set_account_balance(frm, dt, dn);
|
erpnext.journal_entry.set_account_details(frm, dt, dn);
|
||||||
},
|
},
|
||||||
|
|
||||||
debit_in_account_currency: function(frm, cdt, cdn) {
|
debit_in_account_currency: function(frm, cdt, cdn) {
|
||||||
@@ -600,14 +584,14 @@ $.extend(erpnext.journal_entry, {
|
|||||||
});
|
});
|
||||||
|
|
||||||
$.extend(erpnext.journal_entry, {
|
$.extend(erpnext.journal_entry, {
|
||||||
set_account_balance: function(frm, dt, dn) {
|
set_account_details: function(frm, dt, dn) {
|
||||||
var d = locals[dt][dn];
|
var d = locals[dt][dn];
|
||||||
if(d.account) {
|
if(d.account) {
|
||||||
if(!frm.doc.company) frappe.throw(__("Please select Company first"));
|
if(!frm.doc.company) frappe.throw(__("Please select Company first"));
|
||||||
if(!frm.doc.posting_date) frappe.throw(__("Please select Posting Date first"));
|
if(!frm.doc.posting_date) frappe.throw(__("Please select Posting Date first"));
|
||||||
|
|
||||||
return frappe.call({
|
return frappe.call({
|
||||||
method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_account_balance_and_party_type",
|
method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_account_details_and_party_type",
|
||||||
args: {
|
args: {
|
||||||
account: d.account,
|
account: d.account,
|
||||||
date: frm.doc.posting_date,
|
date: frm.doc.posting_date,
|
||||||
@@ -615,7 +599,6 @@ $.extend(erpnext.journal_entry, {
|
|||||||
debit: flt(d.debit_in_account_currency),
|
debit: flt(d.debit_in_account_currency),
|
||||||
credit: flt(d.credit_in_account_currency),
|
credit: flt(d.credit_in_account_currency),
|
||||||
exchange_rate: d.exchange_rate,
|
exchange_rate: d.exchange_rate,
|
||||||
cost_center: d.cost_center
|
|
||||||
},
|
},
|
||||||
callback: function(r) {
|
callback: function(r) {
|
||||||
if(r.message) {
|
if(r.message) {
|
||||||
|
|||||||
@@ -68,7 +68,6 @@ class JournalEntry(AccountsController):
|
|||||||
self.set_print_format_fields()
|
self.set_print_format_fields()
|
||||||
self.validate_credit_debit_note()
|
self.validate_credit_debit_note()
|
||||||
self.validate_empty_accounts_table()
|
self.validate_empty_accounts_table()
|
||||||
self.set_account_and_party_balance()
|
|
||||||
self.validate_inter_company_accounts()
|
self.validate_inter_company_accounts()
|
||||||
self.validate_depr_entry_voucher_type()
|
self.validate_depr_entry_voucher_type()
|
||||||
|
|
||||||
@@ -1076,21 +1075,6 @@ class JournalEntry(AccountsController):
|
|||||||
if not self.get("accounts"):
|
if not self.get("accounts"):
|
||||||
frappe.throw(_("Accounts table cannot be blank."))
|
frappe.throw(_("Accounts table cannot be blank."))
|
||||||
|
|
||||||
def set_account_and_party_balance(self):
|
|
||||||
account_balance = {}
|
|
||||||
party_balance = {}
|
|
||||||
for d in self.get("accounts"):
|
|
||||||
if d.account not in account_balance:
|
|
||||||
account_balance[d.account] = get_balance_on(account=d.account, date=self.posting_date)
|
|
||||||
|
|
||||||
if (d.party_type, d.party) not in party_balance:
|
|
||||||
party_balance[(d.party_type, d.party)] = get_balance_on(
|
|
||||||
party_type=d.party_type, party=d.party, date=self.posting_date, company=self.company
|
|
||||||
)
|
|
||||||
|
|
||||||
d.account_balance = account_balance[d.account]
|
|
||||||
d.party_balance = party_balance[(d.party_type, d.party)]
|
|
||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def get_default_bank_cash_account(company, account_type=None, mode_of_payment=None, account=None):
|
def get_default_bank_cash_account(company, account_type=None, mode_of_payment=None, account=None):
|
||||||
@@ -1256,8 +1240,6 @@ def get_payment_entry(ref_doc, args):
|
|||||||
"account_type": frappe.db.get_value("Account", args.get("party_account"), "account_type"),
|
"account_type": frappe.db.get_value("Account", args.get("party_account"), "account_type"),
|
||||||
"account_currency": args.get("party_account_currency")
|
"account_currency": args.get("party_account_currency")
|
||||||
or get_account_currency(args.get("party_account")),
|
or get_account_currency(args.get("party_account")),
|
||||||
"balance": get_balance_on(args.get("party_account")),
|
|
||||||
"party_balance": get_balance_on(party=args.get("party"), party_type=args.get("party_type")),
|
|
||||||
"exchange_rate": exchange_rate,
|
"exchange_rate": exchange_rate,
|
||||||
args.get("amount_field_party"): args.get("amount"),
|
args.get("amount_field_party"): args.get("amount"),
|
||||||
"is_advance": args.get("is_advance"),
|
"is_advance": args.get("is_advance"),
|
||||||
@@ -1405,30 +1387,23 @@ def get_outstanding(args):
|
|||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def get_party_account_and_balance(company, party_type, party, cost_center=None):
|
def get_party_account_and_currency(company, party_type, party):
|
||||||
if not frappe.has_permission("Account"):
|
if not frappe.has_permission("Account"):
|
||||||
frappe.msgprint(_("No Permission"), raise_exception=1)
|
frappe.msgprint(_("No Permission"), raise_exception=1)
|
||||||
|
|
||||||
account = get_party_account(party_type, party, company)
|
account = get_party_account(party_type, party, company)
|
||||||
|
|
||||||
account_balance = get_balance_on(account=account, cost_center=cost_center)
|
|
||||||
party_balance = get_balance_on(
|
|
||||||
party_type=party_type, party=party, company=company, cost_center=cost_center
|
|
||||||
)
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"account": account,
|
"account": account,
|
||||||
"balance": account_balance,
|
"account_currency": frappe.get_cached_value("Account", account, "account_currency"),
|
||||||
"party_balance": party_balance,
|
|
||||||
"account_currency": frappe.db.get_value("Account", account, "account_currency"),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def get_account_balance_and_party_type(
|
def get_account_details_and_party_type(
|
||||||
account, date, company, debit=None, credit=None, exchange_rate=None, cost_center=None
|
account, date, company, debit=None, credit=None, exchange_rate=None
|
||||||
):
|
):
|
||||||
"""Returns dict of account balance and party type to be set in Journal Entry on selection of account."""
|
"""Returns dict of account details and party type to be set in Journal Entry on selection of account."""
|
||||||
if not frappe.has_permission("Account"):
|
if not frappe.has_permission("Account"):
|
||||||
frappe.msgprint(_("No Permission"), raise_exception=1)
|
frappe.msgprint(_("No Permission"), raise_exception=1)
|
||||||
|
|
||||||
@@ -1448,7 +1423,6 @@ def get_account_balance_and_party_type(
|
|||||||
party_type = ""
|
party_type = ""
|
||||||
|
|
||||||
grid_values = {
|
grid_values = {
|
||||||
"balance": get_balance_on(account, date, cost_center=cost_center),
|
|
||||||
"party_type": party_type,
|
"party_type": party_type,
|
||||||
"account_type": account_details.account_type,
|
"account_type": account_details.account_type,
|
||||||
"account_currency": account_details.account_currency or company_currency,
|
"account_currency": account_details.account_currency or company_currency,
|
||||||
|
|||||||
@@ -9,12 +9,10 @@
|
|||||||
"field_order": [
|
"field_order": [
|
||||||
"account",
|
"account",
|
||||||
"account_type",
|
"account_type",
|
||||||
"balance",
|
|
||||||
"col_break1",
|
"col_break1",
|
||||||
"bank_account",
|
"bank_account",
|
||||||
"party_type",
|
"party_type",
|
||||||
"party",
|
"party",
|
||||||
"party_balance",
|
|
||||||
"accounting_dimensions_section",
|
"accounting_dimensions_section",
|
||||||
"cost_center",
|
"cost_center",
|
||||||
"dimension_col_break",
|
"dimension_col_break",
|
||||||
@@ -63,17 +61,6 @@
|
|||||||
"label": "Account Type",
|
"label": "Account Type",
|
||||||
"print_hide": 1
|
"print_hide": 1
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"fieldname": "balance",
|
|
||||||
"fieldtype": "Currency",
|
|
||||||
"label": "Account Balance",
|
|
||||||
"no_copy": 1,
|
|
||||||
"oldfieldname": "balance",
|
|
||||||
"oldfieldtype": "Data",
|
|
||||||
"options": "account_currency",
|
|
||||||
"print_hide": 1,
|
|
||||||
"read_only": 1
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"default": ":Company",
|
"default": ":Company",
|
||||||
"description": "If Income or Expense",
|
"description": "If Income or Expense",
|
||||||
@@ -107,14 +94,6 @@
|
|||||||
"label": "Party",
|
"label": "Party",
|
||||||
"options": "party_type"
|
"options": "party_type"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"fieldname": "party_balance",
|
|
||||||
"fieldtype": "Currency",
|
|
||||||
"label": "Party Balance",
|
|
||||||
"options": "account_currency",
|
|
||||||
"print_hide": 1,
|
|
||||||
"read_only": 1
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"fieldname": "currency_section",
|
"fieldname": "currency_section",
|
||||||
"fieldtype": "Section Break",
|
"fieldtype": "Section Break",
|
||||||
|
|||||||
Reference in New Issue
Block a user