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 = 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)
|
||||||
|
|
||||||
def __affichageTableau(stockListe: list, parent: Frame, page: int = 1):
|
# Variables pour les filtres du tableau
|
||||||
"""Fonction qui va actualiser le tableau avec une page donnée."""
|
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
|
# On supprime et refais la frame qui va stocker notre tableau
|
||||||
parent.destroy()
|
parent.destroy()
|
||||||
parent = Frame(stock)
|
parent = Frame(stock)
|
||||||
parent.grid(column=0, row=1, columnspan=6)
|
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
|
ecart = 10 # écart entre les champs
|
||||||
|
|
||||||
elementsParPage = 10 # on définit combien d'élément une page peut afficher au maximum
|
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)
|
Label(parent, text=f"Page {page}/{pageMax}").grid(column=2, row=i, columnspan=2)
|
||||||
|
|
||||||
# Boutons
|
# 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')
|
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')
|
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
|
if page == 1: # si on est a la première page on désactive le boutton précédent
|
||||||
precedent.config(state="disabled")
|
precedent.config(state="disabled")
|
||||||
if page == pageMax: # si on est a la dernière page on désactive le boutton suivant
|
if page == pageMax: # si on est a la dernière page on désactive le boutton suivant
|
||||||
suivant.config(state="disabled")
|
suivant.config(state="disabled")
|
||||||
else:
|
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)
|
tableau = Frame(stock)
|
||||||
__affichageTableau(elementsEnStock, tableau)
|
__affichageTableau(tableau) # affichage du tableau
|
||||||
|
|
||||||
# Partie affichage du ticket de caisse
|
# Partie affichage du ticket de caisse
|
||||||
ticket = LabelFrame(self.f, text="Ticket de caisse")
|
ticket = LabelFrame(self.f, text="Ticket de caisse")
|
||||||
|
|
Reference in a new issue