-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;

CREATE TEMP TABLE w_dbsetup AS
    SELECT 
    	CASE WHEN t_indicateur_theme.oid = 0 THEN t_indicateur_theme.oid ELSE 1 END AS oid,
        t_indicateur_theme.code,
        t_indicateur_theme.texte,
        t_indicateur_theme.level,
        COALESCE(t_indicateur_parent_theme.code,'') AS parent_code
    FROM activite.t_indicateur_theme
    LEFT JOIN activite.t_indicateur_theme t_indicateur_parent_theme ON t_indicateur_theme.parent_id = t_indicateur_parent_theme.oid
    ORDER BY 2 LIMIT 0
;

-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
    oid,
    code,
    texte,
    level,
    parent_code
)
VALUES
(1, '--0', 'Source', 1, ''),
(1, '--1', 'Thèmes principaux', 1, ''),
(1, '--2', 'Période', 1, ''),
(1, '--3', 'Rapports et essentiels', 1, ''),
(1, '--4', 'Type de donnée', 1, ''),
(1, '--DACTE', 'Date acte', 2, '--2'),
(1, '--DCOMPTABLE', 'Date comptable', 2, '--2'),
(1, '--DFACTURE', 'Date facture', 2, '--2'),
(1, '--DGROUPAGE', 'Date groupage', 2, '--2'),
(1, '--DINTERVENTION', 'Date intervention', 2, '--2'),
(1, '--DJOUR', 'Date jour', 2, '--2'),
(1, '--DMOUVEMENT', 'Date mouvement', 2, '--2'),
(1, '--DSORTIE', 'Date sortie', 2, '--2'),
(1, '--DVENTES', 'Date ventes', 2, '--2'),
(1, '--R1', 'Rapports CTI', 2, '--3'),
(1, '--R3', 'Rapports Etablissement', 2, '--3'),
(1, '--S1', 'Indicateurs CTI', 2, '--0'),
(1, '--S2', 'Indicateurs Groupe', 2, '--0'),
(1, '--S3', 'Indicateurs spécifiques Etablissement', 2, '--0'),
(1, '--T0001', 'Superviseur d''activité', 2, '--1'),
(1, '--T0002', 'Occupation', 2, '--1'),
(1, '--T0003', 'Places', 2, '--1'),
(1, '--T0004', 'Facturation Clinique', 2, '--1'),
(1, '--T0005', 'Clients Clinique', 2, '--1'),
(1, '--T0006', 'Facturation Honoraires', 2, '--1'),
(1, '--T0007', 'Clients Honoraire', 2, '--1'),
(1, '--T0008', 'En-cours', 2, '--1'),
(1, '--T0011', 'Occupation bloc', 2, '--1'),
(1, '--T0097', 'Calendrier', 2, '--1'),
(1, '-TS', 'Type de séjour', 1, ''),
(1, '-TS1', 'Hospitalisé', 2, '-TS'),
(1, '-TS2', 'Ambulatoires', 2, '-TS'),
(1, '-TS3', 'Externes', 2, '-TS'),
(1, '-TS5', 'Séances', 2, '-TS'),
(1, 'CA', 'Chiffre d''affaire', 2, '--4'),
(1, 'CACP', 'C.A. Comptabilisé', 3, 'CA'),
(1, 'CAF', 'C.A. Facturé', 3, 'CA'),
(1, 'CAHON', 'C.A. Honoraire', 3, 'CA'),
(1, 'CARG', 'C.A. Réglé', 3, 'CA'),
(1, 'CASL', 'C.A. Solde', 3, 'CA'),
(1, 'CAV', 'C.A. Valorisé', 3, 'CA'),
(1, 'CAVF', 'C.A. Facturé et Valorisé', 3, 'CA'),
(1, 'NBENT', 'Nombre Entrées', 3, 'NOMBRE'),
(1, 'NBJOU', 'Nombre Jours', 3, 'NOMBRE'),
(1, 'NBRUB', 'Nombre Rubriques', 3, 'NOMBRE'),
(1, 'NBSEJ', 'Nombre Séjours', 3, 'NOMBRE'),
(1, 'NBSOR', 'Nombre Sorties', 3, 'NOMBRE'),
(1, 'NOMBRE', 'Nombre', 2, '--4'),
(1, 'TAUX', 'Taux', 2, '--4')
;

-- 3/3 : Màj de la table iCTI
INSERT INTO activite.t_indicateur_theme (code, texte, level)
SELECT code, texte, level
FROM w_dbsetup
WHERE code NOT IN (SELECT code FROM activite.t_indicateur_theme WHERE t_indicateur_theme.code IS NOT NULL)
;

UPDATE activite.t_indicateur_theme SET
    texte = w_dbsetup.texte,
    level = w_dbsetup.level,
    parent_id = COALESCE(t_indicateur_parent_theme.oid,0)
FROM w_dbsetup
LEFT JOIN activite.t_indicateur_theme t_indicateur_parent_theme ON w_dbsetup.parent_code = t_indicateur_parent_theme.code
WHERE t_indicateur_theme.code = w_dbsetup.code AND
    (
    t_indicateur_theme.texte IS DISTINCT FROM w_dbsetup.texte OR
    t_indicateur_theme.level IS DISTINCT FROM w_dbsetup.level OR
    t_indicateur_theme.parent_id IS DISTINCT FROM COALESCE(t_indicateur_parent_theme.oid,0)
    )
;


SELECT base.cti_reorganize_indicateur_theme('activite')
;