mirror of
https://github.com/frappe/erpnext.git
synced 2026-09-17 10:36:31 +00:00
fix(call popup): Multiple changes
- Remove summary from call log use comments instead - Add contact and lead if matched to the call log - Add received by field with Employee Link - DocPerm to allow Employees to have read access on call log - Remove unwanted code - Add a method to get lead just by providing phone number - Show popup only to Employee to which the system is trying to connect. - Remove custom code from call popup dialog and replace it with standard fields - Increase timeout to hide popup after the call has been disconnected.
This commit is contained in:
@@ -8,12 +8,18 @@
|
||||
"from",
|
||||
"to",
|
||||
"column_break_3",
|
||||
"received_by",
|
||||
"medium",
|
||||
"caller_information",
|
||||
"contact",
|
||||
"contact_name",
|
||||
"column_break_10",
|
||||
"lead",
|
||||
"lead_name",
|
||||
"section_break_5",
|
||||
"status",
|
||||
"duration",
|
||||
"recording_url",
|
||||
"summary"
|
||||
"recording_url"
|
||||
],
|
||||
"fields": [
|
||||
{
|
||||
@@ -60,12 +66,6 @@
|
||||
"label": "Duration",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "summary",
|
||||
"fieldtype": "Data",
|
||||
"label": "Summary",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "recording_url",
|
||||
"fieldtype": "Data",
|
||||
@@ -77,10 +77,56 @@
|
||||
"fieldtype": "Data",
|
||||
"label": "Medium",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "received_by",
|
||||
"fieldtype": "Link",
|
||||
"label": "Received By",
|
||||
"options": "Employee",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "caller_information",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Caller Information"
|
||||
},
|
||||
{
|
||||
"fieldname": "contact",
|
||||
"fieldtype": "Link",
|
||||
"label": "Contact",
|
||||
"options": "Contact",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "lead",
|
||||
"fieldtype": "Link",
|
||||
"label": "Lead ",
|
||||
"options": "Lead",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fetch_from": "contact.name",
|
||||
"fieldname": "contact_name",
|
||||
"fieldtype": "Data",
|
||||
"hidden": 1,
|
||||
"label": "Contact Name",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "column_break_10",
|
||||
"fieldtype": "Column Break"
|
||||
},
|
||||
{
|
||||
"fetch_from": "lead.lead_name",
|
||||
"fieldname": "lead_name",
|
||||
"fieldtype": "Data",
|
||||
"hidden": 1,
|
||||
"label": "Lead Name",
|
||||
"read_only": 1
|
||||
}
|
||||
],
|
||||
"in_create": 1,
|
||||
"modified": "2019-07-01 09:09:48.516722",
|
||||
"modified": "2019-07-15 19:18:31.267379",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Communication",
|
||||
"name": "Call Log",
|
||||
@@ -97,10 +143,20 @@
|
||||
"role": "System Manager",
|
||||
"share": 1,
|
||||
"write": 1
|
||||
},
|
||||
{
|
||||
"email": 1,
|
||||
"export": 1,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"role": "Employee",
|
||||
"share": 1
|
||||
}
|
||||
],
|
||||
"sort_field": "modified",
|
||||
"sort_order": "ASC",
|
||||
"title_field": "from",
|
||||
"track_changes": 1
|
||||
"track_changes": 1,
|
||||
"track_views": 1
|
||||
}
|
||||
@@ -4,16 +4,51 @@
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe import _
|
||||
from frappe.model.document import Document
|
||||
from erpnext.crm.doctype.utils import get_employee_emails_for_popup
|
||||
from frappe.contacts.doctype.contact.contact import get_contact_with_phone_number
|
||||
from erpnext.crm.doctype.lead.lead import get_lead_with_phone_number
|
||||
|
||||
class CallLog(Document):
|
||||
def before_insert(self):
|
||||
number = self.get('from').lstrip('0')
|
||||
self.contact = get_contact_with_phone_number(number)
|
||||
self.lead = get_lead_with_phone_number(number)
|
||||
|
||||
def after_insert(self):
|
||||
employee_emails = get_employee_emails_for_popup(self.medium)
|
||||
for email in employee_emails:
|
||||
frappe.publish_realtime('show_call_popup', self, user=email)
|
||||
self.trigger_call_popup()
|
||||
|
||||
def on_update(self):
|
||||
doc_before_save = self.get_doc_before_save()
|
||||
if doc_before_save and doc_before_save.status in ['Ringing'] and self.status in ['Missed', 'Completed']:
|
||||
if not doc_before_save: return
|
||||
if doc_before_save.status in ['Ringing'] and self.status in ['Missed', 'Completed']:
|
||||
frappe.publish_realtime('call_{id}_disconnected'.format(id=self.id), self)
|
||||
elif doc_before_save.to != self.to:
|
||||
self.trigger_call_popup()
|
||||
|
||||
def trigger_call_popup(self):
|
||||
employee_email = get_employee_email(self.to)
|
||||
if employee_email:
|
||||
frappe.publish_realtime('show_call_popup', self, user=employee_email)
|
||||
|
||||
@frappe.whitelist()
|
||||
def add_call_summary(call_log, summary):
|
||||
doc = frappe.get_doc('Call Log', call_log)
|
||||
doc.add_comment('Comment', frappe.bold(_('Call Summary')) + '<br><br>' + summary)
|
||||
|
||||
def get_employee_email(number):
|
||||
if not number: return
|
||||
number = number.lstrip('0')
|
||||
|
||||
employee = frappe.cache().hget('employee_with_number', number)
|
||||
if employee: return employee
|
||||
|
||||
employees = frappe.get_all('Employee', or_filters={
|
||||
'phone': ['like', '%{}'.format(number)],
|
||||
}, limit=1)
|
||||
|
||||
employee = employees[0].name if employees else None
|
||||
frappe.cache().hset('employee_with_number', number, employee)
|
||||
|
||||
return employee
|
||||
Reference in New Issue
Block a user