diff options
| author | Debulois Quentin <quentin.debulois@gmail.com> | 2022-04-12 11:15:05 +0200 |
|---|---|---|
| committer | Debulois Quentin <quentin.debulois@gmail.com> | 2022-04-12 11:15:05 +0200 |
| commit | f3e632cb20be41d58f3aca4eaacfdb150a6186d4 (patch) | |
| tree | d4b0e264c90cb782d649c70fac1bef6855f5ea76 | |
| -rwxr-xr-x | main.py | 124 |
1 files changed, 124 insertions, 0 deletions
@@ -0,0 +1,124 @@ +#!/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) +""" |
