Export the current sell state of a cashier is now (almost) possible

This commit is contained in:
Mylloon 2021-11-29 22:10:03 +01:00
parent 9928a0dfab
commit 64202b1332
2 changed files with 28 additions and 19 deletions

10
main.py
View file

@ -2,7 +2,7 @@
from tkinter import IntVar, Checkbutton, LabelFrame, PhotoImage, Scrollbar, Listbox, Entry, Button, Label, Frame, Tk, Toplevel from tkinter import IntVar, Checkbutton, LabelFrame, PhotoImage, Scrollbar, Listbox, Entry, Button, Label, Frame, Tk, Toplevel
from tkinter.ttk import Combobox, Separator from tkinter.ttk import Combobox, Separator
from tkinter.messagebox import showerror, showinfo, showwarning, askyesno from tkinter.messagebox import showerror, showinfo, showwarning, askyesno
from tkinter.filedialog import askopenfile from tkinter.filedialog import askopenfile, asksaveasfile
# Regex # Regex
from re import sub from re import sub
# Date # Date
@ -573,7 +573,13 @@ 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)
# -> Partie export des statistiques # -> Partie export des statistiques
Button(self.f, text="Exporter les statistiques", font=self.font, command=lambda: Stats().exporteCSV(id, True)).grid(column=0, row=2, sticky='e', padx=ecart) def __exportation():
"""Exporte dans un fichier choisie par l'utilisateur ses statistiques de la journée."""
chemin = asksaveasfile(title=f"Exportation des statistiques de {caissier['nom']} {caissier['prenom']}", filetypes=[("Fichier CSV", ".csv")])
if chemin == None: # si rien n'a été spécifie on arrête l'exportation
return
Stats().exporteCSV(chemin.name, id)
Button(self.f, text="Exporter les statistiques", font=self.font, command=__exportation).grid(column=0, row=2, sticky='e', padx=ecart)
# -> Boutton pour passer en mode manager si la personne est un manager # -> Boutton pour passer en mode manager si la personne est un manager
if caissier["metier"] == 0: if caissier["metier"] == 0:

View file

@ -15,14 +15,14 @@ class Stats(Utilisateurs):
""" """
if not self.fichierExiste("stats.csv") or force: if not self.fichierExiste("stats.csv") or force:
entete = ["id", "pseudo"] entete = ["id", "pseudo"]
dateAujourdHui = date.today() dateAujourdHui = date.today() - timedelta(days=7)
for _ in range(0, 8): for _ in range(0, 8):
entete.append(dateAujourdHui.strftime("%Y/%m/%d")) entete.append(dateAujourdHui.strftime("%Y/%m/%d"))
dateAujourdHui = dateAujourdHui - timedelta(days=1) dateAujourdHui = dateAujourdHui + timedelta(days=1)
with open("stats.csv", 'w') as f: with open("stats.csv", 'w') as f:
writer = csv.writer(f) fichier = csv.writer(f)
writer.writerow(entete) fichier.writerow(entete)
def miseAJourStatsUtilisateur(self, utilisateurID: int, prix: float): def miseAJourStatsUtilisateur(self, utilisateurID: int, prix: float):
""" """
@ -44,22 +44,25 @@ class Stats(Utilisateurs):
print(prix) print(prix)
pass pass
def exporteCSV(self, utilisateurID: int, mode: bool = False): def exporteCSV(self, chemin: str, utilisateurID: int):
""" """
Exporte les statistiques d'un utilisateur dans un fichier `CSV`. Exporte les statistiques d'un utilisateur dans un fichier `CSV`.
- N'exporte que les statistiques du jour.
Deux modes :
- `False` : exporte dans le fichier globale (qui contient tous les utilisateurs, utilisés
par l'histogramme de l'interface du Manager)
- si le fichier `CSV` ne contient aucune donnée de l'utilisateur, on y rajoute les
données de l'utilisateur
- ne garde qu'un historique des 7 derniers jours maximum
- `True` : exporte dans un fichier séparé l'utilisateur choisie (demande à l'utilisateur
il souhaite que le fichier soit exporté) - (utilisé par le bouton d'exportation de
l'interface du caissier)
- A savoir : n'exporte que l'état actuel de la base de donnée
""" """
pass donnees = self.recuperationDonneesCSV(utilisateurID)
aujourdHui = date.today().strftime("%Y/%m/%d")
with open(chemin, 'w') as f:
fichier = csv.writer(f)
fichier.writerow(["ID Utilisateur", f"Totales des ventes du jour ({aujourdHui})"])
if len(donnees) > 0: # si il y a des données enregistrées
fichier.writerow([utilisateurID, donnees[aujourdHui]])
else:
fichier.writerow([utilisateurID, "Aucune ventes enregistrée"])
def recuperationDonneesCSV(self, utilisateurID: int) -> dict:
"""Renvoie les informations contenu dans le fichier `CSV` globale."""
with open("stats.csv", 'r') as f:
return list(csv.DictReader(f))
def miseAJourDatesCSV(self): def miseAJourDatesCSV(self):
"""Mets-à-jour les dates trop anciennes du fichier globales `CSV`.""" """Mets-à-jour les dates trop anciennes du fichier globales `CSV`."""