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
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 stock import Stock
from csv import CSV
class GesMag:
"""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
# 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.grid(column=0, row=1, sticky='n', padx=5)
@ -225,9 +235,6 @@ class GesMag:
boucheriePoissonnerieVerif = IntVar(stock)
entretienVerif = IntVar(stock)
def __formatPrix(prix: str) -> str:
return f"{float(prix):.2f}".replace('.', ',')
def __affichageTableau(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
@ -287,7 +294,7 @@ class GesMag:
if nombreDeFoisPresentDansLePanier > 0:
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
if stockDisponibleVerif.get() == 1 and stockListe[i]["quantite"] < 1:
@ -374,7 +381,7 @@ class GesMag:
__affichageTableau() # 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.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)
def ___affichagePanier():
"""Affiche le panier."""
"""Affiche le panier actuel dans le ticket de caisse."""
self.panierAffichage.destroy()
self.panierAffichage = Frame(ticket)
self.panierAffichage.grid(column=0, row=1, pady=ecart)
@ -392,7 +399,11 @@ class GesMag:
compteurElements = 0
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[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
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)
#.grid(column=1, row=1, sticky='s')
# Partie ajout élément au stock
# -> Partie ajout élément au stock
def __ajouterElementStock():
"""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)
# 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:
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):