diff --git a/main.py b/main.py index 1b74b49..d63f3c1 100644 --- a/main.py +++ b/main.py @@ -2,7 +2,7 @@ from tkinter import IntVar, Checkbutton, LabelFrame, PhotoImage, Scrollbar, Listbox, Entry, Button, Label, Frame, Tk, Toplevel from tkinter.ttk import Combobox, Separator from tkinter.messagebox import showerror, showinfo, showwarning, askyesno -from tkinter.filedialog import askopenfile +from tkinter.filedialog import askopenfile, asksaveasfile # Regex from re import sub # 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) # -> 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 if caissier["metier"] == 0: diff --git a/stats.py b/stats.py index 53cbda8..16e191e 100644 --- a/stats.py +++ b/stats.py @@ -15,14 +15,14 @@ class Stats(Utilisateurs): """ if not self.fichierExiste("stats.csv") or force: entete = ["id", "pseudo"] - dateAujourdHui = date.today() + dateAujourdHui = date.today() - timedelta(days=7) for _ in range(0, 8): entete.append(dateAujourdHui.strftime("%Y/%m/%d")) - dateAujourdHui = dateAujourdHui - timedelta(days=1) + dateAujourdHui = dateAujourdHui + timedelta(days=1) with open("stats.csv", 'w') as f: - writer = csv.writer(f) - writer.writerow(entete) + fichier = csv.writer(f) + fichier.writerow(entete) def miseAJourStatsUtilisateur(self, utilisateurID: int, prix: float): """ @@ -44,22 +44,25 @@ class Stats(Utilisateurs): print(prix) 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`. - - 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 - où 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 + - N'exporte que les statistiques du jour. """ - 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): """Mets-à-jour les dates trop anciennes du fichier globales `CSV`."""