1
0
forked from test/crm

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

View File

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