Warenkorb Funktion
Verfasst: Dienstag 24. November 2020, 08:35
Hallo zusammen,
ich möchte gerne für unseren Verein ein kleines Kassensystem bauen für die Getränke auf Basis dieses Beitrages:
https://forum-raspberrypi.de/forum/thre ... ngssystem/
Soweit ist das Backend für den Admin schon fertig mit Datenbank und allen Zeug.
Nachdem das Projekt schon etwas älter ist habe ich es alles auf Python3 umgeschrieben und es funktioniert soweit.
Folgender Ablauf:
Nutzer legt seinen RfID Chip auf und wird über Chip ID "angemeldet"
Nutzer scannt einen EAN Code über einen USB Handscanner und bucht somit das entsprechende Produkt was in der Datenbank hinterlegt ist.
Jetzt stehe ich vor der Herausforderung das der Nutzer auch mehrere Getränke buchen kann.
Diese sollen erst in der GUI in einer Tabelle dargestellt werden bevor man auf "buchen" klickt.
Erst dann soll das ganze in die Datenbank geschrieben werden.
Das Projekt auf deren Basis ich arbeite nimmt aber sofort die Buchung entgegen und schreibt es in die Datenbank.
Heisst wenn man 2x Limo/ Bier getrunken hat, muss man für das zweite Getränk wieder den Chip auflegen.
Ich bin mir nicht sicher wie ich das anstellen soll das die gescannten Getränke erst einmal zwischen gespeichert werden.
Das ganze beginnt ab etwas hier:
Er stellt mir den Namen des gescannten Produktes da sowie den Preis da. Ich meine dann greift das "time.sleep(6.5)" und er beendet danach die Verbindung und geht wieder zurück auf hello().
Diesen Teil des Scriptes (hello) habe ich nicht kopiert da er nicht notwendig ist.
Danke für eure Ideen
ich möchte gerne für unseren Verein ein kleines Kassensystem bauen für die Getränke auf Basis dieses Beitrages:
https://forum-raspberrypi.de/forum/thre ... ngssystem/
Soweit ist das Backend für den Admin schon fertig mit Datenbank und allen Zeug.
Nachdem das Projekt schon etwas älter ist habe ich es alles auf Python3 umgeschrieben und es funktioniert soweit.
Folgender Ablauf:
Nutzer legt seinen RfID Chip auf und wird über Chip ID "angemeldet"
Nutzer scannt einen EAN Code über einen USB Handscanner und bucht somit das entsprechende Produkt was in der Datenbank hinterlegt ist.
Jetzt stehe ich vor der Herausforderung das der Nutzer auch mehrere Getränke buchen kann.
Diese sollen erst in der GUI in einer Tabelle dargestellt werden bevor man auf "buchen" klickt.
Erst dann soll das ganze in die Datenbank geschrieben werden.
Das Projekt auf deren Basis ich arbeite nimmt aber sofort die Buchung entgegen und schreibt es in die Datenbank.
Heisst wenn man 2x Limo/ Bier getrunken hat, muss man für das zweite Getränk wieder den Chip auflegen.
Ich bin mir nicht sicher wie ich das anstellen soll das die gescannten Getränke erst einmal zwischen gespeichert werden.
Code: Alles auswählen
def who_am_i(cardid):
GPIO.output(15, GPIO.HIGH)
time.sleep(0.1)
GPIO.output(15, GPIO.LOW)
cursor.execute("SELECT * FROM customers where tagid = " +cardid)
if not cursor.rowcount:
GPIO.output(18, GPIO.HIGH)
cprint(' Sorry aber den Benutzer gibt es nicht! ', 'white', 'on_red', attrs=['bold'])
print time.strftime("%H:%M:%S")
time.sleep(2)
GPIO.output(18, GPIO.LOW)
db.close
hello()
else:
os.system('cls' if os.name=='nt' else 'clear')
result = cursor.fetchall()
for data in result:
userid = data[0]
name = (str(data[2]) +" "+str(data[3]))
if str(data[4]) == "1":
admin()
else:
termios.tcflush(sys.stdin, termios.TCIOFLUSH)
sql =("SELECT CONCAT_WS( '', c.firstName, c.lastName ) AS 'Name', SUM( p.price ) AS 'Offener Betrag' FROM customers c LEFT JOIN orders o ON o.customerId = c.id LEFT JOIN products p ON p.id = o.productId WHERE c.id = %s AND o.isPaid =0 GROUP BY c.id")
cursor.execute(sql, (userid))
result = cursor.fetchall()
txt = "0.0 €"
for data in result:
txt = (str(data[1]) +" €")
#colored('Your account: ' ,'blue', 'on_white' ), colored(txt, 'white', 'on_red')
text= ("Hallo, " +name)
while len(text)< 41:
text = text + " "
cprint (text, 'blue', 'on_white')
while len(txt)< 19:
txt = txt + " "
print colored('Auf deiner Karte sind: ' ,'blue', 'on_white' ), colored(txt ,'white', 'on_red', attrs=['bold'])
cprint (41*'-','green', 'on_grey')
cprint(' Bitte scanne ein Produkt! ', 'white', 'on_green', attrs=['bold'])
cprint (41*'-','green', 'on_grey')
signal.alarm(TIMEOUT)
ean = input()
signal.alarm(0)
os.system('cls' if os.name=='nt' else 'clear')
cursor.execute("SELECT * FROM products where ean = '" +ean+"'")
if not cursor.rowcount:
GPIO.output(18, GPIO.HIGH)
cprint('Sorry aber das Produkt kenne ich nicht!', 'white', 'on_red', attrs=['bold'])
time.sleep(3)
db.close
hello()
else:
result = cursor.fetchall()
for data in result:
drinkid = data[0]
txt = (str(data[2]) +" ")
platzhalter = ""
txt2 = ("-> " +str(data[3])+" €")
while len(txt)+len(txt2)+len(platzhalter)< 42:
platzhalter = platzhalter + " "
print colored (txt+platzhalter, 'blue', 'on_white'), colored(txt2, 'red', 'on_white')
sql =("INSERT INTO orders (customerId, productId) VALUES(%s, %s)")
cursor.execute(sql, (userid,drinkid))
db.commit()
sql =("SELECT CONCAT_WS( '', c.firstName, c.lastName ) AS 'Name', SUM( p.price ) AS 'Offener Betrag' FROM customers c LEFT JOIN orders o ON o.customerId = c.id LEFT JOIN products p ON p.id = o.productId WHERE c.id = %s AND o.isPaid =0 GROUP BY c.id")
cursor.execute(sql, (userid))
result = cursor.fetchall()
for data in result:
txt = (str(data[1]) +" €")
platzhalter =""
while len(txt)+len(platzhalter)< 21:
platzhalter = platzhalter + " "
print colored('Jetzt auf der Karte: '+ platzhalter ,'blue', 'on_white' ), colored(txt, 'white', 'on_red')
sql = ("SELECT COUNT(customerId) AS OrdersFromCustomerID FROM orders WHERE customerId=%s")
cursor.execute(sql, (userid))
result = cursor.fetchall()
for data in result:
txt = (" " +str(data[0]))
platzhalter = ""
while len(txt)+len(platzhalter)< 18:
platzhalter = platzhalter + " "
print colored('Anzahl von Getränken: '+platzhalter ,'blue', 'on_white' ), colored(txt, 'yellow', 'on_white')
time.sleep(6.5)
db.close
hello()
Code: Alles auswählen
else:
result = cursor.fetchall()
for data in result:
drinkid = data[0]
txt = (str(data[2]) +" ")
platzhalter = ""
txt2 = ("-> " +str(data[3])+" €")
while len(txt)+len(txt2)+len(platzhalter)< 42:
platzhalter = platzhalter + " "
print colored (txt+platzhalter, 'blue', 'on_white'), colored(txt2, 'red', 'on_white')
sql =("INSERT INTO orders (customerId, productId) VALUES(%s, %s)")
cursor.execute(sql, (userid,drinkid))
db.commit()
sql =("SELECT CONCAT_WS( '', c.firstName, c.lastName ) AS 'Name', SUM( p.price ) AS 'Offener Betrag' FROM customers c LEFT JOIN orders o ON o.customerId = c.id LEFT JOIN products p ON p.id = o.productId WHERE c.id = %s AND o.isPaid =0 GROUP BY c.id")
cursor.execute(sql, (userid))
result = cursor.fetchall()
for data in result:
txt = (str(data[1]) +" €")
platzhalter =""
while len(txt)+len(platzhalter)< 21:
platzhalter = platzhalter + " "
print colored('Jetzt auf der Karte: '+ platzhalter ,'blue', 'on_white' ), colored(txt, 'white', 'on_red')
sql = ("SELECT COUNT(customerId) AS OrdersFromCustomerID FROM orders WHERE customerId=%s")
cursor.execute(sql, (userid))
result = cursor.fetchall()
for data in result:
txt = (" " +str(data[0]))
platzhalter = ""
while len(txt)+len(platzhalter)< 18:
platzhalter = platzhalter + " "
print colored('Anzahl von Getränken: '+platzhalter ,'blue', 'on_white' ), colored(txt, 'yellow', 'on_white')
time.sleep(6.5)
db.close
hello()
Diesen Teil des Scriptes (hello) habe ich nicht kopiert da er nicht notwendig ist.
Danke für eure Ideen