From 9a6ca31858cb80781ed9918868d193f60b506e90 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Fri, 23 May 2025 21:49:12 +0530 Subject: [PATCH] feat: intercept create lead from call log via form script (cherry picked from commit 8af4e9b5e82a5a3460053fa0fc7b93a704a97084) --- crm/fcrm/doctype/crm_call_log/crm_call_log.py | 17 ++++++++++---- frontend/src/components/FieldLayout/Field.vue | 9 +++++++- .../components/Modals/CallLogDetailModal.vue | 23 +++++++++++++++++-- frontend/src/data/document.js | 9 ++++++++ 4 files changed, 51 insertions(+), 7 deletions(-) diff --git a/crm/fcrm/doctype/crm_call_log/crm_call_log.py b/crm/fcrm/doctype/crm_call_log/crm_call_log.py index e644b6e1..4e3488c6 100644 --- a/crm/fcrm/doctype/crm_call_log/crm_call_log.py +++ b/crm/fcrm/doctype/crm_call_log/crm_call_log.py @@ -190,11 +190,20 @@ def get_call_log(name): @frappe.whitelist() -def create_lead_from_call_log(call_log): +def create_lead_from_call_log(call_log, lead_details=None): lead = frappe.new_doc("CRM Lead") - lead.first_name = "Lead from call " + call_log.get("from") - lead.mobile_no = call_log.get("from") - lead.lead_owner = frappe.session.user + lead_details = frappe.parse_json(lead_details or "{}") + + if not lead_details.get("lead_owner"): + lead_details["lead_owner"] = frappe.session.user + if not lead_details.get("mobile_no"): + lead_details["mobile_no"] = call_log.get("from") or "" + if not lead_details.get("first_name"): + lead_details["first_name"] = "Lead from call " + ( + lead_details.get("mobile_no") or call_log.get("name") + ) + + lead.update(lead_details) lead.save(ignore_permissions=True) # link call log with lead diff --git a/frontend/src/components/FieldLayout/Field.vue b/frontend/src/components/FieldLayout/Field.vue index a190817f..b517d973 100644 --- a/frontend/src/components/FieldLayout/Field.vue +++ b/frontend/src/components/FieldLayout/Field.vue @@ -206,7 +206,7 @@ v-else type="text" :placeholder="getPlaceholder(field)" - :value="data[field.fieldname]" + :value="getDataValue(data[field.fieldname], field)" :disabled="Boolean(field.read_only)" :description="field.description" @change="fieldChange($event.target.value, field)" @@ -340,6 +340,13 @@ function fieldChange(value, df) { triggerOnChange(df.fieldname) } } + +function getDataValue(value, field) { + if (field.fieldtype === 'Duration') { + return value || 0 + } + return value +}