From c3c1616e049bc48249c08e206e161167c25ae087 Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Sat, 19 Jul 2025 11:08:23 +0000 Subject: [PATCH] Display images of documents within sales histories in the PDF reports Implements image embedding within jsPDF reports in SalesHistory.tsx, adding error handling and page breaks. Replit-Commit-Author: Agent Replit-Commit-Session-Id: e80fed01-7137-4997-b9af-dad57132d430 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/0715008c-7244-40f4-befc-26c014852236/e80fed01-7137-4997-b9af-dad57132d430/7byo1CD --- client/src/components/SalesHistory.tsx | 61 +++++++++++++++++++++++--- 1 file changed, 56 insertions(+), 5 deletions(-) diff --git a/client/src/components/SalesHistory.tsx b/client/src/components/SalesHistory.tsx index 9ccc0ca..e14f663 100644 --- a/client/src/components/SalesHistory.tsx +++ b/client/src/components/SalesHistory.tsx @@ -200,21 +200,72 @@ export default function SalesHistory({ canDelete = false }: SalesHistoryProps) { if (sale.photoRecto || sale.photoVerso || sale.photoTicket) { doc.setFont('helvetica', 'bold'); doc.text('DOCUMENTS PHOTOGRAPHIÉS:', 20, currentY); - currentY += 6; - doc.setFont('helvetica', 'normal'); + currentY += 8; + + const photoWidth = 80; + const photoHeight = 60; + let photoX = 20; if (sale.photoRecto) { - doc.text('✓ Photo recto pièce d\'identité', 25, currentY); + // Vérifier si on a assez de place pour la photo + if (currentY + photoHeight > 280) { + doc.addPage(); + currentY = 20; + } + + doc.setFont('helvetica', 'normal'); + doc.text('Photo recto pièce d\'identité:', photoX, currentY); currentY += 5; + + try { + doc.addImage(sale.photoRecto, 'JPEG', photoX, currentY, photoWidth, photoHeight); + currentY += photoHeight + 5; + } catch (error) { + doc.text('Photo non disponible (format non supporté)', photoX, currentY); + currentY += 5; + } } + if (sale.photoVerso) { - doc.text('✓ Photo verso pièce d\'identité', 25, currentY); + // Vérifier si on a assez de place pour la photo + if (currentY + photoHeight > 280) { + doc.addPage(); + currentY = 20; + } + + doc.setFont('helvetica', 'normal'); + doc.text('Photo verso pièce d\'identité:', photoX, currentY); currentY += 5; + + try { + doc.addImage(sale.photoVerso, 'JPEG', photoX, currentY, photoWidth, photoHeight); + currentY += photoHeight + 5; + } catch (error) { + doc.text('Photo non disponible (format non supporté)', photoX, currentY); + currentY += 5; + } } + if (sale.photoTicket) { - doc.text('✓ Photo ticket/reçu', 25, currentY); + // Vérifier si on a assez de place pour la photo + if (currentY + photoHeight > 280) { + doc.addPage(); + currentY = 20; + } + + doc.setFont('helvetica', 'normal'); + doc.text('Photo ticket/reçu:', photoX, currentY); currentY += 5; + + try { + doc.addImage(sale.photoTicket, 'JPEG', photoX, currentY, photoWidth, photoHeight); + currentY += photoHeight + 5; + } catch (error) { + doc.text('Photo non disponible (format non supporté)', photoX, currentY); + currentY += 5; + } } + currentY += 5; }