← Tutte le guide
Guida

Vendere biglietti in banchina anche offline: app di cassa e stampanti termiche

Come funziona un'app di cassa che vende e stampa biglietti anche senza rete - salvataggio delle vendite, sincronizzazione, stampanti ESC/POS da 58 e 80 mm, Bluetooth che cade e ristampe.

Perché una cassa in banchina deve funzionare senza rete?

La vendita in banchina si concentra negli ultimi minuti prima della partenza, con la coda davanti e una copertura spesso instabile. Se la cassa dipende dalla connessione, ogni rallentamento diventa un biglietto non venduto o un passeggero che rischia di perdere la corsa.

Abbiamo affrontato questo problema sviluppando un'app di cassa per le biglietterie dei traghetti, per Android e iOS, che trasforma uno smartphone o un tablet collegato a una stampante termica in una biglietteria completa. Questa guida raccoglie cosa conta davvero in un progetto del genere, e i problemi che si incontrano quando l'app esce dall'ufficio e arriva sul molo.

Come funziona una vendita senza connessione?

Il principio si chiama offline first: l'app lavora sempre sui dati presenti sul dispositivo, e la rete serve solo a tenerli allineati con la piattaforma centrale. Una vendita segue questi passaggi:

  1. L'operatore sceglie il biglietto dal catalogo già salvato sul dispositivo e registra il pagamento.
  2. La vendita si salva in locale, nel nostro caso in un database SQLite.
  3. Il biglietto viene stampato, via Bluetooth, con orario di partenza e QR code.
  4. La vendita viene sincronizzata con il back-office appena la rete torna, senza che l'operatore debba fare nulla.

Per questo la coda non si ferma quando cade la copertura: l'operatore continua a lavorare allo stesso modo, e l'ufficio ritrova le vendite non appena il dispositivo si ricollega. In questo modo vendite in banchina, vendite online e prenotazioni B2B finiscono nello stesso posto.

La sincronizzazione deve anche sopportare gli invii ripetuti. Se la rete cade proprio mentre una vendita viene inviata, l'app non può sapere se è arrivata e la rimanderà: il sistema deve riconoscerla, per esempio con un codice univoco creato sul dispositivo, senza contarla due volte negli incassi.

Il pagamento con carta è un discorso a parte. L'app può registrare il metodo di pagamento anche offline, ma il terminale POS ha bisogno della propria connessione: se in banchina la rete manca del tutto, va previsto cosa fare in quel caso.

Cosa succede ai posti se le casse sono offline?

È la prima domanda da farsi, perché la risposta cambia il progetto. Dipende da una cosa sola: i biglietti che vendete hanno un numero di posti dichiarato?

Senza un numero di posti, il problema non esiste. È il caso dell'app che abbiamo sviluppato: i biglietti venduti in banchina non hanno una quantità dichiarata, quindi più casse possono vendere offline nello stesso momento senza conflitti da risolvere. Quando la rete torna, ogni vendita viene semplicemente aggiunta alle altre.

Con una capienza da rispettare, le cose cambiano. Una cassa offline non può sapere cosa stanno vendendo le altre, né cosa è stato venduto online, e nessuna tecnologia può colmare questo vuoto. Va presa una decisione di gestione prima di sviluppare, e le strade principali sono tre:

  • Assegnare a ogni cassa una quota di posti, che può vendere anche offline senza chiedere conferma
  • Bloccare la vendita offline oltre una certa soglia di riempimento della corsa, quando il rischio diventa troppo alto
  • Accettare l'eccezione e gestire a posteriori gli eventuali esuberi, con una regola chiara per il personale

La scelta dipende da quanto spesso le corse si riempiono davvero e da quanto pesa un esubero. Se sbarcare un passeggero è impensabile, la quota è la strada più sicura.

Quale stampante termica scegliere?

Le stampanti termiche stampano senza inchiostro, su carta sensibile al calore: non ci sono cartucce da cambiare e la stampa è rapida, due vantaggi concreti quando c'è la coda. Nel nostro progetto usiamo stampanti del produttore italiano Custom, con l'app configurata sia per i modelli da 58 mm sia per quelli da 80 mm.

Cos'è ESC/POS e perché conta?

ESC/POS è il linguaggio di comandi nato con le stampanti Epson e oggi supportato da molti produttori. L'app gli invia testo, grassetti, immagini, QR code e il comando di taglio della carta. Scegliere stampanti ESC/POS significa non legare il software a un singolo modello. Non è però una garanzia assoluta: l'implementazione varia da un modello all'altro, per esempio nella gestione delle immagini o dei QR code, quindi ogni nuova stampante va provata con il biglietto reale.

58 o 80 mm?

58 mm80 mm
Caratteri per riga (font standard)Di solito 32Di solito 48
IngombroPiù compatta, comoda da portarePiù grande, adatta a un banco fisso
BigliettoPiù stretto e più lungoPiù spazio per testo e QR code

L'impaginazione va definita per ciascuna larghezza. Un biglietto disegnato per 80 mm non si adatta da solo ai 58: le righe vanno a capo nel punto sbagliato e il QR code può risultare troppo grande o troppo piccolo. Rendere la larghezza un'impostazione dell'app permette di usare entrambi i formati con lo stesso software. Il QR code in particolare va provato con lo scanner che si userà davvero all'imbarco, perché il biglietto stampato deve leggersi al primo colpo.

Una nota che vale prima di iniziare: una stampante termica stampa biglietti, ma non è di per sé un registratore telematico. Se la vostra attività ha obblighi di memorizzazione e invio dei corrispettivi, chiarite con il commercialista quale documento deve emettere la cassa, perché la risposta può cambiare il progetto.

Quali problemi si incontrano sul campo?

Sul molo il software viene messo alla prova da cose che in ufficio non succedono. I tre punti che hanno richiesto più attenzione nel nostro progetto sono questi.

Il Bluetooth che cade

La connessione con la stampante prima o poi si interrompe: la stampante si spegne o va in standby, si scarica, il dispositivo si allontana, il sistema operativo chiude la connessione. Va considerato un evento normale, non un errore raro.

L'app deve quindi riconnettersi da sola, come fa la nostra, e mostrare in ogni momento lo stato della stampante. Un operatore con la coda davanti non può aprire le impostazioni Bluetooth del telefono ogni volta che la connessione cade.

Il salvataggio del biglietto

Cosa succede se la stampante si disconnette proprio mentre sta stampando un biglietto già pagato? L'ordine delle operazioni decide tutto: la vendita va salvata prima di mandare in stampa. Così un problema della stampante non fa perdere né l'incasso né il biglietto, e l'operatore può riprovare appena la stampante torna disponibile.

Salvare prima di stampare evita anche l'errore opposto, cioè rifare la vendita da capo e ritrovarsi con un incasso registrato due volte.

La ristampa

La ristampa serve più di quanto si pensi: una stampa fallita a metà, la carta finita, un passeggero che ha perso il biglietto. Deve essere veloce da trovare e, soprattutto, non deve creare una nuova vendita: è una nuova copia dello stesso biglietto, con lo stesso QR code, e non cambia gli incassi della giornata.

Conviene anche tenere traccia delle stampe. Nella nostra app c'è un log dedicato: se a fine giornata i conti non tornano, si può ricostruire cosa è stato stampato e quando.

Android o iOS: cambia qualcosa?

Sviluppando in Flutter il codice dell'app è uno solo, e la nostra cassa funziona su entrambi i sistemi. Il Bluetooth però è uno dei punti in cui le piattaforme si comportano in modo diverso.

Android permette di dialogare con le stampanti Bluetooth tradizionali con pochi vincoli. Su iPhone e iPad le app comunicano liberamente con i dispositivi Bluetooth Low Energy, mentre il Bluetooth classico richiede in genere accessori certificati da Apple (programma MFi). In pratica una stampante che funziona perfettamente con un tablet Android può non essere utilizzabile da un iPad.

Se le casse useranno dispositivi iOS, anche solo in parte, la scelta della stampante va fatta insieme allo sviluppo: procuratevi un esemplare del modello esatto e provatelo su entrambi i sistemi prima di ordinarne dieci.

Cosa chiedere a chi sviluppa l'app di cassa

  • Se spengo il Wi-Fi e i dati, posso vendere e stampare come sempre? Fatevelo mostrare dal vivo.
  • Cosa succede se la stampante si spegne mentre stampa un biglietto già pagato?
  • La ristampa crea una nuova vendita, o una copia dello stesso biglietto?
  • Se la stessa vendita viene inviata due volte, come si evita di contarla doppia?
  • Come si gestiscono i posti quando le casse sono offline?
  • Con quali stampanti avete provato l'app, e su quali sistemi?
  • L'app gestisce più larghezze di carta, o solo una?
  • Come si registra ogni dispositivo come cassa, e cosa vede l'ufficio a fine giornata?

Da dove partire

Il momento giusto è la bassa stagione: c'è tempo per provare stampanti e flussi in banchina, con il personale che userà l'app ogni giorno, prima che arrivino le code. Una cassa di questo tipo può nascere da sola o collegata alla biglietteria online e al back-office, come nell'ecosistema che abbiamo realizzato per una compagnia di traghetti.

Noi partiamo da una call gratuita di 30 minuti e definiamo una prima milestone a prezzo fisso, di solito vendita, stampa e sincronizzazione, per poi aggiungere gruppi, B2B e report. Trovate come lavoriamo nella pagina sullo sviluppo di app su misura.

Domande frequenti

Serve internet per stampare un biglietto?

No. Telefono o tablet comunicano direttamente con la stampante via Bluetooth, quindi vendita e stampa funzionano anche senza copertura. La rete serve solo a sincronizzare le vendite con la piattaforma centrale, e questo può avvenire anche più tardi.

Se più casse vendono offline si rischia di vendere troppi biglietti?

Dipende dal tipo di biglietto. Se non c'è un numero di posti dichiarato, il rischio non esiste. Se invece ogni corsa ha una capienza da rispettare, nessuna cassa offline può conoscere le vendite delle altre, e va decisa una regola prima di sviluppare, per esempio una quota di posti assegnata a ogni cassa.

Meglio una stampante termica da 58 o da 80 mm?

La 58 mm è più compatta e comoda da portare in giro, la 80 mm dà più spazio a testo e QR code. Se l'app gestisce entrambe le larghezze, ogni biglietteria può scegliere quella più adatta al proprio banco.

L'app di cassa può funzionare sia su Android sia su iOS?

Sì, ma la stampante va scelta di conseguenza. Android è più libero nelle connessioni Bluetooth, mentre su iPhone e iPad ci sono più vincoli. Prima di comprare le stampanti conviene provare il modello esatto su entrambi i sistemi.

Si può usare una stampante termica che abbiamo già?

Spesso sì, se supporta i comandi ESC/POS e si collega via Bluetooth a tutti i dispositivi che userete. Conviene provarla con il biglietto reale prima di decidere, perché modelli diversi non si comportano sempre allo stesso modo.

Costruiamo qualcosa che valga la pena.

Rispondete a un questionario di 2 minuti, poi fissiamo una call di 30: parliamo del vostro progetto, definiamo una prima milestone e vi diciamo onestamente se siamo il team giusto.

Prenota una call →