mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-20 21:49:07 +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);
|
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);
|
const updatedDelivery = await storage.updateDelivery(id, data);
|
||||||
console.log('✅ Delivery updated successfully:', { id, updatedDelivery });
|
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);
|
const delivery = await storage.createDelivery(data);
|
||||||
|
|
||||||
// Log de liaison avec commande
|
// Log de liaison avec commande
|
||||||
|
|||||||
+22
-4
@@ -725,7 +725,13 @@ export class DatabaseStorage implements IStorage {
|
|||||||
.where(eq(orders.id, delivery.orderId));
|
.where(eq(orders.id, delivery.orderId));
|
||||||
|
|
||||||
if (orderData) {
|
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) {
|
} catch (error) {
|
||||||
console.error(`❌ PRODUCTION: Failed to retrieve associated order #${delivery.orderId} for delivery #${delivery.id}:`, 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));
|
.where(eq(orders.id, delivery.orderId));
|
||||||
|
|
||||||
if (orderData) {
|
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) {
|
} catch (error) {
|
||||||
console.error(`❌ PRODUCTION: Failed to retrieve associated order #${delivery.orderId} for delivery #${delivery.id}:`, 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}`);
|
console.log(`🔗 PRODUCTION: getDelivery #${id} retrieving associated order #${delivery.orderId}`);
|
||||||
const orderData = await this.getOrder(delivery.orderId);
|
const orderData = await this.getOrder(delivery.orderId);
|
||||||
if (orderData) {
|
if (orderData) {
|
||||||
associatedOrder = orderData;
|
// CRITICAL FIX: Vérifier que la commande appartient au même magasin que la livraison
|
||||||
console.log(`✅ PRODUCTION: getDelivery #${id} found associated order #${delivery.orderId} with status: ${orderData.status}`);
|
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) {
|
} catch (error) {
|
||||||
console.error(`❌ PRODUCTION: Failed to retrieve associated order #${delivery.orderId} for delivery #${id}:`, error);
|
console.error(`❌ PRODUCTION: Failed to retrieve associated order #${delivery.orderId} for delivery #${id}:`, error);
|
||||||
|
|||||||
Reference in new issue
Block a user