From a685724d3df1a18f131c406da583f6f99dfb66bb Mon Sep 17 00:00:00 2001
From: Shariq Ansari <sharique.rik@gmail.com>
Date: Mon, 6 Nov 2023 22:19:49 +0530
Subject: [PATCH] fix: updated activities & communicationArea component to
 handle lead/deal activities

---
 frontend/src/components/Activities.vue        | 34 ++++++++-----------
 frontend/src/components/CommunicationArea.vue | 15 +++++---
 2 files changed, 25 insertions(+), 24 deletions(-)

diff --git a/frontend/src/components/Activities.vue b/frontend/src/components/Activities.vue
index ab059e89c..267331579 100644
--- a/frontend/src/components/Activities.vue
+++ b/frontend/src/components/Activities.vue
@@ -6,7 +6,7 @@
     <Button
       v-if="title == 'Calls'"
       variant="solid"
-      @click="makeCall(lead.data.mobile_no)"
+      @click="makeCall(doc.data.mobile_no)"
     >
       <template #prefix>
         <PhoneIcon class="h-4 w-4" />
@@ -561,7 +561,7 @@
       v-if="title == 'Calls'"
       variant="solid"
       label="Make a call"
-      @click="makeCall(lead.data.mobile_no)"
+      @click="makeCall(doc.data.mobile_no)"
     />
     <Button
       v-else-if="title == 'Notes'"
@@ -585,20 +585,20 @@
   <CommunicationArea
     ref="emailBox"
     v-if="['Emails', 'Activity'].includes(title)"
-    v-model="lead"
+    v-model="doc"
     v-model:reload="reload_email"
   />
   <NoteModal
     v-model="showNoteModal"
     v-model:reloadNotes="notes"
     :note="note"
-    :lead="lead.data?.name"
+    :lead="doc.data?.name"
   />
   <TaskModal
     v-model="showTaskModal"
     v-model:reloadTasks="tasks"
     :task="task"
-    :lead="lead.data?.name"
+    :lead="doc.data?.name"
   />
 </template>
 <script setup>
@@ -654,22 +654,22 @@ const props = defineProps({
   },
 })
 
-const lead = defineModel()
+const doc = defineModel()
 const reload = defineModel('reload')
 
 const reload_email = ref(false)
 
 const versions = createResource({
-  url: 'crm.fcrm.doctype.crm_lead.api.get_activities',
-  params: { name: lead.value.data.name },
-  cache: ['activity', lead.value.data.name],
+  url: 'crm.api.activities.get_activities',
+  params: { name: doc.value.data.name },
+  cache: ['activity', doc.value.data.name],
   auto: true,
 })
 
 const calls = createListResource({
   type: 'list',
   doctype: 'CRM Call Log',
-  cache: ['Call Logs', lead.value.data.name],
+  cache: ['Call Logs', doc.value.data.name],
   fields: [
     'name',
     'caller',
@@ -685,7 +685,7 @@ const calls = createListResource({
     'creation',
     'note',
   ],
-  filters: { lead: lead.value.data.name },
+  filters: { lead: doc.value.data.name },
   orderBy: 'creation desc',
   pageLength: 999,
   auto: true,
@@ -722,9 +722,9 @@ const calls = createListResource({
 const notes = createListResource({
   type: 'list',
   doctype: 'CRM Note',
-  cache: ['Notes', lead.value.data.name],
+  cache: ['Notes', doc.value.data.name],
   fields: ['name', 'title', 'content', 'owner', 'modified'],
-  filters: { lead: lead.value.data.name },
+  filters: { lead: doc.value.data.name },
   orderBy: 'modified desc',
   pageLength: 999,
   auto: true,
@@ -733,7 +733,7 @@ const notes = createListResource({
 const tasks = createListResource({
   type: 'list',
   doctype: 'CRM Task',
-  cache: ['Tasks', lead.value.data.name],
+  cache: ['Tasks', doc.value.data.name],
   fields: [
     'name',
     'title',
@@ -745,7 +745,7 @@ const tasks = createListResource({
     'status',
     'modified',
   ],
-  filters: { lead: lead.value.data.name },
+  filters: { lead: doc.value.data.name },
   orderBy: 'modified desc',
   pageLength: 999,
   auto: true,
@@ -805,10 +805,6 @@ function update_activities_details(activity) {
 
   if (activity.activity_type == 'creation') {
     activity.type = activity.data
-  } else if (activity.activity_type == 'deal') {
-    activity.type = 'converted the lead to this deal'
-    activity.data.field_label = ''
-    activity.data.value = ''
   } else if (activity.activity_type == 'added') {
     activity.type = 'added'
     activity.value = 'as'
diff --git a/frontend/src/components/CommunicationArea.vue b/frontend/src/components/CommunicationArea.vue
index f7efe47e0..eeef4b2ef 100644
--- a/frontend/src/components/CommunicationArea.vue
+++ b/frontend/src/components/CommunicationArea.vue
@@ -42,7 +42,7 @@
           },
         }"
         :editable="showCommunicationBox"
-        v-model="lead.data"
+        v-model="doc.data"
         placeholder="Add a reply..."
       />
     </div>
@@ -56,7 +56,7 @@ import { usersStore } from '@/stores/users'
 import { call } from 'frappe-ui'
 import { ref, watch, computed, defineModel } from 'vue'
 
-const lead = defineModel()
+const doc = defineModel()
 const reload = defineModel('reload')
 
 const { getUser } = usersStore()
@@ -84,14 +84,19 @@ const onNewEmailChange = (value) => {
 }
 
 async function sendMail() {
+  let doctype = 'CRM Lead'
+  if (doc.value.data.lead) {
+    doctype = 'CRM Deal'
+  }
+
   await call('frappe.core.doctype.communication.email.make', {
-    recipients: lead.value.data.email,
+    recipients: doc.value.data.email,
     cc: '',
     bcc: '',
     subject: 'Email from Agent',
     content: newEmail.value,
-    doctype: 'CRM Lead',
-    name: lead.value.data.name,
+    doctype: doctype,
+    name: doc.value.data.name,
     send_email: 1,
     sender: getUser().name,
     sender_full_name: getUser()?.full_name || undefined,