-- ============================================
-- Migration 0003: Migration nomenclature par defaut
-- Date: 2026-01-12
-- ============================================
-- Creer une nomenclature par defaut pour les articles fabriques existants
-- et lier les composantes (Larticle) a cette nomenclature
-- Structure Larticle : codePr = article parent, code = composant
-- ============================================

IF OBJECT_ID('nomenclature', 'U') IS NOT NULL
    AND OBJECT_ID('article', 'U') IS NOT NULL
    AND OBJECT_ID('Larticle', 'U') IS NOT NULL
BEGIN

    -- 1. Creer une nomenclature par defaut pour chaque article fabrique
    --    qui a des composantes dans Larticle avec id_nomenclature = 0
    INSERT INTO nomenclature
        (id_nomenclature, code_art, nom_nomenclature, par_defaut, description, date_creation)
    SELECT
        ROW_NUMBER() OVER (ORDER BY a.code_art) + ISNULL((SELECT MAX(id_nomenclature)
        FROM nomenclature), 0),
        a.code_art,
        'Nomenclature par défaut',
        1,
        'Nomenclature migrée automatiquement',
        GETDATE()
    FROM article a
    WHERE a.montage = 1
        AND EXISTS (SELECT 1
        FROM Larticle l
        WHERE l.codePr = a.code_art AND l.id_nomenclature = 0);

    -- 2. Mettre a jour les composantes (Larticle) pour les lier a leur nomenclature par defaut
    UPDATE l
    SET l.id_nomenclature = n.id_nomenclature
    FROM Larticle l
        INNER JOIN nomenclature n ON n.code_art = l.codePr AND n.par_defaut = 1
    WHERE l.id_nomenclature = 0;

END
