Compare commits

..

8 Commits

Author SHA1 Message Date
Ambulance Clerc
191821d81d Changement de version 2022-09-02 15:13:13 +02:00
Ambulance Clerc
99a89585b5 Changement de version 2022-09-02 15:09:10 +02:00
Ambulance Clerc
e60ed4b5fa Arrêt critique si la saisi du débiteur est à nouveau faux 2022-09-02 15:08:37 +02:00
Ambulance Clerc
4c75a6167b Ajout d'un focus sur l'input dans popup de saisi 2022-09-02 14:57:58 +02:00
Ambulance Clerc
842ae5fb69 Adaptation du fonctionnement de la progessbar 2022-09-02 14:39:11 +02:00
Ambulance Clerc
355d17810f Débug génération nom du fichier d'export 2022-09-02 14:13:14 +02:00
Ambulance Clerc
510587d3eb Ajout du complément d'adresse dans le check adresse 2022-08-22 17:36:03 +02:00
Ambulance Clerc
ff22572e56 Ajout du complément d'adresse dans le check adresse 2022-08-22 17:35:46 +02:00
5 changed files with 59 additions and 17 deletions

View File

@@ -18,5 +18,6 @@ class cls_addresse:
firstName = None
birth = None
street = None
street_cpl = None
npa = None
city = None

View File

@@ -9,6 +9,9 @@ class Check_addresses_popup(Toplevel):
def __init__(self, parent, item_1=None, item_2=None, debitor=None, factureID=""):
super().__init__(parent)
if(item_1["complement"] is None):
item_1["complement"] = ""
self.geometry(f"700x300+{parent.winfo_x() + 25 }+{parent.winfo_y() +25 }")
self.resizable(True,True)
self.iconbitmap("./logo_clerc_03X_icon.ico")
@@ -33,6 +36,7 @@ class Check_addresses_popup(Toplevel):
self.add_compares_element(new_frame=lbf_new, old_frame=lbf_old, label="Prénom:", str1=item_1['firstname'], str2=item_2.firstName)
self.add_compares_element(new_frame=lbf_new, old_frame=lbf_old, label="Date de naissance:", str1=datetime.strptime(item_1['birthdate'], "%Y-%m-%d").strftime("%d.%m.%Y"), str2=item_2.birth)
self.add_compares_element(new_frame=lbf_new, old_frame=lbf_old, label="Adresse:", str1=f"{item_1['street']} {item_1['street_number']}", str2=item_2.street)
self.add_compares_element(new_frame=lbf_new, old_frame=lbf_old, label="Complément:", str1=f"{item_1['complement']}", str2=item_2.street_cpl)
self.add_compares_element(new_frame=lbf_new, old_frame=lbf_old, label="NPA/Localité:", str1=f"{item_1['postal_code']} {item_1['city']}", str2=f"{item_2.npa} {item_2.city}")
@@ -41,6 +45,7 @@ class Check_addresses_popup(Toplevel):
str_address_1 += item_1['firstname'].strip()
str_address_1 += datetime.strptime(item_1['birthdate'], "%Y-%m-%d").strftime("%d.%m.%Y")
str_address_1 += f"{item_1['street']} {item_1['street_number']}"
str_address_1 += f"{item_1['complement']}"
str_address_1 += f"{item_1['postal_code']} {item_1['city']}"
@@ -54,6 +59,7 @@ class Check_addresses_popup(Toplevel):
str_address_2 += item_2.firstName
str_address_2 += item_2.birth
str_address_2 += f"{item_2.street.strip()}"
str_address_2 += f"{item_2.street_cpl.strip()}"
str_address_2 += f"{item_2.npa} {item_2.city}"
self.listbox = Listbox(self, height=3, width=35)
@@ -134,7 +140,7 @@ class Check_debitor_popup(Toplevel):
self.inp_code = StringVar()
self.inp_code.set(debitor['code'])
self.geometry(f"850x300+{parent.winfo_x() + 25 }+{parent.winfo_y() +25 }")
self.geometry(f"900x275+{parent.winfo_x() + 25 }+{parent.winfo_y() +25 }")
self.resizable(True,True)
self.iconbitmap("./logo_clerc_03X_icon.ico")
self.title(f"Incohérence sur les débiteurs {fip} / {factureID}. Code débiteur: {debitor['code']}")
@@ -142,8 +148,10 @@ class Check_debitor_popup(Toplevel):
self.columnconfigure(0, weight=1)
self.columnconfigure(1, weight=1)
Label(self,text="Une incohérence a été trouvée entre le code débiteur saisi dans Attrib et le code débiteur saisi dans Attrib. \nIls ne correspondent pas.Le code débiteur présent dans le champs Code Saisi sera utiliser pour la facture winbiz \nMerci de vérifier et modifier le code débiteur puis cliquer sur Valider.", wraplength= 950, justify=LEFT).grid(row=0,column=0, columnspan=2, sticky="W")
lbf_new = LabelFrame(self, text="Données Attrib")
lbf_new.grid(row=0, column=0, sticky='WE', padx=5, pady=5)
lbf_new.grid(row=1, column=0, sticky='WE', padx=5, pady=5)
label_font = font.Font(weight='bold', size=9)
Label(lbf_new, text="Code saisi", font=label_font).grid(row=0, column=0, sticky="W")
@@ -151,15 +159,15 @@ class Check_debitor_popup(Toplevel):
Label(lbf_new, text="Débiteur sélectionné", font=label_font).grid(row=1, column=0, sticky="W")
Label(lbf_new, text="Débiteur sélectionné dans Attrib", font=label_font).grid(row=1, column=0, sticky="W")
text_name = Text(lbf_new, fg="red", height=3,width= 30)
text_name.grid(row=1, column=1, sticky="W")
text_name.insert(END,debitor['name'])
text_name.configure(state='disabled')
lbf_old = LabelFrame(self, text="Nom possible")
lbf_old.grid(row=0, column=1, sticky='NSEW', padx=5, pady=5)
lbf_old = LabelFrame(self, text="Noms possibles")
lbf_old.grid(row=1, column=1, sticky='NSEW', padx=5, pady=5)
@@ -172,8 +180,12 @@ class Check_debitor_popup(Toplevel):
self.listbox.configure(state='disabled')
self.no_selection_possible = True
self.btn = Button(lbf_old, text="Ajouter", command=self.add)
self.btn.grid(row=2, column=0, columnspan= 2, pady=10, padx=10, sticky='NSEW')
menu_bar = Menu(self)
menu_param = Menu(menu_bar, tearoff=0)
menu_param.add_command(label="Ajouter à la liste", command=self.add)
menu_bar.add_cascade(label="Paramètre", menu=menu_param)
self.config(menu=menu_bar)
self.btn = Button(self, text="Valider", command=self.destroy)
self.btn.grid(row=2,column=0, columnspan= 2, pady=10,padx=10, sticky='NSEW')
@@ -223,7 +235,10 @@ class Input_popup(Toplevel):
label_font = font.Font(weight='bold', size=9)
Label(lbf_new, text="", font=label_font).grid(row=0, column=0, sticky="W")
Entry(lbf_new, textvariable=self.inp_value, width=100).grid(row=0, column=1, sticky="W", pady=10)
input_entry = Entry(lbf_new, textvariable=self.inp_value, width=100)
input_entry.grid(row=0, column=1, sticky="W", pady=10)
input_entry.focus()
self.after(0,input_entry.focus)
self.btn = Button(self, text="Valider", command=self.destroy)

View File

@@ -1 +1 @@
20220822-1142
20220902-1508

40
main.py
View File

@@ -118,7 +118,7 @@ class ClercAttrib2Biz():
def main_timer_fn(self):
print("Pass tick timer main app")
#print("Pass tick timer main app")
self.timer = self.fenetre.after(5000, self.main_timer_fn)
self.nb_facture_var.set(self.count_facture)
@@ -242,7 +242,7 @@ class ClercAttrib2Biz():
self.b_prompt_open = False
def refresh_ui(self):
print("pass refresh UI")
#print("pass refresh UI")
if self.export_one_file.get() and not self.export_format_biz.get():
self.cb_run['state'] = "active"
else:
@@ -266,7 +266,8 @@ class ClercAttrib2Biz():
o_addresse.lastName = row[9]
o_addresse.firstName = row[10]
o_addresse.birth = row[38]
o_addresse.street = row[12]
o_addresse.street = row[11]
o_addresse.street_cpl = row[12]
o_addresse.npa = row[13]
o_addresse.city = row[15]
self.addresses.add_addresse(o_addresse)
@@ -284,7 +285,7 @@ class ClercAttrib2Biz():
self.count_facture = 0
x = 0
self.export_filename = f"bizexdoc_export_Attrib_v{datetime.now().year}{datetime.now().month}{datetime.now().month}{datetime.now().hour}{datetime.now().minute}.csv"
self.export_filename = f"bizexdoc_export_Attrib_v{datetime.now().year}{datetime.now().month}{datetime.now().day}{datetime.now().hour}{datetime.now().minute}.csv"
if self.export_format_biz:
if self.export_one_file.get() and os.path.exists(os.path.join(dest_dir, self.export_filename)):
@@ -305,7 +306,7 @@ class ClercAttrib2Biz():
print(f"remove src.csv => {os.path.join(dest_dir, 'src.csv')}")
self.progress_bar["value"] = 0
for filename in os.listdir(dir):
x += 1
if ".json" in filename:
@@ -314,11 +315,17 @@ class ClercAttrib2Biz():
data = json.load(f)
if self.export_format_biz.get():
self.parseFile(data, filename)
bRet = self.parseFile(data, filename)
if bRet:
messagebox.showinfo(title="Fin de conversion",
message="La conversion s'est terminée avec succès")
return False
else:
self.convertFile(data, filename)
if self.delete_after_parse.get():
os.remove(dir + "/" + filename)
self.progress_bar["value"] = x / len(os.listdir(dir)) * 100
self.fenetre.update_idletasks()
self.nb_facture_var.set(self.count_facture)
@@ -381,6 +388,7 @@ class ClercAttrib2Biz():
def parseFile(self, data, filename):
self.progress_bar["value"] = 0
self.index_counter += 1
lines = []
self.count_facture += len(data["invoices"])
@@ -392,10 +400,12 @@ class ClercAttrib2Biz():
csv_col.data[5] = f""
lines.append(csv_col.data)
cur_invoice_index = 0
x = 70
for ele in data["invoices"]:
cur_invoice_index += 1
self.progress_bar["value"] = cur_invoice_index / self.count_facture * 100
b_address_update = True
data = cls_Invoice()
data.parse_item(ele)
@@ -408,9 +418,15 @@ class ClercAttrib2Biz():
messagebox.showerror(title="Erreur code débiteur", message=f"Le code débiteur de la facture {data.data['id']} est faux: [{data.Debtor['code']}], merci de le corriger ")
inp_popup = Input_popup(self.fenetre, default=data.Debtor["code"], factureID=data.data['id'], fip=data.Patient['fip_number'])
data.Debtor["code"] = str(inp_popup.show())
if data.Debtor["code"] is None or '.' in data.Debtor["code"]:
messagebox.showerror(title="Erreur Critique",
message=f"Les informations de la factures [{data.data['id']}] comportes trop d'erreur arrêt du processus ")
return False
if int(data.Debtor["code"]) == 1:
if not self.check_code_validity(data.Debtor["code"],data):
messagebox.showerror(title="Erreur Critique",
message=f"Les informations de la factures [{data.data['id']}] comportes trop d'erreur arrêt du processus ")
return False
@@ -449,6 +465,15 @@ class ClercAttrib2Biz():
debitor_popup = Check_debitor_popup(self.fenetre,data.Debtor,self.o_debs.get_names_by_code(data.Debtor['code']),data.data['id'],data.Patient['fip_number'], object=self.o_debs)
data.Debtor["code"] = debitor_popup.show()
if data.Debtor["code"] is None or '.' in data.Debtor["code"]:
messagebox.showerror(title="Erreur Critique",
message=f"Les informations de la factures [{data.data['id']}] comportes trop d'erreur arrêt du processus ")
return False
if data.Patient["complement"] != None:
@@ -708,6 +733,7 @@ class ClercAttrib2Biz():
wr.writerow(cdr)
else:
self.save_file(lines,fileName=self.export_filename)
def addToIndexs(self,obj,data,cat, key):
#self.a_index[cat].append({"key":key,"index":len(obj.data)})
if key not in self.a_index[cat]:

View File

@@ -1 +1 @@
VERSION = "20220822-1142"
VERSION = "20220902-1508"