From c55c7f95ba8c9c4392ba7ed0e652638aca1d6b47 Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Tue, 4 Nov 2025 10:43:41 +0000 Subject: [PATCH 1/3] Add image attachments to user feedback submissions No code changes. New image files attached to the commit. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 1e4433b5-47ab-464c-b663-fea2e53367dd Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: 777a60bd-b08f-4312-adc9-315f67b6fb2c Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/1e4433b5-47ab-464c-b663-fea2e53367dd/vfXE6SO --- ...56-434B-95E7-E682B436744C}_1762252968423.png | Bin 0 -> 10349 bytes ...92-45D5-9D92-DBDD9502A922}_1762252830301.png | Bin 0 -> 14765 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 attached_assets/{3ABF3777-6B56-434B-95E7-E682B436744C}_1762252968423.png create mode 100644 attached_assets/{50D0119F-3A92-45D5-9D92-DBDD9502A922}_1762252830301.png diff --git a/attached_assets/{3ABF3777-6B56-434B-95E7-E682B436744C}_1762252968423.png b/attached_assets/{3ABF3777-6B56-434B-95E7-E682B436744C}_1762252968423.png new file mode 100644 index 0000000000000000000000000000000000000000..4ec83ef5fe37cb31272c7c1cf3c574045bb82e32 GIT binary patch literal 10349 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 A3IG5A literal 0 HcmV?d00001 diff --git a/attached_assets/{50D0119F-3A92-45D5-9D92-DBDD9502A922}_1762252830301.png b/attached_assets/{50D0119F-3A92-45D5-9D92-DBDD9502A922}_1762252830301.png new file mode 100644 index 0000000000000000000000000000000000000000..7174bf6811892f9f0ee0c27db34cf3b5234f7b1b GIT binary patch literal 14765 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 literal 0 HcmV?d00001 From 0be8df7f07f8618b58a162165ce90935a1f14091 Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Tue, 4 Nov 2025 10:46:58 +0000 Subject: [PATCH 2/3] Add image assets for documentation and visual aids No code changes; only image files were added to the attached_assets directory. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 1e4433b5-47ab-464c-b663-fea2e53367dd Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: c87a0566-2c8b-44f3-aa5b-aa3fba48a086 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/1e4433b5-47ab-464c-b663-fea2e53367dd/vfXE6SO --- ...AC-41AE-8ABC-F690DEECEF68}_1762253192830.png | Bin 0 -> 21563 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 attached_assets/{6D148622-0DAC-41AE-8ABC-F690DEECEF68}_1762253192830.png diff --git a/attached_assets/{6D148622-0DAC-41AE-8ABC-F690DEECEF68}_1762253192830.png b/attached_assets/{6D148622-0DAC-41AE-8ABC-F690DEECEF68}_1762253192830.png new file mode 100644 index 0000000000000000000000000000000000000000..0ea3eea97504e0820e4be289fb2574e25c154087 GIT binary patch literal 21563 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�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 literal 0 HcmV?d00001 From 55beb1973d3575449d6d76702aac909314515dae Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Tue, 4 Nov 2025 10:49:36 +0000 Subject: [PATCH 3/3] Improve delivery reconciliation by fetching missing invoice data Enhance the delivery reconciliation process by implementing fallback mechanisms to fetch and update missing `dueDate` and `invoiceAmountTTC` from external invoice verification services when these details are absent in the existing delivery records. This involves modifications to `server/routes.ts` to handle these updates asynchronously and log the process. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 1e4433b5-47ab-464c-b663-fea2e53367dd Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: 5af17562-f143-442a-a620-6e8a4b02ac1d Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/1e4433b5-47ab-464c-b663-fea2e53367dd/vfXE6SO --- server/routes.ts | 50 ++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 44 insertions(+), 6 deletions(-) diff --git a/server/routes.ts b/server/routes.ts index 5103197..72a58e7 100644 --- a/server/routes.ts +++ b/server/routes.ts @@ -399,10 +399,11 @@ export async function registerRoutes(app: Express): Promise { console.log(`📅 Livraisons avec échéance: ${deliveriesWithDueDate.length}, sans échéance: ${deliveriesWithoutDueDate.length}`); - // FALLBACK : Pour les livraisons sans dueDate, interroger NocoDB + // FALLBACK : Pour les livraisons sans dueDate ou sans TTC, interroger NocoDB const { InvoiceVerificationService } = await import('./invoiceVerification.js'); const verificationService = new InvoiceVerificationService(); + // Traiter les livraisons sans dueDate for (const delivery of deliveriesWithoutDueDate) { try { const result = await verificationService.verifyInvoice( @@ -412,25 +413,62 @@ export async function registerRoutes(app: Express): Promise { delivery.reconciled || false ); + const updateData: any = {}; + if (result.exists && result.dueDate) { // Normaliser la date avant de la stocker const normalizedDateString = normalizeDateString(result.dueDate); if (normalizedDateString) { - // Convertir la string normalisée en objet Date pour Drizzle const normalizedDate = new Date(normalizedDateString); - // Mettre à jour deliveries avec la date normalisée (caching) - await storage.updateDelivery(delivery.id, { dueDate: normalizedDate }); + updateData.dueDate = normalizedDate; delivery.dueDate = normalizedDate; - console.log(`📅 Fallback: échéance récupérée et normalisée pour livraison #${delivery.id}`); } } + + // Récupérer aussi le TTC si manquant + if (result.exists && result.invoiceAmountTTC && !delivery.invoiceAmountTTC) { + updateData.invoiceAmountTTC = result.invoiceAmountTTC.toString(); + delivery.invoiceAmountTTC = result.invoiceAmountTTC.toString(); + } + + // Mettre à jour si nécessaire + if (Object.keys(updateData).length > 0) { + await storage.updateDelivery(delivery.id, updateData); + console.log(`📅 Fallback: données récupérées pour livraison #${delivery.id}`, updateData); + } } catch (error) { - console.error(`❌ Fallback échéance échoué pour livraison #${delivery.id}:`, error); + console.error(`❌ Fallback échoué pour livraison #${delivery.id}:`, error); } } // Combiner toutes les livraisons qui ont maintenant une dueDate const allDeliveriesWithDueDate = [...deliveriesWithDueDate, ...deliveriesWithoutDueDate.filter((d: any) => d.dueDate)]; + + // FALLBACK TTC : Pour les livraisons qui ont une dueDate mais pas de TTC + const deliveriesNeedingTTC = allDeliveriesWithDueDate.filter((d: any) => !d.invoiceAmountTTC || parseFloat(d.invoiceAmountTTC) === 0); + + console.log(`💰 Livraisons nécessitant récupération TTC: ${deliveriesNeedingTTC.length}`); + + for (const delivery of deliveriesNeedingTTC) { + try { + const result = await verificationService.verifyInvoice( + delivery.invoiceReference!, + delivery.groupId, + false, + delivery.reconciled || false + ); + + if (result.exists && result.invoiceAmountTTC) { + await storage.updateDelivery(delivery.id, { + invoiceAmountTTC: result.invoiceAmountTTC.toString() + }); + delivery.invoiceAmountTTC = result.invoiceAmountTTC.toString(); + console.log(`💰 TTC récupéré pour livraison #${delivery.id}: ${result.invoiceAmountTTC}€`); + } + } catch (error) { + console.error(`❌ Fallback TTC échoué pour livraison #${delivery.id}:`, error); + } + } // Récupérer tous les fournisseurs pour le mapping du mode de paiement const allSuppliers = await storage.getSuppliers();