diff --git a/crm/api/activities.py b/crm/api/activities.py index 8f9df31e..c458a383 100644 --- a/crm/api/activities.py +++ b/crm/api/activities.py @@ -34,10 +34,11 @@ def get_deal_activities(name): activities = [] calls = [] notes = [] + tasks = [] creation_text = "created this deal" if lead: - activities, calls, notes = get_lead_activities(lead) + activities, calls, notes, tasks = get_lead_activities(lead) creation_text = "converted the lead to this deal" activities.append({ @@ -129,11 +130,12 @@ def get_deal_activities(name): calls = calls + get_linked_calls(name) notes = notes + get_linked_notes(name) + tasks = tasks + get_linked_tasks(name) activities.sort(key=lambda x: x["creation"], reverse=True) activities = handle_multiple_versions(activities) - return activities, calls, notes + return activities, calls, notes, tasks def get_lead_activities(name): get_docinfo('', "CRM Lead", name) @@ -239,11 +241,12 @@ def get_lead_activities(name): calls = get_linked_calls(name) notes = get_linked_notes(name) + tasks = get_linked_tasks(name) activities.sort(key=lambda x: x["creation"], reverse=True) activities = handle_multiple_versions(activities) - return activities, calls, notes + return activities, calls, notes, tasks @redis_cache() def get_attachments(name): @@ -315,3 +318,21 @@ def get_linked_notes(name): fields=['name', 'title', 'content', 'owner', 'modified'], ) return notes or [] + +def get_linked_tasks(name): + tasks = frappe.db.get_all( + "CRM Task", + filters={"reference_docname": name}, + fields=[ + "name", + "title", + "description", + "assigned_to", + "assigned_to", + "due_date", + "priority", + "status", + "modified", + ], + ) + return tasks or [] diff --git a/frontend/src/components/Activities.vue b/frontend/src/components/Activities.vue index 6a93c285..7eb43032 100644 --- a/frontend/src/components/Activities.vue +++ b/frontend/src/components/Activities.vue @@ -724,7 +724,7 @@ /> { + transform: ([versions, calls, notes, tasks]) => { if (calls?.length) { calls.forEach((doc) => { doc.show_recording = false @@ -839,30 +839,10 @@ const all_activities = createResource({ } }) } - return { versions, calls, notes } + return { versions, calls, notes, tasks } }, }) -const tasks = createListResource({ - type: 'list', - doctype: 'CRM Task', - cache: ['Tasks', doc.value.data.name], - fields: [ - 'name', - 'title', - 'description', - 'assigned_to', - 'assigned_to', - 'due_date', - 'priority', - 'status', - 'modified', - ], - filters: { reference_docname: doc.value.data.name }, - orderBy: 'modified desc', - pageLength: 999, -}) - function get_activities() { if (!all_activities.data?.versions) return [] if (!all_activities.data?.calls.length) @@ -887,7 +867,8 @@ const activities = computed(() => { (a, b) => new Date(a.creation) - new Date(b.creation) ) } else if (props.title == 'Tasks') { - return tasks.data?.sort( + if (!all_activities.data?.tasks) return [] + return all_activities.data.tasks.sort( (a, b) => new Date(a.creation) - new Date(b.creation) ) } else if (props.title == 'Notes') { @@ -1033,7 +1014,7 @@ async function deleteTask(name) { doctype: 'CRM Task', name, }) - tasks.reload() + all_activities.reload() } function updateTaskStatus(status, task) { @@ -1043,7 +1024,7 @@ function updateTaskStatus(status, task) { fieldname: 'status', value: status, }).then(() => { - tasks.reload() + all_activities.reload() }) }