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
This commit is contained in:
michaelschal committed 2025-07-19 11:08:23 +00:00
1 parent a46a0c63a4
commit c3c1616e04
1 file changed
+56 -5
+56 -5
View File
@@ -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;
}