import refreshTokenHelper from "../../../utils/refreshTokenHelper" import forceLogoutHelper from "../../../utils/forceLogoutHelper" import errorHandlingHelper from "../../../utils/errorHandlingHelper" /** * PUT /api/admin/organizations/update — AD_Org master data (changed-field semantics: only keys present * in the body are written; '' on a reference clears it). AD_OrgInfo (letterhead, logo, address, …) is * written separately via `[id]/organization-info` (PUT). */ const handleFunc = async (event: any, authToken: any = null) => { let data: any = {} const token = authToken ?? await getTokenHelper(event) const body = await readBody(event) const payload: any = {} const has = (k: string) => Object.prototype.hasOwnProperty.call(body ?? {}, k) const addIfPresent = (bodyKey: string, apiKey: string) => { if (has(bodyKey)) payload[apiKey] = body[bodyKey] ?? '' } const addRef = (bodyKey: string, apiKey: string, tableName: string) => { if (!has(bodyKey)) return const v = body[bodyKey] payload[apiKey] = (v === '' || v === null || v === undefined || Number(v) === 0) ? 0 : { id: Number(v), tableName } } addIfPresent('isActive', 'isActive') addIfPresent('name', 'name') addIfPresent('description', 'description') addIfPresent('value', 'value') addIfPresent('isSummary', 'isSummary') addIfPresent('companyname', 'companyname') addRef('replicationStrategyId', 'AD_ReplicationStrategy_ID', 'AD_ReplicationStrategy') addRef('bpartnerId', 'C_BPartner_ID', 'C_BPartner') const res: any = await event.context.fetch('models/ad_org/' + body.id, 'PUT', token, { ...payload, tableName: 'AD_Org' }) if(res) { data = res data['status'] = 200 data['message'] = '' } return data } export default defineEventHandler(async (event) => { let data: any = {} try { data = await handleFunc(event) } catch(err: any) { try { let authToken: any = await refreshTokenHelper(event) data = await handleFunc(event, authToken) } catch(error: any) { data = errorHandlingHelper(err?.data ?? err, error?.data ?? error) forceLogoutHelper(event, data) } } return data })