refactor: statusOptions code
(cherry picked from commit 881126c7f1145fb2db1143b63c1e0f2f81ebb2ea)
This commit is contained in:
parent
6647a83485
commit
9b315c2e0c
@ -26,9 +26,10 @@
|
|||||||
:options="
|
:options="
|
||||||
statusOptions(
|
statusOptions(
|
||||||
'deal',
|
'deal',
|
||||||
document,
|
document.statuses?.length
|
||||||
deal.data._customStatuses,
|
? document.statuses
|
||||||
triggerOnChange,
|
: deal.data._customStatuses,
|
||||||
|
triggerStatusChange,
|
||||||
)
|
)
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
@ -755,6 +756,11 @@ const { assignees, document, triggerOnChange } = useDocument(
|
|||||||
props.dealId,
|
props.dealId,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
async function triggerStatusChange(value) {
|
||||||
|
await triggerOnChange('status', value)
|
||||||
|
document.save.submit()
|
||||||
|
}
|
||||||
|
|
||||||
function reloadAssignees(data) {
|
function reloadAssignees(data) {
|
||||||
if (data?.hasOwnProperty('deal_owner')) {
|
if (data?.hasOwnProperty('deal_owner')) {
|
||||||
assignees.reload()
|
assignees.reload()
|
||||||
|
|||||||
@ -26,9 +26,10 @@
|
|||||||
:options="
|
:options="
|
||||||
statusOptions(
|
statusOptions(
|
||||||
'lead',
|
'lead',
|
||||||
document,
|
document.statuses?.length
|
||||||
lead.data._customStatuses,
|
? document.statuses
|
||||||
triggerOnChange,
|
: lead.data._customStatuses,
|
||||||
|
triggerStatusChange,
|
||||||
)
|
)
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
@ -320,6 +321,11 @@ const { triggerOnChange, assignees, document } = useDocument(
|
|||||||
props.leadId,
|
props.leadId,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
async function triggerStatusChange(value) {
|
||||||
|
await triggerOnChange('status', value)
|
||||||
|
document.save.submit()
|
||||||
|
}
|
||||||
|
|
||||||
const lead = createResource({
|
const lead = createResource({
|
||||||
url: 'crm.fcrm.doctype.crm_lead.api.get_lead',
|
url: 'crm.fcrm.doctype.crm_lead.api.get_lead',
|
||||||
params: { name: props.leadId },
|
params: { name: props.leadId },
|
||||||
|
|||||||
@ -14,9 +14,10 @@
|
|||||||
:options="
|
:options="
|
||||||
statusOptions(
|
statusOptions(
|
||||||
'deal',
|
'deal',
|
||||||
document,
|
document.statuses?.length
|
||||||
deal.data._customStatuses,
|
? document.statuses
|
||||||
triggerOnChange,
|
: deal.data._customStatuses,
|
||||||
|
triggerStatusChange,
|
||||||
)
|
)
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
@ -624,6 +625,11 @@ const { assignees, document, triggerOnChange } = useDocument(
|
|||||||
props.dealId,
|
props.dealId,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
async function triggerStatusChange(value) {
|
||||||
|
await triggerOnChange('status', value)
|
||||||
|
document.save.submit()
|
||||||
|
}
|
||||||
|
|
||||||
function reloadAssignees(data) {
|
function reloadAssignees(data) {
|
||||||
if (data?.hasOwnProperty('deal_owner')) {
|
if (data?.hasOwnProperty('deal_owner')) {
|
||||||
assignees.reload()
|
assignees.reload()
|
||||||
|
|||||||
@ -14,9 +14,10 @@
|
|||||||
:options="
|
:options="
|
||||||
statusOptions(
|
statusOptions(
|
||||||
'lead',
|
'lead',
|
||||||
document,
|
document.statuses?.length
|
||||||
lead.data._customStatuses,
|
? document.statuses
|
||||||
triggerOnChange,
|
: lead.data._customStatuses,
|
||||||
|
triggerStatusChange,
|
||||||
)
|
)
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
@ -473,6 +474,11 @@ const { assignees, document, triggerOnChange } = useDocument(
|
|||||||
props.leadId,
|
props.leadId,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
async function triggerStatusChange(value) {
|
||||||
|
await triggerOnChange('status', value)
|
||||||
|
document.save.submit()
|
||||||
|
}
|
||||||
|
|
||||||
function reloadAssignees(data) {
|
function reloadAssignees(data) {
|
||||||
if (data?.hasOwnProperty('lead_owner')) {
|
if (data?.hasOwnProperty('lead_owner')) {
|
||||||
assignees.reload()
|
assignees.reload()
|
||||||
|
|||||||
@ -77,19 +77,10 @@ export const statusesStore = defineStore('crm-statuses', () => {
|
|||||||
return communicationStatuses[name]
|
return communicationStatuses[name]
|
||||||
}
|
}
|
||||||
|
|
||||||
function statusOptions(
|
function statusOptions(doctype, statuses = [], triggerStatusChange = null) {
|
||||||
doctype,
|
|
||||||
document,
|
|
||||||
statuses = [],
|
|
||||||
triggerOnChange = null,
|
|
||||||
) {
|
|
||||||
let statusesByName =
|
let statusesByName =
|
||||||
doctype == 'deal' ? dealStatusesByName : leadStatusesByName
|
doctype == 'deal' ? dealStatusesByName : leadStatusesByName
|
||||||
|
|
||||||
if (document?.statuses?.length) {
|
|
||||||
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]
|
||||||
@ -104,11 +95,8 @@ export const statusesStore = defineStore('crm-statuses', () => {
|
|||||||
value: statusesByName[status]?.name,
|
value: statusesByName[status]?.name,
|
||||||
icon: () => h(IndicatorIcon, { class: statusesByName[status]?.color }),
|
icon: () => h(IndicatorIcon, { class: statusesByName[status]?.color }),
|
||||||
onClick: async () => {
|
onClick: async () => {
|
||||||
|
await triggerStatusChange?.(statusesByName[status]?.name)
|
||||||
capture('status_changed', { doctype, status })
|
capture('status_changed', { doctype, status })
|
||||||
if (document) {
|
|
||||||
await triggerOnChange?.('status', statusesByName[status]?.name)
|
|
||||||
document.save.submit()
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user