From fd776244b9b410672a87a5a54b546cbf7e9193cc Mon Sep 17 00:00:00 2001 From: Ambulance Clerc Date: Mon, 6 Jun 2022 17:01:37 +0200 Subject: [PATCH] Version 0.9 pre-release --- main.py | 110 +++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 90 insertions(+), 20 deletions(-) diff --git a/main.py b/main.py index c64885c..21012af 100644 --- a/main.py +++ b/main.py @@ -11,6 +11,7 @@ from datetime import datetime import tkinter.filedialog from tkinter import * +from tkinter import font from tkinter import messagebox from tkinter.ttk import Progressbar from tkinter.scrolledtext import ScrolledText @@ -39,13 +40,14 @@ if not os.path.exists(dest_dir): class SuggestionPopup(Toplevel): - def __init__(self, parent, item_1=None, item_2=None): + x_row = 0 + def __init__(self, parent, item_1=None, item_2=None, debitor=None): super().__init__(parent) - self.geometry("400x475") + self.geometry(f"700x300+{parent.winfo_x() + 25 }+{parent.winfo_y() +25 }") self.resizable(True,True) self.iconbitmap("./logo_clerc_03X_icon.ico") - self.title("Choix de l'adresse à conserver 1") + self.title(f"Choix de l'adresse à conserver {item_1['fip_number']}. Code débiteur: {debitor['code']}") self.columnconfigure(0, weight=1) self.columnconfigure(1, weight=1) @@ -53,24 +55,83 @@ class SuggestionPopup(Toplevel): lbf_new = LabelFrame(self, text="Nouveau patient") lbf_new.grid(row=0, column=0, sticky='WE', padx=5, pady=5) - Label(lbf_new, text=f"N° AVS de l'adresse \t {item_1['insurance_policy_number'].replace('.','')}").grid(row=0, column=0) - - - lbf_old = LabelFrame(self, text="Ancien patient") lbf_old.grid(row=0, column=1, sticky='NSEW', padx=5, pady=5) - Label(lbf_old, text=f"N° AVS de l'adresse \t {item_2.AVS}").grid(row=0, column=0) + str_address_1 = "" - self.listbox = Listbox(self, height=10, width=20) - self.listbox.grid(row=1,column=0, columnspan= 2, pady=15) + fonts = [] - self.btn = Button(self, text="Confirm selection", command=self.select) - self.btn.grid(row=2, pady=10) + self.x_row = 0 + self.add_compares_element(new_frame=lbf_new,old_frame=lbf_old,label="N° AVS de l'adresse:",str1=item_1['insurance_policy_number'].replace('.',''), str2=item_2.AVS) + self.add_compares_element(new_frame=lbf_new, old_frame=lbf_old, label="Nom:", str1=item_1['lastname'], str2=item_2.lastName) + 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="NPA/Localité:", str1=f"{item_1['postal_code']} {item_1['city']}", str2=f"{item_2.npa} {item_2.city}") + + + str_address_1 += item_1['insurance_policy_number'].replace('.', '') + str_address_1 += item_1['lastname'].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 += f"{item_1['street']} {item_1['street_number']}" + str_address_1 += f"{item_1['postal_code']} {item_1['city']}" + + + + + + str_address_2 = "" + + str_address_2 += item_2.AVS + str_address_2 += item_2.lastName + 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.npa} {item_2.city}" + + self.listbox = Listbox(self, height=3, width=35) + self.listbox.grid(row=1,column=0, columnspan= 2, pady=15,padx=15, sticky='NSEW') + + self.btn = Button(self, text="Valider", command=self.select) + self.btn.grid(row=2,columnspan=2 , pady=10,padx=10, sticky='NSEW') for (idd, info) in ((0, "Ancienne"), (1, "Nouvelle")) : self.listbox.insert(END, info) + if int(debitor["code"]) >= 100: + self.listbox.delete(0,END) + self.listbox.delete(0, END) + + self.listbox.insert(END, f"Aucun changement possible, code débiteur {debitor['code']}") + self.listbox.configure(state='disabled') + + if str_address_1 == str_address_2: + self.listbox.selection_set(0) + print("adresse identique") + else: + self.listbox.selection_set(1) + print(f"adresse différente [{str_address_1}] ({str_address_2})") + + + + def add_compares_element(self,new_frame, old_frame,str1, str2, label): + label_font = font.Font(weight='bold', size=9) + + value_color = "black" + con = "" + if str1 != str2: + value_color = "red" + con = "*" + + Label(new_frame, text=label, font=label_font).grid(row=self.x_row, column=0, sticky="W") + Label(new_frame, text=con + str1 + con, fg=value_color).grid(row=self.x_row, column=1, sticky="W") + Label(old_frame, text=label, font=label_font).grid(row=self.x_row, column=0, sticky="W") + Label(old_frame, text=con + str2 + con, fg=value_color).grid(row=self.x_row, column=1, sticky="W") + + self.x_row += 1 + self.selection = None def destroy(self): if self.selection is None: @@ -81,6 +142,7 @@ class SuggestionPopup(Toplevel): selection = self.listbox.curselection() if selection: self.selection = self.listbox.get(selection[0]) + self.selection = True if self.selection == "Nouvelle" else False self.destroy() def show(self): @@ -279,7 +341,7 @@ class ClercAttrib2Biz(): o_addresse.lastName = row[9] o_addresse.firstName = row[10] o_addresse.birth = row[38] - o_addresse.street = row[11] + o_addresse.street = row[12] o_addresse.npa = row[13] o_addresse.city = row[15] self.addresses.add_addresse(o_addresse) @@ -361,6 +423,7 @@ class ClercAttrib2Biz(): x = 70 for ele in data["invoices"]: + b_address_update = True data = cls_Invoice() data.parse_item(ele) @@ -414,10 +477,11 @@ class ClercAttrib2Biz(): addresses_exist = self.addresses.get_item_by_AVS(data.Patient['insurance_policy_number'].replace(".", "")) if addresses_exist is not None: - pass - #popup = SuggestionPopup(self.fenetre, item_1=data.Patient, item_2=addresses_exist) - #result = popup.show() - #print(f"Result Popup: {result}") + + popup = SuggestionPopup(self.fenetre, item_1=data.Patient, item_2=addresses_exist,debitor=data.Debtor ) + b_address_update = popup.show() + print(f"Result Popup: {b_address_update}") + #self.draw_test(item_1=data.Patient, item_2=addresses_exist) #messagebox.showerror(title="AVS Trouvé", message=f"Le code AVS de l'adresse {data.Patient['insurance_policy_number']} est déjà existant: [{data.Debtor['code']}], merci de le corriger ") @@ -466,7 +530,7 @@ class ClercAttrib2Biz(): con = ", " concat_str += con + self.ifNotNull(data.Intervention["site_postal_code"]) + " " + self.ifNotNull(data.Intervention["site_city"]) csv_col.data[18] = concat_str # Adresse PEC - print(f'debug id:{data.data["id"]} code: {data.Debtor["code"]}') + print(f'debug FIP:{data.Patient["fip_number"]} id:{data.data["id"]} code: {data.Debtor["code"]}') if int(data.Debtor["code"]) < 100: csv_col.data[19] = data.Patient['insurance_policy_number'].replace(".","") csv_col.data[22] = data.Patient["lastname"] @@ -481,7 +545,13 @@ class ClercAttrib2Biz(): csv_col.data[41] = "Monsieur" if data.Patient["gender"] == "Masculin" else "Madame" csv_col.data[44] = csv_col.data[41] - csv_col.data[46] = 0 # Maj adresse + #csv_col.data[46] = 0 # Maj adresse + if b_address_update: + csv_col.data[46] = 0 # Maj adresse ajoute ou met à jour l'adresse + print("mise à jour de l'adresse") + else: + csv_col.data[46] = 1 # Maj adresse, ajoute, mais ne met pas à jour l'adresse si elle existe + print("NON mise à jour de l'adresse") if int(data.Debtor["code"]) > 1: con = "" @@ -520,7 +590,7 @@ class ClercAttrib2Biz(): if data.Debtor["country_name"] != "Suisse": csv_col.data[29] = data.Debtor["country_name"] - csv_col.data[46] =1 # Maj adresse + csv_col.data[46] =1 # Maj adresse, ajoute, mais ne met pas à jour l'adresse si elle existe if "name" in data.Debtor.keys(): csv_col.data[21] = self.ifNotNull(data.Debtor["name"])