diff --git a/csv.py b/csv.py new file mode 100644 index 0000000..67ebf8e --- /dev/null +++ b/csv.py @@ -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") diff --git a/main.py b/main.py index afca219..b46bbe2 100644 --- a/main.py +++ b/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):