summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xmain.py124
1 files changed, 124 insertions, 0 deletions
diff --git a/main.py b/main.py
new file mode 100755
index 0000000..d1d690b
--- /dev/null
+++ b/main.py
@@ -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)
+"""