diff --git a/frontend/components.d.ts b/frontend/components.d.ts index 3404f805..481e54db 100644 --- a/frontend/components.d.ts +++ b/frontend/components.d.ts @@ -56,6 +56,7 @@ declare module 'vue' { ContactsIcon: typeof import('./src/components/Icons/ContactsIcon.vue')['default'] ContactsListView: typeof import('./src/components/ListViews/ContactsListView.vue')['default'] ConvertIcon: typeof import('./src/components/Icons/ConvertIcon.vue')['default'] + ConvertToDealModal: typeof import('./src/components/Modals/ConvertToDealModal.vue')['default'] CountUpTimer: typeof import('./src/components/CountUpTimer.vue')['default'] CreateDocumentModal: typeof import('./src/components/Modals/CreateDocumentModal.vue')['default'] CRMLogo: typeof import('./src/components/Icons/CRMLogo.vue')['default'] diff --git a/frontend/src/components/Modals/ConvertToDealModal.vue b/frontend/src/components/Modals/ConvertToDealModal.vue new file mode 100644 index 00000000..a4a29ac0 --- /dev/null +++ b/frontend/src/components/Modals/ConvertToDealModal.vue @@ -0,0 +1,227 @@ + + diff --git a/frontend/src/data/document.js b/frontend/src/data/document.js index a77174cd..9c15e1d0 100644 --- a/frontend/src/data/document.js +++ b/frontend/src/data/document.js @@ -193,8 +193,7 @@ export function useDocument(doctype, docname) { async function triggerConvertToDeal() { const args = Array.from(arguments) const handler = async function () { - await (this.convertToDeal?.(...args) || - this.on_convert_to_deal?.(...args)) + await (this.convertToDeal?.(...args) || this.convert_to_deal?.(...args)) } await trigger(handler) } diff --git a/frontend/src/pages/Lead.vue b/frontend/src/pages/Lead.vue index 8b5cce0e..6b713a5d 100644 --- a/frontend/src/pages/Lead.vue +++ b/frontend/src/pages/Lead.vue @@ -226,108 +226,11 @@ :errorTitle="errorTitle" :errorMessage="errorMessage" /> - - - - + :lead="lead.data" + /> (showConvertToDealModal.value = false), - ) - - let _deal = await call('crm.fcrm.doctype.crm_lead.crm_lead.convert_to_deal', { - lead: lead.data.name, - deal, - existing_contact: existingContact.value, - existing_organization: existingOrganization.value, - }).catch((err) => { - toast.error(__('Error converting to deal: {0}', [err.messages?.[0]])) - }) - if (_deal) { - showConvertToDealModal.value = false - existingContactChecked.value = false - existingOrganizationChecked.value = false - existingContact.value = '' - existingOrganization.value = '' - updateOnboardingStep('convert_lead_to_deal', true, false, () => { - localStorage.setItem('firstDeal' + user, _deal) - }) - capture('convert_lead_to_deal') - router.push({ name: 'Deal', params: { dealId: _deal } }) - } -} - const activities = ref(null) function openEmailBox() { @@ -708,54 +541,6 @@ function openEmailBox() { nextTick(() => (activities.value.emailBox.show = true)) } -const deal = reactive({}) - -const dealStatuses = computed(() => { - let statuses = statusOptions('deal') - if (!deal.status) { - deal.status = statuses[0].value - } - return statuses -}) - -const dealTabs = createResource({ - url: 'crm.fcrm.doctype.crm_fields_layout.crm_fields_layout.get_fields_layout', - cache: ['RequiredFields', 'CRM Deal'], - params: { doctype: 'CRM Deal', type: 'Required Fields' }, - auto: true, - transform: (_tabs) => { - let hasFields = false - let parsedTabs = _tabs?.forEach((tab) => { - tab.sections?.forEach((section) => { - section.columns?.forEach((column) => { - column.fields?.forEach((field) => { - hasFields = true - if (field.fieldname == 'status') { - field.fieldtype = 'Select' - field.options = dealStatuses.value - field.prefix = getDealStatus(deal.status).color - } - - if (field.fieldtype === 'Table') { - deal[field.fieldname] = [] - } - }) - }) - }) - }) - return hasFields ? parsedTabs : [] - }, -}) - -function openQuickEntryModal() { - showQuickEntryModal.value = true - quickEntryProps.value = { - doctype: 'CRM Deal', - onlyRequired: true, - } - showConvertToDealModal.value = false -} - function reloadAssignees(data) { if (data?.hasOwnProperty('lead_owner')) { assignees.reload()