import getTokenHelper from "./getTokenHelper" export const FBA_PARTNER_ID = 1043801 export const resolveFbaPartner = async (event: any) => { const config = useRuntimeConfig() const serviceToken = config.api.idempieretoken let userToken: string | null = null try { userToken = await getTokenHelper(event) } catch { userToken = null } const callIdempiere = async (path: string, bearer: string) => $fetch(`${config.api.url}/${path}`, { method: 'GET', headers: { 'Content-Type': 'application/json', Accept: 'application/json', Authorization: 'Bearer ' + bearer } }) const fetchWithFallback = async (path: string): Promise => { if (userToken) { try { return await callIdempiere(path, userToken) } catch (_) { /* fall through */ } } if (serviceToken) { try { return await callIdempiere(path, serviceToken) } catch (err: any) { console.warn(`[fba-partner] service-token read failed for ${path}:`, err?.data?.message || err?.message) return null } } return null } const partner: any = await fetchWithFallback(`models/c_bpartner/${FBA_PARTNER_ID}?$select=Name,Name2,Value,EMail,AD_Org_ID`) if (!partner?.id) return null const locRes: any = await fetchWithFallback( `models/c_bpartner_location?$filter=C_BPartner_ID eq ${FBA_PARTNER_ID} and IsActive eq true&$orderby=C_BPartner_Location_ID asc&$top=20` ) const locations: any[] = locRes?.records || [] const ship = locations.find((l: any) => l.IsShipTo === true || l.IsShipTo === 'Y') || locations[0] || null const bill = locations.find((l: any) => l.IsBillTo === true || l.IsBillTo === 'Y') || ship return { partner: { id: Number(partner.id), name: partner.Name || 'Amazon', name2: partner.Name2 || '', value: partner.Value || '', email: partner.EMail || '', orgId: partner.AD_Org_ID?.id ?? 0, }, shipLocationId: ship?.id ? Number(ship.id) : null, billLocationId: bill?.id ? Number(bill.id) : null, } }