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

View File

@@ -65,8 +65,10 @@ class AccountsSettings(Document):
role_allowed_to_over_bill: DF.Link | None role_allowed_to_over_bill: DF.Link | None
role_to_override_stop_action: DF.Link | None role_to_override_stop_action: DF.Link | None
round_row_wise_tax: DF.Check round_row_wise_tax: DF.Check
show_account_balance: DF.Check
show_balance_in_coa: DF.Check show_balance_in_coa: DF.Check
show_inclusive_tax_in_print: DF.Check show_inclusive_tax_in_print: DF.Check
show_party_balance: DF.Check
show_payment_schedule_in_print: DF.Check show_payment_schedule_in_print: DF.Check
show_taxes_as_table_in_print: DF.Check show_taxes_as_table_in_print: DF.Check
stale_days: DF.Int stale_days: DF.Int
@@ -105,6 +107,7 @@ class AccountsSettings(Document):
frappe.clear_cache() frappe.clear_cache()
self.validate_and_sync_auto_reconcile_config() self.validate_and_sync_auto_reconcile_config()
self.hide_or_show_party_and_account_balance()
def validate_stale_days(self): def validate_stale_days(self):
if not self.allow_stale and cint(self.stale_days) <= 0: 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 _("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): def enable_payment_schedule_in_print(self):
show_in_print = cint(self.show_payment_schedule_in_print) show_in_print = cint(self.show_payment_schedule_in_print)
for doctype in ("Sales Order", "Sales Invoice", "Purchase Order", "Purchase Invoice"): 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) self.contact_person = get_default_contact(self.party_type, self.party)
complete_contact_details(self) 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( self.party_balance = get_balance_on(
party_type=self.party_type, party=self.party, date=self.posting_date, company=self.company 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) party_account = get_party_account(party_type, party, company)
account_currency = get_account_currency(party_account) 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 = "title" if party_type == "Shareholder" else party_type.lower() + "_name"
party_name = frappe.db.get_value(party_type, party, _party_name) party_name = frappe.db.get_value(party_type, party, _party_name)
party_balance = get_balance_on( party_balance = (
party_type=party_type, party=party, company=company, cost_center=cost_center 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"]: if party_type in ["Customer", "Supplier"]:
party_bank_account = get_party_bank_account(party_type, party) 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: if not account_list:
frappe.throw(_("Account: {0} is not permitted under Payment Entry").format(account)) 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( 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( def get_party_and_account_balance(
company, date, paid_from=None, paid_to=None, ptype=None, pty=None, cost_center=None 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( return frappe._dict(
{ {
"party_balance": get_balance_on(party_type=ptype, party=pty, cost_center=cost_center), "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), if frappe.get_single_value("Accounts Settings", "show_party_balance")
"paid_to_account_balance": get_balance_on(paid_to, date=date, cost_center=cost_center), 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.update_fieldname_in_accounting_dimension_filter
erpnext.patches.v15_0.set_asset_status_if_not_already_set erpnext.patches.v15_0.set_asset_status_if_not_already_set
erpnext.patches.v15_0.toggle_legacy_controller_for_period_closing 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)