Benvenuto in gestionestandgastronomico Q&A, dove potrai porre quesiti e ricevere risposte da altri membri della community.
0 voti

Tanto per cominciare complimenti per il vostro software: ne stiamo valutando l'utilizzo nella nostra sagra.

Una delle nostre esigenze è quella di far comparire, nelle stampe delle comande, la dicitura "NORD" oppure "SUD" a seconda del tavolo da servire, in quanto la nostra cucina ha due punti d'uscita.

Ho provato ad inserire il seguente codice nella stampa:

{{if ordine.numeroTavolo >= 18}}

<h3 align='center'>SUD</h3>

{{else}}

<h3 align='center'>NORD</h3>

{{endif}}

Purtroppo c'è qualcosa che non funziona, perchè evidentemente la condizione è considerata sempre vera e qualunque numero di tavolo mi fa stampare la scritta "SUD".

Cosa posso avere sbagliato?

quesito posto da (420 punti)

14 Risposte

0 voti

Dopo innumerevoli prove ho un codice funzionante:

{{if int(rstrip(ordine.numeroTavolo.rstrip(" qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM")) > 16}}

<h3 align='center'>SUD</h3>

{{else}}

<h3 align='center'>NORD</h3>

{{endif}}

In questo modo viene tolto dal fondo della stringa ordine.numeroTavolo ogni carattere indicato nell'argomento della funzione rstrip() e cioè tutte le lettere maiuscole e minuscole: questo è solo un esempio, infatti avrei dovuto inserire anche tutti i caratteri speciali.

Così funziona, ma resta il problema che il cassiere potrebbe per errore scrivere " 12 A" con uno spazio davanti, oppure altre combinazioni non filtrate dal codice, ottenendo purtroppo il risultato che la stampa non viene effettuata! E questo è un grosso problema...

Quindi ho deciso che soprassederò a questa comoda funzione, ma ho voluto rendervi partecipi perchè potrebbe essere di spunto per qualcuno.

Faccio una proposta: non si potrebbe trasformare in intero la variabile ordine.numeroTavolo?

Che problemi darebbe al software?

risposta inviata da (420 punti)
0 voti
No, il numero del tavolo è più comodo se rimane alfanumerico. Capita spesso che si debba inserire una precisazione sul numero del tavolo ("Sotto il palco", "Vicino al bar", "Cassa", ecc.).

Inoltre, se venisse reso numerico non riusciresti neppure ad inserire 11C, 18A, ecc.

Credo che l'unica soluzione sia una tabella che propone i numeri tavolo che puoi registrare in una specifica tabella. E' tra le cose da fare, Prima o poi vedremo di inserirla.

La soluzione però che hai strovato e veramente interessante. Secondo me potresti anche applicarla istruendo opportunamente i cassieri (magari minacciandoli con il taglio delle mani). D'accordo che poi qualche errore potrebbe sempre succedere, ma quanti potrebbero essere? Io ho molta fiducia nei cassieri. In genere, visto che devono anche maneggiare soldi, sono sempre persone piuttosto sveglie.

Ciao.

Mauro.
risposta inviata da (42.2k punti)
0 voti

Prometto che questo sarà l'ultimo post, anche perchè ora ho un codice funzionante!

Grazie a molte navigazioni su Internet e all'aiuto di Emanuele, ho trovato quello che cercavo: un modo di filtrare un numero partendo da una stringa arbitraria, cioè nel nostro caso il numero del tavolo:

<h3 align='center'>Tavolo {{ordine.numeroTavolo}}</h3>

{{py: import re}}

{{if re.sub("\D","",ordine.numeroTavolo).isdigit() == True}}

{{if int(re.sub("\D","",ordine.numeroTavolo)) > 16}}

<h3 align='center'>SUD</h3>

{{else}}

<h3 align='center'>NORD</h3>

{{endif}}

{{else}}

<h3 align='center'>???</h3>

{{endif}}

Con re.sub("\D","",ordine.numeroTavolo) mantengo solo i caratteri che corrispondono a numeri, però se in ordine.numeroTavolo non vengono inseriti numeri, il risultato è una stringa vuota che fa fallire la conversione in intero fatta da int(). Ho dovuto quindi usare anche la funzione .isdigit() che restituisce True se la stringa rappresenta un numero e False se invece è solo alfanumerica.

Se quindi il cassiere scrive "11 C" verrà filtrato il numero 11, come pure se scrive "11 C il tavolo in fondo".

Se invece scrive "Tavolo in angolo" verrà stampato "???" che tutto sommato va bene: almeno non va in crash la stampa!

Grazie a tutti!

risposta inviata da (420 punti)
0 voti
Ho solo una cosa da dire.

COMPLIMENTI!!! Io mi sentivo gasato quando ero riuscito a stampare i codici a barre nelle comande attraverso un meccanismo ad immagini, ma non sarei mai riuscito a fare quello che hai fatto tu.

Ciao.

Mauro.
risposta inviata da (42.2k punti)
...