Skip to main content

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?