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:
- L'operatore conferma un ordine o esegue un'azione di stampa
- Il PrintRouterService valuta tutte le regole di instradamento attive
- Per ogni regola che soddisfa le condizioni, genera i blocchi di stampa dal template associato
- L'EscPosGenerator converte i blocchi in comandi ESC/POS
- Il job viene accodato nel PrintQueueService e inviato alla stampante
Stampanti (PrinterDevice)
Ogni stampante registrata nel sistema ha le seguenti proprieta:
| Campo | Descrizione | Valori |
|---|---|---|
name | Nome identificativo | Stampante Bar, Fiscale Cassa 1 |
ipAddress | Indirizzo IP di rete | 192.168.1.100 |
port | Porta TCP | 9100 (default ESC/POS) |
protocol | Protocollo di comunicazione | escpos, epson_fp, custom_fp, star |
deviceType | Tipo dispositivo | standard (comanda) o fiscal (registratore) |
connectionType | Tipo connessione | network o usb |
paperWidth | Larghezza carta in mm | 58 o 80 |
Per registrare una stampante:
- Dalla cassa, accedere a Impostazioni > Stampanti > Nuova Stampante
- Compilare IP, porta e protocollo
- Eseguire un test di stampa per verificare la connessione
- 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
| Tipo | Descrizione | Parametri principali |
|---|---|---|
text | Riga di testo | text, align (left/center/right), bold, underline, size (small/medium/large) |
columns | Testo su colonne | Array di {text, width, align} |
image | Immagine (logo) | base64Data |
divider | Linea separatrice | char (default: -) |
barcode | Codice a barre | data, format (ean13/code128/...), barWidth, height |
qrcode | Codice QR | data, size (1-8), errorCorrection (L/M/Q/H) |
Blocchi di Controllo
| Tipo | Descrizione | Parametri |
|---|---|---|
feed | Avanzamento carta | lines (default: 3) |
cut | Taglio carta | nessuno |
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:
| Trigger | Descrizione |
|---|---|
all | Si attiva per qualsiasi contesto di stampa |
receipt | Solo per scontrini cliente |
comanda | Solo per comande cucina/bar |
preconto | Solo per pre-conti |
Modalita Comanda
Per le regole di tipo comanda, sono disponibili impostazioni aggiuntive:
- comandaSendMode:
all_courses(stampa tutte le uscite separate) oactive_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
- Regola Cucina: condizione
category IN [primi, secondi, antipasti], stampanteStampante Cucina, triggercomanda - Regola Bar: condizione
category IN [bevande, cocktail, caffe], stampanteStampante Bar, triggercomanda - Regola Scontrino: nessuna condizione (stampa tutto), stampante
Fiscale Cassa, triggerreceipt
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
- Layout Cassa -- tasti per azioni di stampa (PRINT_PRECONTO)
- Catalogo Prodotti -- SKU e categorie usati nelle condizioni
- Categorie Gerarchiche -- filtro per categoria nelle regole
- Metodi di Pagamento -- stampa dopo pagamento