mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-11 17:27:31 +02:00
Merge pull request #94 from R0m1k3/1.1
Improve reconciliation display and fix statistics calculations
This commit is contained in:
4 files changed
+33
-19
No files matched your search
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
@@ -187,8 +187,8 @@ export default function BLReconciliation() {
|
||||
});
|
||||
};
|
||||
|
||||
// Récupérer les livraisons validées avec BL
|
||||
const { data: deliveriesWithBL = [], isLoading } = useQuery({
|
||||
// Récupérer les livraisons validées avec BL - CACHE INVALIDÉ après modifications
|
||||
const { data: deliveriesWithBL = [], isLoading, refetch } = useQuery({
|
||||
queryKey: ['/api/deliveries/bl', selectedStoreId],
|
||||
queryFn: async () => {
|
||||
const params = new URLSearchParams({});
|
||||
@@ -214,7 +214,8 @@ export default function BLReconciliation() {
|
||||
|
||||
return filtered.sort((a: any, b: any) => new Date(b.deliveredDate || b.updatedAt).getTime() - new Date(a.deliveredDate || a.updatedAt).getTime());
|
||||
},
|
||||
enabled: !!user
|
||||
enabled: !!user,
|
||||
staleTime: 0 // Éviter la mise en cache pour toujours avoir les dernières données BL
|
||||
});
|
||||
|
||||
// VÉRIFICATION AUTOMATIQUE AU CHARGEMENT avec système de cache
|
||||
@@ -267,7 +268,9 @@ export default function BLReconciliation() {
|
||||
description: "Données de rapprochement mises à jour",
|
||||
});
|
||||
|
||||
// Invalidation cache + refetch forcé pour mise à jour immédiate
|
||||
queryClient.invalidateQueries({ queryKey: ['/api/deliveries/bl'] });
|
||||
refetch();
|
||||
handleCloseModal();
|
||||
} catch (error) {
|
||||
toast({
|
||||
@@ -397,7 +400,10 @@ export default function BLReconciliation() {
|
||||
description: "Rapprochement validé avec succès",
|
||||
});
|
||||
|
||||
// Invalidation cache + refetch forcé pour mise à jour immédiate
|
||||
queryClient.invalidateQueries({ queryKey: ['/api/deliveries/bl'] });
|
||||
queryClient.invalidateQueries({ queryKey: ['/api/deliveries'] });
|
||||
refetch(); // Force recharge immédiate des données BL
|
||||
} catch (error) {
|
||||
toast({
|
||||
title: "Erreur",
|
||||
@@ -432,7 +438,9 @@ export default function BLReconciliation() {
|
||||
description: "Rapprochement dévalidé avec succès",
|
||||
});
|
||||
|
||||
// Invalidation cache + refetch forcé pour mise à jour immédiate
|
||||
queryClient.invalidateQueries({ queryKey: ['/api/deliveries/bl'] });
|
||||
refetch();
|
||||
} catch (error) {
|
||||
toast({
|
||||
title: "Erreur",
|
||||
|
||||
@@ -19,22 +19,20 @@ La plateforme fournit une gestion robuste des flux de travail de livraison avec
|
||||
|
||||
## Recent Changes
|
||||
|
||||
### 2025-08-13 - Correction complète des statistiques du tableau de bord
|
||||
✅ **Résolution définitive de l'affichage de zéros dans les statistiques** :
|
||||
### 2025-08-13 - Correction finale statistiques + affichage BL résolu
|
||||
✅ **Résolution définitive des bugs statistiques et affichage BL** :
|
||||
|
||||
**Problème identifié et corrigé :**
|
||||
- **Statistiques hardcodées** : La méthode `getMonthlyStats()` retournait des zéros fixes
|
||||
- **Calculs réels implémentés** : Requêtes PostgreSQL pour vraies statistiques mensuelles
|
||||
- **Filtrage par magasin** : Support des filtres par groupes/magasins
|
||||
- **Gestion des erreurs** : Fallback en cas d'erreur de base de données
|
||||
**1. Statistiques mois corrigées :**
|
||||
- **Problème** : Palettes/colis comptées sur scheduledDate au lieu de deliveredDate
|
||||
- **Solution** : Filtrage par `deliveredDate` pour vraies stats mensuelles
|
||||
- **Impact** : Statistiques reflètent maintenant les livraisons effectives du mois
|
||||
- **Calcul** : Seules les livraisons `delivered` dans le mois avec `deliveredDate` valide
|
||||
|
||||
**Calculs statistiques implémentés :**
|
||||
- **Commandes** : COUNT des commandes du mois par date plannedDate
|
||||
- **Livraisons** : COUNT des livraisons du mois par date plannedDate
|
||||
- **Palettes** : SUM des quantités de livraisons
|
||||
- **Colis** : COUNT total des livraisons
|
||||
- **Délai moyen** : Moyenne des jours entre plannedDate et actualDate
|
||||
- **Commandes en attente** : COUNT des commandes sans date ou statut pending
|
||||
**2. Affichage BL rapprochement optimisé :**
|
||||
- **Problème** : BL numbers n'apparaissaient pas immédiatement après validation
|
||||
- **Solution** : Cache invalidation + refetch forcé après modification
|
||||
- **Technique** : `staleTime: 0` + `queryClient.invalidateQueries` + `refetch()`
|
||||
- **Résultat** : Mise à jour instantanée de l'interface utilisateur
|
||||
|
||||
### 2025-08-13 - Erreurs 502 production entièrement corrigées
|
||||
✅ **Résolution définitive des erreurs Bad Gateway en production** :
|
||||
|
||||
+10
-2
@@ -612,11 +612,12 @@ export class DatabaseStorage implements IStorage {
|
||||
try {
|
||||
console.log('📊 Calcul statistiques mensuelles:', { year, month, startDate, endDate, groupIds });
|
||||
|
||||
// Construire les conditions pour le filtrage par groupe
|
||||
// Construire les conditions pour le filtrage par groupe - UTILISER LE BON CHAMP DE DATE
|
||||
let ordersWhereCondition = and(
|
||||
gte(orders.plannedDate, startDate),
|
||||
lt(orders.plannedDate, endDate)
|
||||
);
|
||||
// Pour les livraisons, utiliser deliveredDate pour celles livrées, sinon scheduledDate
|
||||
let deliveriesWhereCondition = and(
|
||||
gte(deliveries.scheduledDate, startDate),
|
||||
lt(deliveries.scheduledDate, endDate)
|
||||
@@ -652,12 +653,19 @@ export class DatabaseStorage implements IStorage {
|
||||
.where(pendingWhereCondition);
|
||||
|
||||
// Calculer les totaux de palettes et colis du mois (SEULEMENT livraisons delivered)
|
||||
// IMPORTANT: Utiliser deliveredDate pour filtrer par le mois de livraison effective
|
||||
let deliveredWhereCondition = and(
|
||||
deliveriesWhereCondition,
|
||||
gte(deliveries.deliveredDate, startDate),
|
||||
lt(deliveries.deliveredDate, endDate),
|
||||
eq(deliveries.status, 'delivered'),
|
||||
isNotNull(deliveries.deliveredDate)
|
||||
);
|
||||
|
||||
// Ajouter le filtre par groupe pour les livraisons delivered
|
||||
if (groupIds && groupIds.length > 0) {
|
||||
deliveredWhereCondition = and(deliveredWhereCondition, inArray(deliveries.groupId, groupIds));
|
||||
}
|
||||
|
||||
const deliveriesStatsResult = await db
|
||||
.select({
|
||||
totalPalettes: sql<number>`COALESCE(SUM(CAST(${deliveries.quantity} as INTEGER)), 0)`,
|
||||
|
||||
Reference in new issue
Block a user