-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMain.py
More file actions
225 lines (168 loc) · 7.21 KB
/
Main.py
File metadata and controls
225 lines (168 loc) · 7.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
from tkinter import *
from tkinter import filedialog
import Calc_write as fct
import pathlib
import Creat_charges_fixes
import Set_filename
import os
import Calc_read as read
import Data_screen
#Ouvre fichier et read.open dans global var
def ouvrir():
global open_file
open_file = filedialog.askopenfilename(title="Ouvrir un fichier de suivi",defaultextension=".xlsx",filetypes=[("Xlsx Fichier",".xlsx")])
global path
path = pathlib.Path(open_file).parent.resolve()
global data
data = read.open(open_file)
err.config(text=f"{open_file}",fg='black')
def creat_suivi(fenetre):
Set_filename.set_filename(fenetre)
def creat_fix(fenetre):
Creat_charges_fixes.open_creators(fenetre)
def screenData(fentere):
try:
data
except NameError:
err.config(text="Veuillez ouvrir un fichier")
else:
Data_screen.tabl_screen(fentere,data)
def save():
try:
data
except NameError:
err.config(text="Veuillez ouvrir un fichier")
else:
err.config(text="")
fct.save_path(data,os.path.basename(open_file),path)
def add_line():
try:
data
except NameError:
err.config(text="Veuillez ouvrir un fichier")
else:
fct.add_line(data, date_entry.get(),str(libelle_entry.get()),str(cat_entry.get()),Pointe_entry.get(),float(Debit_entry.get()),float(Credit_entry.get()))
last_line = len(data) -1
fct.write_solde(data,last_line)
#Clear tous les champs
date_entry.delete(0,END)
libelle_entry.delete(0,END)
cat_entry.delete(0,END)
Pointe_entry.delete(0,END)
Credit_entry.delete(0,END)
Debit_entry.delete(0,END)
def affichage_cat():
try:
data
except NameError:
err.config(text="Veuillez ouvrir un fichier")
else:
dico_cat = read.categorie_dict(data)
dico_all = read.depense_indict(dico_cat, data)
text = ""
for (key, value) in dico_all.items():
text += f"{key} : {value}€\n\n"
cat.config(text=text,font=("Helvetica",13,"bold"))
solde.config(text=f"Solde restant : {read.get_solde(data)}€",font=("Helvetica",10,"bold"))
tot_depense.config(text=f"Total des dépenses : {read.debit(data)}€",font=("Helvetica",10,"bold"))
tot_gain.config(text=f"Total des crédits : {read.credit(data)}€",font=("Helvetica",10,"bold"))
# Creation de la fenêtre
fenetre = Tk()
fenetre.title("Interface Comptabilité")
fenetre.geometry("1280x720")
fenetre.resizable(width=False, height=False)
# Frame ajout de ligne
add_Frame = Frame(fenetre)
add_Frame.config(width=640,height=360,highlightbackground="black",highlightthickness=1)
add_Frame.grid(row=1,column=0,sticky="SW")
#Frame import fichier
import_Frame = Frame(fenetre)
import_Frame.config(width=640,height=360,highlightbackground="black",highlightthickness=1)
import_Frame.grid(row=0,column=0,sticky="NW")
#Frame Affichage infos
infos_Frame = Frame(fenetre)
infos_Frame.config(width=640,height=720,highlightbackground="black",highlightthickness=1)
infos_Frame.place(relx=0.5)
#Contenu add_Frame
add_titre = Label(add_Frame,text="Ajouter un débit ou crédit",font=("Helvetica",15,"bold"))
add_titre.place(relx=0.5, rely=0.05, anchor=CENTER)
#Indication mettre 0 credit ou debit en fonction de l'ajout
info_add = Label(add_Frame,text="Si l'ajout est un Crédit alors mettre 0 dans le champ 'Débit', dans le cas cas contraire, mettre 0 dans le champ 'Crédit'. ",font=("Helvetica",7))
info_add.place(relx=0.5, rely=0.1, anchor=CENTER)
#add Date
date_lab = Label(add_Frame,text="Date (J/M/A): ")
date_entry = Entry(add_Frame)
date_lab.place(relx=0.462,rely=0.16,anchor=CENTER)
date_entry.place(relx=0.5,rely=0.21,anchor=CENTER)
#add libelle
libelle_lab = Label(add_Frame,text="Libellé : ")
libelle_entry = Entry(add_Frame)
libelle_lab.place(relx=0.437,rely=0.27,anchor=CENTER)
libelle_entry.place(relx=0.5,rely=0.32,anchor=CENTER)
#add catégorie
cat_lab = Label(add_Frame,text="Catégorie Dépenses : ")
cat_entry = Entry(add_Frame)
cat_lab.place(relx=0.492,rely=0.39,anchor=CENTER)
cat_entry.place(relx=0.5,rely=0.44,anchor=CENTER)
#add pointé
Pointe_lab = Label(add_Frame,text="Pointé : ")
Pointe_entry = Entry(add_Frame)
Pointe_lab.place(relx=0.439,rely=0.50,anchor=CENTER)
Pointe_entry.place(relx=0.5,rely=0.55,anchor=CENTER)
#add debit
Debit_lab = Label(add_Frame,text="Débit : ")
Debit_entry = Entry(add_Frame)
Debit_lab.place(relx=0.434,rely=0.61,anchor=CENTER)
Debit_entry.place(relx=0.5,rely=0.66,anchor=CENTER)
#add credit
Credit_lab = Label(add_Frame,text="Crédit : ")
Credit_entry = Entry(add_Frame)
Credit_lab.place(relx=0.434,rely=0.72,anchor=CENTER)
Credit_entry.place(relx=0.5,rely=0.77,anchor=CENTER)
#Bouton add_line
btn_add = Button(add_Frame,text=" Ajouter la ligne ",command= lambda: add_line())
btn_add.place(relx=0.5,rely=0.87,anchor=CENTER)
#Boutton save (import_Frame)
btn_save = Button(add_Frame,text=" Sauvegarder le fichier ",command=save)
btn_save.place(relx=0.88,rely=0.95,anchor=CENTER)
#Contenu import_frame
import_titre = Label(import_Frame,text=" Importer un fichier de compte ",font=("Helvetica",15,"bold"))
import_titre.place(relx=0.5, rely=0.05, anchor=CENTER)
#Label error(import_Frame)
err = Label(import_Frame,text="",font=("Helvetica",10),fg='red')
err.place(relx=0.5, rely=0.55, anchor=CENTER)
#Boutton ouvrir fichier(import_Frame)
btn_import = Button(import_Frame,text=" Ouvrir un fichier de Suivi ",command=ouvrir)
btn_import.place(relx=0.5,rely=0.49,anchor=CENTER)
#Boutton creation fichier de suivi
btn_create = Button(import_Frame,text=" Créer un fichier de suivi ",command= lambda :creat_suivi(fenetre))
btn_create.place(relx=0.109,rely=0.88,anchor=CENTER)
#Boutton créer fichier de Charges fixes
btn_charge_fix = Button(import_Frame,text=" Créer un fichier de charges fixes ",command= lambda :creat_fix(fenetre))
btn_charge_fix.place(relx=0.144,rely=0.96,anchor=CENTER)
infos_crea = Label(import_Frame,text=" Création de fichiers:",font=("Helvetica",10,"bold"))
infos_crea.place(relx=0.109, rely=0.80, anchor=CENTER)
#Infos Frame
#Titre
infos_titre = Label(infos_Frame,text=" Affichage des données ",font=("Helvetica",15,"bold"))
infos_titre.place(relx=0.5, rely=0.0248, anchor=CENTER)
#Affichage des catégories
info_infos = Label(infos_Frame,text=" Ne pas oublier de Sauvegarder le fichier pour enregistrer les modifications ",font=("Helvetica",8))
info_infos.place(relx=0.5, rely=0.05, anchor=CENTER)
#Boutton affichage le tableau
btn_tab = Button(infos_Frame,text=" Afficher le tableau ",command= lambda : screenData(fenetre))
btn_tab.place(relx=0.65,rely=0.96,anchor=CENTER)
#Boutton affichage des infos
btn_infos = Button(infos_Frame,text=" Calculer les données ",command= affichage_cat)
btn_infos.place(relx=0.35,rely=0.96,anchor=CENTER)
#Labael affichant les catégories
cat = Label(infos_Frame,text="",font=("Helvetica",10))
cat.place(relx=0.32,rely=0.083)
#Labelle affichant les gains les debits et le solde restant
tot_gain = Label(infos_Frame,text="",font=("Helvetica",10))
tot_gain.place(relx=0.05,rely=0.90)
tot_depense = Label(infos_Frame,text="",font=("Helvetica",10))
tot_depense.place(relx=0.355,rely=0.90)
solde = Label(infos_Frame,text="",font=("Helvetica",10))
solde.place(relx=0.70,rely=0.90)
fenetre.mainloop()