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
|
# 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):
|
||||||
|
|
Reference in a new issue