Compare commits

..

6 Commits

Author SHA1 Message Date
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
Ambulance Clerc
54873a2715 Print all debs et ajout barre de menu 2022-08-22 11:43:15 +02:00
Ambulance Clerc
1ce77f4e08 Débug des code débiteur saisi manuellement concidéré comme int à la place de str 2022-08-20 11:35:38 +02:00
Ambulance Clerc
7be1f15c63 Débug des code débiteur saisi manuellement concidéré comme int à la place de str 2022-08-20 11:30:17 +02:00
Ambulance Clerc
cdc7205ab7 Débug version 2022-08-13 07:00:40 +02:00
6 changed files with 50 additions and 20 deletions

View File

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

View File

@@ -17,7 +17,14 @@ class cls_debitors:
shutil.copy("debitors_src.bin", os.path.join(self.file_path, f"debitors.bin")) shutil.copy("debitors_src.bin", os.path.join(self.file_path, f"debitors.bin"))
self.load_debitors() self.load_debitors()
def print_all_debs(self):
for elem in self.items:
print(f"Débiteur:{elem.code} {elem.names}")
def get_deb_by_code(self, code):
for deb in self.items:
if deb.code == int(code):
return deb
return None
def get_names_by_code(self, code): def get_names_by_code(self, code):
for deb in self.items: for deb in self.items:

View File

@@ -9,6 +9,9 @@ class Check_addresses_popup(Toplevel):
def __init__(self, parent, item_1=None, item_2=None, debitor=None, factureID=""): def __init__(self, parent, item_1=None, item_2=None, debitor=None, factureID=""):
super().__init__(parent) 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.geometry(f"700x300+{parent.winfo_x() + 25 }+{parent.winfo_y() +25 }")
self.resizable(True,True) self.resizable(True,True)
self.iconbitmap("./logo_clerc_03X_icon.ico") 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="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="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="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}") 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 += item_1['firstname'].strip()
str_address_1 += datetime.strptime(item_1['birthdate'], "%Y-%m-%d").strftime("%d.%m.%Y") 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['street']} {item_1['street_number']}"
str_address_1 += f"{item_1['complement']}"
str_address_1 += f"{item_1['postal_code']} {item_1['city']}" 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.firstName
str_address_2 += item_2.birth str_address_2 += item_2.birth
str_address_2 += f"{item_2.street.strip()}" 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}" str_address_2 += f"{item_2.npa} {item_2.city}"
self.listbox = Listbox(self, height=3, width=35) self.listbox = Listbox(self, height=3, width=35)
@@ -134,7 +140,7 @@ class Check_debitor_popup(Toplevel):
self.inp_code = StringVar() self.inp_code = StringVar()
self.inp_code.set(debitor['code']) 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.resizable(True,True)
self.iconbitmap("./logo_clerc_03X_icon.ico") self.iconbitmap("./logo_clerc_03X_icon.ico")
self.title(f"Incohérence sur les débiteurs {fip} / {factureID}. Code débiteur: {debitor['code']}") 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(0, weight=1)
self.columnconfigure(1, 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 = 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_font = font.Font(weight='bold', size=9)
Label(lbf_new, text="Code saisi", font=label_font).grid(row=0, column=0, sticky="W") 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 = Text(lbf_new, fg="red", height=3,width= 30)
text_name.grid(row=1, column=1, sticky="W") text_name.grid(row=1, column=1, sticky="W")
text_name.insert(END,debitor['name']) text_name.insert(END,debitor['name'])
text_name.configure(state='disabled') text_name.configure(state='disabled')
lbf_old = LabelFrame(self, text="Nom possible") lbf_old = LabelFrame(self, text="Noms possibles")
lbf_old.grid(row=0, column=1, sticky='NSEW', padx=5, pady=5) 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.listbox.configure(state='disabled')
self.no_selection_possible = True self.no_selection_possible = True
self.btn = Button(lbf_old, text="Ajouter", command=self.add) menu_bar = Menu(self)
self.btn.grid(row=2, column=0, columnspan= 2, pady=10, padx=10, sticky='NSEW') 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 = Button(self, text="Valider", command=self.destroy)
self.btn.grid(row=2,column=0, columnspan= 2, pady=10,padx=10, sticky='NSEW') self.btn.grid(row=2,column=0, columnspan= 2, pady=10,padx=10, sticky='NSEW')

View File

@@ -1 +1 @@
20220810-1816 20220822-1735

30
main.py
View File

@@ -74,6 +74,7 @@ class ClercAttrib2Biz():
self.count_facture = 0 self.count_facture = 0
self.a_index = {"invoice": [], "intervention": [], "patient": [], "debtor": [], "articles": [], "global": []} self.a_index = {"invoice": [], "intervention": [], "patient": [], "debtor": [], "articles": [], "global": []}
self.addresses = cls_Addresses() self.addresses = cls_Addresses()
self.o_debs = cls_debitors(filepath=temp_dir)
self.index_counter = 0 self.index_counter = 0
self.bs_counter = 70 self.bs_counter = 70
@@ -101,7 +102,7 @@ class ClercAttrib2Biz():
self.refresh_ui() self.refresh_ui()
self.read_addresses() self.read_addresses()
self.o_debs = cls_debitors(filepath=temp_dir)
self.timer = self.fenetre.after(1000, self.main_timer_fn) self.timer = self.fenetre.after(1000, self.main_timer_fn)
@@ -117,7 +118,7 @@ class ClercAttrib2Biz():
def main_timer_fn(self): 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.timer = self.fenetre.after(5000, self.main_timer_fn)
self.nb_facture_var.set(self.count_facture) self.nb_facture_var.set(self.count_facture)
@@ -209,6 +210,14 @@ class ClercAttrib2Biz():
self.cb_run = Checkbutton(lbf_3, text="Lancer la conversion excel", variable=self.run_excel_after_export, onvalue=True, offvalue=False) self.cb_run = Checkbutton(lbf_3, text="Lancer la conversion excel", variable=self.run_excel_after_export, onvalue=True, offvalue=False)
self.cb_run.grid(row=4, sticky='W') self.cb_run.grid(row=4, sticky='W')
menu_bar = Menu(self.fenetre)
menu_param = Menu(menu_bar, tearoff=0)
menu_param.add_command(label="Affichage des débiteurs", command=self.o_debs.print_all_debs)
menu_bar.add_cascade(label="Paramètre", menu=menu_param)
self.fenetre.config(menu=menu_bar)
@@ -233,7 +242,7 @@ class ClercAttrib2Biz():
self.b_prompt_open = False self.b_prompt_open = False
def refresh_ui(self): 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(): if self.export_one_file.get() and not self.export_format_biz.get():
self.cb_run['state'] = "active" self.cb_run['state'] = "active"
else: else:
@@ -257,7 +266,8 @@ class ClercAttrib2Biz():
o_addresse.lastName = row[9] o_addresse.lastName = row[9]
o_addresse.firstName = row[10] o_addresse.firstName = row[10]
o_addresse.birth = row[38] 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.npa = row[13]
o_addresse.city = row[15] o_addresse.city = row[15]
self.addresses.add_addresse(o_addresse) self.addresses.add_addresse(o_addresse)
@@ -394,18 +404,18 @@ class ClercAttrib2Biz():
self.trim_all_data(data) self.trim_all_data(data)
print(f"Code débiteur => {data.data['id']}: {data.Debtor['code']}") print(f"Code débiteur => {data.data['id']}: {data.Debtor['code']}")
if data.Debtor["code"] is None or '.' in str(data.Debtor["code"]): if data.Debtor["code"] is None or '.' in data.Debtor["code"]:
print("ERROR code débiteur #1") print("ERROR code débiteur #1")
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 ") 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']) inp_popup = Input_popup(self.fenetre, default=data.Debtor["code"], factureID=data.data['id'], fip=data.Patient['fip_number'])
data.Debtor["code"] = int(inp_popup.show()) data.Debtor["code"] = str(inp_popup.show())
if data.Debtor["code"] == 1: if int(data.Debtor["code"]) == 1:
if not self.check_code_validity(data.Debtor["code"],data): if not self.check_code_validity(data.Debtor["code"],data):
return False return False
if int(data.Debtor["code"]) != "1" and data.Debtor["code"] != None and int(data.Debtor["code"]) < 100: if data.Debtor["code"] != "1" and data.Debtor["code"] != None and int(data.Debtor["code"]) < 100:
if data.Patient["fip_number"] not in self.a_listings["to_check"]: if data.Patient["fip_number"] not in self.a_listings["to_check"]:
self.a_listings["to_check"].append(data.Patient["fip_number"]) self.a_listings["to_check"].append(data.Patient["fip_number"])
self.logger.warning(f"Vérifier facture N°: {data.data['id']} / {data.Patient['fip_number']} {data.Debtor['code']} {data.Debtor['lastname']} {data.Debtor['firstname']}") self.logger.warning(f"Vérifier facture N°: {data.data['id']} / {data.Patient['fip_number']} {data.Debtor['code']} {data.Debtor['lastname']} {data.Debtor['firstname']}")
@@ -438,7 +448,7 @@ class ClercAttrib2Biz():
if not self.o_debs.is_in_debitor_name(code=data.Debtor["code"],search_name=data.Debtor["name"]): if not self.o_debs.is_in_debitor_name(code=data.Debtor["code"],search_name=data.Debtor["name"]):
#messagebox.showerror(title="Erreur code débiteur erroné", message=f"Information débiteur incohérente: facture N°: {data.data['id']} / {data.Patient['fip_number']}.\nCode débiteur: {data.Debtor['code']}\nNom du débiteur: {data.Debtor['name']}. \nAurait dû être: {self.o_debs.get_names_by_code(data.Debtor['code'])}") #messagebox.showerror(title="Erreur code débiteur erroné", message=f"Information débiteur incohérente: facture N°: {data.data['id']} / {data.Patient['fip_number']}.\nCode débiteur: {data.Debtor['code']}\nNom du débiteur: {data.Debtor['name']}. \nAurait dû être: {self.o_debs.get_names_by_code(data.Debtor['code'])}")
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) 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"] = int(debitor_popup.show()) data.Debtor["code"] = debitor_popup.show()
@@ -721,7 +731,7 @@ class ClercAttrib2Biz():
b_update_debitor = True b_update_debitor = True
print(f"Code débiteur => {data.data['id']}: {data.Debtor['code']}" ) print(f"Code débiteur => {data.data['id']}: {data.Debtor['code']}" )
if data.Debtor["code"] == "None" or '.' in str(data.Debtor["code"]): if data.Debtor["code"] == "None" or '.' in data.Debtor["code"]:
print("ERROR code débiteur") print("ERROR code débiteur")
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 ") 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']) inp_popup = Input_popup(self.fenetre,default=data.Debtor["code"],factureID=data.data['id'], fip=data.Patient['fip_number'])

View File

@@ -1 +1 @@
VERSION = "20220810-1816" VERSION = "20220822-1735"