// Endpoint genérico de impresión que acepta una lista de operaciones import { buildFromOperations, type Operation } from '~/server/utils/eposBuilder' import { buildSoapEnvelope, sendToPrinter, parsePrinterResponse } from '~/server/utils/printer' export default defineEventHandler(async (event) => { try { const config = useRuntimeConfig() const body = await readBody(event) const { operations = [], dryRun = false } = body as { operations?: Operation[] dryRun?: boolean } // Construir el XML interior con las operaciones const inner = buildFromOperations(operations) const soap = buildSoapEnvelope(inner) // Si es dryRun, devolver solo el XML sin enviar a la impresora if (dryRun) { return { ok: true, dryRun: true, soap } } // Enviar a la impresora const result = await sendToPrinter( soap, config.printerHost, config.printerDeviceId, parseInt(config.printerTimeoutMs) ) // Parsear la respuesta const { success, code } = parsePrinterResponse(result.data) return { ok: success, httpStatus: result.status, code, raw: result.data } } catch (err: any) { return { ok: false, error: err.message } } })