// Product history: every M_Transaction of one product, enriched via transactionEnrichHelper // (shared with transactions-by-org.get.ts). 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" import { enrichTransactions } from "../../utils/transactionEnrichHelper" const MAX_ROWS = 10000 const handleFunc = async (event: any, authToken: any = null) => { let data: any = { records: [] } const token = authToken ?? await getTokenHelper(event) const query = getQuery(event) const productId = Number(query.productId) if (!productId || productId <= 0) { return { status: 400, message: 'Product ID is required' } } const transactionRes: any = await fetchHelper( event, `models/m_transaction?$filter=${string.urlEncode('M_Product_ID eq ' + productId)}&$orderby=${string.urlEncode('MovementDate desc')}&$top=${MAX_ROWS}`, 'GET', token, null ) if (!transactionRes?.records || transactionRes.records.length === 0) { return data } const productRes: any = await fetchHelper(event, `models/M_Product/${productId}`, 'GET', token, null) const productInfo = { name: productRes?.Name || '', sku: productRes?.SKU || '', value: productRes?.Value || '' } data.records = await enrichTransactions(event, token, transactionRes.records, productInfo) 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 })