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. Non fiscali: escpos, star. Fiscali: epson_fp, epson_fp_http, rcf_printf, rcf_pdu, labware_fp, ditron_fp, custom_fp, dado_g100
  • deviceType: standard per stampanti termiche, fiscal per registratori fiscali
  • paperWidth: larghezza carta in mm (58 o 80)
  • connectionType: network, usb o serial
  • usbPath: solo con connectionType: 'usb'. Selettore del dispositivo sulla cassa Windows, nella forma usb:VID_xxxx&PID_xxxx#SERIALE (oppure winspool:Nome coda per una stampante installata su Windows). Si compila da solo scegliendo il dispositivo dalla cassa
  • serialPort e baudRate: solo con connectionType: 'serial' (porta COM del PC cassa)

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, RCH, Custom, Labware, Ditron, Axon DADO). 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?