diff --git a/erpnext/accounts/general_ledger.py b/erpnext/accounts/general_ledger.py index 0e97d6969bd..7df3bce9b4a 100644 --- a/erpnext/accounts/general_ledger.py +++ b/erpnext/accounts/general_ledger.py @@ -18,7 +18,7 @@ from erpnext.accounts.doctype.accounting_dimension_filter.accounting_dimension_f ) from erpnext.accounts.doctype.accounting_period.accounting_period import ClosedAccountingPeriod from erpnext.accounts.doctype.budget.budget import validate_expense_against_budget -from erpnext.accounts.utils import create_payment_ledger_entry +from erpnext.accounts.utils import create_payment_ledger_entry, is_immutable_ledger_enabled from erpnext.exceptions import InvalidAccountDimensionError, MandatoryAccountDimensionError @@ -838,7 +838,3 @@ def validate_allowed_dimensions(gl_entry, dimension_filter_map): ), InvalidAccountDimensionError, ) - - -def is_immutable_ledger_enabled(): - return frappe.db.get_single_value("Accounts Settings", "enable_immutable_ledger") diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py index 32d4657ea7c..15117b2aa43 100644 --- a/erpnext/accounts/utils.py +++ b/erpnext/accounts/utils.py @@ -1895,6 +1895,9 @@ def create_payment_ledger_entry( if cancel: delink_original_entry(ple, partial_cancel=partial_cancel) + if is_immutable_ledger_enabled(): + ple.delinked = 0 + ple.posting_date = frappe.form_dict.get("posting_date") or getdate() ple.flags.ignore_permissions = 1 ple.flags.adv_adj = adv_adj @@ -1982,7 +1985,6 @@ def delink_original_entry(pl_entry, partial_cancel=False): ple = qb.DocType("Payment Ledger Entry") query = ( qb.update(ple) - .set(ple.delinked, True) .set(ple.modified, now()) .set(ple.modified_by, frappe.session.user) .where( @@ -2001,6 +2003,9 @@ def delink_original_entry(pl_entry, partial_cancel=False): if partial_cancel: query = query.where(ple.voucher_detail_no == pl_entry.voucher_detail_no) + if not is_immutable_ledger_enabled(): + query = query.set(ple.delinked, True) + query.run() @@ -2457,3 +2462,7 @@ def build_qb_match_conditions(doctype, user=None) -> list: criterion.append(cond) return criterion + + +def is_immutable_ledger_enabled(): + return frappe.get_single_value("Accounts Settings", "enable_immutable_ledger")