Files
LogiFlow/URGENT-CMD-55-FIX.md
T
michaelschal 95823a90c3 Improve visibility and debugging for order validation functionality
Add temporary debug logs and visible indicators to the CalendarGrid component to diagnose why the order validation button is not appearing for admins, and also include a direct SQL fix for CMD-55 status.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: a8a78c07-e900-425c-a577-5b4c5894379d
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/a8a78c07-e900-425c-a577-5b4c5894379d/3ec1Xks
2025-08-11 21:05:47 +00:00

197 lines
5.8 KiB
Markdown

# URGENT - Correction CMD-55 et Déploiement Bouton Validation
## Problèmes Identifiés en Production
### 1. Erreur de Modification de Commande
- **Symptôme** : Toast rouge "Impossible de modifier la commande"
- **Cause Probable** : Problème de validation ou de permission sur le serveur
- **Impact** : Les utilisateurs ne peuvent pas modifier les commandes existantes
### 2. Bouton de Validation Manquant
- **Symptôme** : Pas de bouton "Valider Commande" visible sur les cartes
- **Cause** : Modifications récentes non déployées sur le serveur de production
- **Impact** : Impossible de valider CMD-55 directement depuis le calendrier
## Solutions Immédiates
### A. Pour le Problème CMD-55 - Solution SQL Directe
Si vous avez accès à votre base de données PostgreSQL en production, exécutez cette commande SQL immédiatement :
```sql
UPDATE orders
SET status = 'delivered', updated_at = NOW()
WHERE id = 55;
```
Cette commande marquera directement CMD-55 comme "delivered" dans la base de données.
### B. Déploiement du Bouton de Validation
#### Fichiers à Modifier sur Votre Serveur de Production :
1. **`client/src/components/CalendarGrid.tsx`** - Remplacer tout le contenu par :
```typescript
import { format, startOfMonth, endOfMonth, eachDayOfInterval, isSameDay, isSameMonth, isToday } from "date-fns";
import { fr } from "date-fns/locale";
import { safeDate } from "@/lib/dateUtils";
import { Plus, Check, CheckCircle } from "lucide-react";
import { Button } from "@/components/ui/button";
import { useToast } from "@/hooks/use-toast";
import type { OrderWithRelations, DeliveryWithRelations } from "@shared/schema";
interface CalendarGridProps {
currentDate: Date;
orders: OrderWithRelations[];
deliveries: DeliveryWithRelations[];
onDateClick: (date: Date) => void;
onItemClick: (item: any, type: 'order' | 'delivery') => void;
user?: { role: string } | null;
onOrderValidated?: () => void;
}
export default function CalendarGrid({
currentDate,
orders,
deliveries,
onDateClick,
onItemClick,
user,
onOrderValidated,
}: CalendarGridProps) {
const { toast } = useToast();
// Fonction pour valider une commande
const handleValidateOrder = async (orderId: number, event: React.MouseEvent) => {
event.stopPropagation();
try {
const response = await fetch(`/api/orders/${orderId}`, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
credentials: 'include',
body: JSON.stringify({ status: 'delivered' })
});
if (!response.ok) {
throw new Error(`Erreur ${response.status}: ${await response.text()}`);
}
toast({
title: "Commande validée",
description: `La commande CMD-${orderId} a été marquée comme livrée.`,
});
// Rafraîchir les données
if (onOrderValidated) {
onOrderValidated();
}
} catch (error) {
console.error('Erreur lors de la validation:', error);
toast({
title: "Erreur",
description: "Impossible de valider la commande.",
variant: "destructive"
});
}
};
// ... (rest of your existing CalendarGrid code)
// IMPORTANT: Dans la section qui affiche les cartes de commandes,
// ajoutez le bouton de validation avant les autres icônes :
{/* Bouton de validation pour les admins si la commande n'est pas delivered */}
{user?.role === 'admin' && order.status !== 'delivered' && (
<Button
size="sm"
variant="ghost"
className="h-5 w-5 p-0 hover:bg-white/20 opacity-0 group-hover/order:opacity-100 transition-opacity mr-1"
onClick={(e) => handleValidateOrder(order.id, e)}
title="Valider la commande"
>
<CheckCircle className="w-3 h-3 text-green-200" />
</Button>
)}
```
2. **`client/src/pages/Calendar.tsx`** - Modifier l'appel à CalendarGrid :
```typescript
<CalendarGrid
currentDate={currentDate}
orders={orders}
deliveries={deliveries}
onDateClick={handleDateClick}
onItemClick={handleItemClick}
user={user}
onOrderValidated={() => {
queryClient.invalidateQueries({ queryKey: ['/api/orders'] });
queryClient.invalidateQueries({ queryKey: ['/api/deliveries'] });
}}
/>
```
#### Commandes de Déploiement :
```bash
# 1. Sauvegarde
cp -r client/src client/src.backup
# 2. Appliquer les modifications aux fichiers mentionnés ci-dessus
# 3. Reconstruction
npm run build
# 4. Redémarrage
pm2 restart your-app-name
# OU
sudo systemctl restart your-service
# OU
docker-compose restart
```
### C. Correction de l'Erreur de Modification
Si l'erreur de modification persiste, ajoutez ces logs de debug dans votre `server/routes.ts` :
```javascript
app.put('/api/orders/:id', isAuthenticated, async (req: any, res) => {
try {
console.log('🔧 [DEBUG] Order update request:', {
orderId: req.params.id,
body: req.body,
userId: req.user?.id || req.user?.claims?.sub
});
// ... rest of existing code
} catch (error) {
console.error("❌ [ERROR] Order update failed:", {
error: error.message,
stack: error.stack,
orderId: req.params.id,
body: req.body
});
res.status(500).json({ message: "Failed to update order" });
}
});
```
## Test après Déploiement
1. **Connectez-vous** avec un compte admin
2. **Recherchez CMD-55** dans le calendrier
3. **Passez la souris** sur la carte CMD-55
4. **Cliquez** sur l'icône de cercle avec coche qui apparaît
5. **Vérifiez** que CMD-55 passe en gris (delivered)
## Rollback si Problème
```bash
cp -r client/src.backup client/src
npm run build
pm2 restart your-app-name
```
---
**Priorité** : Appliquer la solution SQL directe (section A) immédiatement pour résoudre CMD-55, puis déployer le bouton de validation (section B) pour éviter les futurs problèmes similaires.