-- ============================================
-- Migration 0033: Gestion des numéros de série
-- Date: 2026-02-10
-- ============================================
-- Ajout de la gestion des numéros de série pour les articles
-- - Ajout colonne gere_par_serie sur la table article
-- - Création de la table ArticleNumeroSerie (remplace NSerie)
-- ============================================

-- 1. Ajouter la colonne gere_par_serie à la table article
IF OBJECT_ID('article', 'U') IS NOT NULL
BEGIN
    IF NOT EXISTS (
        SELECT 1
        FROM INFORMATION_SCHEMA.COLUMNS
        WHERE TABLE_NAME = 'article'
            AND COLUMN_NAME = 'gere_par_serie'
    )
    BEGIN
        ALTER TABLE article ADD gere_par_serie BIT NOT NULL DEFAULT 0;
        PRINT 'Colonne gere_par_serie ajoutée à la table article';
    END
    ELSE
    BEGIN
        PRINT 'Colonne gere_par_serie existe déjà dans la table article';
    END
END

-- 2. Supprimer l'ancienne table NSerie si elle existe
IF OBJECT_ID('NSerie', 'U') IS NOT NULL
BEGIN
    DROP TABLE NSerie;
    PRINT 'Ancienne table NSerie supprimée';
END

-- 3. Créer la nouvelle table ArticleNumeroSerie
IF OBJECT_ID('ArticleNumeroSerie', 'U') IS NULL
BEGIN
    CREATE TABLE ArticleNumeroSerie (
        Id INT IDENTITY(1,1) PRIMARY KEY,
        numero_serie VARCHAR(100) NOT NULL,
        code_art VARCHAR(30) NOT NULL,
        IDdepot NUMERIC(12,0) NOT NULL DEFAULT 0,

        -- Mouvement
        document VARCHAR(10) NOT NULL,      -- 'BR', 'BL', 'RC', 'RF'
        ndocument NUMERIC(12,0) NOT NULL,
        nligne NUMERIC(12,0) NOT NULL,
        date_mouvement DATETIME2 NOT NULL DEFAULT GETDATE(),

        Annee NUMERIC(12,0) NOT NULL DEFAULT 0,

        -- Index pour performance
        INDEX IX_ArticleNumeroSerie_CodeArt (code_art),
        INDEX IX_ArticleNumeroSerie_NumeroSerie (numero_serie),
        INDEX IX_ArticleNumeroSerie_Document (document, ndocument),
        INDEX IX_ArticleNumeroSerie_Depot (IDdepot)
    );

    PRINT 'Table ArticleNumeroSerie créée';
END
ELSE
BEGIN
    PRINT 'Table ArticleNumeroSerie existe déjà';
END
