diff --git a/server/routes.ts b/server/routes.ts index 75d4a6e..5e046d0 100644 --- a/server/routes.ts +++ b/server/routes.ts @@ -730,15 +730,8 @@ export async function registerRoutes(app: Express): Promise { console.log('✅ Delivery updated successfully:', { id, updatedDelivery }); // SYNCHRONISATION AUTOMATIQUE : Si livraison devient "delivered", marquer la commande associée comme "delivered" - if (data.status === 'delivered' && updatedDelivery.orderId) { - try { - console.log(`🔄 Auto-sync: Delivery #${id} marked as delivered, updating order #${updatedDelivery.orderId}`); - await storage.updateOrder(updatedDelivery.orderId, { status: 'delivered' }); - console.log(`✅ Auto-sync: Order #${updatedDelivery.orderId} automatically marked as delivered`); - } catch (error) { - console.error(`❌ Auto-sync failed for order #${updatedDelivery.orderId}:`, error); - } - } + // MAIS seulement après validation explicite (pas juste mise à jour status) + // Cette sync sera gérée dans validateDelivery endpoint uniquement // AUTO-VALIDATION RAPPROCHEMENT AUTOMATIQUE : Si fournisseur en mode automatique, livraison delivered + BL → auto-valider if (data.status === 'delivered' || data.blNumber) { @@ -780,11 +773,23 @@ export async function registerRoutes(app: Express): Promise { return res.status(404).json({ message: "User not found" }); } + console.log('🚛 Creating delivery with data:', req.body); + + // Traiter les données pour orderId - "none" devient null + const processedBody = { ...req.body }; + if (processedBody.orderId === "none" || processedBody.orderId === "") { + processedBody.orderId = null; + } else if (processedBody.orderId) { + processedBody.orderId = parseInt(processedBody.orderId); + } + const data = insertDeliverySchema.parse({ - ...req.body, + ...processedBody, createdBy: user.id, }); + console.log('🚛 Processed delivery data:', data); + // Check if user has access to the group if (user.role !== 'admin') { const userGroupIds = user.userGroups.map(ug => ug.groupId); @@ -794,6 +799,14 @@ export async function registerRoutes(app: Express): Promise { } const delivery = await storage.createDelivery(data); + + // Log de liaison avec commande + if (data.orderId) { + console.log(`🔗 Delivery #${delivery.id} linked to order #${data.orderId}`); + } else { + console.log(`🚛 Delivery #${delivery.id} created without order link`); + } + res.json(delivery); } catch (error) { console.error("Error creating delivery:", error); diff --git a/server/storage.ts b/server/storage.ts index e067380..c108fb0 100644 --- a/server/storage.ts +++ b/server/storage.ts @@ -1677,11 +1677,25 @@ export class MemStorage implements IStorage { const delivery: Delivery = { id, ...deliveryData, - status: 'pending', + status: 'planned', // Livraisons créées sont automatiquement planifiées createdAt: new Date(), updatedAt: new Date(), }; this.deliveries.set(id, delivery); + + // Si une commande est liée, la marquer comme "planned" (pas delivered!) + if (deliveryData.orderId) { + try { + const order = this.orders.get(deliveryData.orderId); + if (order && order.status === 'pending') { + console.log(`🔗 Delivery #${id} linked to order #${deliveryData.orderId}, updating order status to 'planned'`); + await this.updateOrder(deliveryData.orderId, { status: 'planned' }); + } + } catch (error) { + console.error(`❌ Failed to update order #${deliveryData.orderId} status to planned:`, error); + } + } + return delivery; }