Adding little frame for the sales receipt and fix some typos

This commit is contained in:
Mylloon 2021-11-28 14:36:28 +01:00
parent b7f9c66309
commit 897c4dd9d6

40
main.py
View file

@ -5,6 +5,8 @@ from tkinter.messagebox import showerror, showinfo, showwarning, askyesno
from tkinter.filedialog import askopenfile
# Regex
from re import sub
# Date
from datetime import date
# Import des fichiers pour gérer la base de donnée
from users import Utilisateurs
@ -22,6 +24,7 @@ class GesMag:
self.f = Frame(self.parent) # `Frame` affiché à l'écran
self.imagesStock = [] # liste qui va contenir nos images pour l'affichage du stock
self.dossierImage = PhotoImage(file = "img/dossier.gif") # image pour l'icone de selection
self.panier = [] # liste des éléments "dans le panier"
def demarrer(self) -> None:
"""Lance le programme GesMag."""
@ -195,7 +198,7 @@ class GesMag:
"""Affiche l'interface du caissier."""
caissier = Utilisateurs().recuperationUtilisateur(id=id)
self.parent.title(f"Caissier {caissier['nom']} {caissier['prenom']}")
self.dimensionsFenetre(self.parent, 940, 670)
self.dimensionsFenetre(self.parent, 940, 690)
# Suppresssion de la dernière Frame
self.f.destroy()
@ -217,6 +220,9 @@ class GesMag:
boucheriePoissonnerieVerif = IntVar(stock)
entretienVerif = IntVar(stock)
def __formatPrix(prix: str) -> str:
return f"{float(prix):.2f}".replace('.', ',')
def __affichageTableau(parent: Frame, page: int = 1):
"""Fonction qui va actualiser le tableau avec une page donnée (par défaut affiche la première page)."""
# On supprime et refais la frame qui va stocker notre tableau
@ -290,7 +296,7 @@ class GesMag:
Label(parent, text=element["type"].capitalize()).grid(column=2, row=i, padx=ecart)
Label(parent, text=element["nom"].capitalize()).grid(column=3, row=i, padx=ecart)
Label(parent, text=element["quantite"]).grid(column=4, row=i, padx=ecart)
Label(parent, text=f"{float(element['prix']):.2f}".replace('.', ',')).grid(column=5, row=i, padx=ecart)
Label(parent, text=__formatPrix(element["prix"])).grid(column=5, row=i, padx=ecart)
curseur += 1
i += 1
@ -313,9 +319,25 @@ class GesMag:
__affichageTableau(tableau) # affichage du tableau
# Partie affichage du ticket de caisse
ecart = 10
ticket = LabelFrame(self.f, text="Ticket de caisse")
ticket.grid(column=1, row=1, sticky='n', padx=5)
Label(ticket, text="TODO").grid()
Label(ticket, text=f"Date de vente : {date.today().strftime('%Y/%m/%d')}").grid(column=0, row=0, pady=ecart)
Label(ticket, text=f"Éléments achetés ({len(self.panier)}) :").grid(column=0, row=1, pady=ecart)
i = 2
prixTotal = 0
for element in self.panier:
Label(ticket, text=element).grid(column=0, row=i)
prixTotal += 0 # ajout du prix
i += 1
Label(ticket, text=f"Prix total : {__formatPrix(prixTotal)}").grid(column=0, row=i, pady=ecart)
Button(ticket, text="Valider le\nticket de caisse", font=self.font).grid(column=0, row=i + 1, pady=ecart)
#.grid(column=1, row=1, sticky='s')
# Partie ajout élément au stock
def __ajouterElementStock():
@ -443,11 +465,11 @@ class GesMag:
Button(enfant, text="Vider les champs", command=___viderChamps).grid(column=0, row=8, columnspan=3)
Button(enfant, text="Quitter", command=enfant.destroy).grid(column=0, row=8, columnspan=3, sticky='e')
Button(self.f, text="Ajouter un élément\nau stock", font=self.font, command=__ajouterElementStock).grid(column=1, row=1, sticky='s')
Button(self.f, text="Ajouter un élément\nau stock", font=self.font, command=__ajouterElementStock).grid(column=1, row=2)
# Boutton pour passer en mode manager si la personne est un manager
if caissier["metier"] == 0:
Button(self.f, text="Passer en mode Manager", font=self.font, command=lambda: self._interfaceManager(id)).grid()
Button(self.f, text="Passer en mode Manager", font=self.font, command=lambda: self._interfaceManager(id)).grid(column=0, row=2)
def _interfaceManager(self, id: int):
@ -645,7 +667,13 @@ class GesMag:
utilisateur["metier"] = "Manager" if utilisateur["metier"] == 0 else "Caissier"
del utilisateur["passe"] # le manager ne doit pas connaître le mot de passe de l'utilisateur
for idx, cle in enumerate(utilisateur):
Label(frameInfos, text=f"{cle.capitalize()} :").grid(column=0, row=idx + 1, sticky='e')
if cle == "stats_journaliere":
cleAffichage = cle.replace('_', ' ').title() # remplace le `_` en espace et met une majuscule à tous les mots
else:
cleAffichage = cle.capitalize()
if cle == "date":
continue
Label(frameInfos, text=f"{cleAffichage} :").grid(column=0, row=idx + 1, sticky='e')
Label(frameInfos, text=utilisateur[cle]).grid(column=1, row=idx + 1, sticky='w')