Skip to main content

Sistema di Stampa: Regole e Blocchi

Il sistema di stampa della piattaforma POS si basa su un'architettura a 3 livelli che separa i dispositivi fisici, i template grafici e le regole di instradamento. Questa separazione consente di configurare scenari complessi (es. comande in cucina, scontrini fiscali, preconto) senza modificare codice.

PrinterDevice: Il Dispositivo Fisico

PrinterDevice rappresenta una stampante fisica registrata nel sistema. Ogni dispositivo ha le seguenti proprieta:

  • name: identificativo univoco (es. "Stampante Bar", "Fiscale Cassa 1")
  • ipAddress e port: indirizzo di rete (default porta 9100)
  • protocol: protocollo di comunicazione (escpos, star, epson_fp, custom_fp)
  • deviceType: standard per stampanti termiche, fiscal per registratori fiscali
  • paperWidth: larghezza carta in mm (58 o 80)
  • connectionType: network o usb

Le stampanti fiscali (deviceType: 'fiscal') possono avere una configurazione aggiuntiva in fiscalConfigJson per la mappatura reparti IVA e codici pagamento.

PrintLayout: Il Template Grafico

PrintLayout definisce il template visivo di uno scontrino o comanda tramite una lista di PrintBlock salvata in formato JSON nel campo structureJson. I tipi di layout disponibili sono: receipt, kitchen_order, invoice.

Tipi di PrintBlock

TipoDescrizioneParametri principali
textRiga di testotext, align, bold, underline, size
columnsColonne affiancatecolumns (lista con text, width, align)
dividerLinea separatricechar (default -)
imageImmagine base64base64Data
barcodeCodice a barredata, format, height, textPosition
qrcodeQR Codedata, size (1-8), errorCorrection
feedAvanzamento cartalines (default 3)
cutTaglio cartanessuno

Il campo size del blocco text accetta small, medium, large. Le colonne usano un sistema a 12 slot di larghezza totale.

PrintRoutingRule: L'Instradamento Condizionale

PrintRoutingRule collega un dispositivo (printerDeviceId) a un layout (layoutId) con condizioni di attivazione. Le condizioni usano un sistema ad albero (PrintCondition) con operatori AND/OR e condizioni atomiche su campi come category, product_name, sku.

Parametri chiave della regola

  • triggerType: quando attivare la regola (all, receipt, comanda, preconto)
  • cutPerCategory: taglia la carta tra categorie diverse
  • comandaSendMode: all_courses (tutte le uscite) o active_only (solo quella attiva)
  • comandaVaiMode: come formattare l'uscita VAI (active_only, full_highlight, full_big_small)
  • nsItemsHandling: gestione articoli non soggetti IVA per stampanti fiscali (include, exclude, append_notes, separate_document)

Flusso di stampa

  1. L'operatore conferma un ordine o richiede una stampa
  2. Il PrintRouterService carica tutte le regole attive dal database Isar
  3. Per ogni regola, valuta le condizioni (rootConditionJson) contro i prodotti del carrello
  4. Se le condizioni sono soddisfatte, genera i byte ESC/POS dal layout associato
  5. Crea un PrintJob e lo invia alla coda di stampa

FAQ

Posso assegnare piu regole alla stessa stampante? Si. Piu regole possono puntare allo stesso dispositivo con layout diversi. Ad esempio, una regola per le bevande e una per i dolci possono usare la stessa stampante bar con template differenti.

Le stampanti fiscali hanno bisogno di un layout? No. Le stampanti fiscali (deviceType: 'fiscal') usano il protocollo nativo del registratore (Epson FP, Custom). Il campo layoutId puo essere null per queste regole.

Come gestisco le uscite in cucina? Configura una regola con triggerType: 'comanda' e imposta comandaSendMode e comandaVaiMode secondo le esigenze della cucina.

Vedi Anche

Questa pagina ti è stata utile?