client.reports
client.reports
client.reports împachetează /api/v1/devices/{deviceId}/reports/* — fiecare metodă trimite o comandă către dispozitiv prin releu-ul cloud și returnează răspunsul dispozitivului. Nu există un model de rapoarte stocate; memoria fiscală și jurnalul electronic ale dispozitivului sunt sursa de adevăr. Vezi documentația REST corespunzătoare la API Rapoarte.
Dispozitivul trebuie să fie online; dispozitivele offline apar ca EBonApiError cu un cod de conectivitate 503. Citirile lente (readMf, readEj, printPeriodic, exportAnaf) folosesc timeout-uri extinse per-cerere, aliniate cu bugetele de comandă ale serverului.
Tipul de interval
type ReportRange =
| { fromDate: string; toDate: string } // YYYY-MM-DD, inclusiv
| { fromZ: number; toZ: number }; // numere Z, inclusiv
client.reports.getCapabilities(deviceId)
Ce operațiuni de raportare live suportă driverul dispozitivului.
async getCapabilities(deviceId: string): Promise<ReportCapabilitiesResponse>
Returnează { capabilities: FiscalReportingCapabilities, deviceId, timestamp }. Condiționează UI-ul pe aceste flag-uri.
const { capabilities } = await client.reports.getCapabilities('dev_01HZ...');
if (capabilities.canReadMfStructured) { /* afișează istoricul Z */ }
client.reports.getTelemetry(deviceId)
Telemetria contoarelor din memoria fiscală + jurnalul electronic.
async getTelemetry(deviceId: string): Promise<ReportTelemetryResponse>
Returnează { mfInfo: FiscalMfInfo, ejInfo: FiscalEjInfo, deviceId, timestamp }.
client.reports.readMf(deviceId, range)
Citește rândurile de închidere Z din memoria fiscală (istoric Z).
async readMf(deviceId: string, range: ReportRange): Promise<MfReadResponse>
Returnează { mf: FiscalMfReadResult, deviceId, timestamp } — câte o intrare { date, zNumber, grossTotalCents } pentru fiecare închidere Z din interval.
const { mf } = await client.reports.readMf('dev_01HZ...', {
fromDate: '2026-06-01',
toDate: '2026-06-30',
});
client.reports.readEj(deviceId, range)
Citește blocurile de text din jurnalul electronic.
async readEj(deviceId: string, range: ReportRange): Promise<EjReadResponse>
Returnează { ej: FiscalEjReadResult, deviceId, timestamp } — lines verbatim per bloc Z plus totalLines.
client.reports.printX(deviceId)
Produce un raport X (totaluri curente zilnice) pe dispozitiv.
async printX(deviceId: string): Promise<XZReportResponse>
Returnează { report: DeviceReportSummary | null, deviceId, timestamp }.
client.reports.runZ(deviceId)
Rulează o închidere Z (sfârșit de zi). Destructiv — resetează contoarele zilnice și avansează memoria fiscală.
async runZ(deviceId: string): Promise<XZReportResponse>
client.reports.printPeriodic(deviceId, range)
Tipărește un raport periodic din memoria fiscală pe hârtia dispozitivului.
async printPeriodic(deviceId: string, range: ReportRange): Promise<PrintPeriodicResponse>
Returnează { success: true, deviceId, timestamp }.
client.reports.exportAnaf(deviceId, request)
Exportă arhiva lunară ANAF (ZIP base64) de pe dispozitiv.
async exportAnaf(deviceId: string, request: AnafExportRequest): Promise<AnafExportResponse>
request este un ReportRange plus un storageTarget: 'ramdisk' | 'sdcard' opțional. Returnează { export: { filename, base64, sizeBytes }, deviceId, timestamp } — decodează base64 și salvează ca .zip.
const { export: archive } = await client.reports.exportAnaf('dev_01HZ...', {
fromDate: '2026-06-01',
toDate: '2026-06-30',
});
await fs.writeFile(archive.filename, Buffer.from(archive.base64, 'base64'));
Eșecurile la nivel HTTP apar ca EBonApiError — vezi Erori și /ro/api/errors.
client.receipts
Referință pentru ReceiptsResource — stochează bonuri fiscale după tipărire și recuperează-le cu paginare bazată pe cursor, oglindind /api/v1/receipts.
client.webhooks
Referință pentru WebhooksResource — gestionează abonamentele webhook, rotește secretele de semnare, declanșează livrări de test și inspectează istoricul livrărilor, oglindind /api/v1/org/webhooks.