Copie automatique et lecture du fichier adresses.dbf
This commit is contained in:
@@ -1 +1 @@
|
|||||||
20230301-1856
|
20230421-0031
|
||||||
53
main.py
53
main.py
@@ -10,6 +10,7 @@ import time
|
|||||||
import uuid
|
import uuid
|
||||||
import tkinter
|
import tkinter
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
import pickle
|
||||||
|
|
||||||
import tkinter.filedialog
|
import tkinter.filedialog
|
||||||
from tkinter import *
|
from tkinter import *
|
||||||
@@ -18,6 +19,7 @@ from tkinter import messagebox
|
|||||||
from tkinter.ttk import Progressbar
|
from tkinter.ttk import Progressbar
|
||||||
from tkinter.scrolledtext import ScrolledText
|
from tkinter.scrolledtext import ScrolledText
|
||||||
from threading import *
|
from threading import *
|
||||||
|
from dbfread import DBF
|
||||||
|
|
||||||
from class_invoices import *
|
from class_invoices import *
|
||||||
from class_addresses import *
|
from class_addresses import *
|
||||||
@@ -88,17 +90,22 @@ class ClercAttrib2Biz():
|
|||||||
self.prompt = None
|
self.prompt = None
|
||||||
self.b_prompt_open = False
|
self.b_prompt_open = False
|
||||||
|
|
||||||
|
self.config = {}
|
||||||
|
|
||||||
self.check_addresses = BooleanVar(self.fenetre)
|
self.check_addresses = BooleanVar(self.fenetre)
|
||||||
self.delete_after_parse = BooleanVar(self.fenetre)
|
self.delete_after_parse = BooleanVar(self.fenetre)
|
||||||
self.export_format_biz = BooleanVar(self.fenetre)
|
self.export_format_biz = BooleanVar(self.fenetre)
|
||||||
self.export_one_file = BooleanVar(self.fenetre)
|
self.export_one_file = BooleanVar(self.fenetre)
|
||||||
self.run_excel_after_export = BooleanVar(self.fenetre)
|
self.run_excel_after_export = BooleanVar(self.fenetre)
|
||||||
|
self.winbiz_folder_path = StringVar(self.fenetre)
|
||||||
|
|
||||||
self.check_addresses.set(True)
|
self.check_addresses.set(True)
|
||||||
self.export_one_file.set(True)
|
self.export_one_file.set(True)
|
||||||
self.run_excel_after_export.set(False)
|
self.run_excel_after_export.set(False)
|
||||||
self.export_format_biz.set(True)
|
self.export_format_biz.set(True)
|
||||||
|
|
||||||
|
self.load_config()
|
||||||
|
|
||||||
self.draw_mainWindows()
|
self.draw_mainWindows()
|
||||||
self.refresh_ui()
|
self.refresh_ui()
|
||||||
self.read_addresses()
|
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):
|
def main_timer_fn(self):
|
||||||
#print("Pass tick timer main app")
|
#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')
|
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 = 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')
|
||||||
|
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_bar = Menu(self.fenetre)
|
||||||
menu_param = Menu(menu_bar, tearoff=0)
|
menu_param = Menu(menu_bar, tearoff=0)
|
||||||
@@ -255,27 +273,26 @@ class ClercAttrib2Biz():
|
|||||||
|
|
||||||
|
|
||||||
def read_addresses(self):
|
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):
|
if os.path.exists(file_addresses_path):
|
||||||
file = open(file_addresses_path)
|
for record in DBF(file_addresses_path):
|
||||||
csvreader = csv.reader(file, delimiter=';')
|
|
||||||
rows = []
|
|
||||||
for row in csvreader:
|
|
||||||
rows.append(row)
|
|
||||||
o_addresse = cls_addresse()
|
o_addresse = cls_addresse()
|
||||||
o_addresse.AVS = row[5]
|
o_addresse.AVS = record["AD_CODE"]
|
||||||
o_addresse.lastName = row[9]
|
o_addresse.lastName = record["AD_NOM"]
|
||||||
o_addresse.firstName = row[10]
|
o_addresse.firstName = record["AD_PRENOM"]
|
||||||
o_addresse.birth = row[38]
|
o_addresse.birth = record["AD_NAISSAN"]
|
||||||
o_addresse.street = row[12]
|
o_addresse.street = record["AD_RUE_2"]
|
||||||
o_addresse.street_cpl = row[11]
|
o_addresse.street_cpl = record["AD_RUE_1"]
|
||||||
o_addresse.npa = row[13]
|
o_addresse.npa = record["AD_NPA"]
|
||||||
o_addresse.city = row[15]
|
o_addresse.city = record["AD_VILLE"]
|
||||||
self.addresses.add_addresse(o_addresse)
|
self.addresses.add_addresse(o_addresse)
|
||||||
|
logging.warning(f"Chargement du fichier adresses.dbf terminé ! {len(self.addresses.items)} adresses trouvées ")
|
||||||
|
|
||||||
file.close()
|
|
||||||
|
|
||||||
else:
|
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")
|
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")
|
||||||
|
|
||||||
|
|||||||
BIN
requirements.txt
BIN
requirements.txt
Binary file not shown.
@@ -1 +1 @@
|
|||||||
VERSION = "20230301-1856"
|
VERSION = "20230421-0031"
|
||||||
Reference in New Issue
Block a user