From b587b680b40e2fa5bfce837bb94936df13cf3b7d Mon Sep 17 00:00:00 2001
From: Antony Le Courtes <antony.lecourtes@unicaen.fr>
Date: Thu, 23 Sep 2021 14:50:16 +0200
Subject: [PATCH] Ajustement de MV_INTERVENANT.sql pour alimenter la date de
 fin d'affectation uniquement avec la source SIHAM

---
 .../Octopus/MV_INTERVENANT.sql                | 30 +++++++++++--------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/doc/Connecteurs-Import/Octopus/MV_INTERVENANT.sql b/doc/Connecteurs-Import/Octopus/MV_INTERVENANT.sql
index 4832a8a4d7..92d8645f66 100644
--- a/doc/Connecteurs-Import/Octopus/MV_INTERVENANT.sql
+++ b/doc/Connecteurs-Import/Octopus/MV_INTERVENANT.sql
@@ -7,7 +7,9 @@ WITH i AS (
 				    MAX(z_type) OVER (partition by code, z_statut_id)                    z_type,
                     MIN(source_code)    OVER (partition by code, z_statut_id)            source_code,
                     MIN(validite_debut) OVER (partition by code, z_statut_id)            validite_debut,
-                    MAX(validite_fin)   OVER (partition by code, z_statut_id)            validite_fin
+                    MAX(validite_fin)   OVER (partition by code, z_statut_id)            validite_fin,
+                    MAX(fin_affectation_siham) OVER (partition by code, z_statut_id)     fin_affectation_siham
+
     FROM (
 	    	 --Step 1 : On prend tous les individus qui ont ou ont eu un contrat à l'université
              SELECT icto.individu_id                                            code,
@@ -20,7 +22,8 @@ WITH i AS (
                     	ELSE 'vacataire' END                                        z_type,
                     icto.id_orig                                                source_code,
                     COALESCE(icto.d_debut, to_date('01/01/1900', 'dd/mm/YYYY')) validite_debut,
-                    COALESCE(icto.d_fin, to_date('01/01/9999', 'dd/mm/YYYY'))   validite_fin
+                    COALESCE(icto.d_fin, to_date('01/01/9999', 'dd/mm/YYYY'))   validite_fin,
+                    NULL	   													fin_affectation_siham
              FROM octo.v_individu_contrat_type_ose@octoprod icto
                       JOIN octo.individu_unique@octoprod uni ON icto.individu_id = uni.c_individu_chaine
                       JOIN octo.v_individu_statut@octoprod vinds ON vinds.individu_id = uni.c_individu_chaine
@@ -30,14 +33,18 @@ WITH i AS (
 
              UNION ALL
              -- Step 2 : on prend tout le reste potentiel vacataire, notamment les hébergés
-             SELECT uni.c_individu_chaine                                       code,
-                    'AUTRES'                                                    z_statut_id,
+             SELECT uni.c_individu_chaine                                           code,
+                    'AUTRES'                                                        z_statut_id,
 					CASE
                     	WHEN (inds.t_titulaire='O' OR inds.t_cdi='O' OR inds.t_cdd='O') THEN 'permanent'
-                    	ELSE 'vacataire' END                                       z_type,
-                    uni.c_individu_chaine || '-autre'                           source_code,
-                    COALESCE(inds.d_debut, to_date('01/01/1900', 'dd/mm/YYYY')) validite_debut,
-                    COALESCE(inds.d_fin, to_date('01/01/9999', 'dd/mm/YYYY'))   validite_fin
+                    	ELSE 'vacataire' END                                        z_type,
+                    uni.c_individu_chaine || '-autre'                               source_code,
+                    COALESCE(inds.d_debut, to_date('01/01/1900', 'dd/mm/YYYY'))     validite_debut,
+                    COALESCE(inds.d_fin, to_date('01/01/9999', 'dd/mm/YYYY'))       validite_fin,
+                    CASE
+                        WHEN inds.c_source = 'SIHAM' THEN 	inds.d_fin
+                        ELSE NULL END		                                        fin_affectation_siham
+
              FROM octo.individu_unique@octoprod uni
                       JOIN octo.individu_statut@octoprod inds ON inds.individu_id = uni.c_individu_chaine
    					  LEFT JOIN octo.v_individu_statut@octoprod vinds ON vinds.individu_id = uni.c_individu_chaine
@@ -237,11 +244,8 @@ SELECT DISTINCT
         WHEN (i.z_type = 'vacataire' AND i.validite_fin < compte.date_fin AND i.validite_fin IS NOT NULL) THEN compte.date_fin
         ELSE i.validite_fin
         END                                                        validite_fin,
-    CASE
-        WHEN i.validite_fin = to_date('01/01/9999', 'dd/mm/YYYY')
-            THEN NULL
-        ELSE i.validite_fin
-        END                                                        affectation_fin
+    	i.fin_affectation_siham                                    affectation_fin
+
 FROM i
          JOIN induni
               ON i.code = induni.c_individu_chaine --AND induni.c_source IN ('HARP', 'OCTO', 'SIHAM'))
-- 
GitLab