mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-11 17:27:31 +02:00
Merge pull request #278 from R0m1k3/1.1
Prevent deliveries from linking to orders from different stores
This commit is contained in:
2 files changed
+53
-4
No files matched your search
@@ -803,6 +803,23 @@ export async function registerRoutes(app: Express): Promise<Server> {
|
||||
}
|
||||
|
||||
const data = insertDeliverySchema.partial().parse(transformedData);
|
||||
|
||||
// CRITICAL FIX: Si une commande est liée lors de la modification, vérifier qu'elle appartient au même magasin
|
||||
if (data.orderId !== undefined) {
|
||||
if (data.orderId !== null) {
|
||||
const linkedOrder = await storage.getOrder(data.orderId);
|
||||
if (!linkedOrder) {
|
||||
return res.status(400).json({ message: "La commande liée n'existe pas" });
|
||||
}
|
||||
if (linkedOrder.groupId !== delivery.groupId) {
|
||||
return res.status(400).json({
|
||||
message: `Impossible de lier une livraison du magasin ${delivery.groupId} avec une commande du magasin ${linkedOrder.groupId}`
|
||||
});
|
||||
}
|
||||
console.log(`✅ Validation OK: Livraison #${id} et commande #${data.orderId} appartiennent au même magasin ${delivery.groupId}`);
|
||||
}
|
||||
}
|
||||
|
||||
const updatedDelivery = await storage.updateDelivery(id, data);
|
||||
console.log('✅ Delivery updated successfully:', { id, updatedDelivery });
|
||||
|
||||
@@ -875,6 +892,20 @@ export async function registerRoutes(app: Express): Promise<Server> {
|
||||
}
|
||||
}
|
||||
|
||||
// CRITICAL FIX: Si une commande est liée, vérifier qu'elle appartient au même magasin
|
||||
if (data.orderId) {
|
||||
const linkedOrder = await storage.getOrder(data.orderId);
|
||||
if (!linkedOrder) {
|
||||
return res.status(400).json({ message: "La commande liée n'existe pas" });
|
||||
}
|
||||
if (linkedOrder.groupId !== data.groupId) {
|
||||
return res.status(400).json({
|
||||
message: `Impossible de lier une livraison du magasin ${data.groupId} avec une commande du magasin ${linkedOrder.groupId}`
|
||||
});
|
||||
}
|
||||
console.log(`✅ Validation OK: Livraison et commande #${data.orderId} appartiennent au même magasin ${data.groupId}`);
|
||||
}
|
||||
|
||||
const delivery = await storage.createDelivery(data);
|
||||
|
||||
// Log de liaison avec commande
|
||||
|
||||
+22
-4
@@ -725,7 +725,13 @@ export class DatabaseStorage implements IStorage {
|
||||
.where(eq(orders.id, delivery.orderId));
|
||||
|
||||
if (orderData) {
|
||||
associatedOrder = orderData;
|
||||
// CRITICAL FIX: Vérifier que la commande appartient au même magasin que la livraison
|
||||
if (orderData.groupId !== delivery.groupId) {
|
||||
console.error(`❌ PRODUCTION: Delivery #${delivery.id} (store ${delivery.groupId}) linked to order #${delivery.orderId} (store ${orderData.groupId}) - STORE MISMATCH DETECTED!`);
|
||||
// Ne pas inclure la commande si elle n'appartient pas au bon magasin
|
||||
} else {
|
||||
associatedOrder = orderData;
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`❌ PRODUCTION: Failed to retrieve associated order #${delivery.orderId} for delivery #${delivery.id}:`, error);
|
||||
@@ -835,7 +841,13 @@ export class DatabaseStorage implements IStorage {
|
||||
.where(eq(orders.id, delivery.orderId));
|
||||
|
||||
if (orderData) {
|
||||
associatedOrder = orderData;
|
||||
// CRITICAL FIX: Vérifier que la commande appartient au même magasin que la livraison
|
||||
if (orderData.groupId !== delivery.groupId) {
|
||||
console.error(`❌ PRODUCTION: Delivery #${delivery.id} (store ${delivery.groupId}) linked to order #${delivery.orderId} (store ${orderData.groupId}) - STORE MISMATCH DETECTED!`);
|
||||
// Ne pas inclure la commande si elle n'appartient pas au bon magasin
|
||||
} else {
|
||||
associatedOrder = orderData;
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`❌ PRODUCTION: Failed to retrieve associated order #${delivery.orderId} for delivery #${delivery.id}:`, error);
|
||||
@@ -908,8 +920,14 @@ export class DatabaseStorage implements IStorage {
|
||||
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}`);
|
||||
// CRITICAL FIX: Vérifier que la commande appartient au même magasin que la livraison
|
||||
if (orderData.groupId !== delivery.groupId) {
|
||||
console.error(`❌ PRODUCTION: getDelivery #${id} (store ${delivery.groupId}) linked to order #${delivery.orderId} (store ${orderData.groupId}) - STORE MISMATCH DETECTED!`);
|
||||
// Ne pas inclure la commande si elle n'appartient pas au bon magasin
|
||||
} else {
|
||||
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);
|
||||
|
||||
Reference in new issue
Block a user