diff --git a/crm/fcrm/doctype/crm_invitation/crm_invitation.py b/crm/fcrm/doctype/crm_invitation/crm_invitation.py index 965bf4d7..b7184d68 100644 --- a/crm/fcrm/doctype/crm_invitation/crm_invitation.py +++ b/crm/fcrm/doctype/crm_invitation/crm_invitation.py @@ -44,6 +44,10 @@ class CRMInvitation(Document): user = self.create_user_if_not_exists() user.append_roles(self.role) + if self.role == "System Manager": + user.append_roles("Sales Manager", "Sales User") + elif self.role == "Sales Manager": + user.append_roles("Sales User") if self.role == "Sales User": self.update_module_in_user(user, "FCRM") user.save(ignore_permissions=True) diff --git a/frappe-ui b/frappe-ui index 883bb643..424288f7 160000 --- a/frappe-ui +++ b/frappe-ui @@ -1 +1 @@ -Subproject commit 883bb643d1e662d6467925927e347dd28376960f +Subproject commit 424288f77af4779dd3bb71dc3d278fc627f95179 diff --git a/frontend/components.d.ts b/frontend/components.d.ts index 2db22144..3404f805 100644 --- a/frontend/components.d.ts +++ b/frontend/components.d.ts @@ -81,6 +81,7 @@ declare module 'vue' { DropdownItem: typeof import('./src/components/DropdownItem.vue')['default'] DuplicateIcon: typeof import('./src/components/Icons/DuplicateIcon.vue')['default'] DurationIcon: typeof import('./src/components/Icons/DurationIcon.vue')['default'] + EditEmailTemplate: typeof import('./src/components/Settings/EmailTemplate/EditEmailTemplate.vue')['default'] EditIcon: typeof import('./src/components/Icons/EditIcon.vue')['default'] EditValueModal: typeof import('./src/components/Modals/EditValueModal.vue')['default'] Email2Icon: typeof import('./src/components/Icons/Email2Icon.vue')['default'] @@ -95,7 +96,10 @@ declare module 'vue' { EmailEditor: typeof import('./src/components/EmailEditor.vue')['default'] EmailIcon: typeof import('./src/components/Icons/EmailIcon.vue')['default'] EmailProviderIcon: typeof import('./src/components/Settings/EmailProviderIcon.vue')['default'] + EmailTemplateIcon: typeof import('./src/components/Icons/EmailTemplateIcon.vue')['default'] EmailTemplateModal: typeof import('./src/components/Modals/EmailTemplateModal.vue')['default'] + EmailTemplatePage: typeof import('./src/components/Settings/EmailTemplate/EmailTemplatePage.vue')['default'] + EmailTemplates: typeof import('./src/components/Settings/EmailTemplate/EmailTemplates.vue')['default'] EmailTemplateSelectorModal: typeof import('./src/components/Modals/EmailTemplateSelectorModal.vue')['default'] EmailTemplatesListView: typeof import('./src/components/ListViews/EmailTemplatesListView.vue')['default'] ERPNextIcon: typeof import('./src/components/Icons/ERPNextIcon.vue')['default'] @@ -158,8 +162,10 @@ declare module 'vue' { ListRows: typeof import('./src/components/ListViews/ListRows.vue')['default'] LoadingIndicator: typeof import('./src/components/Icons/LoadingIndicator.vue')['default'] LucideInfo: typeof import('~icons/lucide/info')['default'] + LucideMoreHorizontal: typeof import('~icons/lucide/more-horizontal')['default'] LucidePlus: typeof import('~icons/lucide/plus')['default'] LucideSearch: typeof import('~icons/lucide/search')['default'] + LucideX: typeof import('~icons/lucide/x')['default'] MarkAsDoneIcon: typeof import('./src/components/Icons/MarkAsDoneIcon.vue')['default'] MaximizeIcon: typeof import('./src/components/Icons/MaximizeIcon.vue')['default'] MenuIcon: typeof import('./src/components/Icons/MenuIcon.vue')['default'] @@ -175,6 +181,7 @@ declare module 'vue' { MultiSelectUserInput: typeof import('./src/components/Controls/MultiSelectUserInput.vue')['default'] MuteIcon: typeof import('./src/components/Icons/MuteIcon.vue')['default'] NestedPopover: typeof import('./src/components/NestedPopover.vue')['default'] + NewEmailTemplate: typeof import('./src/components/Settings/EmailTemplate/NewEmailTemplate.vue')['default'] NoteArea: typeof import('./src/components/Activities/NoteArea.vue')['default'] NoteIcon: typeof import('./src/components/Icons/NoteIcon.vue')['default'] NoteModal: typeof import('./src/components/Modals/NoteModal.vue')['default'] diff --git a/frontend/package.json b/frontend/package.json index 51a6ff41..1f359a5c 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -13,7 +13,7 @@ "@tiptap/extension-paragraph": "^2.12.0", "@twilio/voice-sdk": "^2.10.2", "@vueuse/integrations": "^10.3.0", - "frappe-ui": "^0.1.156", + "frappe-ui": "^0.1.162", "gemoji": "^8.1.0", "lodash": "^4.17.21", "mime": "^4.0.1", diff --git a/frontend/src/components/BulkDeleteLinkedDocModal.vue b/frontend/src/components/BulkDeleteLinkedDocModal.vue index 40b6cbac..b27273b5 100644 --- a/frontend/src/components/BulkDeleteLinkedDocModal.vue +++ b/frontend/src/components/BulkDeleteLinkedDocModal.vue @@ -9,9 +9,7 @@
- +
@@ -26,22 +24,19 @@
- - +
@@ -54,9 +49,7 @@
- +
@@ -75,24 +68,20 @@
- - +
diff --git a/frontend/src/components/DeleteLinkedDocModal.vue b/frontend/src/components/DeleteLinkedDocModal.vue index d85548f0..64a24128 100644 --- a/frontend/src/components/DeleteLinkedDocModal.vue +++ b/frontend/src/components/DeleteLinkedDocModal.vue @@ -13,9 +13,7 @@
- +
@@ -62,43 +60,32 @@
+ /> + />
- +
diff --git a/frontend/src/components/EmailEditor.vue b/frontend/src/components/EmailEditor.vue index a13acdab..ca468ecc 100644 --- a/frontend/src/components/EmailEditor.vue +++ b/frontend/src/components/EmailEditor.vue @@ -150,7 +150,7 @@ @click="showEmailTemplateSelectorModal = true" >
@@ -176,7 +176,7 @@ diff --git a/frontend/src/components/ListViews/LinkedDocsListView.vue b/frontend/src/components/ListViews/LinkedDocsListView.vue index 9345846e..2687f5ea 100644 --- a/frontend/src/components/ListViews/LinkedDocsListView.vue +++ b/frontend/src/components/ListViews/LinkedDocsListView.vue @@ -37,7 +37,7 @@ diff --git a/frontend/src/components/Modals/EmailTemplateModal.vue b/frontend/src/components/Modals/EmailTemplateModal.vue deleted file mode 100644 index 15f27d46..00000000 --- a/frontend/src/components/Modals/EmailTemplateModal.vue +++ /dev/null @@ -1,239 +0,0 @@ - - - diff --git a/frontend/src/components/Modals/EmailTemplateSelectorModal.vue b/frontend/src/components/Modals/EmailTemplateSelectorModal.vue index a4fd820b..4f52e719 100644 --- a/frontend/src/components/Modals/EmailTemplateSelectorModal.vue +++ b/frontend/src/components/Modals/EmailTemplateSelectorModal.vue @@ -4,19 +4,33 @@ :options="{ title: __('Email Templates'), size: '4xl' }" > - diff --git a/frontend/src/components/Settings/EmailTemplate/EmailTemplatePage.vue b/frontend/src/components/Settings/EmailTemplate/EmailTemplatePage.vue new file mode 100644 index 00000000..c148a6dc --- /dev/null +++ b/frontend/src/components/Settings/EmailTemplate/EmailTemplatePage.vue @@ -0,0 +1,55 @@ + + + diff --git a/frontend/src/components/Settings/EmailTemplate/EmailTemplates.vue b/frontend/src/components/Settings/EmailTemplate/EmailTemplates.vue new file mode 100644 index 00000000..7fdb2972 --- /dev/null +++ b/frontend/src/components/Settings/EmailTemplate/EmailTemplates.vue @@ -0,0 +1,265 @@ + + diff --git a/frontend/src/components/Settings/EmailTemplate/NewEmailTemplate.vue b/frontend/src/components/Settings/EmailTemplate/NewEmailTemplate.vue new file mode 100644 index 00000000..16e645a7 --- /dev/null +++ b/frontend/src/components/Settings/EmailTemplate/NewEmailTemplate.vue @@ -0,0 +1,195 @@ + + diff --git a/frontend/src/components/Settings/Settings.vue b/frontend/src/components/Settings/Settings.vue index e4662770..8a8b4744 100644 --- a/frontend/src/components/Settings/Settings.vue +++ b/frontend/src/components/Settings/Settings.vue @@ -45,12 +45,14 @@ import WhatsAppIcon from '@/components/Icons/WhatsAppIcon.vue' import ERPNextIcon from '@/components/Icons/ERPNextIcon.vue' import PhoneIcon from '@/components/Icons/PhoneIcon.vue' import Email2Icon from '@/components/Icons/Email2Icon.vue' +import EmailTemplateIcon from '@/components/Icons/EmailTemplateIcon.vue' import Users from '@/components/Settings/Users.vue' import GeneralSettings from '@/components/Settings/GeneralSettings.vue' import InviteUserPage from '@/components/Settings/InviteUserPage.vue' import ProfileSettings from '@/components/Settings/ProfileSettings.vue' import WhatsAppSettings from '@/components/Settings/WhatsAppSettings.vue' import ERPNextSettings from '@/components/Settings/ERPNextSettings.vue' +import EmailTemplatePage from '@/components/Settings/EmailTemplate/EmailTemplatePage.vue' import TelephonySettings from '@/components/Settings/TelephonySettings.vue' import EmailConfig from '@/components/Settings/EmailConfig.vue' import SidebarLink from '@/components/SidebarLink.vue' @@ -107,6 +109,11 @@ const tabs = computed(() => { component: markRaw(EmailConfig), condition: () => isManager(), }, + { + label: __('Email Templates'), + icon: EmailTemplateIcon, + component: markRaw(EmailTemplatePage), + }, ], }, { diff --git a/frontend/src/components/Settings/Users.vue b/frontend/src/components/Settings/Users.vue index 0d4670ed..ad23658c 100644 --- a/frontend/src/components/Settings/Users.vue +++ b/frontend/src/components/Settings/Users.vue @@ -1,7 +1,7 @@