You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

197 lines
11 KiB

return: text
lang: plpgsql
src: |
DECLARE
result TEXT;
BEGIN
DELETE FROM activite.t_actes_c
WHERE oid NOT IN (SELECT oid FROM base.t_actes);
UPDATE activite.t_actes_c SET
code = t_actes.code,
texte = t_actes.texte,
texte_court = t_actes.texte_court,
nomenclature = t_actes.nomenclature,
classant = t_actes.classant,
ccam_regroupement_id_1 = t_actes.ccam_regroupement_id_1,
ccam_regroupement_code_1 = t_ccam_regroupements_1.code,
ccam_regroupement_texte_1 = t_ccam_regroupements_1.texte,
ccam_regroupement_id_4 = t_actes.ccam_regroupement_id_4,
ccam_regroupement_code_4 = t_ccam_regroupements_4.code,
ccam_regroupement_texte_4 = t_ccam_regroupements_4.code,
chapitre_1_id = t_actes.chapitre_1_id,
chapitre_1_code = t_actes.chapitre_1_code,
chapitre_1_texte = t_actes.chapitre_1_texte,
chapitre_2_id = t_actes.chapitre_2_id,
chapitre_2_code = t_actes.chapitre_2_code,
chapitre_2_texte = t_actes.chapitre_2_texte,
chapitre_3_id = CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_id ELSE t_actes.chapitre_3_id END,
chapitre_3_code = CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_code ELSE t_actes.chapitre_3_code END,
chapitre_3_texte = CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_texte ELSE t_actes.chapitre_3_texte END,
chapitre_4_id = CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN
CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_id ELSE t_actes.chapitre_3_id END
ELSE t_actes.chapitre_4_id END,
chapitre_4_code = CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN
CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_code ELSE t_actes.chapitre_3_code END
ELSE t_actes.chapitre_4_code END,
chapitre_4_texte = CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN
CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_texte ELSE t_actes.chapitre_3_texte END
ELSE t_actes.chapitre_4_texte END,
type_id = t_actes.type_id,
type_code = t_actes.type_code,
type_texte = t_actes.type_texte,
topographie_1_id = t_actes.topographie_1_id,
topographie_1_code = t_actes.topographie_1_code,
topographie_1_texte = t_actes.topographie_1_texte,
topographie_2_id = t_actes.topographie_2_id,
topographie_2_code = t_actes.topographie_2_code,
topographie_2_texte = t_actes.topographie_2_texte,
action_id = t_actes.action_id,
action_code = t_actes.action_code,
action_texte = t_actes.action_texte,
technique_id = t_actes.technique_id,
technique_code = t_actes.technique_code,
technique_texte = t_actes.technique_texte
FROM base.t_actes
JOIN base.t_ccam_regroupements t_ccam_regroupements_1 ON t_actes.ccam_regroupement_id_1 = t_ccam_regroupements_1.oid
JOIN base.t_ccam_regroupements t_ccam_regroupements_4 ON t_actes.ccam_regroupement_id_4 = t_ccam_regroupements_4.oid
WHERE t_actes_c.oid = t_actes.oid AND
(
t_actes_c.code IS DISTINCT FROM t_actes.code OR
t_actes_c.texte IS DISTINCT FROM t_actes.texte OR
t_actes_c.texte_court IS DISTINCT FROM t_actes.texte_court OR
t_actes_c.nomenclature IS DISTINCT FROM t_actes.nomenclature OR
t_actes_c.classant IS DISTINCT FROM t_actes.classant OR
t_actes_c.ccam_regroupement_id_1 IS DISTINCT FROM t_actes.ccam_regroupement_id_1 OR
t_actes_c.ccam_regroupement_code_1 IS DISTINCT FROM t_ccam_regroupements_1.code OR
t_actes_c.ccam_regroupement_texte_1 IS DISTINCT FROM t_ccam_regroupements_1.texte OR
t_actes_c.ccam_regroupement_id_4 IS DISTINCT FROM t_actes.ccam_regroupement_id_4 OR
t_actes_c.ccam_regroupement_code_4 IS DISTINCT FROM t_ccam_regroupements_4.code OR
t_actes_c.ccam_regroupement_texte_4 IS DISTINCT FROM t_ccam_regroupements_4.code OR
t_actes_c.chapitre_1_id IS DISTINCT FROM t_actes.chapitre_1_id OR
t_actes_c.chapitre_1_code IS DISTINCT FROM t_actes.chapitre_1_code OR
t_actes_c.chapitre_1_texte IS DISTINCT FROM t_actes.chapitre_1_texte OR
t_actes_c.chapitre_2_id IS DISTINCT FROM t_actes.chapitre_2_id OR
t_actes_c.chapitre_2_code IS DISTINCT FROM t_actes.chapitre_2_code OR
t_actes_c.chapitre_2_texte IS DISTINCT FROM t_actes.chapitre_2_texte OR
t_actes_c.chapitre_3_id IS DISTINCT FROM CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_id ELSE t_actes.chapitre_3_id END OR
t_actes_c.chapitre_3_code IS DISTINCT FROM CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_code ELSE t_actes.chapitre_3_code END OR
t_actes_c.chapitre_3_texte IS DISTINCT FROM CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_texte ELSE t_actes.chapitre_3_texte END OR
t_actes_c.chapitre_4_id IS DISTINCT FROM CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN
CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_id ELSE t_actes.chapitre_3_id END
ELSE t_actes.chapitre_4_id END OR
t_actes_c.chapitre_4_code IS DISTINCT FROM CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN
CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_code ELSE t_actes.chapitre_3_code END
ELSE t_actes.chapitre_4_code END OR
t_actes_c.chapitre_4_texte IS DISTINCT FROM CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN
CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_texte ELSE t_actes.chapitre_3_texte END
ELSE t_actes.chapitre_4_texte END OR
t_actes_c.type_id IS DISTINCT FROM t_actes.type_id OR
t_actes_c.type_code IS DISTINCT FROM t_actes.type_code OR
t_actes_c.type_texte IS DISTINCT FROM t_actes.type_texte OR
t_actes_c.topographie_1_id IS DISTINCT FROM t_actes.topographie_1_id OR
t_actes_c.topographie_1_code IS DISTINCT FROM t_actes.topographie_1_code OR
t_actes_c.topographie_1_texte IS DISTINCT FROM t_actes.topographie_1_texte OR
t_actes_c.topographie_2_id IS DISTINCT FROM t_actes.topographie_2_id OR
t_actes_c.topographie_2_code IS DISTINCT FROM t_actes.topographie_2_code OR
t_actes_c.topographie_2_texte IS DISTINCT FROM t_actes.topographie_2_texte OR
t_actes_c.action_id IS DISTINCT FROM t_actes.action_id OR
t_actes_c.action_code IS DISTINCT FROM t_actes.action_code OR
t_actes_c.action_texte IS DISTINCT FROM t_actes.action_texte OR
t_actes_c.technique_id IS DISTINCT FROM t_actes.technique_id OR
t_actes_c.technique_code IS DISTINCT FROM t_actes.technique_code OR
t_actes_c.technique_texte IS DISTINCT FROM t_actes.technique_texte
);
INSERT INTO activite.t_actes_c(
oid,
code,
texte,
texte_court,
nomenclature,
classant,
ccam_regroupement_id_1,
ccam_regroupement_code_1,
ccam_regroupement_texte_1,
ccam_regroupement_id_4,
ccam_regroupement_code_4,
ccam_regroupement_texte_4,
chapitre_1_id,
chapitre_1_code,
chapitre_1_texte,
chapitre_2_id,
chapitre_2_code,
chapitre_2_texte,
chapitre_3_id,
chapitre_3_code,
chapitre_3_texte,
chapitre_4_id,
chapitre_4_code,
chapitre_4_texte,
type_id,
type_code,
type_texte,
topographie_1_id,
topographie_1_code,
topographie_1_texte,
topographie_2_id,
topographie_2_code,
topographie_2_texte,
action_id,
action_code,
action_texte,
technique_id,
technique_code,
technique_texte)
SELECT
t_actes.oid,
t_actes.code,
t_actes.texte,
t_actes.texte_court,
t_actes.nomenclature,
t_actes.classant,
t_actes.ccam_regroupement_id_1,
t_ccam_regroupements_1.code AS ccam_regroupement_code_1,
t_ccam_regroupements_1.texte_court AS ccam_regroupement_texte_1,
t_actes.ccam_regroupement_id_4,
t_ccam_regroupements_4.code AS ccam_regroupement_code_4,
t_ccam_regroupements_4.texte_court AS ccam_regroupement_texte_4,
t_actes.chapitre_1_id AS ccam_chapitre_1_id,
t_actes.chapitre_1_code AS ccam_chapitre_1_code,
t_actes.chapitre_1_texte AS ccam_chapitre_1_texte,
t_actes.chapitre_2_id AS ccam_chapitre_2_id,
t_actes.chapitre_2_code AS ccam_chapitre_2_code,
t_actes.chapitre_2_texte AS ccam_chapitre_2_texte,
CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_id ELSE t_actes.chapitre_3_id END AS ccam_chapitre_3_id,
CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_code ELSE t_actes.chapitre_3_code END AS ccam_chapitre_3_code,
CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_texte ELSE t_actes.chapitre_3_texte END AS ccam_chapitre_3_texte,
CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN
CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_id ELSE t_actes.chapitre_3_id END
ELSE t_actes.chapitre_4_id END AS ccam_chapitre_4_id,
CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN
CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_code ELSE t_actes.chapitre_3_code END
ELSE t_actes.chapitre_4_code END AS ccam_chapitre_4_code,
CASE WHEN substr(t_actes.chapitre_4_code::text, 10, 2) = '99'::text THEN
CASE WHEN substr(t_actes.chapitre_3_code::text, 7, 2) = '99'::text THEN t_actes.chapitre_2_texte ELSE t_actes.chapitre_3_texte END
ELSE t_actes.chapitre_4_texte END AS ccam_chapitre_4_texte,
t_actes.type_id AS ccam_type_id,
t_actes.type_code AS ccam_type_code,
t_actes.type_texte AS ccam_type_texte,
t_actes.topographie_1_id AS ccam_topographie_1_id,
t_actes.topographie_1_code AS ccam_topographie_1_code,
t_actes.topographie_1_texte AS ccam_topographie_1_texte,
t_actes.topographie_2_id AS ccam_topographie_2_id,
t_actes.topographie_2_code AS ccam_topographie_2_code,
t_actes.topographie_2_texte AS ccam_topographie_2_texte,
t_actes.action_id AS ccam_action_id,
t_actes.action_code AS ccam_action_code,
t_actes.action_texte AS ccam_action_texte,
t_actes.technique_id AS ccam_technique_id,
t_actes.technique_code AS ccam_technique_code,
t_actes.technique_texte AS ccam_technique_texte
FROM base.t_actes
JOIN base.t_ccam_regroupements t_ccam_regroupements_1 ON t_actes.ccam_regroupement_id_1 = t_ccam_regroupements_1.oid
JOIN base.t_ccam_regroupements t_ccam_regroupements_4 ON t_actes.ccam_regroupement_id_4 = t_ccam_regroupements_4.oid
WHERE (t_actes.nomenclature IN ('CCAM', 'NGAP') OR t_actes.oid = 0) AND t_actes.oid NOT IN (SELECT oid FROM activite.t_actes_c);
RETURN 'OK';
END;