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:
parent
0a9b0c4c02
commit
00cefc324e
2 changed files with 33 additions and 14 deletions
7
csv.py
Normal file
7
csv.py
Normal 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
40
main.py
|
@ -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):
|
||||
|
|
Reference in a new issue