chore : modification du parse pour avoir la liste des produit #5

This commit is contained in:
Aurelien
2026-06-18 20:46:12 +02:00
parent 2ca6dc31a9
commit 00949c60c5

View File

@@ -9,11 +9,23 @@ function pdf_parse(travel: string){
let fournisseur = ''; let fournisseur = '';
let date = ''; let date = '';
interface tab_res { interface DetailProduit {
marque : string; quantité: number;
date_achats : string; prixHT: number;
TVA: string;
} }
const productsList: { [key: string]: DetailProduit } = {};
interface tab_res {
marque: string;
date_achats: string;
products: {
[nomProduit: string]: DetailProduit;
};
}
const dataBuffer = fs.readFileSync(travel); const dataBuffer = fs.readFileSync(travel);
pdfParse(dataBuffer) pdfParse(dataBuffer)
@@ -31,6 +43,30 @@ function pdf_parse(travel: string){
} else { } else {
date = "non trouvé" date = "non trouvé"
} }
// on prend la liste des produits et leurs detail pour auchan
const lignes = data.text.split('\n');
// Expressions régulières pour détecter les lignes de produits Auchan
const regexLigneProduit = /^(\d{13})(?!\d)(.+?)(\d+,\d+)\s+(\d+)\s+(\d+,\d+)\s+(\d+,\d+)\s+(\d+,\d+)$/;
lignes.forEach((ligne: string) => {
const match = ligne.trim().match(regexLigneProduit);
if (match) {
const nomProduit = match[1].trim();
const quantite = parseInt(match[4], 10);
const prixHT = parseFloat(match[2].replace(',', '.'));
const tva = match[6].replace(',', '.') + "%";
productsList[nomProduit] = {
quantité: quantite,
prixHT: prixHT,
TVA: tva
};
}
});
} else { } else {
fournisseur = "Metro" fournisseur = "Metro"
@@ -48,8 +84,9 @@ function pdf_parse(travel: string){
// on renvoie les valeur avec un seul objet // on renvoie les valeur avec un seul objet
const res : tab_res = { const res : tab_res = {
marque: fournisseur, marque: fournisseur,
date_achats: date date_achats: date,
products: productsList
} }
console.log(res); console.log(res);