-- ================================================================
-- MIGRATION : Gestion des intérêts de livrets
-- ================================================================
-- Ajoute les comptes nécessaires pour la comptabilisation
-- des intérêts bancaires en deux temps (acquis puis reçus)
-- ================================================================

-- ----------------------------------------------------------------
-- 1) Vérifier/créer le compte 518800 : Intérêts à recevoir
-- ----------------------------------------------------------------

-- Ajouter pour tous les syndics qui n'ont pas encore ce compte
INSERT INTO plan_comptable (numero_compte, libelle, type_compte, classe, id_copro)
SELECT '518800', 'Intérêts à recevoir', 'tiers', '5', s.id_copro
FROM syndics s
WHERE NOT EXISTS (
    SELECT 1 FROM plan_comptable pc
    WHERE pc.numero_compte = '518800' 
    AND pc.id_copro = s.id_copro
);

-- Vérifier
SELECT 
    pc.id_copro,
    s.nom AS nom_syndic,
    pc.numero_compte,
    pc.libelle,
    pc.type_compte,
    pc.classe
FROM plan_comptable pc
JOIN syndics s ON s.id_copro = pc.id_copro
WHERE pc.numero_compte = '518800'
ORDER BY pc.id_copro;

-- ----------------------------------------------------------------
-- 2) Vérifier/créer le compte 105000 : Fonds de travaux
-- ----------------------------------------------------------------

-- Ajouter pour tous les syndics qui n'ont pas encore ce compte
INSERT INTO plan_comptable (numero_compte, libelle, type_compte, classe, id_copro)
SELECT '105000', 'Fonds de travaux', 'tiers', '1', s.id_copro
FROM syndics s
WHERE NOT EXISTS (
    SELECT 1 FROM plan_comptable pc
    WHERE pc.numero_compte = '105000' 
    AND pc.id_copro = s.id_copro
);

-- Vérifier
SELECT 
    pc.id_copro,
    s.nom AS nom_syndic,
    pc.numero_compte,
    pc.libelle,
    pc.type_compte,
    pc.classe
FROM plan_comptable pc
JOIN syndics s ON s.id_copro = pc.id_copro
WHERE pc.numero_compte = '105000'
ORDER BY pc.id_copro;
-- ----------------------------------------------------------------
-- 3) Vérification globale : Comptes créés par syndic
-- ----------------------------------------------------------------

SELECT 
    s.id_copro,
    s.nom AS nom_syndic,
    COUNT(CASE WHEN pc.numero_compte = '518800' THEN 1 END) AS has_518800,
    COUNT(CASE WHEN pc.numero_compte = '105000' THEN 1 END) AS has_105000,
    CASE 
        WHEN COUNT(CASE WHEN pc.numero_compte = '518800' THEN 1 END) > 0 
         AND COUNT(CASE WHEN pc.numero_compte = '105000' THEN 1 END) > 0 
        THEN '✅ OK'
        ELSE '❌ Manquant'
    END AS statut
FROM syndics s
LEFT JOIN plan_comptable pc ON pc.id_copro = s.id_copro 
    AND pc.numero_compte IN ('518800', '105000')
GROUP BY s.id_copro, s.nom
ORDER BY s.id_copro;

-- ================================================================
-- FIN DE LA MIGRATION
-- ================================================================

/*
EXPLICATION :

Compte 518800 - Intérêts à recevoir :
  Compte de créance utilisé pour enregistrer les intérêts acquis
  mais non encore versés sur les livrets d'épargne.
  
  Utilisation : Au 31/12/N, on enregistre :
    D 518800 Intérêts à recevoir    XX €
    C 105000 Fonds de travaux       XX €

Compte 105000 - Fonds de travaux :
  Compte de capitaux représentant la réserve obligatoire
  pour les travaux futurs de la copropriété.
  
  Utilisation : Crédit lors de l'acquisition des intérêts,
  puis débit lors de l'utilisation pour les travaux.

Workflow complet :

  31/12/2024 - Acquisition des intérêts (150 €)
  ┌────────────────────────────────────────────┐
  │ D 518800 Intérêts à recevoir    150,00 €  │
  │ C 105000 Fonds de travaux       150,00 €  │
  └────────────────────────────────────────────┘
  
  01/01/2025 - Versement effectif
  ┌────────────────────────────────────────────┐
  │ D 512002 Livret A               150,00 €  │
  │ C 518800 Intérêts à recevoir    150,00 €  │
  └────────────────────────────────────────────┘
  
  Résultat : Le compte 518800 est soldé (débit = crédit)
             Le livret a bien reçu les 150 €
             Les fonds travaux ont augmenté de 150 €
*/
