diff --git a/crm/fcrm/doctype/fcrm_settings/fcrm_settings.json b/crm/fcrm/doctype/fcrm_settings/fcrm_settings.json index bf2fc14b..de27e245 100644 --- a/crm/fcrm/doctype/fcrm_settings/fcrm_settings.json +++ b/crm/fcrm/doctype/fcrm_settings/fcrm_settings.json @@ -60,7 +60,7 @@ }, { "default": "0", - "description": "It will make deal's \"Expected Closure Date\" mandatory to get accurate date forecasting insights", + "description": "It will make deal's \"Expected Closure Date\" mandatory to get accurate forecasting insights", "fieldname": "enable_forecasting", "fieldtype": "Check", "label": "Enable Forecasting" @@ -69,7 +69,7 @@ "index_web_pages_for_search": 1, "issingle": 1, "links": [], - "modified": "2025-06-11 19:02:50.134252", + "modified": "2025-06-11 19:12:16.762499", "modified_by": "Administrator", "module": "FCRM", "name": "FCRM Settings", diff --git a/crm/fcrm/doctype/fcrm_settings/fcrm_settings.py b/crm/fcrm/doctype/fcrm_settings/fcrm_settings.py index 53c8c77c..48da4c99 100644 --- a/crm/fcrm/doctype/fcrm_settings/fcrm_settings.py +++ b/crm/fcrm/doctype/fcrm_settings/fcrm_settings.py @@ -3,6 +3,7 @@ import frappe from frappe import _ +from frappe.custom.doctype.property_setter.property_setter import delete_property_setter, make_property_setter from frappe.model.document import Document from crm.install import after_install @@ -15,6 +16,7 @@ class FCRMSettings(Document): def validate(self): self.do_not_allow_to_delete_if_standard() + self.setup_forecasting() def do_not_allow_to_delete_if_standard(self): if not self.has_value_changed("dropdown_items"): @@ -29,6 +31,23 @@ class FCRMSettings(Document): return frappe.throw(_("Cannot delete standard items {0}").format(", ".join(deleted_standard_items))) + def setup_forecasting(self): + if self.has_value_changed("enable_forecasting"): + if not self.enable_forecasting: + delete_property_setter( + "CRM Deal", + "reqd", + "close_date", + ) + else: + make_property_setter( + "CRM Deal", + "close_date", + "reqd", + 1 if self.enable_forecasting else 0, + "Check", + ) + def get_standard_dropdown_items(): return [item.get("name1") for item in frappe.get_hooks("standard_dropdown_items")]