import refreshTokenHelper from "../../../utils/refreshTokenHelper" import forceLogoutHelper from "../../../utils/forceLogoutHelper" import errorHandlingHelper from "../../../utils/errorHandlingHelper" import fetchHelper from "../../../utils/fetchHelper" /** * POST /api/admin/organizations/store — creates the AD_Org and, when the body carries AD_OrgInfo keys * (letterhead, logo, address, warehouse, …), writes them onto the AD_OrgInfo row iDempiere created with * the org (`PUT models/ad_orginfo/{newOrgId}`). The org create is returned even when the info write fails * (`infoError` then carries the message) so the caller can land on the edit page and retry. */ const handleFunc = async (event: any, authToken: any = null) => { let data: any = {} const token = authToken ?? await getTokenHelper(event) const body = await readBody(event) let newObjValue: any = {} if(body.replicationStrategyId) { newObjValue.AD_ReplicationStrategy_ID = { id: Number(body.replicationStrategyId), tableName: 'AD_ReplicationStrategy' } } if(body.bpartnerId) { newObjValue.C_BPartner_ID = { id: Number(body.bpartnerId), tableName: 'C_BPartner' } } if(body.tenantId) { newObjValue.AD_Client_ID = { id: Number(body.tenantId), tableName: 'AD_Client' } } if(typeof body.companyname === 'string' && body.companyname.trim() !== '') { newObjValue.companyname = body.companyname.trim() } const res: any = await fetchHelper(event, 'models/ad_org', 'POST', token, { isActive: body.isActive ?? true, name: body.name, description: body.description || '', value: body.value || '', isSummary: body.isSummary ?? false, ...newObjValue, AD_Org_ID: { id: 0, tableName: 'AD_Org' }, tableName: 'AD_Org' }) if(res) { data = res data['status'] = 200 data['message'] = '' const infoPayload = buildOrgInfoPayload(body, { orgName: body.companyname || body.name }) if (res.id && Object.keys(infoPayload).length > 0) { try { await fetchHelper(event, 'models/ad_orginfo/' + res.id, 'PUT', token, { ...infoPayload, tableName: 'AD_OrgInfo' }) } catch (e: any) { data['infoError'] = e?.data?.detail || e?.data?.title || e?.message || 'AD_OrgInfo update failed' } } } 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 })