mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-11 17:27:31 +02:00
Improve delivery reconciliation and auto-verification logic
Update BLReconciliation component to auto-verify reconciled deliveries with missing invoice data, and refine cache invalidation strategy upon PUT requests. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 1e4433b5-47ab-464c-b663-fea2e53367dd Replit-Commit-Checkpoint-Type: intermediate_checkpoint Replit-Commit-Event-Id: 02b89611-da6e-4dd2-b729-940165c5611f Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/1e4433b5-47ab-464c-b663-fea2e53367dd/5dRMxDE
This commit is contained in:
1 parent
d6fc647231
commit
d046de3b8b
1 file changed
+24
-11
@@ -67,6 +67,7 @@ export default function BLReconciliation() {
|
||||
// État pour le système de vérification de facture
|
||||
const [verificationResults, setVerificationResults] = useState<Record<number, any>>({});
|
||||
const [verifyingDeliveries, setVerifyingDeliveries] = useState<Set<number>>(new Set());
|
||||
const [autoVerifiedDeliveries, setAutoVerifiedDeliveries] = useState<Set<number>>(new Set());
|
||||
|
||||
// État pour le modal de commentaire
|
||||
const [showCommentModal, setShowCommentModal] = useState(false);
|
||||
@@ -178,14 +179,11 @@ export default function BLReconciliation() {
|
||||
// Ne faire l'appel que si on a des données à mettre à jour
|
||||
if (Object.keys(updateData).length > 0) {
|
||||
apiRequest(`/api/deliveries/${variables.deliveryId}`, "PUT", updateData)
|
||||
.then(async () => {
|
||||
console.log('✅ Données sauvegardées avec succès, rafraîchissement immédiat...');
|
||||
// Invalider ET forcer le rafraîchissement immédiat
|
||||
await queryClient.invalidateQueries({ queryKey: ['/api/deliveries/bl'] });
|
||||
await queryClient.invalidateQueries({ queryKey: ['/api/deliveries'] });
|
||||
await queryClient.refetchQueries({ queryKey: ['/api/deliveries/bl'] });
|
||||
await queryClient.refetchQueries({ queryKey: ['/api/deliveries'] });
|
||||
console.log('✅ Rafraîchissement terminé');
|
||||
.then(() => {
|
||||
console.log('✅ Données sauvegardées avec succès');
|
||||
// Invalider les caches (pas de refetch pour éviter boucles)
|
||||
queryClient.invalidateQueries({ queryKey: ['/api/deliveries/bl'] });
|
||||
queryClient.invalidateQueries({ queryKey: ['/api/deliveries'] });
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error('❌ Erreur auto-remplissage:', error);
|
||||
@@ -365,10 +363,25 @@ export default function BLReconciliation() {
|
||||
}
|
||||
|
||||
deliveriesWithBL.forEach((delivery: any) => {
|
||||
// ⛔ EXCLURE COMPLÈTEMENT les livraisons déjà réconciliées
|
||||
// Une fois validées avec coche verte, on ne contrôle plus JAMAIS
|
||||
// CAS SPÉCIAL : Livraisons réconciliées (✅) avec cellules vides
|
||||
// Si reconciled=true ET (cellules vides) ET blNumber existe → auto-remplir
|
||||
if (delivery.reconciled) {
|
||||
return; // Livraison déjà validée = AUCUNE vérification nécessaire
|
||||
const hasEmptyCells = !delivery.invoiceReference || !delivery.invoiceAmount || !delivery.dueDate;
|
||||
const hasBLNumber = delivery.blNumber?.trim();
|
||||
const notAlreadyAutoVerified = !autoVerifiedDeliveries.has(delivery.id);
|
||||
const notCurrentlyVerifying = !verifyingDeliveries.has(delivery.id);
|
||||
|
||||
if (hasEmptyCells && hasBLNumber && notAlreadyAutoVerified && notCurrentlyVerifying) {
|
||||
// Livraison réconciliée avec cellules vides → vérifier pour auto-remplir (UNE SEULE FOIS)
|
||||
if (import.meta.env.DEV) {
|
||||
console.log(`🔄 Livraison réconciliée #${delivery.id} avec cellules vides, auto-vérification (première tentative)...`);
|
||||
}
|
||||
// Marquer comme auto-vérifiée AVANT de lancer pour éviter les doublons
|
||||
setAutoVerifiedDeliveries(prev => new Set(prev).add(delivery.id));
|
||||
// Lancer la vérification sans délai
|
||||
handleVerifyInvoice(delivery, false);
|
||||
}
|
||||
return; // Autres livraisons réconciliées = AUCUNE vérification nécessaire
|
||||
}
|
||||
|
||||
// Vérifier seulement les livraisons NON validées
|
||||
|
||||
Reference in new issue
Block a user