From 84738ba00cb08a71f4902617dff62b5ba1d99a09 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Mon, 14 Jul 2025 20:17:23 +0530 Subject: [PATCH] fix: allow force reset manager dashboard --- crm/fcrm/doctype/crm_dashboard/crm_dashboard.py | 6 +++++- crm/install.py | 2 +- frontend/src/pages/Dashboard.vue | 3 ++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/crm/fcrm/doctype/crm_dashboard/crm_dashboard.py b/crm/fcrm/doctype/crm_dashboard/crm_dashboard.py index 2b1bcb7d..9007db67 100644 --- a/crm/fcrm/doctype/crm_dashboard/crm_dashboard.py +++ b/crm/fcrm/doctype/crm_dashboard/crm_dashboard.py @@ -17,7 +17,7 @@ def default_manager_dashboard_layout(): return '[{"name":"total_leads","type":"number_chart","tooltip":"Total number of leads","layout":{"x":0,"y":0,"w":4,"h":2,"i":"total_leads"}},{"name":"ongoing_deals","type":"number_chart","tooltip":"Total number of ongoing deals","layout":{"x":8,"y":0,"w":4,"h":2,"i":"ongoing_deals"}},{"name":"won_deals","type":"number_chart","tooltip":"Total number of won deals","layout":{"x":12,"y":0,"w":4,"h":2,"i":"won_deals"}},{"name":"average_won_deal_value","type":"number_chart","tooltip":"Average value of won deals","layout":{"x":16,"y":0,"w":4,"h":2,"i":"average_won_deal_value"}},{"name":"average_deal_value","type":"number_chart","tooltip":"Average deal value of ongoing and won deals","layout":{"x":0,"y":2,"w":4,"h":2,"i":"average_deal_value"}},{"name":"average_time_to_close_a_lead","type":"number_chart","tooltip":"Average time taken to close a lead","layout":{"x":4,"y":0,"w":4,"h":2,"i":"average_time_to_close_a_lead"}},{"name":"average_time_to_close_a_deal","type":"number_chart","layout":{"x":4,"y":2,"w":4,"h":2,"i":"average_time_to_close_a_deal"}},{"name":"blank_card","type":"blank_card","layout":{"x":8,"y":2,"w":12,"h":2,"i":"blank_card"}},{"name":"sales_trend","type":"axis_chart","layout":{"x":0,"y":4,"w":10,"h":7,"i":"sales_trend"}},{"name":"forecasted_revenue","type":"axis_chart","layout":{"x":10,"y":4,"w":10,"h":7,"i":"forecasted_revenue"}},{"name":"funnel_conversion","type":"axis_chart","layout":{"x":0,"y":11,"w":10,"h":7,"i":"funnel_conversion"}},{"name":"deals_by_stage_donut","type":"donut_chart","layout":{"x":10,"y":11,"w":10,"h":7,"i":"deals_by_stage_donut"}},{"name":"lost_deal_reasons","type":"axis_chart","layout":{"x":0,"y":32,"w":20,"h":7,"i":"lost_deal_reasons"}},{"name":"leads_by_source","type":"donut_chart","layout":{"x":0,"y":18,"w":10,"h":7,"i":"leads_by_source"}},{"name":"deals_by_source","type":"donut_chart","layout":{"x":10,"y":18,"w":10,"h":7,"i":"deals_by_source"}},{"name":"deals_by_territory","type":"axis_chart","layout":{"x":0,"y":25,"w":10,"h":7,"i":"deals_by_territory"}},{"name":"deals_by_salesperson","type":"axis_chart","layout":{"x":10,"y":25,"w":10,"h":7,"i":"deals_by_salesperson"}}]' -def create_default_manager_dashboard(): +def create_default_manager_dashboard(force=False): """ Creates the default CRM Manager Dashboard if it does not exist. """ @@ -26,4 +26,8 @@ def create_default_manager_dashboard(): doc.title = "Manager Dashboard" doc.layout = default_manager_dashboard_layout() doc.insert(ignore_permissions=True) + elif force: + doc = frappe.get_doc("CRM Dashboard", "Manager Dashboard") + doc.layout = default_manager_dashboard_layout() + doc.save(ignore_permissions=True) return doc.layout diff --git a/crm/install.py b/crm/install.py index a35ae42f..473ba5f6 100644 --- a/crm/install.py +++ b/crm/install.py @@ -24,7 +24,7 @@ def after_install(force=False): add_default_lost_reasons() add_standard_dropdown_items() add_default_scripts() - create_default_manager_dashboard() + create_default_manager_dashboard(force) frappe.db.commit() diff --git a/frontend/src/pages/Dashboard.vue b/frontend/src/pages/Dashboard.vue index c77998ed..e983b1e9 100644 --- a/frontend/src/pages/Dashboard.vue +++ b/frontend/src/pages/Dashboard.vue @@ -41,7 +41,7 @@ -
+