Compare commits
6 Commits
20230301-1
...
20230425-1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
48353c6f98 | ||
|
|
a94b2cc0d6 | ||
|
|
9ba8998c32 | ||
|
|
513556f0a3 | ||
|
|
81a9717716 | ||
|
|
3ff3416b39 |
@@ -35,8 +35,8 @@ class Check_addresses_popup(Toplevel):
|
||||
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="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="Adresse:", str1=f"{item_1['street'].strip()} {item_1['street_number'].strip()}", str2=item_2.street.strip())
|
||||
self.add_compares_element(new_frame=lbf_new, old_frame=lbf_old, label="Complément:", str1=f"{item_1['complement'].strip()}", str2=item_2.street_cpl.strip())
|
||||
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}")
|
||||
|
||||
|
||||
@@ -44,8 +44,8 @@ class Check_addresses_popup(Toplevel):
|
||||
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['complement']}"
|
||||
str_address_1 += f"{item_1['street'].strip()} {item_1['street_number'].strip()}"
|
||||
str_address_1 += f"{item_1['complement'].strip()}"
|
||||
str_address_1 += f"{item_1['postal_code']} {item_1['city']}"
|
||||
|
||||
|
||||
@@ -100,10 +100,10 @@ class Check_addresses_popup(Toplevel):
|
||||
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")
|
||||
Label(new_frame, text=str(label), font=label_font).grid(row=self.x_row, column=0, sticky="W")
|
||||
Label(new_frame, text=con + str(str1) + con, fg=value_color).grid(row=self.x_row, column=1, sticky="W")
|
||||
Label(old_frame, text=str(label), font=label_font).grid(row=self.x_row, column=0, sticky="W")
|
||||
Label(old_frame, text=con + str(str2) + con, fg=value_color).grid(row=self.x_row, column=1, sticky="W")
|
||||
|
||||
self.x_row += 1
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
20230301-1856
|
||||
20230425-1407
|
||||
74
main.py
74
main.py
@@ -10,6 +10,7 @@ import time
|
||||
import uuid
|
||||
import tkinter
|
||||
from datetime import datetime
|
||||
import pickle
|
||||
|
||||
import tkinter.filedialog
|
||||
from tkinter import *
|
||||
@@ -18,6 +19,7 @@ from tkinter import messagebox
|
||||
from tkinter.ttk import Progressbar
|
||||
from tkinter.scrolledtext import ScrolledText
|
||||
from threading import *
|
||||
from dbfread import DBF
|
||||
|
||||
from class_invoices import *
|
||||
from class_addresses import *
|
||||
@@ -88,17 +90,22 @@ class ClercAttrib2Biz():
|
||||
self.prompt = None
|
||||
self.b_prompt_open = False
|
||||
|
||||
self.config = {}
|
||||
|
||||
self.check_addresses = BooleanVar(self.fenetre)
|
||||
self.delete_after_parse = BooleanVar(self.fenetre)
|
||||
self.export_format_biz = BooleanVar(self.fenetre)
|
||||
self.export_one_file = BooleanVar(self.fenetre)
|
||||
self.run_excel_after_export = BooleanVar(self.fenetre)
|
||||
self.winbiz_folder_path = StringVar(self.fenetre)
|
||||
|
||||
self.check_addresses.set(True)
|
||||
self.export_one_file.set(True)
|
||||
self.run_excel_after_export.set(False)
|
||||
self.export_format_biz.set(True)
|
||||
|
||||
self.load_config()
|
||||
|
||||
self.draw_mainWindows()
|
||||
self.refresh_ui()
|
||||
self.read_addresses()
|
||||
@@ -116,7 +123,17 @@ class ClercAttrib2Biz():
|
||||
|
||||
|
||||
|
||||
def save_config(self, event=None):
|
||||
self.config["winbiz_folder_path"] = self.winbiz_folder_path.get()
|
||||
with open(os.path.join(temp_dir,"config.dat"),"wb") as pickle_file:
|
||||
pickle.dump(self.config,pickle_file, pickle.HIGHEST_PROTOCOL)
|
||||
def load_config(self):
|
||||
if not os.path.exists(os.path.join(temp_dir, "config.dat")):
|
||||
self.save_config()
|
||||
with open(os.path.join(temp_dir, "config.dat"), "rb") as pickle_file:
|
||||
self.config = pickle.load(pickle_file)
|
||||
|
||||
self.winbiz_folder_path.set(self.config.get("winbiz_folder_path"))
|
||||
|
||||
def main_timer_fn(self):
|
||||
#print("Pass tick timer main app")
|
||||
@@ -210,6 +227,9 @@ class ClercAttrib2Biz():
|
||||
Checkbutton(lbf_3, text="Export en 1 seul fichier", variable= self.export_one_file, onvalue=True, offvalue=False, command=self.refresh_ui).grid(row=3, sticky='W')
|
||||
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')
|
||||
textEntry = Entry(lbf_3, textvariable=self.winbiz_folder_path, validate="focusout", validatecommand=self.save_config)
|
||||
textEntry.grid(row=5, sticky="WE", columnspan=3)
|
||||
textEntry.bind("<KeyRelease>", self.save_config)
|
||||
|
||||
menu_bar = Menu(self.fenetre)
|
||||
menu_param = Menu(menu_bar, tearoff=0)
|
||||
@@ -255,27 +275,30 @@ class ClercAttrib2Biz():
|
||||
|
||||
|
||||
def read_addresses(self):
|
||||
file_addresses_path = os.path.join(dest_dir, f"adresses.txt")
|
||||
if os.path.exists(os.path.join(self.winbiz_folder_path.get(),"adresses.dbf")):
|
||||
shutil.copyfile(os.path.join(self.winbiz_folder_path.get(),"adresses.dbf"), os.path.join(temp_dir,"adresses.dbf"))
|
||||
shutil.copyfile(os.path.join(self.winbiz_folder_path.get(), "adresses.FPT"),os.path.join(temp_dir, "adresses.FPT"))
|
||||
else:
|
||||
messagebox.showerror(title="Impossible d'ouvrir le fichier d'adresse existantes", message=f"Le fichier {self.winbiz_folder_path.get()} est introuvable. Aucune vérification des adresses possible")
|
||||
|
||||
file_addresses_path = os.path.join(temp_dir, f"adresses.dbf")
|
||||
if os.path.exists(file_addresses_path):
|
||||
file = open(file_addresses_path)
|
||||
csvreader = csv.reader(file, delimiter=';')
|
||||
rows = []
|
||||
for row in csvreader:
|
||||
rows.append(row)
|
||||
for record in DBF(file_addresses_path):
|
||||
o_addresse = cls_addresse()
|
||||
o_addresse.AVS = row[5]
|
||||
o_addresse.lastName = row[9]
|
||||
o_addresse.firstName = row[10]
|
||||
o_addresse.birth = row[38]
|
||||
o_addresse.street = row[11]
|
||||
o_addresse.street_cpl = row[12]
|
||||
o_addresse.npa = row[13]
|
||||
o_addresse.city = row[15]
|
||||
o_addresse.AVS = str(record["AD_CODE"])
|
||||
o_addresse.lastName =str( record["AD_NOM"])
|
||||
o_addresse.firstName = str(record["AD_PRENOM"])
|
||||
if record["AD_NAISSAN"] is not None:
|
||||
o_addresse.birth = datetime.strptime(str(record["AD_NAISSAN"]), "%Y-%m-%d").strftime("%d.%m.%Y")
|
||||
|
||||
else:
|
||||
o_addresse.birth = ""
|
||||
o_addresse.street =str( record["AD_RUE_2"])
|
||||
o_addresse.street_cpl =str( record["AD_RUE_1"])
|
||||
o_addresse.npa =str( record["AD_NPA"])
|
||||
o_addresse.city = str(record["AD_VILLE"])
|
||||
self.addresses.add_addresse(o_addresse)
|
||||
|
||||
|
||||
file.close()
|
||||
|
||||
logging.warning(f"Chargement du fichier adresses.dbf terminé ! {len(self.addresses.items)} adresses trouvées ")
|
||||
else:
|
||||
messagebox.showwarning(title="Impossible d'ouvrir le fichier d'adresse existantes", message=f"Le fichier {file_addresses_path} est introuvable. Aucune vérification des adresses possible")
|
||||
|
||||
@@ -390,7 +413,8 @@ class ClercAttrib2Biz():
|
||||
return False
|
||||
if datetime.strptime(new['birthdate'], "%Y-%m-%d").strftime("%d.%m.%Y") != old.birth:
|
||||
return False
|
||||
if f"{new['street']} {new['street_number']}" != old.street:
|
||||
if f"{new['street'].strip()} {new['street_number'].strip()}" != f"{old.street.strip()}":
|
||||
print(f"({new['street'].strip()} {new['street_number'].strip()}) != [" + old.street.strip()+"]")
|
||||
return False
|
||||
if f"{new['postal_code']} {new['city']}" != f"{old.npa} {old.city}":
|
||||
return False
|
||||
@@ -445,7 +469,7 @@ class ClercAttrib2Biz():
|
||||
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"]:
|
||||
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']}")
|
||||
|
||||
for elem in data.Debtor:
|
||||
pass
|
||||
@@ -514,12 +538,13 @@ class ClercAttrib2Biz():
|
||||
|
||||
|
||||
|
||||
|
||||
'''
|
||||
Désactivé, plus utile
|
||||
if data.Patient["complement"] != None :
|
||||
self.a_listings["to_check"].append(data.Patient["fip_number"])
|
||||
print(data.Patient["complement"])
|
||||
self.logger.warning(f"Complément patient: facture N°: {data.data['id']} / {data.Patient['fip_number']}")
|
||||
|
||||
'''
|
||||
|
||||
if data.Patient['insurance_policy_number'] == None:
|
||||
data.Patient['insurance_policy_number'] = f"{uuid.uuid4()}"[:15]
|
||||
@@ -758,7 +783,10 @@ class ClercAttrib2Biz():
|
||||
csv_col.data[116] = self.ifNotNull(data.Patient["category"]) + " - " + self.ifNotNull(data.Intervention["type"])
|
||||
csv_col.data[118] = data.Intervention["kilometers"]
|
||||
csv_col.data[135] = data.Intervention["base_name"]
|
||||
csv_col.data[136] = 3 if data.Debtor["code"] != "101" else "EBILL" #code présentation de facture
|
||||
if data.Debtor["code"] == "100" or data.Debtor["code"] == "101":
|
||||
csv_col.data[136] = "EBILL" #code présentation de facture
|
||||
else:
|
||||
csv_col.data[136] = 3 #code présentation de facture
|
||||
csv_col.data[146] = 3 #Code méthode de payement définit à 3
|
||||
csv_col.data[168] = 1 if data.Intervention["team_name"] == "Planification" else 2
|
||||
csv_col.data[169] = data.Patient['insurance_policy_number']
|
||||
|
||||
BIN
requirements.txt
BIN
requirements.txt
Binary file not shown.
@@ -1 +1 @@
|
||||
VERSION = "20230301-1856"
|
||||
VERSION = "20230425-1407"
|
||||
Reference in New Issue
Block a user