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;