feat(account settings): add checkbox to show balances in payment entry

This commit is contained in:
ravibharathi656
2025-11-06 18:35:56 +05:30
parent 4f02677d6f
commit 90500f0ffc
4 changed files with 67 additions and 11 deletions

View File

@@ -56,6 +56,9 @@
"reconciliation_queue_size",
"column_break_resa",
"exchange_gain_loss_posting_date",
"payment_entry_settings",
"show_account_balance",
"show_party_balance",
"invoicing_settings_tab",
"accounts_transactions_settings_section",
"over_billing_allowance",
@@ -95,7 +98,8 @@
"legacy_section",
"ignore_is_opening_check_for_reporting",
"payment_request_settings",
"create_pr_in_draft_status"
"create_pr_in_draft_status",
"column_break_xrnd"
],
"fields": [
{
@@ -636,6 +640,23 @@
"fieldname": "use_legacy_controller_for_pcv",
"fieldtype": "Check",
"label": "Use Legacy Controller For Period Closing Voucher"
},
{
"fieldname": "payment_entry_settings",
"fieldtype": "Section Break",
"label": "Payment Entry Settings"
},
{
"default": "0",
"fieldname": "show_account_balance",
"fieldtype": "Check",
"label": "Show Account Balance"
},
{
"default": "0",
"fieldname": "show_party_balance",
"fieldtype": "Check",
"label": "Show Party Balance"
}
],
"icon": "icon-cog",
@@ -643,7 +664,7 @@
"index_web_pages_for_search": 1,
"issingle": 1,
"links": [],
"modified": "2025-10-20 14:06:08.870427",
"modified": "2025-11-06 17:48:07.682837",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Accounts Settings",
@@ -668,8 +689,9 @@
}
],
"quick_entry": 1,
"row_format": "Dynamic",
"sort_field": "modified",
"sort_order": "ASC",
"states": [],
"track_changes": 1
}
}

View File

@@ -65,8 +65,10 @@ class AccountsSettings(Document):
role_allowed_to_over_bill: DF.Link | None
role_to_override_stop_action: DF.Link | None
round_row_wise_tax: DF.Check
show_account_balance: DF.Check
show_balance_in_coa: DF.Check
show_inclusive_tax_in_print: DF.Check
show_party_balance: DF.Check
show_payment_schedule_in_print: DF.Check
show_taxes_as_table_in_print: DF.Check
stale_days: DF.Int
@@ -105,6 +107,7 @@ class AccountsSettings(Document):
frappe.clear_cache()
self.validate_and_sync_auto_reconcile_config()
self.hide_or_show_party_and_account_balance()
def validate_stale_days(self):
if not self.allow_stale and cint(self.stale_days) <= 0:
@@ -112,6 +115,18 @@ class AccountsSettings(Document):
_("Stale Days should start from 1."), title="Error", indicator="red", raise_exception=1
)
def hide_or_show_party_and_account_balance(self):
def set_property(fieldname, value):
make_property_setter("Payment Entry", fieldname, "hidden", value, "Check")
if self.has_value_changed("show_party_balance"):
set_property("party_balance", not self.show_party_balance)
if self.has_value_changed("show_account_balance"):
account_fields = ["paid_from_account_balance", "paid_to_account_balance"]
for field in account_fields:
set_property(field, not self.show_account_balance)
def enable_payment_schedule_in_print(self):
show_in_print = cint(self.show_payment_schedule_in_print)
for doctype in ("Sales Order", "Sales Invoice", "Purchase Order", "Purchase Invoice"):

View File

@@ -449,7 +449,7 @@ class PaymentEntry(AccountsController):
self.contact_person = get_default_contact(self.party_type, self.party)
complete_contact_details(self)
if not self.party_balance:
if not self.party_balance and frappe.get_single_value("Accounts Settings", "show_party_balance"):
self.party_balance = get_balance_on(
party_type=self.party_type, party=self.party, date=self.posting_date, company=self.company
)
@@ -2684,11 +2684,17 @@ def get_party_details(company, party_type, party, date, cost_center=None):
party_account = get_party_account(party_type, party, company)
account_currency = get_account_currency(party_account)
account_balance = get_balance_on(party_account, date, cost_center=cost_center)
account_balance = (
get_balance_on(party_account, date, cost_center=cost_center)
if frappe.get_single_value("Accounts Settings", "show_account_balance")
else 0
)
_party_name = "title" if party_type == "Shareholder" else party_type.lower() + "_name"
party_name = frappe.db.get_value(party_type, party, _party_name)
party_balance = get_balance_on(
party_type=party_type, party=party, company=company, cost_center=cost_center
party_balance = (
get_balance_on(party_type=party_type, party=party, company=company, cost_center=cost_center)
if frappe.get_single_value("Accounts Settings", "show_party_balance")
else 0
)
if party_type in ["Customer", "Supplier"]:
party_bank_account = get_party_bank_account(party_type, party)
@@ -2717,7 +2723,11 @@ def get_account_details(account, date, cost_center=None):
if not account_list:
frappe.throw(_("Account: {0} is not permitted under Payment Entry").format(account))
account_balance = get_balance_on(account, date, cost_center=cost_center, ignore_account_permission=True)
account_balance = (
get_balance_on(account, date, cost_center=cost_center, ignore_account_permission=True)
if frappe.get_single_value("Accounts Settings", "show_account_balance")
else 0
)
return frappe._dict(
{
@@ -3529,11 +3539,18 @@ def get_paid_amount(dt, dn, party_type, party, account, due_date):
def get_party_and_account_balance(
company, date, paid_from=None, paid_to=None, ptype=None, pty=None, cost_center=None
):
show_account_balance = frappe.get_single_value("Accounts Settings", "show_account_balance")
return frappe._dict(
{
"party_balance": get_balance_on(party_type=ptype, party=pty, cost_center=cost_center),
"paid_from_account_balance": get_balance_on(paid_from, date, cost_center=cost_center),
"paid_to_account_balance": get_balance_on(paid_to, date=date, cost_center=cost_center),
"party_balance": get_balance_on(party_type=ptype, party=pty, cost_center=cost_center)
if frappe.get_single_value("Accounts Settings", "show_party_balance")
else 0,
"paid_from_account_balance": get_balance_on(paid_from, date, cost_center=cost_center)
if show_account_balance
else 0,
"paid_to_account_balance": get_balance_on(paid_to, date=date, cost_center=cost_center)
if show_account_balance
else 0,
}
)

View File

@@ -424,3 +424,5 @@ erpnext.patches.v15_0.update_uae_zero_rated_fetch
erpnext.patches.v15_0.update_fieldname_in_accounting_dimension_filter
erpnext.patches.v15_0.set_asset_status_if_not_already_set
erpnext.patches.v15_0.toggle_legacy_controller_for_period_closing
execute:frappe.db.set_single_value("Accounts Settings", "show_party_balance", 1)
execute:frappe.db.set_single_value("Accounts Settings", "show_account_balance", 1)