feat: enhance document handling with error triggering and settings helpers via app
This commit is contained in:
parent
7e9d9a5fed
commit
23a823f2bb
@ -1,4 +1,6 @@
|
||||
import { getScript } from '@/data/script'
|
||||
import { globalStore } from '@/stores/global'
|
||||
import { showSettings, activeSettingsPage } from '@/composables/settings'
|
||||
import { runSequentially, parseAssignees } from '@/utils'
|
||||
import { createDocumentResource, createResource, toast } from 'frappe-ui'
|
||||
import { reactive } from 'vue'
|
||||
@ -24,6 +26,7 @@ export function useDocument(doctype, docname) {
|
||||
toast.success(__('Document updated successfully'))
|
||||
},
|
||||
onError: (err) => {
|
||||
triggerOnError(err)
|
||||
let errorMessage = __('Error updating document')
|
||||
if (err.exc_type == 'MandatoryError') {
|
||||
const fieldName = err.messages
|
||||
@ -76,8 +79,21 @@ export function useDocument(doctype, docname) {
|
||||
|
||||
controllersCache[doctype][docname || ''] = {}
|
||||
|
||||
const { makeCall } = globalStore()
|
||||
|
||||
let helpers = {}
|
||||
|
||||
helpers.crm = {
|
||||
makePhoneCall: makeCall,
|
||||
openSettings: (page) => {
|
||||
showSettings.value = true
|
||||
activeSettingsPage.value = page
|
||||
},
|
||||
}
|
||||
|
||||
const controllersArray = await setupScript(
|
||||
documentsCache[doctype][docname || ''],
|
||||
helpers,
|
||||
)
|
||||
|
||||
if (!controllersArray || controllersArray.length === 0) return
|
||||
@ -133,6 +149,13 @@ export function useDocument(doctype, docname) {
|
||||
await trigger(handler)
|
||||
}
|
||||
|
||||
async function triggerOnError() {
|
||||
const handler = async function () {
|
||||
await (this.onError?.() || this.on_error?.())
|
||||
}
|
||||
await trigger(handler)
|
||||
}
|
||||
|
||||
async function triggerOnRefresh() {
|
||||
const handler = async function () {
|
||||
await this.refresh?.()
|
||||
@ -234,6 +257,7 @@ export function useDocument(doctype, docname) {
|
||||
triggerOnLoad,
|
||||
triggerOnBeforeCreate,
|
||||
triggerOnSave,
|
||||
triggerOnError,
|
||||
triggerOnRefresh,
|
||||
triggerOnChange,
|
||||
triggerOnRowAdd,
|
||||
|
||||
@ -38,7 +38,7 @@ export function getScript(doctype, view = 'Form') {
|
||||
let scriptDefs = doctypeScripts[doctype]
|
||||
if (!scriptDefs || Object.keys(scriptDefs).length === 0) return null
|
||||
|
||||
const { $dialog, $socket, makeCall } = globalStore()
|
||||
const { $dialog, $socket } = globalStore()
|
||||
|
||||
helpers.createDialog = $dialog
|
||||
helpers.toast = toast
|
||||
@ -51,10 +51,6 @@ export function getScript(doctype, view = 'Form') {
|
||||
throw new Error(message || __('An error occurred'))
|
||||
}
|
||||
|
||||
helpers.crm = {
|
||||
makePhoneCall: makeCall,
|
||||
}
|
||||
|
||||
return setupMultipleFormControllers(scriptDefs, document, helpers)
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user