import { string } from 'alga-js' import refreshTokenHelper from '../../utils/refreshTokenHelper' import forceLogoutHelper from '../../utils/forceLogoutHelper' import errorHandlingHelper from '../../utils/errorHandlingHelper' import getTokenHelper from '../../utils/getTokenHelper' // iDempiere already scopes ad_org reads to whatever the bearer token's role // can access — no AD_Role_ID join needed. Return a trimmed list (id + name) // so the mobile org pickers can render it directly. const handleFunc = async (event: any, authToken: any = null) => { const token = authToken ?? await getTokenHelper(event) const filter = 'IsActive eq true' const orderby = 'Name asc' const select = 'AD_Org_ID,Name' const url = `models/ad_org?$filter=${string.urlEncode(filter)}&$orderby=${string.urlEncode(orderby)}&$select=${select}&$top=500` const res: any = await event.context.fetch(url, 'GET', token, null) const records: any[] = Array.isArray(res?.records) ? res.records : [] return records .map((r: any) => ({ id: r.id ?? r.AD_Org_ID, name: r.Name || '' })) .filter((o: any) => o.id !== undefined && o.id !== null && o.name) } export default defineEventHandler(async (event) => { // Auth-only retry: business errors no longer trigger a token refresh. return await withAuthRetry(event, handleFunc) })