From a182bee57f934f2c3761ab20e89f8c63a91ad4cb Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Mon, 18 Aug 2025 17:34:50 +0530 Subject: [PATCH 1/5] feat: add Helpdesk CRM Settings doctype --- .../doctype/helpdesk_crm_settings/__init__.py | 0 .../helpdesk_crm_settings.js | 8 ++ .../helpdesk_crm_settings.json | 102 ++++++++++++++++++ .../helpdesk_crm_settings.py | 9 ++ .../test_helpdesk_crm_settings.py | 21 ++++ 5 files changed, 140 insertions(+) create mode 100644 crm/fcrm/doctype/helpdesk_crm_settings/__init__.py create mode 100644 crm/fcrm/doctype/helpdesk_crm_settings/helpdesk_crm_settings.js create mode 100644 crm/fcrm/doctype/helpdesk_crm_settings/helpdesk_crm_settings.json create mode 100644 crm/fcrm/doctype/helpdesk_crm_settings/helpdesk_crm_settings.py create mode 100644 crm/fcrm/doctype/helpdesk_crm_settings/test_helpdesk_crm_settings.py diff --git a/crm/fcrm/doctype/helpdesk_crm_settings/__init__.py b/crm/fcrm/doctype/helpdesk_crm_settings/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/crm/fcrm/doctype/helpdesk_crm_settings/helpdesk_crm_settings.js b/crm/fcrm/doctype/helpdesk_crm_settings/helpdesk_crm_settings.js new file mode 100644 index 00000000..b31a6f24 --- /dev/null +++ b/crm/fcrm/doctype/helpdesk_crm_settings/helpdesk_crm_settings.js @@ -0,0 +1,8 @@ +// Copyright (c) 2025, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt + +// frappe.ui.form.on("Helpdesk CRM Settings", { +// refresh(frm) { + +// }, +// }); diff --git a/crm/fcrm/doctype/helpdesk_crm_settings/helpdesk_crm_settings.json b/crm/fcrm/doctype/helpdesk_crm_settings/helpdesk_crm_settings.json new file mode 100644 index 00000000..220666ab --- /dev/null +++ b/crm/fcrm/doctype/helpdesk_crm_settings/helpdesk_crm_settings.json @@ -0,0 +1,102 @@ +{ + "actions": [], + "allow_rename": 1, + "creation": "2025-08-18 17:25:49.638398", + "doctype": "DocType", + "engine": "InnoDB", + "field_order": [ + "enabled", + "column_break_idaw", + "is_helpdesk_in_different_site", + "helpdesk_site_url", + "helpdesk_site_apis_section", + "api_key", + "column_break_tqsm", + "api_secret" + ], + "fields": [ + { + "default": "0", + "fieldname": "enabled", + "fieldtype": "Check", + "label": "Enabled" + }, + { + "fieldname": "column_break_idaw", + "fieldtype": "Column Break" + }, + { + "default": "0", + "depends_on": "enabled", + "fieldname": "is_helpdesk_in_different_site", + "fieldtype": "Check", + "label": "Is Helpdesk installed on a different site?" + }, + { + "depends_on": "eval:doc.enabled && doc.is_helpdesk_in_different_site", + "fieldname": "helpdesk_site_url", + "fieldtype": "Data", + "label": "Helpdesk Site URL", + "mandatory_depends_on": "is_helpdesk_in_different_site" + }, + { + "depends_on": "enabled", + "fieldname": "helpdesk_site_apis_section", + "fieldtype": "Section Break", + "label": "Helpdesk Site API's" + }, + { + "depends_on": "eval:doc.enabled && doc.is_helpdesk_in_different_site", + "fieldname": "api_key", + "fieldtype": "Data", + "label": "API Key", + "mandatory_depends_on": "is_helpdesk_in_different_site" + }, + { + "fieldname": "column_break_tqsm", + "fieldtype": "Column Break" + }, + { + "depends_on": "eval:doc.enabled && doc.is_helpdesk_in_different_site", + "fieldname": "api_secret", + "fieldtype": "Password", + "label": "API Secret", + "mandatory_depends_on": "is_helpdesk_in_different_site" + } + ], + "grid_page_length": 50, + "index_web_pages_for_search": 1, + "issingle": 1, + "links": [], + "modified": "2025-08-18 17:33:38.616328", + "modified_by": "Administrator", + "module": "FCRM", + "name": "Helpdesk CRM Settings", + "owner": "Administrator", + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "print": 1, + "read": 1, + "role": "System Manager", + "share": 1, + "write": 1 + }, + { + "create": 1, + "delete": 1, + "email": 1, + "print": 1, + "read": 1, + "role": "Sales Manager", + "share": 1, + "write": 1 + } + ], + "row_format": "Dynamic", + "sort_field": "creation", + "sort_order": "DESC", + "states": [] +} diff --git a/crm/fcrm/doctype/helpdesk_crm_settings/helpdesk_crm_settings.py b/crm/fcrm/doctype/helpdesk_crm_settings/helpdesk_crm_settings.py new file mode 100644 index 00000000..2edba045 --- /dev/null +++ b/crm/fcrm/doctype/helpdesk_crm_settings/helpdesk_crm_settings.py @@ -0,0 +1,9 @@ +# Copyright (c) 2025, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +# import frappe +from frappe.model.document import Document + + +class HelpdeskCRMSettings(Document): + pass diff --git a/crm/fcrm/doctype/helpdesk_crm_settings/test_helpdesk_crm_settings.py b/crm/fcrm/doctype/helpdesk_crm_settings/test_helpdesk_crm_settings.py new file mode 100644 index 00000000..c60d55dc --- /dev/null +++ b/crm/fcrm/doctype/helpdesk_crm_settings/test_helpdesk_crm_settings.py @@ -0,0 +1,21 @@ +# Copyright (c) 2025, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt + +# import frappe +from frappe.tests import IntegrationTestCase + +# On IntegrationTestCase, the doctype test records and all +# link-field test record dependencies are recursively loaded +# Use these module variables to add/remove to/from that list +EXTRA_TEST_RECORD_DEPENDENCIES = [] # eg. ["User"] +IGNORE_TEST_RECORD_DEPENDENCIES = [] # eg. ["User"] + + + +class IntegrationTestHelpdeskCRMSettings(IntegrationTestCase): + """ + Integration tests for HelpdeskCRMSettings. + Use this class for testing interactions between multiple components. + """ + + pass From 8350752f56639f3b31a00c59876de26ca1ac03c2 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Mon, 18 Aug 2025 17:35:19 +0530 Subject: [PATCH 2/5] feat: add Helpdesk icon and settings page --- frontend/components.d.ts | 2 ++ frontend/src/components/Icons/ERPNextIcon.vue | 33 ++++++++----------- .../src/components/Icons/HelpdeskIcon.vue | 15 +++++++++ .../components/Settings/HelpdeskSettings.vue | 11 +++++++ frontend/src/components/Settings/Settings.vue | 8 +++++ 5 files changed, 50 insertions(+), 19 deletions(-) create mode 100644 frontend/src/components/Icons/HelpdeskIcon.vue create mode 100644 frontend/src/components/Settings/HelpdeskSettings.vue diff --git a/frontend/components.d.ts b/frontend/components.d.ts index 8b1b706a..4eccf1af 100644 --- a/frontend/components.d.ts +++ b/frontend/components.d.ts @@ -142,6 +142,8 @@ declare module 'vue' { GroupBy: typeof import('./src/components/GroupBy.vue')['default'] GroupByIcon: typeof import('./src/components/Icons/GroupByIcon.vue')['default'] HeartIcon: typeof import('./src/components/Icons/HeartIcon.vue')['default'] + HelpdeskIcon: typeof import('./src/components/Icons/HelpdeskIcon.vue')['default'] + HelpdeskSettings: typeof import('./src/components/Settings/HelpdeskSettings.vue')['default'] HelpIcon: typeof import('./src/components/Icons/HelpIcon.vue')['default'] HomeActions: typeof import('./src/components/Settings/General/HomeActions.vue')['default'] Icon: typeof import('./src/components/Icon.vue')['default'] diff --git a/frontend/src/components/Icons/ERPNextIcon.vue b/frontend/src/components/Icons/ERPNextIcon.vue index e512b92d..5c5ade8a 100644 --- a/frontend/src/components/Icons/ERPNextIcon.vue +++ b/frontend/src/components/Icons/ERPNextIcon.vue @@ -1,20 +1,15 @@ \ No newline at end of file + + + + + diff --git a/frontend/src/components/Icons/HelpdeskIcon.vue b/frontend/src/components/Icons/HelpdeskIcon.vue new file mode 100644 index 00000000..1e4507d3 --- /dev/null +++ b/frontend/src/components/Icons/HelpdeskIcon.vue @@ -0,0 +1,15 @@ + diff --git a/frontend/src/components/Settings/HelpdeskSettings.vue b/frontend/src/components/Settings/HelpdeskSettings.vue new file mode 100644 index 00000000..d617388e --- /dev/null +++ b/frontend/src/components/Settings/HelpdeskSettings.vue @@ -0,0 +1,11 @@ + + \ No newline at end of file diff --git a/frontend/src/components/Settings/Settings.vue b/frontend/src/components/Settings/Settings.vue index ed5d4a15..4b1f9b90 100644 --- a/frontend/src/components/Settings/Settings.vue +++ b/frontend/src/components/Settings/Settings.vue @@ -43,6 +43,7 @@