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 from tkinter.filedialog import askopenfile
# Regex # Regex
from re import sub from re import sub
# Date
from datetime import date
# Import des fichiers pour gérer la base de donnée # Import des fichiers pour gérer la base de donnée
from users import Utilisateurs from users import Utilisateurs
@ -22,6 +24,7 @@ class GesMag:
self.f = Frame(self.parent) # `Frame` affiché à l'écran self.f = Frame(self.parent) # `Frame` affiché à l'écran
self.imagesStock = [] # liste qui va contenir nos images pour l'affichage du stock 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.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: def demarrer(self) -> None:
"""Lance le programme GesMag.""" """Lance le programme GesMag."""
@ -195,7 +198,7 @@ class GesMag:
"""Affiche l'interface du caissier.""" """Affiche l'interface du caissier."""
caissier = Utilisateurs().recuperationUtilisateur(id=id) caissier = Utilisateurs().recuperationUtilisateur(id=id)
self.parent.title(f"Caissier {caissier['nom']} {caissier['prenom']}") 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 # Suppresssion de la dernière Frame
self.f.destroy() self.f.destroy()
@ -217,6 +220,9 @@ class GesMag:
boucheriePoissonnerieVerif = IntVar(stock) boucheriePoissonnerieVerif = IntVar(stock)
entretienVerif = IntVar(stock) entretienVerif = IntVar(stock)
def __formatPrix(prix: str) -> str:
return f"{float(prix):.2f}".replace('.', ',')
def __affichageTableau(parent: Frame, page: int = 1): 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).""" """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 # 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["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["nom"].capitalize()).grid(column=3, row=i, padx=ecart)
Label(parent, text=element["quantite"]).grid(column=4, 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 curseur += 1
i += 1 i += 1
@ -313,9 +319,25 @@ class GesMag:
__affichageTableau(tableau) # affichage du tableau __affichageTableau(tableau) # affichage du tableau
# Partie affichage du ticket de caisse # Partie affichage du ticket de caisse
ecart = 10
ticket = LabelFrame(self.f, text="Ticket de caisse") ticket = LabelFrame(self.f, text="Ticket de caisse")
ticket.grid(column=1, row=1, sticky='n', padx=5) 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 # Partie ajout élément au stock
def __ajouterElementStock(): 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="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(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 # Boutton pour passer en mode manager si la personne est un manager
if caissier["metier"] == 0: 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): def _interfaceManager(self, id: int):
@ -645,7 +667,13 @@ class GesMag:
utilisateur["metier"] = "Manager" if utilisateur["metier"] == 0 else "Caissier" 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 del utilisateur["passe"] # le manager ne doit pas connaître le mot de passe de l'utilisateur
for idx, cle in enumerate(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') Label(frameInfos, text=utilisateur[cle]).grid(column=1, row=idx + 1, sticky='w')