From 170cb74650cd982bc938f78261ddad40f8baa41a Mon Sep 17 00:00:00 2001 From: Aurelien Date: Fri, 26 Jun 2026 10:24:24 +0200 Subject: [PATCH] chore : modification de la fonction pour pouvoir parse les facture metro #5 --- src/modules/pdf-parse.ts | 45 +++++++++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/src/modules/pdf-parse.ts b/src/modules/pdf-parse.ts index 567fac7..bf651bc 100644 --- a/src/modules/pdf-parse.ts +++ b/src/modules/pdf-parse.ts @@ -59,7 +59,7 @@ async function pdf_parse(travel: string) { date = "non trouvé" } - // Découpage en lines pour l'analyse + // Découpage en lignes pour l'analyse et cration d'un tableau de toutes les lignes const lines = text.split('\n').map(l => l.trim()).filter(l => l.length > 0); // Algorithme de recherche verticale pour Auchan @@ -80,16 +80,47 @@ async function pdf_parse(travel: string) { } } else { - supplier = "Metro"; - + supplier = "METRO"; + // on regarde la date d'achat avec une expression reguliere pour metro - const regex_date = /(\d{2})-(\d{2})-(\d{4})/; + const regex_date = /(\d{2})-(\d{2})-(\d{4})/; const corres = text.match(regex_date); if (corres) { - date = corres[0] + date = corres[0]; } else { - date = "non trouvé" - } + date = "non trouvé"; + } + + // Découpage en lignes pour l'analyse et cration d'un tableau de toutes les lignes + const lines = text.split('\n').map(l => l.trim()).filter(l => l.length > 0); + + // Algorithme de recherche verticale pour metro + for (let i = 0; i < lines.length; i++) { + // Si la ligne correspond exactement à un code-barres à 13 chiffres + if (/^\d{13}$/.test(lines[i])) { + const product_name = lines[i + 1]; + const qte = lines[i + 4]; + const price = lines[i + 5]; + const tva = lines[i + 6]; + + let tva_final = ""; + + if (tva == "B"){ + tva_final = "5.5%"; + } + + else { + tva_final = "20%"; + } + + + product_list[product_name] = { + quantity: parseInt(qte, 10), + price_ht: parseFloat(price.replace(',', '.')), + tva: tva_final + }; + } + } } // Construction de l'objet final