Export the current sell state of a cashier is now (almost) possible
This commit is contained in:
parent
9928a0dfab
commit
64202b1332
2 changed files with 28 additions and 19 deletions
10
main.py
10
main.py
|
@ -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:
|
||||||
|
|
37
stats.py
37
stats.py
|
@ -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
|
|
||||||
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
|
|
||||||
"""
|
"""
|
||||||
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`."""
|
||||||
|
|
Reference in a new issue