mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-11 17:27:31 +02:00
Merge pull request #520 from R0m1k3/1.1
Update invoice sending to use direct webhook requests with timeouts
This commit is contained in:
3 files changed
+17
-28
No files matched your search
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 23 KiB |
@@ -513,37 +513,26 @@ export default function BLReconciliation() {
|
|||||||
startProcessingTimer();
|
startProcessingTimer();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Convertir le fichier en base64 pour l'envoyer via notre route backend
|
const formData = new FormData();
|
||||||
const fileBase64 = await new Promise<string>((resolve, reject) => {
|
formData.append('file', selectedFile);
|
||||||
const reader = new FileReader();
|
formData.append('supplier', selectedDeliveryForInvoice.supplier?.name || '');
|
||||||
reader.onload = () => {
|
formData.append('blNumber', selectedDeliveryForInvoice.blNumber || '');
|
||||||
const base64 = (reader.result as string).split(',')[1]; // Retirer le préfixe data:...
|
formData.append('type', 'Facture');
|
||||||
resolve(base64);
|
|
||||||
};
|
// Créer un AbortController pour gérer le timeout
|
||||||
reader.onerror = reject;
|
const controller = new AbortController();
|
||||||
reader.readAsDataURL(selectedFile);
|
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
|
clearTimeout(timeoutId);
|
||||||
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'
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Envoyer via la route backend proxy (évite les problèmes CORS)
|
if (!response.ok) {
|
||||||
const response = await apiRequest('/api/reconciliation/send-invoice-webhook', 'POST', payload);
|
throw new Error(`Erreur ${response.status}: ${response.statusText}`);
|
||||||
|
|
||||||
if (!response || !response.success) {
|
|
||||||
throw new Error(response?.error || 'Erreur lors de l\'envoi');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
handleCloseWaitingModal();
|
handleCloseWaitingModal();
|
||||||
|
|||||||
Reference in new issue
Block a user