-- ========================================
-- 🎯 SCRIPT ULTIME COMPLET POUR LA PRODUCTION ET LE DEV
-- Tables : bon_de_commande + addedproducts
-- ========================================
-- Ce script corrige TOUTES les tables liées aux BDC en une seule exécution :
--
-- 📋 TABLE bon_de_commande :
--   ✅ Correction des timestamps (created_at, updated_at)
--   ✅ Ajout de AUTO_INCREMENT sur id
--   ✅ Ajout de valeurs par défaut sur 27 champs
--
-- 📋 TABLE addedproducts :
--   ✅ Correction du champ updated_at
--   ✅ Ajout de valeurs par défaut sur 14 champs
--
-- ⚠️ À EXÉCUTER SUR : crmgaujdev ET crmgaujprod UNIQUEMENT
-- (DÉJÀ FAIT sur crmgaujlocal ✅)
-- ========================================

-- Désactiver temporairement le mode strict
SET sql_mode = '';

-- ========================================
-- PARTIE 1 : TABLE bon_de_commande
-- ========================================

-- ---- FIX DES TIMESTAMPS ----
UPDATE `bon_de_commande` 
SET `created_at` = '2024-01-01 00:00:00' 
WHERE `created_at` = '0000-00-00 00:00:00' OR `created_at` IS NULL;

UPDATE `bon_de_commande` 
SET `updated_at` = '2024-01-01 00:00:00' 
WHERE `updated_at` = '0000-00-00 00:00:00' OR `updated_at` IS NULL;

ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `id` BIGINT NOT NULL AUTO_INCREMENT;

-- ---- VALEURS PAR DÉFAUT ----
ALTER TABLE `bon_de_commande` MODIFY COLUMN `domaine_activite` VARCHAR(255) DEFAULT '';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `type_prestation` VARCHAR(255) DEFAULT '';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `details_prestation` VARCHAR(255) DEFAULT '';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `siteweb` VARCHAR(255) DEFAULT '';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `date_campagne` VARCHAR(255) DEFAULT '';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `date_bdc_du_jour` VARCHAR(50) DEFAULT '';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `debut_payment_date` VARCHAR(255) DEFAULT '';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `fin_payment_date` VARCHAR(50) DEFAULT '';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `final_payment_date` VARCHAR(50) DEFAULT '';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `date_signature_electronique` VARCHAR(255) DEFAULT '';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `nb_reglements` VARCHAR(255) DEFAULT '1';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `mode_paiement` VARCHAR(255) DEFAULT 'Virement';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `detail_reglements` VARCHAR(500) DEFAULT '';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `montant_ht` VARCHAR(255) DEFAULT '0';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `montant_ttc` VARCHAR(20) DEFAULT '0';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `taux_tva` VARCHAR(11) DEFAULT '20';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `montant_tva` VARCHAR(11) DEFAULT '0';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `devise` VARCHAR(255) DEFAULT 'MAD';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `statut_bdc` VARCHAR(50) DEFAULT 'en_attente';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `facture_cree` VARCHAR(10) DEFAULT 'non';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `transition_old_new` VARCHAR(20) DEFAULT '';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `upload_url` VARCHAR(100) DEFAULT '';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `upload_url_bdc_signe` VARCHAR(255) DEFAULT '';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `token` VARCHAR(100) DEFAULT '';
ALTER TABLE `bon_de_commande` MODIFY COLUMN `bdc_du_jour` INT DEFAULT 0;
ALTER TABLE `bon_de_commande` MODIFY COLUMN `manager_id` INT DEFAULT 0;

-- ---- NETTOYAGE DES DONNÉES ----
UPDATE `bon_de_commande` SET `domaine_activite` = '' WHERE `domaine_activite` IS NULL;
UPDATE `bon_de_commande` SET `date_campagne` = '' WHERE `date_campagne` IS NULL;
UPDATE `bon_de_commande` SET `nb_reglements` = '1' WHERE `nb_reglements` IS NULL;
UPDATE `bon_de_commande` SET `mode_paiement` = 'Virement' WHERE `mode_paiement` IS NULL;
UPDATE `bon_de_commande` SET `montant_ht` = '0' WHERE `montant_ht` IS NULL;
UPDATE `bon_de_commande` SET `montant_ttc` = '0' WHERE `montant_ttc` IS NULL;
UPDATE `bon_de_commande` SET `taux_tva` = '20' WHERE `taux_tva` IS NULL;
UPDATE `bon_de_commande` SET `montant_tva` = '0' WHERE `montant_tva` IS NULL;
UPDATE `bon_de_commande` SET `devise` = 'MAD' WHERE `devise` IS NULL;
UPDATE `bon_de_commande` SET `siteweb` = '' WHERE `siteweb` IS NULL;
UPDATE `bon_de_commande` SET `type_prestation` = '' WHERE `type_prestation` IS NULL;
UPDATE `bon_de_commande` SET `details_prestation` = '' WHERE `details_prestation` IS NULL;
UPDATE `bon_de_commande` SET `statut_bdc` = 'en_attente' WHERE `statut_bdc` IS NULL;
UPDATE `bon_de_commande` SET `upload_url` = '' WHERE `upload_url` IS NULL;
UPDATE `bon_de_commande` SET `facture_cree` = 'non' WHERE `facture_cree` IS NULL;
UPDATE `bon_de_commande` SET `final_payment_date` = '' WHERE `final_payment_date` IS NULL;
UPDATE `bon_de_commande` SET `bdc_du_jour` = 0 WHERE `bdc_du_jour` IS NULL;
UPDATE `bon_de_commande` SET `date_bdc_du_jour` = '' WHERE `date_bdc_du_jour` IS NULL;
UPDATE `bon_de_commande` SET `detail_reglements` = '' WHERE `detail_reglements` IS NULL;
UPDATE `bon_de_commande` SET `upload_url_bdc_signe` = '' WHERE `upload_url_bdc_signe` IS NULL;
UPDATE `bon_de_commande` SET `debut_payment_date` = '' WHERE `debut_payment_date` IS NULL;
UPDATE `bon_de_commande` SET `fin_payment_date` = '' WHERE `fin_payment_date` IS NULL;
UPDATE `bon_de_commande` SET `transition_old_new` = '' WHERE `transition_old_new` IS NULL;
UPDATE `bon_de_commande` SET `date_signature_electronique` = '' WHERE `date_signature_electronique` IS NULL;
UPDATE `bon_de_commande` SET `token` = '' WHERE `token` IS NULL;
UPDATE `bon_de_commande` SET `manager_id` = 0 WHERE `manager_id` IS NULL;

-- ========================================
-- PARTIE 2 : TABLE addedproducts
-- ========================================

-- ---- VALEURS PAR DÉFAUT ----
ALTER TABLE `addedproducts` MODIFY COLUMN `surface` VARCHAR(255) DEFAULT '';
ALTER TABLE `addedproducts` MODIFY COLUMN `categorie_produit` VARCHAR(50) DEFAULT '';
ALTER TABLE `addedproducts` MODIFY COLUMN `region` VARCHAR(255) DEFAULT '';
ALTER TABLE `addedproducts` MODIFY COLUMN `date_campagne` VARCHAR(20) DEFAULT '';
ALTER TABLE `addedproducts` MODIFY COLUMN `created_at` VARCHAR(100) DEFAULT '';
ALTER TABLE `addedproducts` MODIFY COLUMN `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
ALTER TABLE `addedproducts` MODIFY COLUMN `journaliste` VARCHAR(255) DEFAULT 'Non';
ALTER TABLE `addedproducts` MODIFY COLUMN `photographe` VARCHAR(255) DEFAULT 'Non';
ALTER TABLE `addedproducts` MODIFY COLUMN `facture_cree` VARCHAR(10) DEFAULT 'non';
ALTER TABLE `addedproducts` MODIFY COLUMN `bdc_id` INT DEFAULT 0;
ALTER TABLE `addedproducts` MODIFY COLUMN `commercial_id` INT DEFAULT 0;
ALTER TABLE `addedproducts` MODIFY COLUMN `manager_id` INT DEFAULT 0;
ALTER TABLE `addedproducts` MODIFY COLUMN `caller_id` INT DEFAULT 0;
ALTER TABLE `addedproducts` MODIFY COLUMN `client_id` INT DEFAULT 0;

-- ---- NETTOYAGE DES DONNÉES ----
UPDATE `addedproducts` SET `surface` = '' WHERE `surface` IS NULL;
UPDATE `addedproducts` SET `region` = '' WHERE `region` IS NULL;
UPDATE `addedproducts` SET `journaliste` = 'Non' WHERE `journaliste` IS NULL;
UPDATE `addedproducts` SET `photographe` = 'Non' WHERE `photographe` IS NULL;
UPDATE `addedproducts` SET `categorie_produit` = '' WHERE `categorie_produit` IS NULL;
UPDATE `addedproducts` SET `date_campagne` = '' WHERE `date_campagne` IS NULL;
UPDATE `addedproducts` SET `facture_cree` = 'non' WHERE `facture_cree` IS NULL;
UPDATE `addedproducts` SET `created_at` = '' WHERE `created_at` IS NULL;
UPDATE `addedproducts` SET `bdc_id` = 0 WHERE `bdc_id` IS NULL;
UPDATE `addedproducts` SET `commercial_id` = 0 WHERE `commercial_id` IS NULL;
UPDATE `addedproducts` SET `manager_id` = 0 WHERE `manager_id` IS NULL;
UPDATE `addedproducts` SET `caller_id` = 0 WHERE `caller_id` IS NULL;
UPDATE `addedproducts` SET `client_id` = 0 WHERE `client_id` IS NULL;
UPDATE `addedproducts` SET `updated_at` = NOW() WHERE `updated_at` = '0000-00-00 00:00:00' OR `updated_at` IS NULL;

-- Réactiver le mode SQL par défaut
SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

-- ========================================
-- ✅ VÉRIFICATION
-- ========================================
-- Pour vérifier que tout est OK :
-- SHOW COLUMNS FROM bon_de_commande WHERE Field IN ('id', 'created_at', 'updated_at', 'domaine_activite', 'devise');
-- SHOW COLUMNS FROM addedproducts WHERE Field IN ('region', 'surface', 'journaliste', 'photographe');
-- ========================================

-- ========================================
-- 📋 INSTRUCTIONS D'EXÉCUTION
-- ========================================
-- 1. 🔗 Se connecter au phpMyAdmin OVH
-- 2. 📊 Sélectionner la base crmgaujdev
-- 3. 💻 Aller dans l'onglet SQL
-- 4. 📄 Copier-coller CE SCRIPT COMPLET
-- 5. ▶️ Cliquer sur "Exécuter"
-- 6. ✅ Vérifier qu'il n'y a pas d'erreur
-- 7. 🔁 Répéter les étapes 2-6 pour crmgaujprod
-- ========================================

-- ========================================
-- 🎉 RÉSULTAT FINAL
-- ========================================
-- ✅ AUTO_INCREMENT sur bon_de_commande.id
-- ✅ Timestamps automatiques sur created_at et updated_at
-- ✅ 27 champs corrigés dans bon_de_commande
-- ✅ 14 champs corrigés dans addedproducts
-- 
-- 🎯 PLUS AUCUNE ERREUR lors de la création de BDC !
-- ========================================

