From 897c4dd9d6a473da5cd28ec522bc6a7bd8c0e874 Mon Sep 17 00:00:00 2001 From: Mylloon Date: Sun, 28 Nov 2021 14:36:28 +0100 Subject: [PATCH] Adding little frame for the sales receipt and fix some typos --- main.py | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/main.py b/main.py index a32828c..d5ee727 100644 --- a/main.py +++ b/main.py @@ -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')