mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-14 18:59:18 +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,
|
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)
|
// Auto-remplissage si facture trouvée (référence facture OU numéro BL)
|
||||||
if (result.exists) {
|
if (result.exists) {
|
||||||
@@ -675,13 +668,25 @@ export default function BLReconciliation() {
|
|||||||
description: "Rapprochement validé avec succès",
|
description: "Rapprochement validé avec succès",
|
||||||
});
|
});
|
||||||
|
|
||||||
// Force refetch immédiat pour déplacer la facture dans l'onglet validées
|
// Mise à jour optimiste du cache local pour disparition immédiate
|
||||||
await queryClient.refetchQueries({ queryKey: ['/api/deliveries/bl'] });
|
queryClient.setQueryData(['/api/deliveries/bl', selectedStoreId], (oldData: any) => {
|
||||||
await queryClient.refetchQueries({ queryKey: ['/api/deliveries'] });
|
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
|
// Passer automatiquement à l'onglet "Validées" après validation
|
||||||
setActiveTab("validated");
|
setActiveTab("validated");
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
// En cas d'erreur, refetch pour annuler la mise à jour optimiste
|
||||||
|
queryClient.refetchQueries({ queryKey: ['/api/deliveries/bl'] });
|
||||||
toast({
|
toast({
|
||||||
title: "Erreur",
|
title: "Erreur",
|
||||||
description: "Impossible de valider le rapprochement",
|
description: "Impossible de valider le rapprochement",
|
||||||
|
|||||||
Reference in new issue
Block a user