fix: trigger on change on status change
(cherry picked from commit e9e0aa357b1b1596f57d8bda0037f36514972169)
This commit is contained in:
parent
5fff00338a
commit
87a38250f6
@ -94,7 +94,7 @@ const show = defineModel()
|
|||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const error = ref(null)
|
const error = ref(null)
|
||||||
|
|
||||||
const { document: deal } = useDocument('CRM Deal')
|
const { document: deal, triggerOnChange } = useDocument('CRM Deal')
|
||||||
|
|
||||||
const hasOrganizationSections = ref(true)
|
const hasOrganizationSections = ref(true)
|
||||||
const hasContactSections = ref(true)
|
const hasContactSections = ref(true)
|
||||||
@ -164,7 +164,7 @@ const tabs = createResource({
|
|||||||
})
|
})
|
||||||
|
|
||||||
const dealStatuses = computed(() => {
|
const dealStatuses = computed(() => {
|
||||||
let statuses = statusOptions('deal')
|
let statuses = statusOptions('deal', null, [], triggerOnChange)
|
||||||
if (!deal.doc.status) {
|
if (!deal.doc.status) {
|
||||||
deal.doc.status = statuses[0].value
|
deal.doc.status = statuses[0].value
|
||||||
}
|
}
|
||||||
|
|||||||
@ -70,10 +70,10 @@ const router = useRouter()
|
|||||||
const error = ref(null)
|
const error = ref(null)
|
||||||
const isLeadCreating = ref(false)
|
const isLeadCreating = ref(false)
|
||||||
|
|
||||||
const { document: lead } = useDocument('CRM Lead')
|
const { document: lead, triggerOnChange } = useDocument('CRM Lead')
|
||||||
|
|
||||||
const leadStatuses = computed(() => {
|
const leadStatuses = computed(() => {
|
||||||
let statuses = statusOptions('lead')
|
let statuses = statusOptions('lead', null, [], triggerOnChange)
|
||||||
if (!lead.doc.status) {
|
if (!lead.doc.status) {
|
||||||
lead.doc.status = statuses?.[0]?.value
|
lead.doc.status = statuses?.[0]?.value
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,7 +23,14 @@
|
|||||||
/>
|
/>
|
||||||
<Dropdown
|
<Dropdown
|
||||||
v-if="document.doc"
|
v-if="document.doc"
|
||||||
:options="statusOptions('deal', document, deal.data._customStatuses)"
|
:options="
|
||||||
|
statusOptions(
|
||||||
|
'deal',
|
||||||
|
document,
|
||||||
|
deal.data._customStatuses,
|
||||||
|
triggerOnChange,
|
||||||
|
)
|
||||||
|
"
|
||||||
>
|
>
|
||||||
<template #default="{ open }">
|
<template #default="{ open }">
|
||||||
<Button :label="document.doc.status">
|
<Button :label="document.doc.status">
|
||||||
@ -726,7 +733,10 @@ function openEmailBox() {
|
|||||||
activities.value.emailBox.show = true
|
activities.value.emailBox.show = true
|
||||||
}
|
}
|
||||||
|
|
||||||
const { assignees, document } = useDocument('CRM Deal', props.dealId)
|
const { assignees, document, triggerOnChange } = useDocument(
|
||||||
|
'CRM Deal',
|
||||||
|
props.dealId,
|
||||||
|
)
|
||||||
|
|
||||||
function reloadAssignees(data) {
|
function reloadAssignees(data) {
|
||||||
if (data?.hasOwnProperty('deal_owner')) {
|
if (data?.hasOwnProperty('deal_owner')) {
|
||||||
|
|||||||
@ -23,7 +23,14 @@
|
|||||||
/>
|
/>
|
||||||
<Dropdown
|
<Dropdown
|
||||||
v-if="document.doc"
|
v-if="document.doc"
|
||||||
:options="statusOptions('lead', document, lead.data._customStatuses)"
|
:options="
|
||||||
|
statusOptions(
|
||||||
|
'lead',
|
||||||
|
document,
|
||||||
|
lead.data._customStatuses,
|
||||||
|
triggerOnChange,
|
||||||
|
)
|
||||||
|
"
|
||||||
>
|
>
|
||||||
<template #default="{ open }">
|
<template #default="{ open }">
|
||||||
<Button :label="document.doc.status">
|
<Button :label="document.doc.status">
|
||||||
@ -610,10 +617,8 @@ const existingOrganizationChecked = ref(false)
|
|||||||
const existingContact = ref('')
|
const existingContact = ref('')
|
||||||
const existingOrganization = ref('')
|
const existingOrganization = ref('')
|
||||||
|
|
||||||
const { triggerConvertToDeal, assignees, document } = useDocument(
|
const { triggerConvertToDeal, triggerOnChange, assignees, document } =
|
||||||
'CRM Lead',
|
useDocument('CRM Lead', props.leadId)
|
||||||
props.leadId,
|
|
||||||
)
|
|
||||||
|
|
||||||
async function convertToDeal() {
|
async function convertToDeal() {
|
||||||
if (existingContactChecked.value && !existingContact.value) {
|
if (existingContactChecked.value && !existingContact.value) {
|
||||||
|
|||||||
@ -11,7 +11,14 @@
|
|||||||
<div class="absolute right-0">
|
<div class="absolute right-0">
|
||||||
<Dropdown
|
<Dropdown
|
||||||
v-if="document.doc"
|
v-if="document.doc"
|
||||||
:options="statusOptions('deal', document, deal.data._customStatuses)"
|
:options="
|
||||||
|
statusOptions(
|
||||||
|
'deal',
|
||||||
|
document,
|
||||||
|
deal.data._customStatuses,
|
||||||
|
triggerOnChange,
|
||||||
|
)
|
||||||
|
"
|
||||||
>
|
>
|
||||||
<template #default="{ open }">
|
<template #default="{ open }">
|
||||||
<Button :label="document.doc.status">
|
<Button :label="document.doc.status">
|
||||||
@ -612,7 +619,10 @@ async function deleteDeal(name) {
|
|||||||
router.push({ name: 'Deals' })
|
router.push({ name: 'Deals' })
|
||||||
}
|
}
|
||||||
|
|
||||||
const { assignees, document } = useDocument('CRM Deal', props.dealId)
|
const { assignees, document, triggerOnChange } = useDocument(
|
||||||
|
'CRM Deal',
|
||||||
|
props.dealId,
|
||||||
|
)
|
||||||
|
|
||||||
function reloadAssignees(data) {
|
function reloadAssignees(data) {
|
||||||
if (data?.hasOwnProperty('deal_owner')) {
|
if (data?.hasOwnProperty('deal_owner')) {
|
||||||
|
|||||||
@ -11,7 +11,14 @@
|
|||||||
<div class="absolute right-0">
|
<div class="absolute right-0">
|
||||||
<Dropdown
|
<Dropdown
|
||||||
v-if="document.doc"
|
v-if="document.doc"
|
||||||
:options="statusOptions('lead', document, lead.data._customStatuses)"
|
:options="
|
||||||
|
statusOptions(
|
||||||
|
'lead',
|
||||||
|
document,
|
||||||
|
lead.data._customStatuses,
|
||||||
|
triggerOnChange,
|
||||||
|
)
|
||||||
|
"
|
||||||
>
|
>
|
||||||
<template #default="{ open }">
|
<template #default="{ open }">
|
||||||
<Button :label="document.doc.status">
|
<Button :label="document.doc.status">
|
||||||
@ -461,7 +468,10 @@ async function convertToDeal() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const { assignees, document } = useDocument('CRM Lead', props.leadId)
|
const { assignees, document, triggerOnChange } = useDocument(
|
||||||
|
'CRM Lead',
|
||||||
|
props.leadId,
|
||||||
|
)
|
||||||
|
|
||||||
function reloadAssignees(data) {
|
function reloadAssignees(data) {
|
||||||
if (data?.hasOwnProperty('lead_owner')) {
|
if (data?.hasOwnProperty('lead_owner')) {
|
||||||
|
|||||||
@ -77,7 +77,12 @@ export const statusesStore = defineStore('crm-statuses', () => {
|
|||||||
return communicationStatuses[name]
|
return communicationStatuses[name]
|
||||||
}
|
}
|
||||||
|
|
||||||
function statusOptions(doctype, document, statuses = []) {
|
function statusOptions(
|
||||||
|
doctype,
|
||||||
|
document,
|
||||||
|
statuses = [],
|
||||||
|
triggerOnChange = null,
|
||||||
|
) {
|
||||||
let statusesByName =
|
let statusesByName =
|
||||||
doctype == 'deal' ? dealStatusesByName : leadStatusesByName
|
doctype == 'deal' ? dealStatusesByName : leadStatusesByName
|
||||||
|
|
||||||
@ -85,7 +90,7 @@ export const statusesStore = defineStore('crm-statuses', () => {
|
|||||||
statuses = document.statuses
|
statuses = document.statuses
|
||||||
}
|
}
|
||||||
|
|
||||||
if (statuses.length) {
|
if (statuses?.length) {
|
||||||
statusesByName = statuses.reduce((acc, status) => {
|
statusesByName = statuses.reduce((acc, status) => {
|
||||||
acc[status] = statusesByName[status]
|
acc[status] = statusesByName[status]
|
||||||
return acc
|
return acc
|
||||||
@ -98,10 +103,10 @@ export const statusesStore = defineStore('crm-statuses', () => {
|
|||||||
label: statusesByName[status]?.name,
|
label: statusesByName[status]?.name,
|
||||||
value: statusesByName[status]?.name,
|
value: statusesByName[status]?.name,
|
||||||
icon: () => h(IndicatorIcon, { class: statusesByName[status]?.color }),
|
icon: () => h(IndicatorIcon, { class: statusesByName[status]?.color }),
|
||||||
onClick: () => {
|
onClick: async () => {
|
||||||
capture('status_changed', { doctype, status })
|
capture('status_changed', { doctype, status })
|
||||||
if (document) {
|
if (document) {
|
||||||
document.doc.status = statusesByName[status]?.name
|
await triggerOnChange?.('status', statusesByName[status]?.name)
|
||||||
document.save.submit()
|
document.save.submit()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user