From b625077caea33b3b417b5d8d3597b31a6ef35a11 Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Tue, 12 Aug 2025 12:19:15 +0000 Subject: [PATCH 1/3] Improve automatic reconciliation logic to include deliveries already reconciled Fixes an issue where some deliveries were not appearing in automatic reconciliation due to an incorrect filter condition. The logic now correctly identifies automatically reconciled deliveries based on supplier settings or existing reconciled status, aligning with the user's report of auto-reconciliation showing zero when data exists. Replit-Commit-Author: Agent Replit-Commit-Session-Id: b163d4c0-de5e-4f4e-a9c0-aed4c7049718 Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/b163d4c0-de5e-4f4e-a9c0-aed4c7049718/rzSRfN7 --- client/src/pages/BLReconciliation.tsx | 38 +++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/client/src/pages/BLReconciliation.tsx b/client/src/pages/BLReconciliation.tsx index 9c03e8d..de31cde 100644 --- a/client/src/pages/BLReconciliation.tsx +++ b/client/src/pages/BLReconciliation.tsx @@ -81,12 +81,46 @@ export default function BLReconciliation() { // Séparer les livraisons par mode de rapprochement const manualReconciliationDeliveries = deliveriesWithBL.filter((delivery: any) => { const supplier = suppliers.find(s => s.id === delivery.supplierId); - return !supplier?.isAutoReconciliation; + + // Logique améliorée pour détecter le mode manuel : + // 1. Si le fournisseur a isAutoReconciliation explicitement à false + // 2. Si le fournisseur n'a pas la propriété isAutoReconciliation (défaut manuel) + // 3. Si pas de fournisseur trouvé (défaut manuel pour compatibilité) + const isManual = !supplier?.isAutoReconciliation; + + console.log('Manual filter - Delivery:', delivery.id, 'Supplier:', supplier?.name, 'isAutoReconciliation:', supplier?.isAutoReconciliation, 'isManual:', isManual); + return isManual; }); const automaticReconciliationDeliveries = deliveriesWithBL.filter((delivery: any) => { const supplier = suppliers.find(s => s.id === delivery.supplierId); - return supplier?.isAutoReconciliation; + + // Logique améliorée pour détecter le mode automatique : + // 1. Si le fournisseur a isAutoReconciliation explicitement à true + // 2. OU si la livraison est déjà validée automatiquement (reconciled=true avec BL) + const isAutoBySupplier = supplier?.isAutoReconciliation === true; + const isAutoByStatus = delivery.reconciled === true && delivery.blNumber && !delivery.invoiceReference; + + const isAutomatic = isAutoBySupplier || isAutoByStatus; + + console.log('Auto filter - Delivery:', delivery.id, 'Supplier:', supplier?.name, 'isAutoReconciliation:', supplier?.isAutoReconciliation, 'reconciled:', delivery.reconciled, 'hasBlNumber:', !!delivery.blNumber, 'hasInvoiceRef:', !!delivery.invoiceReference, 'isAutomatic:', isAutomatic); + return isAutomatic; + }); + + console.log('🔍 Reconciliation Debug:', { + totalDeliveries: deliveriesWithBL.length, + totalSuppliers: suppliers.length, + manualCount: manualReconciliationDeliveries.length, + autoCount: automaticReconciliationDeliveries.length, + deliveriesData: deliveriesWithBL.map(d => ({ + id: d.id, + supplierId: d.supplierId, + supplier: d.supplier?.name, + reconciled: d.reconciled, + blNumber: d.blNumber, + invoiceReference: d.invoiceReference + })), + suppliersData: suppliers.map(s => ({id: s.id, name: s.name, isAutoReconciliation: s.isAutoReconciliation})) }); // Fonctions de gestion From 836152024a32136173e00d84940cfe2337595c6d Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Tue, 12 Aug 2025 12:20:03 +0000 Subject: [PATCH 2/3] Simplify reconciliation by filtering only suppliers with auto-reconciliation enabled. Refactor BL reconciliation logic in `BLReconciliation.tsx` to only filter deliveries where `supplier.isAutoReconciliation` is explicitly true, simplifying the manual reconciliation filter. Replit-Commit-Author: Agent Replit-Commit-Session-Id: b163d4c0-de5e-4f4e-a9c0-aed4c7049718 Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/b163d4c0-de5e-4f4e-a9c0-aed4c7049718/HZmju0j --- client/src/pages/BLReconciliation.tsx | 38 ++------------------------- 1 file changed, 2 insertions(+), 36 deletions(-) diff --git a/client/src/pages/BLReconciliation.tsx b/client/src/pages/BLReconciliation.tsx index de31cde..d375abd 100644 --- a/client/src/pages/BLReconciliation.tsx +++ b/client/src/pages/BLReconciliation.tsx @@ -81,46 +81,12 @@ export default function BLReconciliation() { // Séparer les livraisons par mode de rapprochement const manualReconciliationDeliveries = deliveriesWithBL.filter((delivery: any) => { const supplier = suppliers.find(s => s.id === delivery.supplierId); - - // Logique améliorée pour détecter le mode manuel : - // 1. Si le fournisseur a isAutoReconciliation explicitement à false - // 2. Si le fournisseur n'a pas la propriété isAutoReconciliation (défaut manuel) - // 3. Si pas de fournisseur trouvé (défaut manuel pour compatibilité) - const isManual = !supplier?.isAutoReconciliation; - - console.log('Manual filter - Delivery:', delivery.id, 'Supplier:', supplier?.name, 'isAutoReconciliation:', supplier?.isAutoReconciliation, 'isManual:', isManual); - return isManual; + return supplier?.isAutoReconciliation !== true; }); const automaticReconciliationDeliveries = deliveriesWithBL.filter((delivery: any) => { const supplier = suppliers.find(s => s.id === delivery.supplierId); - - // Logique améliorée pour détecter le mode automatique : - // 1. Si le fournisseur a isAutoReconciliation explicitement à true - // 2. OU si la livraison est déjà validée automatiquement (reconciled=true avec BL) - const isAutoBySupplier = supplier?.isAutoReconciliation === true; - const isAutoByStatus = delivery.reconciled === true && delivery.blNumber && !delivery.invoiceReference; - - const isAutomatic = isAutoBySupplier || isAutoByStatus; - - console.log('Auto filter - Delivery:', delivery.id, 'Supplier:', supplier?.name, 'isAutoReconciliation:', supplier?.isAutoReconciliation, 'reconciled:', delivery.reconciled, 'hasBlNumber:', !!delivery.blNumber, 'hasInvoiceRef:', !!delivery.invoiceReference, 'isAutomatic:', isAutomatic); - return isAutomatic; - }); - - console.log('🔍 Reconciliation Debug:', { - totalDeliveries: deliveriesWithBL.length, - totalSuppliers: suppliers.length, - manualCount: manualReconciliationDeliveries.length, - autoCount: automaticReconciliationDeliveries.length, - deliveriesData: deliveriesWithBL.map(d => ({ - id: d.id, - supplierId: d.supplierId, - supplier: d.supplier?.name, - reconciled: d.reconciled, - blNumber: d.blNumber, - invoiceReference: d.invoiceReference - })), - suppliersData: suppliers.map(s => ({id: s.id, name: s.name, isAutoReconciliation: s.isAutoReconciliation})) + return supplier?.isAutoReconciliation === true; }); // Fonctions de gestion From d32710ee3c764eda1a58d6c977ff33366b378340 Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Tue, 12 Aug 2025 12:20:54 +0000 Subject: [PATCH 3/3] Add debugging logs for reconciliation data on the reconciliation page Add console logs to BLReconciliation.tsx for debugging reconciliation data, including total deliveries, suppliers, selected store ID, user role, and detailed delivery/supplier information. Replit-Commit-Author: Agent Replit-Commit-Session-Id: b163d4c0-de5e-4f4e-a9c0-aed4c7049718 Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/b163d4c0-de5e-4f4e-a9c0-aed4c7049718/dpkQu60 --- client/src/pages/BLReconciliation.tsx | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/client/src/pages/BLReconciliation.tsx b/client/src/pages/BLReconciliation.tsx index d375abd..dee3f0c 100644 --- a/client/src/pages/BLReconciliation.tsx +++ b/client/src/pages/BLReconciliation.tsx @@ -78,6 +78,27 @@ export default function BLReconciliation() { enabled: !!user }); + // Debug : afficher les données récupérées + console.log('🔍 BL Reconciliation Debug:', { + totalDeliveries: deliveriesWithBL.length, + totalSuppliers: suppliers.length, + selectedStoreId, + userRole: user?.role, + deliveries: deliveriesWithBL.map(d => ({ + id: d.id, + supplier: d.supplier?.name, + supplierId: d.supplierId, + status: d.status, + blNumber: d.blNumber, + reconciled: d.reconciled + })), + suppliers: suppliers.map(s => ({ + id: s.id, + name: s.name, + isAutoReconciliation: s.isAutoReconciliation + })) + }); + // Séparer les livraisons par mode de rapprochement const manualReconciliationDeliveries = deliveriesWithBL.filter((delivery: any) => { const supplier = suppliers.find(s => s.id === delivery.supplierId);