-- ========================================
-- FIX: Ajouter des valeurs par défaut à tous les champs NOT NULL de addedproducts
-- ========================================
-- Ce script ajoute des valeurs par défaut appropriées à tous les champs qui causent des erreurs
-- lors de l'ajout de produits à un BDC car ils sont NOT NULL sans valeur par défaut
--
-- À exécuter sur : crmgaujlocal (MAINTENANT), crmgaujdev ET crmgaujprod
-- ========================================

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

-- ========================================
-- CORRECTION DES CHAMPS NOT NULL
-- ========================================

-- Champs de produit et surface
ALTER TABLE `addedproducts` 
MODIFY COLUMN `surface` VARCHAR(255) DEFAULT '';

ALTER TABLE `addedproducts` 
MODIFY COLUMN `categorie_produit` VARCHAR(50) DEFAULT '';

-- Champs de région et dates
ALTER TABLE `addedproducts` 
MODIFY COLUMN `region` VARCHAR(255) DEFAULT '' COMMENT 'Région pour les magazines régionaux';

ALTER TABLE `addedproducts` 
MODIFY COLUMN `date_campagne` VARCHAR(20) DEFAULT '' COMMENT 'Date/trimestre de campagne';

-- Champs timestamp
ALTER TABLE `addedproducts` 
MODIFY COLUMN `created_at` VARCHAR(100) DEFAULT '' COMMENT 'Date de création';

ALTER TABLE `addedproducts` 
MODIFY COLUMN `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Date de mise à jour';

-- Champs journaliste et photographe
ALTER TABLE `addedproducts` 
MODIFY COLUMN `journaliste` VARCHAR(255) DEFAULT 'Non' COMMENT 'Journaliste assigné';

ALTER TABLE `addedproducts` 
MODIFY COLUMN `photographe` VARCHAR(255) DEFAULT 'Non' COMMENT 'Photographe assigné';

-- Champs de facturation
ALTER TABLE `addedproducts` 
MODIFY COLUMN `facture_cree` VARCHAR(10) DEFAULT 'non' COMMENT 'Facture créée (oui/non)';

-- Champs de référence (IDs) - Ne peuvent pas être NULL car ils sont des foreign keys
-- On les laisse NOT NULL mais on met 0 par défaut
ALTER TABLE `addedproducts` 
MODIFY COLUMN `bdc_id` INT DEFAULT 0 COMMENT 'ID du bon de commande';

ALTER TABLE `addedproducts` 
MODIFY COLUMN `commercial_id` INT DEFAULT 0 COMMENT 'ID du commercial terrain';

ALTER TABLE `addedproducts` 
MODIFY COLUMN `manager_id` INT DEFAULT 0 COMMENT 'ID du manager';

ALTER TABLE `addedproducts` 
MODIFY COLUMN `caller_id` INT DEFAULT 0 COMMENT 'ID du caller/vendeur';

ALTER TABLE `addedproducts` 
MODIFY COLUMN `client_id` INT DEFAULT 0 COMMENT 'ID du client';

-- ========================================
-- NETTOYAGE DES DONNÉES EXISTANTES
-- ========================================

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;

-- Corriger les valeurs invalides de updated_at
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
-- ========================================
-- Vérifier la structure mise à jour :
-- SHOW COLUMNS FROM addedproducts WHERE Field IN ('region', 'surface', 'journaliste', 'photographe', 'date_campagne');
-- ========================================

-- ========================================
-- RÉSUMÉ DES VALEURS PAR DÉFAUT
-- ========================================
-- Texte vide ('') : surface, region, date_campagne, categorie_produit, created_at
-- 'Non' : journaliste, photographe
-- 'non' : facture_cree
-- 0 : bdc_id, commercial_id, manager_id, caller_id, client_id
-- CURRENT_TIMESTAMP : updated_at
-- ========================================

