-- ========================================
-- FIX: Ajouter des valeurs par défaut à tous les champs NOT NULL de bon_de_commande
-- ========================================
-- Ce script ajoute des valeurs par défaut appropriées à tous les champs qui causent des erreurs
-- lors de la création d'un BDC car ils sont NOT NULL sans valeur par défaut
--
-- À exécuter sur : crmgaujlocal (DÉJÀ FAIT), crmgaujdev ET crmgaujprod
-- ========================================

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

-- ========================================
-- CHAMPS TEXTE / VARCHAR
-- ========================================

-- Champs liés au domaine et prestations
ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `domaine_activite` VARCHAR(255) DEFAULT '' COMMENT 'Domaine d\'activité du client';

ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `type_prestation` VARCHAR(255) DEFAULT '' COMMENT 'Type de prestation';

ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `details_prestation` VARCHAR(255) DEFAULT '' COMMENT 'Détails de la prestation';

ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `siteweb` VARCHAR(255) DEFAULT '' COMMENT 'Site web du client';

-- Champs liés aux dates et campagne
ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `date_campagne` VARCHAR(255) DEFAULT '' COMMENT 'Date de campagne (trimestre)';

ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `date_bdc_du_jour` VARCHAR(50) DEFAULT '' COMMENT 'Date du BDC du jour';

ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `debut_payment_date` VARCHAR(255) DEFAULT '' COMMENT 'Date de début de paiement';

ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `fin_payment_date` VARCHAR(50) DEFAULT '' COMMENT 'Date de fin de paiement';

ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `final_payment_date` VARCHAR(50) DEFAULT '' COMMENT 'Date de dernier paiement';

ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `date_signature_electronique` VARCHAR(255) DEFAULT '' COMMENT 'Date de signature électronique';

-- Champs liés aux paiements
ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `nb_reglements` VARCHAR(255) DEFAULT '1' COMMENT 'Nombre de règlements';

ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `mode_paiement` VARCHAR(255) DEFAULT 'Virement' COMMENT 'Mode de paiement';

ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `detail_reglements` VARCHAR(500) DEFAULT '' COMMENT 'Détails des règlements';

-- Champs financiers
ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `montant_ht` VARCHAR(255) DEFAULT '0' COMMENT 'Montant HT';

ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `montant_ttc` VARCHAR(20) DEFAULT '0' COMMENT 'Montant TTC';

ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `taux_tva` VARCHAR(11) DEFAULT '20' COMMENT 'Taux de TVA';

ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `montant_tva` VARCHAR(11) DEFAULT '0' COMMENT 'Montant TVA';

ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `devise` VARCHAR(255) DEFAULT 'MAD' COMMENT 'Devise (MAD par défaut pour Maroc)';

-- Champs de statut et état
ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `statut_bdc` VARCHAR(50) DEFAULT 'en_attente' COMMENT 'Statut du BDC';

ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `facture_cree` VARCHAR(10) DEFAULT 'non' COMMENT 'Facture créée (oui/non)';

ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `transition_old_new` VARCHAR(20) DEFAULT '' COMMENT 'Transition ancien/nouveau';

-- Champs d'upload et documents
ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `upload_url` VARCHAR(100) DEFAULT '' COMMENT 'URL d\'upload';

ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `upload_url_bdc_signe` VARCHAR(255) DEFAULT '' COMMENT 'URL du BDC signé';

-- Champ token
ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `token` VARCHAR(100) DEFAULT '' COMMENT 'Token de sécurité';

-- ========================================
-- CHAMPS NUMÉRIQUES (INT)
-- ========================================

ALTER TABLE `bon_de_commande` 
MODIFY COLUMN `bdc_du_jour` INT DEFAULT 0 COMMENT 'Numéro du BDC du jour';

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

-- ========================================
-- VÉRIFICATION ET NETTOYAGE
-- ========================================

-- Mettre à jour les enregistrements existants qui ont des NULL dans les champs obligatoires
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;

-- 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 bon_de_commande;
--
-- Tous les champs NOT NULL doivent maintenant avoir une valeur par défaut appropriée
-- ========================================

-- ========================================
-- RÉSUMÉ DES VALEURS PAR DÉFAUT
-- ========================================
-- Texte vide ('') : domaine_activite, date_campagne, siteweb, type_prestation, details_prestation,
--                   date_bdc_du_jour, debut_payment_date, fin_payment_date, final_payment_date,
--                   date_signature_electronique, detail_reglements, upload_url, upload_url_bdc_signe,
--                   transition_old_new, token
-- 
-- Valeurs numériques :
--   - nb_reglements = '1'
--   - montant_ht = '0'
--   - montant_ttc = '0'
--   - taux_tva = '20'
--   - montant_tva = '0'
--   - bdc_du_jour = 0
--   - manager_id = 0
--
-- Valeurs par défaut logiques :
--   - mode_paiement = 'Virement'
--   - devise = 'MAD' (Dirham marocain)
--   - statut_bdc = 'en_attente'
--   - facture_cree = 'non'
-- ========================================

