From f64493d9bb75adf633188dfe0f18eeed9ed71664 Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Wed, 9 Jul 2025 21:27:02 +0000 Subject: [PATCH] Improve sales data exports by fixing library import and error handling Updates SalesHistory component to correctly import jsPDF and jspdf-autotable libraries, and handles potential import errors. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 91318273-c764-4fd4-be04-bdc12c38af32 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/0715008c-7244-40f4-befc-26c014852236/3388939c-1563-4ac9-b69d-87f52be7cd1f.jpg --- attached_assets/image_1752096341746.png | Bin 0 -> 54477 bytes client/src/components/SalesHistory.tsx | 173 +++++++++++++----------- 2 files changed, 91 insertions(+), 82 deletions(-) create mode 100644 attached_assets/image_1752096341746.png diff --git a/attached_assets/image_1752096341746.png b/attached_assets/image_1752096341746.png new file mode 100644 index 0000000000000000000000000000000000000000..c283d5837186e8a0e19f835f83b82ffacf8d77b0 GIT binary patch literal 54477 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 literal 0 HcmV?d00001 diff --git a/client/src/components/SalesHistory.tsx b/client/src/components/SalesHistory.tsx index 0dc93b6..9a2ddca 100644 --- a/client/src/components/SalesHistory.tsx +++ b/client/src/components/SalesHistory.tsx @@ -85,90 +85,99 @@ export default function SalesHistory({ canDelete = false }: SalesHistoryProps) { return; } - const { default: jsPDF } = await import('jspdf'); - await import('jspdf-autotable'); + try { + const { default: jsPDF } = await import('jspdf'); + const { default: autoTable } = await import('jspdf-autotable'); - const doc = new jsPDF() as any; - - // Configuration du document - doc.setFont('helvetica'); - - // Titre du document - doc.setFontSize(16); - doc.text('Historique des Ventes de Feux d\'Artifice', 20, 20); - - // Informations générales - doc.setFontSize(10); - doc.text(`Date d'export: ${new Date().toLocaleDateString('fr-FR')}`, 20, 30); - doc.text(`Nombre de ventes: ${sales.length}`, 20, 35); - - if (startDate || endDate) { - let periodText = 'Période: '; - if (startDate) periodText += `du ${new Date(startDate).toLocaleDateString('fr-FR')} `; - if (endDate) periodText += `au ${new Date(endDate).toLocaleDateString('fr-FR')}`; - doc.text(periodText, 20, 40); + const doc = new jsPDF(); + + // Configuration du document + doc.setFont('helvetica'); + + // Titre du document + doc.setFontSize(16); + doc.text('Historique des Ventes de Feux d\'Artifice', 20, 20); + + // Informations générales + doc.setFontSize(10); + doc.text(`Date d'export: ${new Date().toLocaleDateString('fr-FR')}`, 20, 30); + doc.text(`Nombre de ventes: ${sales.length}`, 20, 35); + + if (startDate || endDate) { + let periodText = 'Période: '; + if (startDate) periodText += `du ${new Date(startDate).toLocaleDateString('fr-FR')} `; + if (endDate) periodText += `au ${new Date(endDate).toLocaleDateString('fr-FR')}`; + doc.text(periodText, 20, 40); + } + + // Données du tableau + const tableData = sales.map(sale => [ + new Date(sale.timestamp!).toLocaleDateString('fr-FR'), + sale.vendeur, + sale.typeArticle, + sale.categorie, + sale.quantite.toString(), + sale.nom + ' ' + sale.prenom, + sale.modePaiement || 'Espèce', + sale.typeIdentite, + sale.numeroIdentite + ]); + + // Configuration du tableau + autoTable(doc, { + head: [['Date', 'Vendeur', 'Article', 'Cat.', 'Qté', 'Client', 'Paiement', 'ID Type', 'N° ID']], + body: tableData, + startY: startDate || endDate ? 50 : 45, + styles: { + fontSize: 8, + cellPadding: 2, + }, + headStyles: { + fillColor: [59, 130, 246], + textColor: 255, + fontSize: 9, + }, + alternateRowStyles: { + fillColor: [248, 250, 252], + }, + columnStyles: { + 0: { cellWidth: 18 }, // Date + 1: { cellWidth: 25 }, // Vendeur + 2: { cellWidth: 35 }, // Article + 3: { cellWidth: 12 }, // Catégorie + 4: { cellWidth: 12 }, // Quantité + 5: { cellWidth: 30 }, // Client + 6: { cellWidth: 20 }, // Paiement + 7: { cellWidth: 15 }, // ID Type + 8: { cellWidth: 25 }, // N° ID + }, + margin: { left: 10, right: 10 }, + }); + + // Pied de page + const pageCount = doc.internal.getNumberOfPages(); + for (let i = 1; i <= pageCount; i++) { + doc.setPage(i); + doc.setFontSize(8); + doc.text(`Page ${i} sur ${pageCount}`, doc.internal.pageSize.width - 30, doc.internal.pageSize.height - 10); + doc.text('RegisFlow - Registre des ventes de feux d\'artifice', 20, doc.internal.pageSize.height - 10); + } + + // Téléchargement + doc.save(`historique_ventes_${new Date().toISOString().split('T')[0]}.pdf`); + + toast({ + title: "Export PDF réussi", + description: `${sales.length} ventes exportées en PDF`, + }); + } catch (error) { + console.error('Erreur lors de l\'export PDF:', error); + toast({ + title: "Erreur d'export", + description: "Impossible de générer le fichier PDF", + variant: "destructive", + }); } - - // Données du tableau - const tableData = sales.map(sale => [ - new Date(sale.timestamp!).toLocaleDateString('fr-FR'), - sale.vendeur, - sale.typeArticle, - sale.categorie, - sale.quantite.toString(), - sale.nom + ' ' + sale.prenom, - sale.modePaiement || 'Espèce', - sale.typeIdentite, - sale.numeroIdentite - ]); - - // Configuration du tableau - doc.autoTable({ - head: [['Date', 'Vendeur', 'Article', 'Cat.', 'Qté', 'Client', 'Paiement', 'ID Type', 'N° ID']], - body: tableData, - startY: startDate || endDate ? 50 : 45, - styles: { - fontSize: 8, - cellPadding: 2, - }, - headStyles: { - fillColor: [59, 130, 246], - textColor: 255, - fontSize: 9, - }, - alternateRowStyles: { - fillColor: [248, 250, 252], - }, - columnStyles: { - 0: { cellWidth: 18 }, // Date - 1: { cellWidth: 25 }, // Vendeur - 2: { cellWidth: 35 }, // Article - 3: { cellWidth: 12 }, // Catégorie - 4: { cellWidth: 12 }, // Quantité - 5: { cellWidth: 30 }, // Client - 6: { cellWidth: 20 }, // Paiement - 7: { cellWidth: 15 }, // ID Type - 8: { cellWidth: 25 }, // N° ID - }, - margin: { left: 10, right: 10 }, - }); - - // Pied de page - const pageCount = doc.internal.getNumberOfPages(); - for (let i = 1; i <= pageCount; i++) { - doc.setPage(i); - doc.setFontSize(8); - doc.text(`Page ${i} sur ${pageCount}`, doc.internal.pageSize.width - 30, doc.internal.pageSize.height - 10); - doc.text('RegisFlow - Registre des ventes de feux d\'artifice', 20, doc.internal.pageSize.height - 10); - } - - // Téléchargement - doc.save(`historique_ventes_${new Date().toISOString().split('T')[0]}.pdf`); - - toast({ - title: "Export PDF réussi", - description: `${sales.length} ventes exportées en PDF`, - }); }; const exportToCSV = () => {