Files
LogiFlow/fix-delivery-order-sync-immediate.sql
T
michaelschal c648396f57 Provide guide for immediate synchronization of order and delivery statuses
Add a guide document with SQL scripts and testing instructions for synchronizing order and delivery statuses, including fixing missing delivery dates.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: a8a78c07-e900-425c-a577-5b4c5894379d
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/a8a78c07-e900-425c-a577-5b4c5894379d/KuIk8gU
2025-08-11 20:35:49 +00:00

74 lines
2.4 KiB
SQL

-- Script de synchronisation immédiate des statuts commandes/livraisons
-- Exécuter directement sur la base de données de production
-- Étape 1: Diagnostic - Afficher les commandes problématiques
SELECT
o.id as order_id,
o.status as order_status,
d.id as delivery_id,
d.status as delivery_status,
d.delivered_date,
o.supplier_id,
s.name as supplier_name
FROM orders o
JOIN deliveries d ON d.order_id = o.id
JOIN suppliers s ON o.supplier_id = s.id
WHERE d.status = 'delivered' AND o.status != 'delivered'
ORDER BY o.id;
-- Étape 2: Mise à jour automatique des statuts
-- Marquer toutes les commandes comme "delivered" si au moins une de leurs livraisons est livrée
UPDATE orders
SET status = 'delivered'
WHERE id IN (
SELECT DISTINCT o.id
FROM orders o
JOIN deliveries d ON d.order_id = o.id
WHERE d.status = 'delivered' AND o.status != 'delivered'
);
-- Étape 3: Mise à jour des dates de livraison manquantes
-- Ajouter delivered_date aux livraisons qui ont le status 'delivered' mais pas de date
UPDATE deliveries
SET delivered_date = scheduled_date
WHERE status = 'delivered'
AND delivered_date IS NULL
AND scheduled_date IS NOT NULL;
-- Étape 4: Pour les livraisons sans scheduled_date, utiliser la date de création + 1 jour
UPDATE deliveries
SET delivered_date = DATE(created_at) + INTERVAL '1 day'
WHERE status = 'delivered'
AND delivered_date IS NULL
AND scheduled_date IS NULL;
-- Étape 5: Diagnostic final - Vérifier les résultats
SELECT
'RÉSULTAT FINAL' as status,
COUNT(*) as total_orders,
SUM(CASE WHEN status = 'delivered' THEN 1 ELSE 0 END) as delivered_orders,
SUM(CASE WHEN status = 'planned' THEN 1 ELSE 0 END) as planned_orders
FROM orders;
SELECT
'LIVRAISONS MISES À JOUR' as status,
COUNT(*) as total_delivered_deliveries,
SUM(CASE WHEN delivered_date IS NOT NULL THEN 1 ELSE 0 END) as with_delivered_date,
SUM(CASE WHEN delivered_date IS NULL THEN 1 ELSE 0 END) as missing_delivered_date
FROM deliveries
WHERE status = 'delivered';
-- Afficher la commande CMD-55 spécifiquement
SELECT
'COMMANDE CMD-55' as status,
o.id,
o.status as order_status,
o.planned_date,
d.status as delivery_status,
d.delivered_date,
d.scheduled_date,
s.name as supplier
FROM orders o
LEFT JOIN deliveries d ON d.order_id = o.id
JOIN suppliers s ON o.supplier_id = s.id
WHERE o.id = 55;