Modifications:

- Clean-up some comments
- Add total amount of items when buyed multiple times at once in the receipt (so only when > 1)
- Add button to export the total amount of sales of the day (not implemented yet)
This commit is contained in:
Mylloon 2021-11-29 13:52:24 +01:00
parent 0a9b0c4c02
commit 00cefc324e
2 changed files with 33 additions and 14 deletions

7
csv.py Normal file
View file

@ -0,0 +1,7 @@
from users import Utilisateurs
class CSV(Utilisateurs):
"""Gère l'export des statistiques en format CSV."""
def __init__(self):
super().__init__(r"db.sqlite3")
print("uwu")

40
main.py
View file

@ -8,9 +8,10 @@ from re import sub
# Date # Date
from datetime import 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 et l'export en CSV
from users import Utilisateurs from users import Utilisateurs
from stock import Stock from stock import Stock
from csv import CSV
class GesMag: class GesMag:
"""Programme de Gestion d'une caise de magasin.""" """Programme de Gestion d'une caise de magasin."""
@ -213,7 +214,16 @@ class GesMag:
Label(self.f, text="Interface Caissier", font=(self.font[0], 20)).grid(column=0, row=0) # titre de l'interface Label(self.f, text="Interface Caissier", font=(self.font[0], 20)).grid(column=0, row=0) # titre de l'interface
# Partie affichage du Stock def __formatPrix(prix: str) -> str:
"""
Renvoie un string pour un meilleur affichage du prix :
- `,` au lieu de `.`
- Symbole ``
- 2 chiffres après la virgule
"""
return f"{float(prix):.2f}".replace('.', ',')
# -> Partie affichage du Stock
stock = LabelFrame(self.f, text="Stock") stock = LabelFrame(self.f, text="Stock")
stock.grid(column=0, row=1, sticky='n', padx=5) stock.grid(column=0, row=1, sticky='n', padx=5)
@ -225,9 +235,6 @@ 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(page: int = 1): def __affichageTableau(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
@ -287,7 +294,7 @@ class GesMag:
if nombreDeFoisPresentDansLePanier > 0: if nombreDeFoisPresentDansLePanier > 0:
self.panier.insert(index, (element, nombreDeFoisPresentDansLePanier)) self.panier.insert(index, (element, nombreDeFoisPresentDansLePanier))
___affichagePanier() # Met-à-jour le panier ___affichagePanier() # met-à-jour le panier
for i in range(0, len(stockListe)): # on retire les éléments plus présent dans la liste for i in range(0, len(stockListe)): # on retire les éléments plus présent dans la liste
if stockDisponibleVerif.get() == 1 and stockListe[i]["quantite"] < 1: if stockDisponibleVerif.get() == 1 and stockListe[i]["quantite"] < 1:
@ -374,7 +381,7 @@ class GesMag:
__affichageTableau() # affichage du tableau __affichageTableau() # affichage du tableau
# Partie affichage du ticket de caisse # -> Partie affichage du ticket de caisse
ecart = 10 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)
@ -382,7 +389,7 @@ class GesMag:
Label(ticket, text=f"Date de vente : {date.today().strftime('%Y/%m/%d')}").grid(column=0, row=0, pady=ecart) Label(ticket, text=f"Date de vente : {date.today().strftime('%Y/%m/%d')}").grid(column=0, row=0, pady=ecart)
def ___affichagePanier(): def ___affichagePanier():
"""Affiche le panier.""" """Affiche le panier actuel dans le ticket de caisse."""
self.panierAffichage.destroy() self.panierAffichage.destroy()
self.panierAffichage = Frame(ticket) self.panierAffichage = Frame(ticket)
self.panierAffichage.grid(column=0, row=1, pady=ecart) self.panierAffichage.grid(column=0, row=1, pady=ecart)
@ -392,7 +399,11 @@ class GesMag:
compteurElements = 0 compteurElements = 0
for idx, element in enumerate(self.panier): for idx, element in enumerate(self.panier):
Label(self.panierAffichage, text=f"[{element[0]['id']}] -").grid(column=0, row=idx + 1, sticky='e') Label(self.panierAffichage, text=f"[{element[0]['id']}] -").grid(column=0, row=idx + 1, sticky='e')
Label(self.panierAffichage, text=f"{element[1]}x {element[0]['nom'].capitalize()} ({__formatPrix(element[0]['prix'])})").grid(column=1, row=idx + 1, sticky='w') if element[1] > 1:
message = f"{element[1]}x {element[0]['nom'].capitalize()} ({__formatPrix(element[0]['prix'])}, total: {__formatPrix(element[0]['prix'] * element[1])})"
else:
message = f"{element[1]}x {element[0]['nom'].capitalize()} ({__formatPrix(element[0]['prix'])})"
Label(self.panierAffichage, text=message).grid(column=1, row=idx + 1, sticky='w')
prixTotal += (element[0]["prix"] * element[1]) # ajout du prix prixTotal += (element[0]["prix"] * element[1]) # ajout du prix
compteurElements += element[1] compteurElements += element[1]
@ -404,9 +415,7 @@ class GesMag:
Button(ticket, text="Valider le\nticket de caisse", font=self.font).grid(column=0, pady=ecart) Button(ticket, text="Valider le\nticket de caisse", font=self.font).grid(column=0, 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():
"""Ouvre une fenêtre qui permet d'ajouter un nouvel élément à la base de donnée.""" """Ouvre une fenêtre qui permet d'ajouter un nouvel élément à la base de donnée."""
""" """
@ -534,9 +543,12 @@ class GesMag:
Button(self.f, text="Ajouter un élément\nau stock", font=self.font, command=__ajouterElementStock).grid(column=1, row=2) 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 # -> Partie export des statistiques
Button(self.f, text="Exporter les statistiques", font=self.font).grid(column=0, row=2, sticky='e', padx=ecart)
# -> 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(column=0, row=2) Button(self.f, text="Passer en mode Manager", font=self.font, command=lambda: self._interfaceManager(id)).grid(column=0, row=2, sticky='w', padx=ecart)
def _interfaceManager(self, id: int): def _interfaceManager(self, id: int):