Passa al contenuto principale

Template Scontrini e Stampe

Il sistema di stampa della piattaforma si basa su tre componenti: stampanti (PrinterDevice), template (PrintLayout) e regole di instradamento (PrintRoutingRule). Questa architettura permette di inviare automaticamente ogni ordine alla stampante corretta con la formattazione appropriata.

Architettura del Sistema di Stampa​

Il flusso di stampa segue questi passaggi:

  1. L'operatore conferma un ordine o esegue un'azione di stampa
  2. Il PrintRouterService valuta tutte le regole di instradamento attive
  3. Per ogni regola che soddisfa le condizioni, genera i blocchi di stampa dal template associato
  4. L'EscPosGenerator converte i blocchi in comandi ESC/POS
  5. Il job viene accodato nel PrintQueueService e inviato alla stampante

Stampanti (PrinterDevice)​

Ogni stampante registrata nel sistema ha le seguenti proprieta:

CampoDescrizioneValori
nameNome identificativoStampante Bar, Fiscale Cassa 1
ipAddressIndirizzo IP di rete192.168.1.100
portPorta TCP9100 (default ESC/POS)
protocolProtocollo di comunicazioneescpos, epson_fp, custom_fp, star
deviceTypeTipo dispositivostandard (comanda) o fiscal (registratore)
connectionTypeTipo connessionenetwork o usb
paperWidthLarghezza carta in mm58 o 80

Per registrare una stampante:

  1. Dalla cassa, accedere a Impostazioni > Stampanti > Nuova Stampante
  2. Compilare IP, porta e protocollo
  3. Eseguire un test di stampa per verificare la connessione
  4. Attivare la stampante

Template di Stampa (PrintLayout)​

Un template definisce la struttura visiva di uno scontrino tramite una lista ordinata di PrintBlock. I tipi di blocco disponibili sono:

Blocchi di Contenuto​

TipoDescrizioneParametri principali
textRiga di testotext, align (left/center/right), bold, underline, size (small/medium/large)
columnsTesto su colonneArray di {text, width, align}
imageImmagine (logo)base64Data
dividerLinea separatricechar (default: -)
barcodeCodice a barredata, format (ean13/code128/...), barWidth, height
qrcodeCodice QRdata, size (1-8), errorCorrection (L/M/Q/H)

Blocchi di Controllo​

TipoDescrizioneParametri
feedAvanzamento cartalines (default: 3)
cutTaglio cartanessuno

Esempio di Template Scontrino​

[
{ "type": "text", "text": "RISTORANTE DA MARIO", "align": "center", "bold": true, "size": "large" },
{ "type": "text", "text": "Via Roma 1, Milano", "align": "center", "size": "small" },
{ "type": "divider", "char": "=" },
{ "type": "columns", "columns": [
{ "text": "Margherita", "width": 3, "align": "left" },
{ "text": "x2", "width": 1, "align": "center" },
{ "text": "16.00", "width": 1, "align": "right" }
]},
{ "type": "divider" },
{ "type": "columns", "columns": [
{ "text": "TOTALE", "width": 3, "align": "left" },
{ "text": "16.00 EUR", "width": 2, "align": "right" }
]},
{ "type": "feed", "lines": 2 },
{ "type": "qrcode", "data": "https://ristorante.it/receipt/12345", "size": 4 },
{ "type": "cut" }
]

Regole di Instradamento (PrintRoutingRule)​

Le regole determinano quando e dove stampare. Ogni regola e composta da:

Condizioni (PrintCondition)​

Le condizioni usano un albero logico con nodi di tipo group (AND/OR) e atom (confronto singolo):

{
"type": "group",
"operator": "OR",
"conditions": [
{ "type": "atom", "field": "category", "op": "equals", "value": "bevande" },
{ "type": "atom", "field": "category", "op": "equals", "value": "cocktail" }
]
}

I campi confrontabili sono:

  • category: categoria del prodotto
  • product_name: nome del prodotto
  • sku: codice articolo

Gli operatori disponibili: equals, contains, in_list, not_in_list.

Tipo di Attivazione (triggerType)​

Ogni regola specifica quando si attiva:

TriggerDescrizione
allSi attiva per qualsiasi contesto di stampa
receiptSolo per scontrini cliente
comandaSolo per comande cucina/bar
precontoSolo per pre-conti

Modalita Comanda​

Per le regole di tipo comanda, sono disponibili impostazioni aggiuntive:

  • comandaSendMode: all_courses (stampa tutte le uscite separate) o active_only (solo l'uscita corrente)
  • comandaVaiMode: active_only (solo uscita VAI), full_highlight (tutta la comanda con evidenzia), full_big_small (tutta con font diversi per uscita attiva vs resto)

Regole di Stile (PrintStyleRule)​

Le regole di formattazione condizionale modificano l'aspetto di specifici articoli:

{
"id": "style_antipasti",
"name": "Evidenzia Antipasti",
"condition": { "type": "atom", "field": "category", "op": "equals", "value": "antipasti" },
"bold": true,
"size": "dh"
}

Le dimensioni disponibili: dh (altezza doppia), dw (larghezza doppia), big (entrambe).

Opzioni Aggiuntive​

  • cutPerCategory: taglia la carta dopo ogni cambio di categoria (utile per comande con destinazioni diverse)
  • nsItemsHandling: gestione articoli non soggetti IVA per stampanti fiscali (include, exclude, append_notes, separate_document)

Configurazione Pratica​

Scenario: Bar e Cucina Separati​

  1. Regola Cucina: condizione category IN [primi, secondi, antipasti], stampante Stampante Cucina, trigger comanda
  2. Regola Bar: condizione category IN [bevande, cocktail, caffe], stampante Stampante Bar, trigger comanda
  3. Regola Scontrino: nessuna condizione (stampa tutto), stampante Fiscale Cassa, trigger receipt

Scenario: Preconto al Tavolo​

Aggiungere una regola con trigger preconto, stampante Stampante Sala (portatile), nessuna condizione di categoria.

Editor Stampa​

Il modulo editor_stampa_ui fornisce un'interfaccia grafica per configurare stampanti, template e regole di instradamento. Si accede dalla cassa tramite il menu Impostazioni > Stampanti oppure dal modulo dedicato nel registro moduli.

L'editor permette di:

  • Gestire l'elenco stampanti con test di connessione
  • Costruire l'albero condizioni con un editor visuale drag-and-drop
  • Visualizzare in anteprima lo scontrino generato
  • Sincronizzare la configurazione con il server

FAQ​

Come stampo il logo del ristorante sullo scontrino? Aggiungere un blocco image con il logo in formato base64. L'immagine deve essere in bianco e nero, larga al massimo 576 pixel (per carta da 80mm) o 384 pixel (per carta da 58mm).

Posso inviare la stessa comanda a piu stampanti? Si. Creare piu regole di instradamento con condizioni diverse ma per gli stessi articoli. Ogni regola puo puntare a una stampante diversa.

Come gestisco le stampanti fiscali Epson FP? Selezionare il protocollo epson_fp. La stampante fiscale non usa template grafici (layoutId puo essere null) ma comandi fiscali diretti. Le descrizioni prodotto sono limitate a 20 caratteri.

Le regole di stampa si sincronizzano tra le casse? Si. Stampanti, template e regole sono memorizzate localmente (Isar) e sincronizzate con il server. Le modifiche vengono propagate a tutte le postazioni alla successiva sincronizzazione.

Vedi Anche​

Questa pagina ti è stata utile?