From 5125d64b7f39d30a5062b724cca5a65245e6a808 Mon Sep 17 00:00:00 2001 From: Vishnu Priya Baskaran <145791817+ervishnucs@users.noreply.github.com> Date: Wed, 29 Jul 2026 04:18:45 +0530 Subject: [PATCH] fix: clear deferred revenue/expense fields on uncheck (#57140) --- erpnext/accounts/services/deferred_accounting.py | 13 +++++++++++++ erpnext/controllers/accounts_controller.py | 4 +++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/erpnext/accounts/services/deferred_accounting.py b/erpnext/accounts/services/deferred_accounting.py index 8465d079955..55a9ac44f47 100644 --- a/erpnext/accounts/services/deferred_accounting.py +++ b/erpnext/accounts/services/deferred_accounting.py @@ -55,3 +55,16 @@ class DeferredAccountingService: def _is_deferred(self, item) -> bool: return bool(item.get("enable_deferred_revenue") or item.get("enable_deferred_expense")) + + def clear_stale_deferred_fields(self) -> None: + account_field = DEFERRED_ACCOUNT_FIELD.get(self.doc.doctype) + + for item in self.doc.get("items"): + if self._is_deferred(item): + continue + + item.service_start_date = None + item.service_end_date = None + item.service_stop_date = None + if account_field: + item.set(account_field, None) diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index 56e6e381bb5..70c5f3e77fe 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -236,7 +236,9 @@ class AccountsController(TransactionBase): else: from erpnext.accounts.services.deferred_accounting import DeferredAccountingService - DeferredAccountingService(self).validate_start_and_end_date() + deferred_service = DeferredAccountingService(self) + deferred_service.clear_stale_deferred_fields() + deferred_service.validate_start_and_end_date() from erpnext.accounts.services.internal_transfer import InternalTransferService