Copie automatique et lecture du fichier adresses.dbf

This commit is contained in:
Ambulance Clerc
2023-04-21 00:32:05 +02:00
parent 81a9717716
commit 513556f0a3
4 changed files with 37 additions and 20 deletions

53
main.py
View File

@@ -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,15 @@ 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):
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 +225,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 +273,26 @@ 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[12]
o_addresse.street_cpl = row[11]
o_addresse.npa = row[13]
o_addresse.city = row[15]
o_addresse.AVS = record["AD_CODE"]
o_addresse.lastName = record["AD_NOM"]
o_addresse.firstName = record["AD_PRENOM"]
o_addresse.birth = record["AD_NAISSAN"]
o_addresse.street = record["AD_RUE_2"]
o_addresse.street_cpl = record["AD_RUE_1"]
o_addresse.npa = record["AD_NPA"]
o_addresse.city = 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")