mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-11 17:27:31 +02:00
Improve reconciliation validation feedback and cache updates
Update BLReconciliation.tsx to remove toast for non-found invoices, implement optimistic cache updates using queryClient.setQueryData for immediate UI feedback, and add error handling with queryClient.refetchQueries to revert optimistic updates. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 1e4433b5-47ab-464c-b663-fea2e53367dd Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: 3bd41b38-9ebe-4ea0-9772-0a0dd5178be1 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/1e4433b5-47ab-464c-b663-fea2e53367dd/lCj0xbO
This commit is contained in:
1 parent
3a8a2cb0b3
commit
76d113f538
1 file changed
+16
-11
@@ -144,15 +144,8 @@ export default function BLReconciliation() {
|
||||
),
|
||||
duration: 5000,
|
||||
});
|
||||
} else {
|
||||
// Facture non trouvée - afficher message d'erreur
|
||||
toast({
|
||||
title: "⚠️ Facture non trouvée",
|
||||
description: result.errorMessage || 'La facture n\'a pas été trouvée dans la base de données',
|
||||
variant: "destructive",
|
||||
duration: 5000,
|
||||
});
|
||||
}
|
||||
// Pas de toast si facture non trouvée - affichage silencieux de la croix rouge
|
||||
|
||||
// Auto-remplissage si facture trouvée (référence facture OU numéro BL)
|
||||
if (result.exists) {
|
||||
@@ -675,13 +668,25 @@ export default function BLReconciliation() {
|
||||
description: "Rapprochement validé avec succès",
|
||||
});
|
||||
|
||||
// Force refetch immédiat pour déplacer la facture dans l'onglet validées
|
||||
await queryClient.refetchQueries({ queryKey: ['/api/deliveries/bl'] });
|
||||
await queryClient.refetchQueries({ queryKey: ['/api/deliveries'] });
|
||||
// Mise à jour optimiste du cache local pour disparition immédiate
|
||||
queryClient.setQueryData(['/api/deliveries/bl', selectedStoreId], (oldData: any) => {
|
||||
if (!oldData) return oldData;
|
||||
return oldData.map((d: any) =>
|
||||
d.id === delivery.id
|
||||
? { ...d, reconciled: true, validatedAt: new Date().toISOString() }
|
||||
: d
|
||||
);
|
||||
});
|
||||
|
||||
// Force refetch pour synchroniser avec le serveur
|
||||
queryClient.refetchQueries({ queryKey: ['/api/deliveries/bl'] });
|
||||
queryClient.refetchQueries({ queryKey: ['/api/deliveries'] });
|
||||
|
||||
// Passer automatiquement à l'onglet "Validées" après validation
|
||||
setActiveTab("validated");
|
||||
} catch (error) {
|
||||
// En cas d'erreur, refetch pour annuler la mise à jour optimiste
|
||||
queryClient.refetchQueries({ queryKey: ['/api/deliveries/bl'] });
|
||||
toast({
|
||||
title: "Erreur",
|
||||
description: "Impossible de valider le rapprochement",
|
||||
|
||||
Reference in new issue
Block a user