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
Devo fare qualche prova ma secondo me dipende dal fatto che il campo ordine.numeroTavolo è alfanumerivo e non riesce a risolvere una funzione numerica.

Devo provare a pensare qualche sistema per risolvere questo problema. Così su due piedi però non mi viene in mente nulla ...

Ci penso ...

Ciao.

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

Ho capito... non avevo pensato che fosse un campo alfanumerico...

Quindi, se non si possono usare funzioni di conversione da stringa a numero, l'unica soluzione che mi viene in mente è quella di fare una serie di "if", sperando che il cassiere scriva correttamente il numero del tavolo senza spazi ecc...

{{if ordine.numeroTavolo == '1'}}

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

{{else}}

{{if ordine.numeroTavolo == '2'}}

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

{{else}}

{{if ordine.numeroTavolo == '3'}}

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

--------------------------------------------

{{else}}

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

{{endif}}

Forse non è molto elegante ma potrebbe funzionare!

Grazie

risposta inviata da (420 punti)
0 voti
Si, tecnicamente questa soluzione dovrebbe funzionare. I cassieri, per quanto riguarda il numero del tavolo, per la mia esperienza, sono abbastanza precisi. Fammi sapere se riesci. Provo comunque a pensare a qualche alternativa..

Ciao.

Mauro
risposta inviata da (34.8k punti)
modificato da
0 voti

Ho fatto alcune ricerche e prove e ho verificato che si può usare la funzione int() per convertire il campo alfanumerico in intero.

Quindi con questo codice funziona perfettamente:

{{if int(ordine.numeroTavolo) > 16}}

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

{{else}}

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

{{endif}}

Grazie infinite per come avete concepito questo software, così flessibile da poter facilmente inserire una necessità come la nostra!

risposta inviata da (420 punti)
0 voti
Ottimo lavoro. Farò qualche prova anch'io poi lo inserisco nel manuale che ho in revisione in questi giorni.

Domanda, ma cosa succede sulla stampa se un cassiere, al posto del numero tavolo, scrive "Tavolo vicino al palco"?

Ciao.

Mauro.
risposta inviata da (34.8k punti)
Al software non so cosa succede, ma il cassiere rischia di fare una brutta fine...
Concordo :-)  :-)
0 voti

Ritorno sull'argomento perchè i responsabili della sagra vogliono aggiungere una lettera al numero del tavolo (ad esempio 11C) per meglio identificare la posizione della persona nel tavolo: abbiamo tavoli molto lunghi...

Quindi il mio automatismo che mi faceva stampare NORD e SUD non funziona più, in quanto la funzione int() restituisce errore nel log e non stampa nulla.

Cercando una soluzione ho visto che si potrebbe fare così:

<!-- Stampa condizionale per indicare l'area NORD o SUD a seconda del numero del tavolo -->

{{if int(rstrip(ordine.numeroTavolo, letters)) > 16}}

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

{{else}}

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

{{endif}}

Però la funzione rstrip() non è una di quelle built-in e quindi non funziona e nel log viene indicato

NameError: name 'rstrip' is not defined at line 37 column 3

Come si potrebbe ovviare al problema? La funzione rstrip() fa parte del modulo "string" ma non so come includerlo...

risposta inviata da (420 punti)
0 voti
Questa ho dovutoo girarla ad Emanuele. Siamo oltre le mie labili conoscenze.

Vediamo se a lui viene qualche idea.

Ciao.

Mauro.
risposta inviata da (34.8k punti)
0 voti
Ciao,

ho provato mettendo nella stampa cliente qualcosa come:
{{py:
def substring(s):
    return s[:-1]
}}
{{'11C' | substring}}

e questo stampa "11".  Spero ti possa essere d'aiuto.
risposta inviata da (14.9k punti)
0 voti
Grazie, posso provare...

A me però interessava usare la funzione rtrim() che mi avrebbe permesso di ovviare ad eventuali errori di battitura dei cassieri (11/C, 11 C, 11-C ecc...).

Secondo te come si può fare?
risposta inviata da (420 punti)
0 voti
A questo punto credo sia necessaria un'azione abbastanza incisiva sui cassieri perché inserirscano sempre il tavolo in maniera corretta.

L'unico modo di bypassare questo problema è creare una tabella tavoli ma, in questo momento, non è fattibile (anche se, a dire il vero, sto già pensando da un pochino a qualcosa del genere).

Ciao.

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