From 6aaa6d2bdf59eee02a93e1e94187bfd9f04680cb Mon Sep 17 00:00:00 2001
From: Antony Le Courtes <antony.lecourtes@unicaen.fr>
Date: Tue, 12 Oct 2021 11:15:58 +0200
Subject: [PATCH] Ajout d'un COALESCE sur les date de fin de contrat dans
 MV_INTERVENANT.sql

---
 doc/Connecteurs-Import/Octopus/MV_INTERVENANT.sql | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/doc/Connecteurs-Import/Octopus/MV_INTERVENANT.sql b/doc/Connecteurs-Import/Octopus/MV_INTERVENANT.sql
index 2ce013bd3a..46d9d9dd32 100644
--- a/doc/Connecteurs-Import/Octopus/MV_INTERVENANT.sql
+++ b/doc/Connecteurs-Import/Octopus/MV_INTERVENANT.sql
@@ -1,8 +1,9 @@
 CREATE
 MATERIALIZED VIEW MV_INTERVENANT AS
+
 WITH i AS (
 
-    SELECT DISTINCT code,
+     SELECT DISTINCT code,
                     MAX(z_statut_id) OVER (partition by code, z_statut_id)               z_statut_id,
 				    MAX(z_type) OVER (partition by code, z_statut_id)                    z_type,
                     MIN(source_code)    OVER (partition by code, z_statut_id)            source_code,
@@ -30,7 +31,7 @@ WITH i AS (
                       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
 
-             WHERE (icto.d_debut - 184 <= SYSDATE OR icto.d_fin >= SYSDATE)  AND icto.code_ose IS NOT NULL
+             WHERE (COALESCE(icto.d_debut, to_date('01/01/1900', 'dd/mm/YYYY')) - 184 <= SYSDATE OR COALESCE(icto.d_fin, to_date('01/01/9999', 'dd/mm/YYYY')) >= SYSDATE)  AND icto.code_ose IS NOT NULL
 
 
              UNION ALL
@@ -52,7 +53,7 @@ WITH i AS (
              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
-					  LEFT JOIN octo.v_individu_contrat_type_ose@octoprod icto ON uni.c_individu_chaine = icto.individu_id AND icto.d_debut - 184 <= SYSDATE AND icto.d_fin >= SYSDATE AND icto.code_ose IS NOT NULL AND icto.code_ose NOT IN('NON_AUTORISE')
+					  LEFT JOIN octo.v_individu_contrat_type_ose@octoprod icto ON uni.c_individu_chaine = icto.individu_id AND  COALESCE(icto.d_debut, to_date('01/01/1900', 'dd/mm/YYYY')) - 184 <= SYSDATE AND COALESCE(inds.d_fin, to_date('01/01/9999', 'dd/mm/YYYY'))  >= SYSDATE AND icto.code_ose IS NOT NULL AND icto.code_ose NOT IN('NON_AUTORISE')
              WHERE inds.d_debut - 184 <= SYSDATE
                --On ne remonte pas de statut autre pour ceux qui ont déjà un certain type de contrat
 	           --AND icto.individu_id IS NULL
@@ -65,6 +66,8 @@ WITH i AS (
                --AND (vinds.t_doctorant='N' OR vinds.individu_id IS NULL)
                AND inds.c_source IN ('HARP', 'OCTO', 'SIHAM')
          ) t
+
+
 ),
 
      --Trouver le tel pro principal de l'intervenant
@@ -281,4 +284,8 @@ FROM i
          LEFT JOIN compte ON compte.individu_id = induni.c_individu_chaine
     --On récupére la discipline adaptée directement dans Octopus
          LEFT JOIN cnua cnua ON cnua.individu_id = induni.c_individu_chaine
-WHERE i.validite_fin >= (SYSDATE - (365 * 2))
\ No newline at end of file
+WHERE i.validite_fin >= (SYSDATE - (365 * 2))
+
+
+
+
-- 
GitLab