diff --git a/main.py b/main.py index 26d8ec8..1ef7481 100644 --- a/main.py +++ b/main.py @@ -203,13 +203,49 @@ class GesMag: stock = LabelFrame(self.f, text="Stock") stock.grid(column=0, row=1, sticky='n', padx=5) - def __affichageTableau(stockListe: list, parent: Frame, page: int = 1): - """Fonction qui va actualiser le tableau avec une page donnée.""" + # Variables pour les filtres du tableau + stockDisponibleVerif = IntVar(stock) # controle si on affiche que les éléments en stocks ou non + # Cache un certain type de produit + fruitsLegumesVerif = IntVar(stock) + boulangerieVerif = IntVar(stock) + boucheriePoissonnerieVerif = IntVar(stock) + entretienVerif = IntVar(stock) + + def __affichageTableau(parent: Frame, 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 parent.destroy() parent = Frame(stock) parent.grid(column=0, row=1, columnspan=6) + # Filtre pour le tableau + filtres = Frame(stock) # Morceau qui va contenir nos checkbutton + ecartFiltre = 10 # écart entre les champs des filtres + Label(filtres, text="Filtre", font=self.font).grid(column=0, row=0) # titre + Checkbutton(filtres, text="Stock disponible\nuniquement", variable=stockDisponibleVerif, command=lambda: __affichageTableau(parent)).grid(sticky='w', pady=ecartFiltre) + Checkbutton(filtres, text="Cacher les\nfruits & légumes", variable=fruitsLegumesVerif, command=lambda: __affichageTableau(parent)).grid(sticky='w', pady=ecartFiltre) + Checkbutton(filtres, text="Cacher les produits de\nla boulangerie", variable=boulangerieVerif, command=lambda: __affichageTableau(parent)).grid(sticky='w', pady=ecartFiltre) + Checkbutton(filtres, text="Cacher les produits de\nla boucherie\net poissonnerie", variable=boucheriePoissonnerieVerif, command=lambda: __affichageTableau(parent)).grid(sticky='w') + Checkbutton(filtres, text="Cacher les produits\nd'entretien", variable=entretienVerif, command=lambda: __affichageTableau(parent)).grid(sticky='w', pady=ecartFiltre) + filtres.grid(column=7, row=1, sticky='w') + + stockListe = Stock().listeStocks() # stock récupéré de la base de données + + 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: + stockListe[i] = None + elif fruitsLegumesVerif.get() == 1 and stockListe[i]["type"] == "fruits legumes": + stockListe[i] = None + elif boulangerieVerif.get() == 1 and stockListe[i]["type"] == "boulangerie": + stockListe[i] = None + elif boucheriePoissonnerieVerif.get() == 1 and stockListe[i]["type"] == "boucherie poissonnerie": + stockListe[i] = None + elif entretienVerif.get() == 1 and stockListe[i]["type"] == "entretien": + stockListe[i] = None + + # Supprime toutes les valeurs `None` de la liste + stockListe = list(filter(None, stockListe)) + ecart = 10 # écart entre les champs elementsParPage = 10 # on définit combien d'élément une page peut afficher au maximum @@ -257,20 +293,19 @@ class GesMag: Label(parent, text=f"Page {page}/{pageMax}").grid(column=2, row=i, columnspan=2) # Boutons - precedent = Button(parent, text="Page précédente", command=lambda: __affichageTableau(stockListe, parent, page - 1)) + precedent = Button(parent, text="Page précédente", command=lambda: __affichageTableau(parent, page - 1)) precedent.grid(column=0, row=i, columnspan=2, sticky='w') - suivant = Button(parent, text="Page suivante", command=lambda: __affichageTableau(stockListe, parent, page + 1)) + suivant = Button(parent, text="Page suivante", command=lambda: __affichageTableau(parent, page + 1)) suivant.grid(column=4, row=i, columnspan=2, sticky='e') if page == 1: # si on est a la première page on désactive le boutton précédent precedent.config(state="disabled") if page == pageMax: # si on est a la dernière page on désactive le boutton suivant suivant.config(state="disabled") else: - Label(parent, text="Il n'y a rien en stock").grid(column=0, row=0, columnspan=6) + Label(parent, text="Il n'y a rien en stock\nEssayez de réduire les critères dans le filtre.").grid(column=0, row=0, columnspan=6) - elementsEnStock = Stock().listeStocks() # stock récupéré de la base de données tableau = Frame(stock) - __affichageTableau(elementsEnStock, tableau) + __affichageTableau(tableau) # affichage du tableau # Partie affichage du ticket de caisse ticket = LabelFrame(self.f, text="Ticket de caisse")