import { string } from 'alga-js' import refreshTokenHelper from "../../utils/refreshTokenHelper" import forceLogoutHelper from "../../utils/forceLogoutHelper" import errorHandlingHelper from "../../utils/errorHandlingHelper" import fetchHelper from "../../utils/fetchHelper" const handleFunc = async (event: any, authToken: any = null) => { let data: any = {} const token = authToken ?? await getTokenHelper(event) const query = getQuery(event) const organizationId = query.organizationId || getCookie(event, 'logship_organization_id') const dateFrom = query.dateFrom || '' const dateTo = query.dateTo || '' const partnerId = query.partnerId || '' const filters: string[] = [ `IsSOTrx eq true`, `IsActive eq true`, `DocStatus eq 'CO'`, `IsInvoiced eq false` ] if(organizationId) { filters.push(`AD_Org_ID eq ${organizationId}`) } if(dateFrom) { filters.push(`DateOrdered ge '${dateFrom}'`) } if(dateTo) { filters.push(`DateOrdered le '${dateTo}'`) } if(partnerId) { filters.push(`C_BPartner_ID eq ${partnerId}`) } const filterString = filters.join(' AND ') const url = `models/c_order?$filter=${string.urlEncode(filterString)}&$orderby=${string.urlEncode('DateOrdered desc')}&$top=500` const res: any = await fetchHelper(event, url, 'GET', token, null) if(res) { const records = (res.records || []).map((item: any) => ({ id: item.id, uid: item.uid, documentNo: item.DocumentNo, dateOrdered: item.DateOrdered, dateAcct: item.DateAcct, datePromised: item.DatePromised, partner: item.C_BPartner_ID?.identifier || '', partnerId: item.C_BPartner_ID?.id || '', currency: item.C_Currency_ID?.identifier || '', currencyId: item.C_Currency_ID?.id || '', grandTotal: item.GrandTotal, totalLines: item.TotalLines, description: item.Description || '', docStatus: item.DocStatus?.identifier || item.DocStatus || '', isDelivered: item.IsDelivered, isInvoiced: item.IsInvoiced, organization: item.AD_Org_ID?.identifier || '', organizationId: item.AD_Org_ID?.id || '' })) data = { status: 200, message: '', records, rowCount: res['row-count'] || records.length } } 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) } } return data })