From 4dffada355bdde68f7d6a7944ced6864059c5cd2 Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Tue, 4 Nov 2025 15:12:48 +0000 Subject: [PATCH] Update invoice sending to use direct webhook requests with timeouts Refactors BLReconciliation.tsx to replace the backend proxy call with a direct fetch to the webhook URL, implementing FormData for file uploads and adding a 60-second timeout using AbortController. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 1e4433b5-47ab-464c-b663-fea2e53367dd Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: 4d220e6b-5c4b-4c79-badc-e764c86cbe43 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/1e4433b5-47ab-464c-b663-fea2e53367dd/qOJ89TE --- ...-4106-8530-38501E1EADEE}_1762269064399.png | Bin 0 -> 10929 bytes ...-42B5-B63C-FBB1B8C893E8}_1762269074780.png | Bin 0 -> 23076 bytes client/src/pages/BLReconciliation.tsx | 45 +++++++----------- 3 files changed, 17 insertions(+), 28 deletions(-) create mode 100644 attached_assets/{053E4C93-A4BA-4106-8530-38501E1EADEE}_1762269064399.png create mode 100644 attached_assets/{20F16595-1D55-42B5-B63C-FBB1B8C893E8}_1762269074780.png diff --git a/attached_assets/{053E4C93-A4BA-4106-8530-38501E1EADEE}_1762269064399.png b/attached_assets/{053E4C93-A4BA-4106-8530-38501E1EADEE}_1762269064399.png new file mode 100644 index 0000000000000000000000000000000000000000..cc88b9adc1cdae3994af8ca4b0d65caa47ecc05b GIT binary patch literal 10929 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 literal 0 HcmV?d00001 diff --git a/attached_assets/{20F16595-1D55-42B5-B63C-FBB1B8C893E8}_1762269074780.png b/attached_assets/{20F16595-1D55-42B5-B63C-FBB1B8C893E8}_1762269074780.png new file mode 100644 index 0000000000000000000000000000000000000000..41c28429eacae9481d745be8674227f0752f494f GIT binary patch literal 23076 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 r#57SSxlJa^?qPDU((resolve, reject) => { - const reader = new FileReader(); - reader.onload = () => { - const base64 = (reader.result as string).split(',')[1]; // Retirer le préfixe data:... - resolve(base64); - }; - reader.onerror = reject; - reader.readAsDataURL(selectedFile); + const formData = new FormData(); + formData.append('file', selectedFile); + formData.append('supplier', selectedDeliveryForInvoice.supplier?.name || ''); + formData.append('blNumber', selectedDeliveryForInvoice.blNumber || ''); + formData.append('type', 'Facture'); + + // Créer un AbortController pour gérer le timeout + const controller = new AbortController(); + const timeoutId = setTimeout(() => controller.abort(), 60000); // 60 secondes + + const response = await fetch(selectedDeliveryForInvoice.group.webhookUrl, { + method: 'POST', + body: formData, + signal: controller.signal, }); - // Préparer les données pour la route backend proxy - const payload = { - webhookUrl: selectedDeliveryForInvoice.group.webhookUrl, - formDataFields: { - file: { - base64: fileBase64, - filename: selectedFile.name, - contentType: selectedFile.type - }, - supplier: selectedDeliveryForInvoice.supplier?.name || '', - blNumber: selectedDeliveryForInvoice.blNumber || '', - type: 'Facture' - } - }; + clearTimeout(timeoutId); - // Envoyer via la route backend proxy (évite les problèmes CORS) - const response = await apiRequest('/api/reconciliation/send-invoice-webhook', 'POST', payload); - - if (!response || !response.success) { - throw new Error(response?.error || 'Erreur lors de l\'envoi'); + if (!response.ok) { + throw new Error(`Erreur ${response.status}: ${response.statusText}`); } handleCloseWaitingModal();