Fix order status and delivery linking errors in production

Implement comprehensive PostgreSQL fixes to ensure correct order status updates and accurate display of order-delivery relationships, aligning production behavior with development environments.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 7c468936-2a88-4686-ac0a-84921a45222d
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/7c468936-2a88-4686-ac0a-84921a45222d/r577GWu
This commit is contained in:
michaelschal committed 2025-08-13 21:59:47 +00:00
1 parent 9a65f694b9
commit 4df74a66f2
2 files changed
+80 -4

No files matched your search

+14 -2
View File
@@ -19,12 +19,24 @@ 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** :
### 2025-08-13 - CORRECTION COMPLÈTE PostgreSQL production - Statut et Relations
✅ **Problème production PostgreSQL entièrement résolu** :
**1. Correction statut commande lors liaison :**
- **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"
**2. Correction affichage relations commandes-livraisons :**
- **Problème** : Liaisons n'apparaissaient pas car relations non récupérées en production
- **Cause** : getOrder() et getDelivery() PostgreSQL ne récupéraient pas les entités associées
- **Solution** : getOrder() récupère maintenant les livraisons liées + getDelivery() récupère commande liée
- **Résultat** : Calendrier affiche maintenant correctement les liaisons avec informations complètes
**3. Cohérence développement-production :**
- **Avant** : MemStorage (dev) et DatabaseStorage (prod) comportements différents
- **Après** : Logique identique entre développement et production PostgreSQL
- **Test** : Synchronisation automatique uniquement lors validation, pas création
### 2025-08-13 - Interface épurée + redirection automatique + réorganisation navigation
+66 -2
View File
@@ -416,7 +416,52 @@ export class DatabaseStorage implements IStorage {
.leftJoin(users, eq(orders.createdBy, users.id))
.where(eq(orders.id, id));
return order;
if (!order) return undefined;
// Récupérer les livraisons associées à cette commande (PRODUCTION PostgreSQL)
const associatedDeliveries = await db
.select({
id: deliveries.id,
orderId: deliveries.orderId,
supplierId: deliveries.supplierId,
groupId: deliveries.groupId,
scheduledDate: deliveries.scheduledDate,
deliveredDate: deliveries.deliveredDate,
status: deliveries.status,
quantity: deliveries.quantity,
unit: deliveries.unit,
blNumber: deliveries.blNumber,
blAmount: deliveries.blAmount,
invoiceReference: deliveries.invoiceReference,
invoiceAmount: deliveries.invoiceAmount,
reconciled: deliveries.reconciled,
validatedAt: deliveries.validatedAt,
notes: deliveries.notes,
createdBy: deliveries.createdBy,
createdAt: deliveries.createdAt,
updatedAt: deliveries.updatedAt,
supplier: suppliers,
group: groups,
creator: {
id: users.id,
firstName: users.firstName,
lastName: users.lastName,
username: users.username,
email: users.email
}
})
.from(deliveries)
.leftJoin(suppliers, eq(deliveries.supplierId, suppliers.id))
.leftJoin(groups, eq(deliveries.groupId, groups.id))
.leftJoin(users, eq(deliveries.createdBy, users.id))
.where(eq(deliveries.orderId, id));
console.log(`🔗 PRODUCTION: getOrder #${id} found ${associatedDeliveries.length} associated deliveries`);
return {
...order,
deliveries: associatedDeliveries
} as OrderWithRelations;
}
async createOrder(orderData: InsertOrder): Promise<Order> {
@@ -587,7 +632,26 @@ export class DatabaseStorage implements IStorage {
console.log('⚠️ Could not load creator info:', error);
}
return { ...delivery, creator } as DeliveryWithRelations;
// Récupérer la commande associée si elle existe (PRODUCTION PostgreSQL)
let associatedOrder = undefined;
if (delivery.orderId) {
try {
console.log(`🔗 PRODUCTION: getDelivery #${id} retrieving associated order #${delivery.orderId}`);
const orderData = await this.getOrder(delivery.orderId);
if (orderData) {
associatedOrder = orderData;
console.log(`✅ PRODUCTION: getDelivery #${id} found associated order #${delivery.orderId} with status: ${orderData.status}`);
}
} catch (error) {
console.error(`❌ PRODUCTION: Failed to retrieve associated order #${delivery.orderId} for delivery #${id}:`, error);
}
}
return {
...delivery,
creator,
order: associatedOrder
} as DeliveryWithRelations;
}
async createDelivery(deliveryData: InsertDelivery): Promise<Delivery> {