-- 1/3 : Création de la table temporaire DROP TABLE IF EXISTS w_dbsetup ; CREATE TEMP TABLE w_dbsetup AS SELECT t_classes.oid, t_classes.code, t_classes.texte, t_classes.is_cti, t_classes.sequence, CASE WHEN NOT (t_classes.sequence = 30 AND t_listes_tables.code = (SELECT valeur FROM eco.t_divers WHERE code = 'CLE_REPARTITION')) THEN t_listes_tables.code ELSE 'TYA' END as table_code FROM eco.t_classes, eco.t_listes_tables WHERE 1=1 AND (is_cti = '1' OR (t_classes.code ilike 'CTI_%' AND t_classes.code NOT IN ('CTI_CPTLETBUD','CTI_CPTVOTE','CTI_CPTRCV','CTI_UFCR','CTI_UFUM','CTI_UFSERS','CTI_UFSITE'))) AND table_id = t_listes_tables.oid ORDER BY t_classes.code LIMIT 0 ; -- 2/3 : Peuplement de la table temporaire INSERT INTO w_dbsetup( oid, code, texte, is_cti, sequence, table_code ) VALUES (1, 'CTI_CLE_REP', 'Clef de répartition CTI', '0', 30, 'TYA'), (1, 'CTI_ESS_ART80', 'Lstes des articles répartis représentant 80% des stocks en montant', '1', 1, 'ART'), (1, 'CTI_TYPMVT', 'Types de mouvements CTI', '0', 1, 'TYM') ; -- 3/3 : Màj de la table iCTI UPDATE eco.t_classes SET code = w_dbsetup.code, texte = w_dbsetup.texte, table_id = t_listes_tables.oid, is_cti = w_dbsetup.is_cti FROM w_dbsetup, eco.t_listes_tables WHERE w_dbsetup.table_code = t_listes_tables.code AND t_classes.sequence = w_dbsetup.sequence AND t_classes.table_id = t_listes_tables.oid ; INSERT INTO eco.t_classes(code, texte, table_id, is_cti, sequence) SELECT w_dbsetup.code, w_dbsetup.texte, t_listes_tables.oid, w_dbsetup.is_cti, w_dbsetup.sequence FROM w_dbsetup, eco.t_listes_tables WHERE w_dbsetup.table_code = t_listes_tables.code AND t_listes_tables.oid::text || '-' || w_dbsetup.sequence::text NOT IN (SELECT table_id::text || '-' || sequence::text FROM eco.t_classes) AND w_dbsetup.texte NOT LIKE '*SUPPRIME%' AND NOT ( -- pour la classe de cle de répartition w_dbsetup.code = 'CTI_CLE_REP' -- la valeur de la cle est initialisée AND (SELECT code FROM eco.t_classes WHERE code = 'CTI_CLE_REP') IS NOT NULL )