Files
erpnext/banking/src/lib/frappe.ts
Nikhil Kothari 4e2a10e496 fix: check for bank account permission when updating balance (#56016)
* fix: check for bank account permission when updating balance

* fix: add company to bank balance doctype
2026-06-16 17:23:55 +00:00

95 lines
2.8 KiB
TypeScript

import { FrappeError } from "frappe-react-sdk"
interface ParsedErrorMessage {
message: string,
title?: string,
indicator?: string,
}
export const getErrorMessage = (error?: FrappeError | null): string => {
const messages = getErrorMessages(error)
return messages.map(m => m.message).join('\n')
}
/**
* Standard function to parse the error messages from the FrappeError object
* @param error The FrappeError object to parse
* @returns An array of ParsedErrorMessage objects
*/
export const getErrorMessages = (error?: FrappeError | null): ParsedErrorMessage[] => {
if (!error) return []
let eMessages: ParsedErrorMessage[] = error?._server_messages ? JSON.parse(error?._server_messages) : []
eMessages = eMessages.map((m) => {
try {
// @ts-expect-error - it can sometimes be a string
return JSON.parse(m)
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
catch (e) {
return m
}
})
// @ts-expect-error - some errors have _error_message
if (error?._error_message) {
eMessages.push({
// @ts-expect-error - some errors have _error_message
message: error?._error_message,
title: "Error",
indicator: "red"
})
}
if (eMessages.length === 0) {
// Get the message from the exception by removing the exc_type
const indexOfFirstColon = error?.exception?.indexOf(':')
if (indexOfFirstColon) {
const exception = error?.exception?.slice(indexOfFirstColon + 1)
if (exception) {
eMessages = [{
message: exception,
title: "Error"
}]
}
}
if (eMessages.length === 0) {
eMessages = [{
message: error?.message,
title: "Error",
indicator: "red"
}]
}
}
return eMessages
}
export const slug = (name?: string) => {
return name?.toLowerCase().replace(/ /g, "-") ?? "";
}
export const scrub = (txt?: string) => {
return (txt || "").replace(/ /g, "_").toLowerCase(); // use
}
export const unscrub = (txt?: string) => {
return (txt || "").replace(/-|_/g, " ").replace(/\w*/g, function (keywords) {
return keywords.charAt(0).toUpperCase() + keywords.substring(1).toLowerCase();
});
}
export const getSystemDefault = (fieldName: string, fallback?: string) => {
return window.frappe?.boot?.sysdefaults?.[fieldName] ?? fallback
}
export const getUserDefault = (fieldName: string, fallback?: string) => {
return window.frappe?.boot?.user?.defaults?.[fieldName] ?? fallback
}
export const getBootFieldData = (fieldName: string, fallback?: string) => {
return window.frappe?.boot?.[fieldName] ?? fallback
}