mirror of
https://github.com/frappe/erpnext.git
synced 2026-04-23 16:48:30 +00:00
feat(account settings): add checkbox to show balances in payment entry
This commit is contained in:
@@ -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": [],
|
||||||
|
|||||||
@@ -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"):
|
||||||
|
|||||||
@@ -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,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
Reference in New Issue
Block a user