Adding little frame for the sales receipt and fix some typos
This commit is contained in:
parent
b7f9c66309
commit
897c4dd9d6
1 changed files with 34 additions and 6 deletions
40
main.py
40
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')
|
||||
|
||||
|
||||
|
|
Reference in a new issue