import { string } from 'alga-js' import refreshTokenHelper from "../../../utils/refreshTokenHelper" import getTokenHelper from "../../../utils/getTokenHelper" import forceLogoutHelper from "../../../utils/forceLogoutHelper" import errorHandlingHelper from "../../../utils/errorHandlingHelper" // GET /api/accounting/bank-reconciliation/statements?status=DR|CO // Drafted statements (default) or recently completed ones for the archive // toggle — across ALL bank accounts (Volksbank/EBICS, PayPal, …). Both NEWEST // FIRST (StatementDate desc, id desc) — every list on the Banking page reads // latest → oldest. const handleFunc = async (event: any, authToken: any = null) => { const token = authToken ?? await getTokenHelper(event) const query = getQuery(event) const status = query.status === 'CO' ? 'CO' : 'DR' let filter = `DocStatus eq '${status}'` if (status === 'CO') { const since = new Date() since.setDate(since.getDate() - 30) filter += ` and StatementDate ge ${since.toISOString().slice(0, 10)}` } const res: any = await event.context.fetch( `models/c_bankstatement?$filter=${string.urlEncode(filter)}` + `&$select=C_BankStatement_ID,DocumentNo,Name,StatementDate,BeginningBalance,EndingBalance,DocStatus,EftStatementReference,C_BankAccount_ID` + `&$expand=${string.urlEncode('C_BankAccount_ID($select=Name,AccountNo)')}` + `&$orderby=${string.urlEncode('StatementDate desc,C_BankStatement_ID desc')}&$top=100`, 'GET', token, null ) const statements = (res?.records || []).map((s: any) => ({ id: s.id, documentNo: s.DocumentNo || '', name: s.Name || '', statementDate: s.StatementDate || '', beginningBalance: s.BeginningBalance ?? null, endingBalance: s.EndingBalance ?? null, docStatus: s.DocStatus?.id || s.DocStatus || status, eftReference: s.EftStatementReference || '', bankAccountId: s.C_BankAccount_ID?.id || null, bankAccountName: s.C_BankAccount_ID?.Name || s.C_BankAccount_ID?.identifier || '' })) return { status: 200, statements } } 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) { data = errorHandlingHelper(err?.data ?? err, error?.data ?? error) forceLogoutHelper(event, data) } } return data })