fix: option to create customer on status change

This commit is contained in:
Shariq Ansari 2024-09-16 19:30:53 +05:30
parent cb33d2d3f2
commit 979ef27a9d
4 changed files with 62 additions and 7 deletions

View File

@ -13,7 +13,11 @@
"erpnext_site_url",
"column_break_fllx",
"api_key",
"api_secret"
"api_secret",
"section_break_jnbn",
"create_customer_on_status_change",
"column_break_kbhw",
"deal_status"
],
"fields": [
{
@ -69,12 +73,34 @@
"fieldname": "is_erpnext_in_different_site",
"fieldtype": "Check",
"label": "Is ERPNext installed on a different site?"
},
{
"fieldname": "section_break_jnbn",
"fieldtype": "Section Break"
},
{
"default": "0",
"depends_on": "enabled",
"fieldname": "create_customer_on_status_change",
"fieldtype": "Check",
"label": "Create customer on status change"
},
{
"fieldname": "column_break_kbhw",
"fieldtype": "Column Break"
},
{
"depends_on": "create_customer_on_status_change",
"fieldname": "deal_status",
"fieldtype": "Link",
"label": "Deal Status",
"options": "CRM Deal Status"
}
],
"index_web_pages_for_search": 1,
"issingle": 1,
"links": [],
"modified": "2024-09-16 13:51:35.141503",
"modified": "2024-09-16 19:01:28.694010",
"modified_by": "Administrator",
"module": "FCRM",
"name": "ERPNext CRM Settings",

View File

@ -139,7 +139,11 @@ def get_organization_address(organization):
def create_customer_in_erpnext(doc, method):
erpnext_crm_settings = frappe.get_single("ERPNext CRM Settings")
if not erpnext_crm_settings.enabled or doc.status != "Won":
if (
not erpnext_crm_settings.enabled
or not erpnext_crm_settings.create_customer_on_status_change
or doc.status != erpnext_crm_settings.deal_status
):
return
contacts = get_contacts(doc)
@ -160,7 +164,9 @@ def create_customer_in_erpnext(doc, method):
from erpnext.crm.frappe_crm_api import create_customer
create_customer(customer)
else:
create_customer_in_remote_site(customer, erpnext_crm_settings)
create_customer_in_remote_site(customer, erpnext_crm_settings)
frappe.publish_realtime("crm_customer_created")
def create_customer_in_remote_site(customer, erpnext_crm_settings):
client = get_erpnext_site_client(erpnext_crm_settings)

View File

@ -361,10 +361,10 @@ import {
call,
usePageMeta,
} from 'frappe-ui'
import { ref, computed, h, onMounted } from 'vue'
import { ref, computed, h, onMounted, onBeforeUnmount } from 'vue'
import { useRoute, useRouter } from 'vue-router'
const { $dialog, makeCall } = globalStore()
const { $dialog, $socket, makeCall } = globalStore()
const { organizations, getOrganization } = organizationsStore()
const { statusOptions, getDealStatus } = statusesStore()
const { isManager } = usersStore()
@ -386,10 +386,16 @@ const deal = createResource({
let obj = {
doc: data,
$dialog,
$socket,
router,
updateField,
createToast,
deleteDoc: deleteDeal,
resource: {
deal,
deal_contacts,
fieldsLayout,
},
call,
}
setupAssignees(data)
@ -399,10 +405,22 @@ const deal = createResource({
})
onMounted(() => {
$socket.on('crm_customer_created', () => {
createToast({
title: __('Customer created successfully'),
icon: 'check',
iconClasses: 'text-green-600',
})
})
if (deal.data) return
deal.fetch()
})
onBeforeUnmount(() => {
$socket.off('crm_customer_created')
})
const reload = ref(false)
const showOrganizationModal = ref(false)
const showAssignmentModal = ref(false)

View File

@ -335,7 +335,7 @@ import {
import { ref, computed, onMounted, watch } from 'vue'
import { useRouter, useRoute } from 'vue-router'
const { $dialog, makeCall } = globalStore()
const { $dialog, $socket, makeCall } = globalStore()
const { getContactByName, contacts } = contactsStore()
const { organizations } = organizationsStore()
const { statusOptions, getLeadStatus } = statusesStore()
@ -358,10 +358,15 @@ const lead = createResource({
let obj = {
doc: data,
$dialog,
$socket,
router,
updateField,
createToast,
deleteDoc: deleteLead,
resource: {
lead,
fieldsLayout,
},
call,
}
setupAssignees(data)