diff --git a/crm/fcrm/doctype/crm_view_settings/crm_view_settings.json b/crm/fcrm/doctype/crm_view_settings/crm_view_settings.json index f539da02..e0ac969d 100644 --- a/crm/fcrm/doctype/crm_view_settings/crm_view_settings.json +++ b/crm/fcrm/doctype/crm_view_settings/crm_view_settings.json @@ -7,6 +7,7 @@ "field_order": [ "label", "user", + "is_default", "column_break_zacm", "dt", "route_name", @@ -104,11 +105,17 @@ "fieldname": "public", "fieldtype": "Check", "label": "Public" + }, + { + "default": "0", + "fieldname": "is_default", + "fieldtype": "Check", + "label": "Is Default" } ], "index_web_pages_for_search": 1, "links": [], - "modified": "2024-02-03 18:22:48.406099", + "modified": "2024-02-03 18:38:09.412745", "modified_by": "Administrator", "module": "FCRM", "name": "CRM View Settings", diff --git a/crm/fcrm/doctype/crm_view_settings/crm_view_settings.py b/crm/fcrm/doctype/crm_view_settings/crm_view_settings.py index a7eb8595..f7792250 100644 --- a/crm/fcrm/doctype/crm_view_settings/crm_view_settings.py +++ b/crm/fcrm/doctype/crm_view_settings/crm_view_settings.py @@ -21,6 +21,9 @@ def create(view): view.rows = view.rows + default_rows if default_rows else view.rows view.rows = remove_duplicates(view.rows) + if not view.columns: + view.columns = sync_default_list_columns(view.doctype) + doc = frappe.new_doc("CRM View Settings") doc.name = view.label doc.label = view.label @@ -90,3 +93,57 @@ def sync_default_list_rows(doctype): rows = list.default_list_data().get("rows") return rows + +def sync_default_list_columns(doctype): + list = get_controller(doctype) + columns = [] + + if hasattr(list, "default_list_data"): + columns = list.default_list_data().get("columns") + + return columns + + +@frappe.whitelist() +def create_or_update_default_view(view): + view = frappe._dict(view) + + filters = parse_json(view.filters) or {} + columns = parse_json(view.columns or '[]') + rows = parse_json(view.rows or '[]') + + default_rows = sync_default_list_rows(view.doctype) + rows = rows + default_rows if default_rows else rows + rows = remove_duplicates(rows) + + if not columns: + columns = sync_default_list_columns(view.doctype) + + doc = frappe.db.exists( + "CRM View Settings", + {"dt": view.doctype, "is_default": True, "user": frappe.session.user}, + ) + if doc: + doc = frappe.get_doc("CRM View Settings", doc) + doc.label = view.label + doc.route_name = view.route_name or "" + doc.load_default_columns = view.load_default_columns or False + doc.filters = json.dumps(filters) + doc.order_by = view.order_by + doc.columns = json.dumps(columns) + doc.rows = json.dumps(rows) + doc.save() + else: + doc = frappe.new_doc("CRM View Settings") + doc.name = view.label or 'List View' + doc.label = view.label or 'List View' + doc.dt = view.doctype + doc.user = frappe.session.user + doc.route_name = view.route_name or "" + doc.load_default_columns = view.load_default_columns or False + doc.filters = json.dumps(filters) + doc.order_by = view.order_by + doc.columns = json.dumps(columns) + doc.rows = json.dumps(rows) + doc.is_default = True + doc.insert() \ No newline at end of file diff --git a/frontend/src/components/ViewControls.vue b/frontend/src/components/ViewControls.vue index 11547722..70630ca2 100644 --- a/frontend/src/components/ViewControls.vue +++ b/frontend/src/components/ViewControls.vue @@ -26,14 +26,11 @@