refactor: statusOptions code

(cherry picked from commit 881126c7f1145fb2db1143b63c1e0f2f81ebb2ea)
This commit is contained in:
Shariq Ansari 2025-07-02 14:10:14 +05:30 committed by Mergify
parent 6647a83485
commit 9b315c2e0c
5 changed files with 38 additions and 26 deletions

View File

@ -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()

View File

@ -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 },

View File

@ -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()

View File

@ -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()

View File

@ -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()
}
}, },
}) })
} }