refactor: updateField & deleteDeal/Lead
(cherry picked from commit 0605cf5fd0c0de9ba22e4f504a8acb24a6cbdf3c)
This commit is contained in:
parent
b1dfa6e9c9
commit
72c61f6cc4
@ -126,7 +126,7 @@
|
||||
<Tooltip :text="__('Delete')">
|
||||
<div>
|
||||
<Button
|
||||
@click="deleteDealWithModal(doc.name)"
|
||||
@click="deleteDealWithModal"
|
||||
variant="subtle"
|
||||
icon="trash-2"
|
||||
theme="red"
|
||||
@ -455,7 +455,7 @@ watch(
|
||||
toast,
|
||||
updateField,
|
||||
createToast: toast.create,
|
||||
deleteDoc: deleteDeal,
|
||||
deleteDoc: deleteDealWithModal,
|
||||
call,
|
||||
})
|
||||
document._actions = s.actions || []
|
||||
@ -506,44 +506,6 @@ const showFilesUploader = ref(false)
|
||||
const _organization = ref({})
|
||||
const showDeleteLinkedDocModal = ref(false)
|
||||
|
||||
async function deleteDealWithModal() {
|
||||
showDeleteLinkedDocModal.value = true
|
||||
}
|
||||
function updateDeal(fieldname, value, callback) {
|
||||
value = Array.isArray(fieldname) ? '' : value
|
||||
|
||||
if (validateRequired(fieldname, value)) return
|
||||
|
||||
createResource({
|
||||
url: 'frappe.client.set_value',
|
||||
params: {
|
||||
doctype: 'CRM Deal',
|
||||
name: props.dealId,
|
||||
fieldname,
|
||||
value,
|
||||
},
|
||||
auto: true,
|
||||
onSuccess: () => {
|
||||
deal.reload()
|
||||
reload.value = true
|
||||
toast.success(__('Deal updated'))
|
||||
callback?.()
|
||||
},
|
||||
onError: (err) => {
|
||||
toast.error(__('Error updating deal: {0}', [err.messages?.[0]]))
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
function validateRequired(fieldname, value) {
|
||||
let meta = deal.data?.fields_meta || {}
|
||||
if (meta[fieldname]?.reqd && !value) {
|
||||
toast.error(__('{0} is a required field', [meta[fieldname].label]))
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
const breadcrumbs = computed(() => {
|
||||
let items = [{ label: __('Deals'), route: { name: 'Deals' } }]
|
||||
|
||||
@ -756,23 +718,40 @@ function triggerCall() {
|
||||
makeCall(mobile_no)
|
||||
}
|
||||
|
||||
function updateField(name, value, callback) {
|
||||
async function triggerStatusChange(value) {
|
||||
await triggerOnChange('status', value)
|
||||
setLostReason()
|
||||
}
|
||||
|
||||
function updateField(name, value) {
|
||||
if (name == 'status' && !isOnboardingStepsCompleted.value) {
|
||||
updateOnboardingStep('change_deal_status')
|
||||
}
|
||||
|
||||
updateDeal(name, value, () => {
|
||||
value = Array.isArray(name) ? '' : value
|
||||
let oldValues = Array.isArray(name) ? {} : doc.value[name]
|
||||
|
||||
if (Array.isArray(name)) {
|
||||
name.forEach((field) => (doc.value[field] = value))
|
||||
} else {
|
||||
doc.value[name] = value
|
||||
callback?.()
|
||||
}
|
||||
|
||||
document.save.submit(null, {
|
||||
onSuccess: () => (reload.value = true),
|
||||
onError: (err) => {
|
||||
if (Array.isArray(name)) {
|
||||
name.forEach((field) => (doc.value[field] = oldValues[field]))
|
||||
} else {
|
||||
doc.value[name] = oldValues
|
||||
}
|
||||
toast.error(err.messages?.[0] || __('Error updating field'))
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
async function deleteDeal(name) {
|
||||
await call('frappe.client.delete', {
|
||||
doctype: 'CRM Deal',
|
||||
name,
|
||||
})
|
||||
router.push({ name: 'Deals' })
|
||||
async function deleteDealWithModal() {
|
||||
showDeleteLinkedDocModal.value = true
|
||||
}
|
||||
|
||||
const activities = ref(null)
|
||||
@ -785,11 +764,6 @@ function openEmailBox() {
|
||||
nextTick(() => (activities.value.emailBox.show = true))
|
||||
}
|
||||
|
||||
async function triggerStatusChange(value) {
|
||||
await triggerOnChange('status', value)
|
||||
setLostReason()
|
||||
}
|
||||
|
||||
const showLostReasonModal = ref(false)
|
||||
|
||||
function setLostReason() {
|
||||
|
||||
@ -185,7 +185,7 @@
|
||||
<Tooltip :text="__('Delete')">
|
||||
<div>
|
||||
<Button
|
||||
@click="deleteLeadWithModal(doc.name)"
|
||||
@click="deleteLeadWithModal"
|
||||
variant="subtle"
|
||||
theme="red"
|
||||
icon="trash-2"
|
||||
@ -329,11 +329,6 @@ const { triggerOnChange, assignees, document, scripts, error } = useDocument(
|
||||
|
||||
const doc = computed(() => document.doc || {})
|
||||
|
||||
async function triggerStatusChange(value) {
|
||||
await triggerOnChange('status', value)
|
||||
document.save.submit()
|
||||
}
|
||||
|
||||
watch(error, (err) => {
|
||||
if (err) {
|
||||
errorTitle.value = __(
|
||||
@ -360,7 +355,7 @@ watch(
|
||||
toast,
|
||||
updateField,
|
||||
createToast: toast.create,
|
||||
deleteDoc: deleteLead,
|
||||
deleteDoc: deleteLeadWithModal,
|
||||
call,
|
||||
})
|
||||
document._actions = s.actions || []
|
||||
@ -384,41 +379,6 @@ onMounted(() => {
|
||||
const reload = ref(false)
|
||||
const showFilesUploader = ref(false)
|
||||
|
||||
function updateLead(fieldname, value, callback) {
|
||||
value = Array.isArray(fieldname) ? '' : value
|
||||
|
||||
if (!Array.isArray(fieldname) && validateRequired(fieldname, value)) return
|
||||
|
||||
createResource({
|
||||
url: 'frappe.client.set_value',
|
||||
params: {
|
||||
doctype: 'CRM Lead',
|
||||
name: props.leadId,
|
||||
fieldname,
|
||||
value,
|
||||
},
|
||||
auto: true,
|
||||
onSuccess: () => {
|
||||
lead.reload()
|
||||
reload.value = true
|
||||
toast.success(__('Lead updated successfully'))
|
||||
callback?.()
|
||||
},
|
||||
onError: (err) => {
|
||||
toast.error(err.messages?.[0] || __('Error updating lead'))
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
function validateRequired(fieldname, value) {
|
||||
let meta = lead.data?.fields_meta || {}
|
||||
if (meta[fieldname]?.reqd && !value) {
|
||||
toast.error(__('{0} is a required field', [meta[fieldname].label]))
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
const breadcrumbs = computed(() => {
|
||||
let items = [{ label: __('Leads'), route: { name: 'Leads' } }]
|
||||
|
||||
@ -528,22 +488,35 @@ const sections = createResource({
|
||||
auto: true,
|
||||
})
|
||||
|
||||
function updateField(name, value, callback) {
|
||||
updateLead(name, value, () => {
|
||||
doc[name] = value
|
||||
callback?.()
|
||||
async function triggerStatusChange(value) {
|
||||
await triggerOnChange('status', value)
|
||||
document.save.submit()
|
||||
}
|
||||
|
||||
function updateField(name, value) {
|
||||
value = Array.isArray(name) ? '' : value
|
||||
let oldValues = Array.isArray(name) ? {} : doc.value[name]
|
||||
|
||||
if (Array.isArray(name)) {
|
||||
name.forEach((field) => (doc.value[field] = value))
|
||||
} else {
|
||||
doc.value[name] = value
|
||||
}
|
||||
|
||||
document.save.submit(null, {
|
||||
onSuccess: () => (reload.value = true),
|
||||
onError: (err) => {
|
||||
if (Array.isArray(name)) {
|
||||
name.forEach((field) => (doc.value[field] = oldValues[field]))
|
||||
} else {
|
||||
doc.value[name] = oldValues
|
||||
}
|
||||
toast.error(err.messages?.[0] || __('Error updating field'))
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
async function deleteLead(name) {
|
||||
await call('frappe.client.delete', {
|
||||
doctype: 'CRM Lead',
|
||||
name,
|
||||
})
|
||||
router.push({ name: 'Leads' })
|
||||
}
|
||||
|
||||
async function deleteLeadWithModal(name) {
|
||||
async function deleteLeadWithModal() {
|
||||
showDeleteLinkedDocModal.value = true
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user