diff --git a/attached_assets/image_1755121899561.png b/attached_assets/image_1755121899561.png new file mode 100644 index 0000000..47934b1 Binary files /dev/null and b/attached_assets/image_1755121899561.png differ diff --git a/replit.md b/replit.md index 2ca26ef..b98ffc9 100644 --- a/replit.md +++ b/replit.md @@ -19,6 +19,14 @@ La plateforme fournit une gestion robuste des flux de travail de livraison avec ## Recent Changes +### 2025-08-13 - Correction statut commande lors liaison avec livraison (PRODUCTION) +✅ **Problème production PostgreSQL résolu** : +- **Problème** : Commandes passaient à "delivered" au lieu de "planned" lors liaison avec livraison +- **Cause** : Méthode createDelivery() dans DatabaseStorage (PostgreSQL) manquait logique status +- **Solution** : Ajout logique complète dans createDelivery() production identique à développement +- **Correction** : Commandes liées passent maintenant à "planned" (jaune) et non "delivered" +- **Test** : Synchronisation automatique uniquement lors validation, pas création + ### 2025-08-13 - Interface épurée + redirection automatique + réorganisation navigation ✅ **Redirection automatique vers authentification** : - RouterProduction redirige immédiatement si utilisateur non connecté diff --git a/server/storage.ts b/server/storage.ts index c108fb0..0d05870 100644 --- a/server/storage.ts +++ b/server/storage.ts @@ -591,7 +591,41 @@ export class DatabaseStorage implements IStorage { } async createDelivery(deliveryData: InsertDelivery): Promise { - const [delivery] = await db.insert(deliveries).values(deliveryData).returning(); + // Créer la livraison avec statut "planned" par défaut + const deliveryDataWithStatus = { + ...deliveryData, + status: deliveryData.status || 'planned' // Force planned status by default + }; + + const [delivery] = await db.insert(deliveries).values(deliveryDataWithStatus).returning(); + + // Si une commande est liée, la marquer comme "planned" (pas delivered!) + if (deliveryData.orderId) { + try { + console.log(`🔗 PRODUCTION: Delivery #${delivery.id} linked to order #${deliveryData.orderId}, updating order status to 'planned'`); + + // Récupérer la commande actuelle + const [currentOrder] = await db + .select() + .from(orders) + .where(eq(orders.id, deliveryData.orderId)); + + if (currentOrder && currentOrder.status === 'pending') { + await db + .update(orders) + .set({ + status: 'planned', + updatedAt: new Date() + }) + .where(eq(orders.id, deliveryData.orderId)); + + console.log(`✅ PRODUCTION: Order #${deliveryData.orderId} status updated to 'planned'`); + } + } catch (error) { + console.error(`❌ PRODUCTION: Failed to update order #${deliveryData.orderId} status to planned:`, error); + } + } + return delivery; }