UNPKG

@openade/fe

Version:

Fatturazione Elettronica - Electronic Invoicing for Sistema di Interscambio (SDI)

86 lines 2.98 kB
import type { FatturaElettronica } from '@openade/common'; export interface QueryFilter { vatNumber?: string; invoiceNumber?: string; dateFrom?: string; dateTo?: string; status?: string; documentType?: string; identificativoSdI?: string; limit?: number; offset?: number; } export interface AuditLogEntry { entityType: string; entityId: string; action: string; timestamp: string; userId?: string; metadata?: Record<string, unknown>; } export interface QueryResult<T> { items: T[]; data: T[]; total: number; hasMore: boolean; } export interface InvoiceRecord { id: string; vatNumber: string; invoiceNumber: string; invoiceDate: string; identificativoSdI?: string; invoice: FatturaElettronica; xmlContent: string; status: 'draft' | 'sent' | 'delivered' | 'rejected' | 'error'; createdAt: string; updatedAt: string; metadata?: Record<string, unknown>; } export interface ReceiptRecord { id: string; invoiceId: string; identificativoSdI: string; receiptType: 'RC' | 'NS' | 'MC' | 'NE' | 'MT' | 'DT'; content: string; receiptDate: string; createdAt: string; } export interface IDatabase { saveInvoice(invoice: InvoiceRecord): Promise<void>; getInvoice(id: string): Promise<InvoiceRecord | null>; getInvoiceByIdentifiers(vatNumber: string, invoiceNumber: string, invoiceDate: string): Promise<InvoiceRecord | null>; updateInvoiceStatus(id: string, status: InvoiceRecord['status']): Promise<void>; updateInvoiceSdiId(id: string, identificativoSdI: string): Promise<void>; listInvoices(filter: QueryFilter): Promise<QueryResult<InvoiceRecord>>; deleteInvoice(id: string): Promise<void>; saveReceipt(receipt: ReceiptRecord): Promise<void>; getReceipt(id: string): Promise<ReceiptRecord | null>; getReceiptsForInvoice(invoiceId: string): Promise<ReceiptRecord[]>; getReceiptBySdiId(identificativoSdI: string): Promise<ReceiptRecord | null>; listReceipts(filter: QueryFilter): Promise<QueryResult<ReceiptRecord>>; deleteReceipt(id: string): Promise<void>; getAuditTrail(entityType: string, entityId: string, dateFrom?: string, dateTo?: string): Promise<AuditLogEntry[]>; saveAuditLog(entry: { timestamp: string; entityType: string; entityId: string; action: string; userId?: string; metadata?: Record<string, unknown>; }): Promise<void>; isHealthy(): Promise<boolean>; close(): Promise<void>; beginTransaction?(): Promise<void>; commitTransaction?(): Promise<void>; rollbackTransaction?(): Promise<void>; } export interface DatabaseConfig { type: 'postgres' | 'mysql' | 'mongodb' | 'sqlite' | 'custom'; connection: string | Record<string, unknown>; poolSize?: number; timeout?: number; logging?: boolean; options?: Record<string, unknown>; } //# sourceMappingURL=database.interface.d.ts.map