adding filter in stock display
This commit is contained in:
parent
8e1fcad80c
commit
04d886e54f
1 changed files with 42 additions and 7 deletions
49
main.py
49
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")
|
||||
|
|
Reference in a new issue