-- Migration 014 : finalisation support abonnements/commandes manuels
--
-- Cette migration :
--   1. Rend wc_subscription_id et wc_order_id NULLABLE (pour les manuels qui
--      n'ont pas d'ID WooCommerce)
--   2. Rend subscription_id NULLABLE sur orders (pour les futures commandes
--      manuelles directes, non liées à un abonnement — Livraison 3)
--   3. Ajoute la colonne manual_reference (AM26001 / CM26001) avec index
--   4. Adapte la contrainte UNIQUE sur subscriptions et orders pour autoriser
--      plusieurs lignes manuelles (wc_id IS NULL)
--   5. Crée la table platform_settings (clé/valeur) pour stocker la TVA
--      paramétrable et autres réglages globaux

-- 1. subscriptions : wc_subscription_id NULLABLE + nouveau champ manual_reference
ALTER TABLE subscriptions
    MODIFY COLUMN wc_subscription_id INT UNSIGNED NULL
    COMMENT 'NULL pour les abos manuels (is_manual=1)';

ALTER TABLE subscriptions
    ADD COLUMN manual_reference VARCHAR(20) NULL DEFAULT NULL
    COMMENT 'Référence interne format AM26001 (AM + 2 chiffres année + 3 chiffres séquence)';

-- Note : on ne peut pas ajouter UNIQUE direct car certaines BDD pourraient
-- avoir des doublons hérités. On crée juste un index simple.
ALTER TABLE subscriptions
    ADD KEY idx_manual_reference (manual_reference);

-- L'ancienne contrainte UNIQUE (source_site_id, wc_subscription_id) devient
-- problématique si plusieurs abos manuels ont wc_subscription_id=NULL et
-- la même source_site_id. MySQL traite NULL comme "distinct" dans UNIQUE
-- en réalité (chaque NULL est unique), donc ça fonctionne. On laisse tel quel.

-- 2. orders : wc_order_id et subscription_id NULLABLE + manual_reference
ALTER TABLE orders
    MODIFY COLUMN wc_order_id INT UNSIGNED NULL
    COMMENT 'NULL pour les commandes manuelles (is_manual=1)';

ALTER TABLE orders
    MODIFY COLUMN subscription_id INT UNSIGNED NULL
    COMMENT 'NULL pour les commandes manuelles directes (sans abonnement parent)';

ALTER TABLE orders
    ADD COLUMN manual_reference VARCHAR(20) NULL DEFAULT NULL
    COMMENT 'Référence interne format CM26001 (CM + 2 chiffres année + 3 chiffres séquence)';

ALTER TABLE orders
    ADD KEY idx_manual_reference (manual_reference);

-- 3. Table platform_settings (clé/valeur globale)
CREATE TABLE IF NOT EXISTS platform_settings (
    setting_key VARCHAR(100) NOT NULL PRIMARY KEY,
    setting_value TEXT NULL,
    description VARCHAR(255) NULL,
    updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Valeur initiale : TVA à 20% (défaut France)
INSERT INTO platform_settings (setting_key, setting_value, description)
VALUES ('tax_rate', '20.0', 'Taux de TVA par défaut (en pourcentage) pour les abonnements et commandes manuels')
ON DUPLICATE KEY UPDATE setting_key = setting_key;
