fix: pass required deal fields value while converting to deal

This commit is contained in:
Shariq Ansari 2025-02-21 14:50:16 +05:30
parent 3c865c37a7
commit 3afa8c2d72
2 changed files with 21 additions and 18 deletions

View File

@ -197,8 +197,8 @@ class CRMLead(Document):
return False return False
def create_deal(self, contact, organization): def create_deal(self, contact, organization, deal=None):
deal = frappe.new_doc("CRM Deal") new_deal = frappe.new_doc("CRM Deal")
lead_deal_map = { lead_deal_map = {
"lead_owner": "deal_owner", "lead_owner": "deal_owner",
@ -245,13 +245,13 @@ class CRMLead(Document):
if field.fieldname in lead_deal_map: if field.fieldname in lead_deal_map:
fieldname = lead_deal_map[field.fieldname] fieldname = lead_deal_map[field.fieldname]
if hasattr(deal, fieldname): if hasattr(new_deal, fieldname):
if fieldname == "organization": if fieldname == "organization":
deal.update({fieldname: organization}) new_deal.update({fieldname: organization})
else: else:
deal.update({fieldname: self.get(field.fieldname)}) new_deal.update({fieldname: self.get(field.fieldname)})
deal.update( new_deal.update(
{ {
"lead": self.name, "lead": self.name,
"contacts": [{"contact": contact}], "contacts": [{"contact": contact}],
@ -259,7 +259,7 @@ class CRMLead(Document):
) )
if self.first_responded_on: if self.first_responded_on:
deal.update( new_deal.update(
{ {
"sla_creation": self.sla_creation, "sla_creation": self.sla_creation,
"response_by": self.response_by, "response_by": self.response_by,
@ -270,8 +270,11 @@ class CRMLead(Document):
} }
) )
deal.insert(ignore_permissions=True) if deal:
return deal.name new_deal.update(deal)
new_deal.insert(ignore_permissions=True)
return new_deal.name
def set_sla(self): def set_sla(self):
""" """
@ -297,8 +300,8 @@ class CRMLead(Document):
if sla: if sla:
sla.apply(self) sla.apply(self)
def convert_to_deal(self): def convert_to_deal(self, deal=None):
return convert_to_deal(lead=self.name, doc=self) return convert_to_deal(lead=self.name, doc=self, deal=deal)
@staticmethod @staticmethod
def get_non_filterable_fields(): def get_non_filterable_fields():
@ -380,7 +383,7 @@ class CRMLead(Document):
@frappe.whitelist() @frappe.whitelist()
def convert_to_deal(lead, doc=None): def convert_to_deal(lead, doc=None, deal=None):
if not (doc and doc.flags.get("ignore_permissions")) and not frappe.has_permission( if not (doc and doc.flags.get("ignore_permissions")) and not frappe.has_permission(
"CRM Lead", "write", lead "CRM Lead", "write", lead
): ):
@ -394,5 +397,5 @@ def convert_to_deal(lead, doc=None):
lead.db_set("communication_status", "Replied") lead.db_set("communication_status", "Replied")
contact = lead.create_contact(False) contact = lead.create_contact(False)
organization = lead.create_organization() organization = lead.create_organization()
deal = lead.create_deal(contact, organization) _deal = lead.create_deal(contact, organization, deal)
return deal return _deal

View File

@ -646,9 +646,9 @@ async function convertToDeal(updated) {
) )
showConvertToDealModal.value = false showConvertToDealModal.value = false
} else { } else {
let deal = await call( let _deal = await call(
'crm.fcrm.doctype.crm_lead.crm_lead.convert_to_deal', 'crm.fcrm.doctype.crm_lead.crm_lead.convert_to_deal',
{ lead: lead.data.name }, { lead: lead.data.name, deal },
).catch((err) => { ).catch((err) => {
createToast({ createToast({
title: __('Error converting to deal'), title: __('Error converting to deal'),
@ -657,12 +657,12 @@ async function convertToDeal(updated) {
iconClasses: 'text-ink-red-4', iconClasses: 'text-ink-red-4',
}) })
}) })
if (deal) { if (_deal) {
capture('convert_lead_to_deal') capture('convert_lead_to_deal')
if (updated) { if (updated) {
await contacts.reload() await contacts.reload()
} }
router.push({ name: 'Deal', params: { dealId: deal } }) router.push({ name: 'Deal', params: { dealId: _deal } })
} }
} }
} }