#!/usr/bin/python3 """ Cahier des charges: - Nombre de facture PC monté ou pièces détachées - Si payé en plusieurs fois - Prix panier moyen """ import os import sys import fitz #pymupdf if len(sys.argv) != 2: print("Il faut indiquer le dossier ou sont les factures.") exit(1) folder = sys.argv[1] files = os.listdir(folder) texte_date_emission = "Date d'émission :" texte_montage = "monPCsurmesure.fr - Montage " texte_mode_reglement = "Mode de règlement :" texte_prix_ttc = "Total T.T.C." dict_final = {} for i in files: if os.path.isfile(i) and i.lower().endswith(".pdf"): with fitz.open(os.path.join(folder, i)) as doc: texte = "" for page in doc: texte += page.get_text() text = texte.split("\n") try: date_emission = text[text.index(texte_date_emission) + 1].split("/")[1:] except: print("Erreur date: ", i) continue key = date_emission[1] + "-" + date_emission[0] if key not in dict_final: dict_final[key] = {} dict_final[key]["pc"] = 0 dict_final[key]["piece"] = 0 dict_final[key]["prix_pc"] = 0 dict_final[key]["prix_piece"] = 0 dict_final[key]["type_reglement"] = {} dict_final[key]["nom_factures"] = [] is_pc = False for j in text: if texte_montage in j: dict_final[key]["pc"] += 1 is_pc = True if is_pc: dict_final[key]["nom_factures"].append(i + " - PC") else: dict_final[key]["piece"] += 1 dict_final[key]["nom_factures"].append(i + " - PIECE") if texte_prix_ttc in text: if is_pc: dict_final[key]["prix_pc"] += float(text[text.index(texte_prix_ttc) + 1]) else: dict_final[key]["prix_piece"] += float(text[text.index(texte_prix_ttc) + 1]) if texte_mode_reglement in text: reglement = text[text.index(texte_mode_reglement) + 1] if reglement in dict_final[key]["type_reglement"]: dict_final[key]["type_reglement"][reglement] += 1 else: dict_final[key]["type_reglement"][reglement] = 1 for i in dict_final: if not os.path.isdir(os.path.join(folder, i)): os.mkdir(os.path.join(folder, i)) if dict_final[i]["pc"] == 0: dict_final[i]["pc"] = 1 if dict_final[i]["piece"] == 0: dict_final[i]["piece"] = 1 texte_final = "\nPC sur mesure: " + i\ + "\n\n### PC ###"\ + "\nNb PC: " + str(dict_final[i]["pc"])\ + "\nPrix PC: " + str(round(dict_final[i]["prix_pc"], 2)) + "€"\ + "\nPrix moyen: " + str(round(dict_final[i]["prix_pc"] / dict_final[i]["pc"], 2)) + "€"\ + "\n\n### PIECE DETACHE ###"\ + "\nNb Pieces: " + str(dict_final[i]["piece"])\ + "\nPrix Pieces: " + str(round(dict_final[i]["prix_piece"], 2)) + "€"\ + "\nPrix moyen: " + str(round(dict_final[i]["prix_piece"] / dict_final[i]["piece"], 2)) + "€"\ + "\n\n### TYPE DE REGLEMENT ###\n" for j in dict_final[i]["type_reglement"]: texte_final = texte_final + j + ": " + str(dict_final[i]["type_reglement"][j]) + "\n" texte_final = texte_final + "\n### NOM DES FACTURES ###\n" for j in dict_final[i]["nom_factures"]: texte_final = texte_final + j + "\n" os.rename(j.split(" ")[0], os.path.join(i, j.split(" ")[0])) with open(i + "_pcmesure.txt", "w") as f: f.write(texte_final) """ # Pourrait être utile ? # Pièces du PC usefull = text.split("P.T. H.T")[1].split("Mode de livraison :")[0] chunks = usefull.split("\n") final = [] pieces = [] loop = 0 for i in chunks: pieces.append(i) if loop == 6: final.append(pieces) pieces = [] loop = 0 loop += 1 print(len(final[:-2])) print(final) """