Commit 084f018d authored by Laurent Lécluse's avatar Laurent Lécluse
Browse files

Merge branch 'master' of https://git.unicaen.fr/open-source/OSE into actul

parents 5ef6c603 a15577e4
......@@ -4,6 +4,17 @@
[OSE 14.20](#ose-1420-09062021)
# OSE 18 (à venir)
Objectif : Plafonds personnalisables
# OSE 17 (à venir)
Objectif : Connecteur Export OSE => Logiciel RH
......@@ -14,12 +25,33 @@ Objectif : Connecteur Export OSE => Logiciel RH
# OSE 16 (à venir)
Objectif : Connecteur import Actul+ & système différentiel pour comparer des charges d'enseignement
## Correction de bug
* Fiabilisation du calcul des charges d'enseignement (pb réglé au niveau des seuils qui n'étaient pas toujours les bons utilisés)
## Nouveautés
# OSE 15.5 (01/07/2021)
* Connecteur en import avec Actul+
* Outil différentiel d'export des charges d'enseignement
# OSE 15.6 (à venir)
## Correction de bug
* Dans ODF, la liste des éléments dont on peut forcer la synchronisation tient maintenant compte des données à restaurer en plus de celles à insérer
* Correction sur le rafraichissement du rôle de l'intervenant lors d'un changement d'année universitaire (#39020)
* Correction sur la gestion des pièces jointes lors de l'archivage de celles-ci afin que cela impacte correctement la feuille de route et les indicateurs notamment pour les nouvelles pièces jointes à valider (#39195)
* Niveau Charges, lors de la duplication d'un scénario, le périmètre est pris en compte lors de la duplication pour ne pas écraser des données d'autres composantes à tort
# OSE 15.5 (01/07/2021)
## Correction de bugs
* Retour de la vua matérialisée MV_EXT_SERVICE qui avait disparu de OSE par erreur depuis la V15
* Correction d'un problème de MAJ de MV_EXT_SERVICE depuis la 15.4 qui provoquait une erreur suite à la l'ajout d'une colonne sur l'export des services.
......@@ -36,7 +68,7 @@ Objectif : Connecteur import Actul+ & système différentiel pour comparer des c
* Formules de calcul de Sorbonne Nouvelle et de La Réunion
* Ajout de la colonne "code RH" à l'export CSV des services
## Correction de bug
## Correction de bugs
* Inversion d'affichage Fi et Fa dans administration > type de ressources (#38510)
* Meilleur rafraichissement de la feuille de route suite à la completion des données personnelles
......
......@@ -985,7 +985,7 @@ CREATE OR REPLACE PACKAGE BODY "FORMULE_UNICAEN" AS
element_modulateur
SET
histo_destruction = SYSDATE,
histo_destructeur_id = ose_divers.GET_OSE_UTILISATEUR_ID()
histo_destructeur_id = ose_parametre.get_ose_user
WHERE
id = em.id
;
......
......@@ -182,6 +182,7 @@ CREATE OR REPLACE PACKAGE BODY "OSE_CHARGENS" AS
PROCEDURE DUPLIQUER( source_id NUMERIC, destination_id NUMERIC, utilisateur_id NUMERIC, structure_id NUMERIC, noeuds VARCHAR2 DEFAULT '', liens VARCHAR2 DEFAULT '' ) IS
BEGIN
UNICAEN_TBL.ACTIV_TRIGGERS := FALSE;
/* Destruction de tous les liens antérieurs de la destination */
DELETE FROM
......@@ -194,6 +195,7 @@ CREATE OR REPLACE PACKAGE BODY "OSE_CHARGENS" AS
SELECT id FROM lien WHERE lien.structure_id = DUPLIQUER.STRUCTURE_ID
))
;
commit;
/* Duplication des liens */
INSERT INTO scenario_lien (
......@@ -222,6 +224,7 @@ CREATE OR REPLACE PACKAGE BODY "OSE_CHARGENS" AS
AND (DUPLIQUER.LIENS IS NULL OR DUPLIQUER.LIENS LIKE '%,' || lien_id || ',%' )
AND (DUPLIQUER.STRUCTURE_ID IS NULL OR l.structure_id = DUPLIQUER.STRUCTURE_ID)
;
commit;
/* Destruction de tous les noeuds antérieurs de la destination */
......@@ -235,6 +238,7 @@ CREATE OR REPLACE PACKAGE BODY "OSE_CHARGENS" AS
SELECT id FROM noeud WHERE noeud.structure_id = DUPLIQUER.STRUCTURE_ID
))
;
commit;
/* Duplication des noeuds */
INSERT INTO scenario_noeud (
......@@ -261,6 +265,7 @@ CREATE OR REPLACE PACKAGE BODY "OSE_CHARGENS" AS
AND (DUPLIQUER.NOEUDS IS NULL OR DUPLIQUER.NOEUDS LIKE '%,' || noeud_id || ',%' )
AND (DUPLIQUER.STRUCTURE_ID IS NULL OR n.structure_id = DUPLIQUER.STRUCTURE_ID)
;
commit;
/* Duplication des effectifs */
INSERT INTO scenario_noeud_effectif (
......@@ -292,6 +297,7 @@ CREATE OR REPLACE PACKAGE BODY "OSE_CHARGENS" AS
AND (DUPLIQUER.NOEUDS IS NULL OR DUPLIQUER.NOEUDS LIKE '%,' || sn_src.noeud_id || ',%' )
AND (DUPLIQUER.STRUCTURE_ID IS NULL OR n.structure_id = DUPLIQUER.STRUCTURE_ID)
;
commit;
/* Duplication des seuils */
INSERT INTO scenario_noeud_seuil (
......@@ -317,6 +323,11 @@ CREATE OR REPLACE PACKAGE BODY "OSE_CHARGENS" AS
AND (DUPLIQUER.NOEUDS IS NULL OR DUPLIQUER.NOEUDS LIKE '%,' || sn_src.noeud_id || ',%' )
AND (DUPLIQUER.STRUCTURE_ID IS NULL OR n.structure_id = DUPLIQUER.STRUCTURE_ID)
;
commit;
UNICAEN_TBL.ACTIV_TRIGGERS := TRUE;
UNICAEN_TBL.CALCULER( 'chargens', 'SCENARIO_ID', DUPLIQUER.destination_id );
END;
......
......@@ -8,7 +8,7 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_IMPORT" AS
FUNCTION get_current_user RETURN INTEGER IS
BEGIN
IF v_current_user IS NULL THEN
v_current_user := ose_divers.GET_OSE_UTILISATEUR_ID();
v_current_user := OSE_PARAMETRE.GET_OSE_USER();
END IF;
RETURN v_current_user;
END get_current_user;
......
......@@ -1414,7 +1414,7 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
pjd.intervenant_id intervenant_id,
CASE WHEN pjd.intervenant_id IS NULL THEN 0 ELSE 1 END demandee,
SUM(CASE WHEN pjf.id IS NULL THEN 0 ELSE 1 END) fournie,
SUM(CASE WHEN pjf.validation_id IS NULL THEN 0 ELSE 1 END) validee,
MAX(pjf.validation_id) keep(DENSE_RANK FIRST ORDER BY pjf.annee_id DESC) validee,
COALESCE(pjd.heures_pour_seuil,0) heures_pour_seuil,
COALESCE(pjd.obligatoire,1) obligatoire
FROM
......@@ -1437,7 +1437,7 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
pjf.intervenant_id intervenant_id,
0 demandee,
1 fournie,
SUM(CASE WHEN pjf.validation_id IS NULL THEN 0 ELSE 1 END) validee,
MAX(pjf.validation_id) keep(DENSE_RANK FIRST ORDER BY pjf.annee_id DESC) validee,
0 heures_pour_seuil,
0 obligatoire
FROM
......@@ -1457,7 +1457,7 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
intervenant_id,
demandee,
CASE WHEN fournie <> 0 THEN 1 ELSE 0 END fournie,
CASE WHEN validee <> 0 THEN 1 ELSE 0 END validee,
CASE WHEN validee IS NULL THEN 0 ELSE 1 END validee,
heures_pour_seuil,
obligatoire
FROM
......
......@@ -20,12 +20,6 @@ BEGIN
END IF;
-- Contrôle de l'unicité de SOURCE_CODE
SELECT COUNT(*) INTO cs FROM INTERVENANT WHERE id <> :NEW.id AND histo_destruction IS NULL AND source_code = :NEW.source_code AND annee_id = :NEW.annee_id AND statut_id = :NEW.statut_id;
IF cs > 0 THEN
raise_application_error(-20101, 'Une autre fiche intervenant contient la même valeur pour SOURCE_CODE.');
END IF;
-- Contrôle de l'unicité de STATUT_ID
SELECT COUNT(*) INTO cs FROM INTERVENANT WHERE
id <> :NEW.id AND histo_destruction IS NULL
......@@ -48,4 +42,4 @@ BEGIN
raise_application_error(-20101, 'L''utilisateur est déjà utilisé pour un autre intervenant. Merci d''en choisir un autre.');
END IF;
END;
\ No newline at end of file
END;
......@@ -6,7 +6,7 @@ WITH t AS (
pjd.intervenant_id intervenant_id,
CASE WHEN pjd.intervenant_id IS NULL THEN 0 ELSE 1 END demandee,
SUM(CASE WHEN pjf.id IS NULL THEN 0 ELSE 1 END) fournie,
SUM(CASE WHEN pjf.validation_id IS NULL THEN 0 ELSE 1 END) validee,
MAX(pjf.validation_id) keep(DENSE_RANK FIRST ORDER BY pjf.annee_id DESC) validee,
COALESCE(pjd.heures_pour_seuil,0) heures_pour_seuil,
COALESCE(pjd.obligatoire,1) obligatoire
FROM
......@@ -29,7 +29,7 @@ WITH t AS (
pjf.intervenant_id intervenant_id,
0 demandee,
1 fournie,
SUM(CASE WHEN pjf.validation_id IS NULL THEN 0 ELSE 1 END) validee,
MAX(pjf.validation_id) keep(DENSE_RANK FIRST ORDER BY pjf.annee_id DESC) validee,
0 heures_pour_seuil,
0 obligatoire
FROM
......@@ -49,7 +49,7 @@ SELECT
intervenant_id,
demandee,
CASE WHEN fournie <> 0 THEN 1 ELSE 0 END fournie,
CASE WHEN validee <> 0 THEN 1 ELSE 0 END validee,
CASE WHEN validee IS NULL THEN 0 ELSE 1 END validee,
heures_pour_seuil,
obligatoire
FROM
......
......@@ -8,7 +8,7 @@ SELECT
CASE WHEN annee_id < current_annee_id THEN intervenant_structure_id ELSE structure_id END structure_id,
CASE
WHEN action = 'insert' OR intervenant_histo = 1 THEN statut_source_id
WHEN action = 'update-no-statut' OR sync_statut = 0 OR annee_id < current_annee_id THEN statut_intervenant_id
WHEN (action = 'update-no-statut' OR sync_statut = 0 OR annee_id < current_annee_id) AND statut_intervenant_id IS NOT NULL THEN statut_intervenant_id
ELSE statut_source_id
END statut_id,
CASE WHEN annee_id < current_annee_id THEN intervenant_grade_id ELSE grade_id END grade_id,
......@@ -57,7 +57,7 @@ FROM (
CASE
-- Cas 1 : Si on est sur un statut multiple avec un non-autorisé et un autre statut, alors le non autorisé est supprimé
WHEN statut_intervenant_nautorise = 1 AND intervenant_local = 0 AND nb_intervenants > 1 AND intervenant_histo = 0 THEN 'drop'
WHEN statut_source_nautorise = 1 AND nb_sources > 1 THEN 'drop'
-- Cas 2 : Si on est sur les mêmes fiches, alors on synchronise tout le temps
......@@ -131,19 +131,37 @@ FROM (
END
-- Cas 9 : Quand il y a plusieurs sources pour un seul intervenant et qu'une au moins matche
-- Cas 9 : Quand il y a plusieurs sources et aucun intervenant
WHEN nb_sources > 1 AND nb_intervenants = 0 THEN CASE
-- Si un des statuts est NON AUTORISE
WHEN statut_source_nautorise = 1 THEN 'drop'
-- Si on est sur un statut "Autres" et qu'il y a un autre statut du même type
WHEN types_identiques = 0 AND statut_source_autre = 1 THEN 'drop'
-- sinon on laisse passer
ELSE 'insert'
END
-- Cas 10 : Quand il y a plusieurs sources pour un seul intervenant et qu'une au moins matche
WHEN nb_sources > 1 AND nb_intervenants = 1 AND nb_statuts_egaux = 1 THEN CASE
-- Si le nouveau statut est de type différent, alors on ajoute une nouvelle fiche
WHEN types_identiques = 0 THEN 'insert'
-- Si on a AUTRE+ NA en source et NA en intervenant => on transforme
WHEN nb_statut_source_nautorise > 0 AND statut_intervenant_nautorise = 1 THEN 'update'
-- Sinon, on ne prend pas en compte pour éviter tout problème
ELSE 'drop'
END
-- Cas 10 : Quand il y a plusieurs sources pour un seul intervenant et qu'aucun ne matche
-- Cas 11 : Quand il y a plusieurs sources pour un seul intervenant et qu'aucun ne matche
WHEN nb_sources > 1 AND nb_intervenants = 1 AND nb_statuts_egaux = 0 THEN CASE
-- Cas typique du vacataire qui a renseigné des données personnelles
WHEN intervenant_local = 0 AND types_identiques = 1 AND statut_source_autre = 1 AND statut_intervenant_autre = 0 AND sync_statut = 0 THEN 'update'
......@@ -157,7 +175,7 @@ FROM (
END
-- Cas 11 : Quand il y a 2 sources et 2 intervenants et qu'un seul matche
-- Cas 12 : Quand il y a 2 sources et 2 intervenants et qu'un seul matche
WHEN nb_sources = 2 AND nb_intervenants = 2 THEN CASE
-- Autres fiches de même type
......@@ -170,7 +188,7 @@ FROM (
END
-- Cas 12 : Pour le reste
-- Cas 13 : Pour le reste
ELSE CASE
-- Cas typique du vacataire qui a renseigné des données personnelles
......@@ -253,6 +271,8 @@ FROM (
COUNT(DISTINCT ssi.id) OVER (PARTITION BY s.code, a.id) nb_sources,
COUNT(DISTINCT i.id) OVER (PARTITION BY i.code, i.annee_id) nb_intervenants,
SUM(CASE WHEN ssi.id = i.statut_id THEN 1 ELSE 0 END) OVER (PARTITION BY s.code, a.id) nb_statuts_egaux,
COUNT(CASE WHEN ssi.code = 'AUTRES' THEN 1 ELSE 0 END) OVER (PARTITION BY s.code, a.id) nb_statut_source_autre,
COUNT(CASE WHEN ssi.code = 'NON_AUTORISE' THEN 1 ELSE 0 END) OVER (PARTITION BY s.code, a.id) nb_statut_source_nautorise,
MAX(CASE WHEN ssi.id = i.statut_id THEN ssi.id ELSE 0 END) OVER (PARTITION BY s.code, a.id) statuts_egaux_id
FROM
mv_intervenant s
......@@ -289,4 +309,4 @@ FROM (
) t
) t
WHERE
action <> 'drop'
\ No newline at end of file
action <> 'drop'
CREATE
MATERIALIZED VIEW MV_INTERVENANT AS
WITH i AS (
SELECT DISTINCT code,
z_statut_id,
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,
MIN(validite_debut) OVER (partition by code, z_statut_id) validite_debut,
MAX(validite_fin) OVER (partition by code, z_statut_id) validite_fin
FROM (
--Step 1 : On prend tous les individus qui ont ou ont eu un contrat à l'université
--Step 1 : On prend tous les individus qui ont ou ont eu un contrat à l'université
SELECT icto.individu_id code,
CASE
WHEN icto.code_ose = 'ENS_2ND_DEGRE' THEN 'ENS_2ND_DEG'
WHEN icto.code_ose IS NOT NULL THEN icto.code_ose
ELSE 'AUTRES' END z_statut_id,
CASE
WHEN (vinds.t_titulaire='O' OR vinds.t_cdi='O' OR vinds.t_cdd='O') THEN 'permanent'
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
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
WHERE icto.d_debut - 184 <= SYSDATE
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,
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
......@@ -127,20 +138,21 @@ WITH i AS (
MAX(REPLACE(d.bic, ' ', '')) bic
FROM intervenant i
JOIN intervenant_dossier d ON d.intervenant_id = i.id AND d.histo_destruction IS null
WHERE i.annee_id = 2020 AND i.histo_destruction IS NULL AND d.iban IS NOT NULL AND d.rib_hors_sepa = 0 AND i.source_id = '24'
WHERE i.annee_id = 2020 AND i.histo_destruction IS NULL AND d.iban IS NOT NULL AND d.rib_hors_sepa = 0 AND i.source_id = '24' AND i.code_rh IS NOT NULL
GROUP BY i.code
),
compte as
(
SELECT
MAX(individu_id) individu_id,
MAX(ldap_uid) KEEP (DENSE_RANK FIRST ORDER BY histo_creation) ldap_uid,
MAX(email) KEEP (DENSE_RANK FIRST ORDER BY histo_creation) email,
MAX(histo_creation) KEEP (DENSE_RANK FIRST ORDER BY histo_creation) histo_creation
MAX(indc.individu_id) individu_id,
MAX(indc.ldap_uid) KEEP (DENSE_RANK FIRST ORDER BY CASE WHEN regexp_like(ldap_uid, 'e[0-9]{8}') THEN 1 ELSE 0 END, indc.histo_creation) ldap_uid,
MAX(indc.email) KEEP (DENSE_RANK FIRST ORDER BY CASE WHEN regexp_like(ldap_uid, 'e[0-9]{8}') THEN 1 ELSE 0 END,indc.histo_creation) email,
MAX(indc.histo_creation) KEEP (DENSE_RANK FIRST ORDER BY CASE WHEN regexp_like(ldap_uid, 'e[0-9]{8}') THEN 1 ELSE 0 END,indc.histo_creation) histo_creation,
MAX(vindcvc.date_fin) KEEP (DENSE_RANK FIRST ORDER BY vindcvc.date_fin DESC) date_fin
FROM octo.individu_compte@octoprod indc
WHERE not regexp_like(ldap_uid, 'e[0-9]{8}')
AND indc.statut_id = 1
GROUP BY individu_id
JOIN octo.v_individu_cycle_vie_compte@octoprod vindcvc ON vindcvc.individu_id = indc.individu_id
WHERE indc.statut_id = 1
GROUP BY indc.individu_id
ORDER BY histo_creation ASC
)
......@@ -220,6 +232,7 @@ SELECT DISTINCT
CASE
WHEN i.validite_fin = to_date('01/01/9999', 'dd/mm/YYYY')
THEN NULL
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
FROM i
......@@ -252,5 +265,4 @@ 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))
WHERE i.validite_fin >= (SYSDATE - (365 * 2))
\ No newline at end of file
/* ====================================================================================================
# Detail du connecteur PARTIE A/ SIHAM_REF : des tables de référentiel - Avec user OSE
Detail du connecteur PARTIE A/ SIHAM_REF : des tables de référentiel - Avec user OSE
--------------------
PHASE1 : EXTRACTION_SIHAM CREATION SCHEMA TABLES INTERMEDIAIRES POUR OSE : nommage UM_<nom table>
ALTER TABLES : à executer POUR LES UNIVERSITES AYANT DEJA INSTALLE le Connecteur_SIHAM_OSE_v1.1_2019-12
A_1_T_OSE_alter_tables_utf8.sql : à executer POUR LES UNIVERSITES AYANT DEJA INSTALLE le Connecteur_SIHAM_OSE_v1.1_2019-12
-- v1.8 - 02/12/2019 - MYP : aucune modif pour ces tables de referentiel
-- v2.0 - 11/2020 à 01/2021 - MYP : V15 ajout VOIRIE
-- v1.8 - 02/12/19 MYP : aucune modif pour ces tables de referentiel
-- v2.0 - 11/20-01/21 MYP : V15 ajout VOIRIE
-- v2.1 - 28/05/21 MYP : retaillage zones adresse
=====================================================================================================*/
--======== PARTIE A/ SIHAM_REF A_1_T_OSE_alter_tables.sql ================================================
--- V2.0 OSETEST A FAIRE DANS CET ORDRE : -----------------------------------------------------------------
/* === V2.1 16/07/2021 ================================================================================*/
-- UM_ADRESSE_STRUCTURE.localite varchar2(26) => varchar2(40) -- le champs était tronqué par rapport à Siham
ALTER TABLE OSE.UM_ADRESSE_STRUCTURE MODIFY LOCALITE VARCHAR2(40 CHAR);
-- OSEPREP2 le 28/05/21
/* === V2.0 03/2021 ===================================================================================*/
--- A FAIRE DANS CET ORDRE et pas à pas en adaptant si besoin ---------------------------------------------
/*------------- UM_VOIRIE ------------------------------------*/
CREATE TABLE OSE.UM_VOIRIE -- v2.0
......@@ -73,3 +84,5 @@ insert into OSE.UM_PARAM_ETABL (CODE, VALEUR, COMMENTAIRE) values ('OSE_STATUT_D
insert into OSE.UM_PARAM_ETABL (CODE, VALEUR, COMMENTAIRE) values ('PREFIXE_MATRICULE','UDM','Préfixe établissement utilisé pour les matricules SIHAM');
insert into OSE.UM_PARAM_ETABL (CODE, VALEUR, COMMENTAIRE) values ('GESTION_STATUT','UNIQUE_MANUEL','Multi-statuts sur une année: 4 choix : UNIQUE_MANUEL/UNIQUE_AUTO/MULTI_MANUEL/MULTI_AUTO (UNIQUE_MANUEL : unique à valider manuellement (maj) dans UM_SYNCHRO_A_VALIDER - comme V14
/ UNIQUE_AUTO : unique et écrasé automatiquement/ MULTI_MANUEL : à valider manuellement (ajout ou maj) dans UM_SYNCHRO_A_VALIDER / MULTI_AUTO : inséré automatiquement en plus');
/* ====================================================================================================
A_2_F_OSE_function.sql
# Detail du connecteur PARTIE A/ SIHAM_REF : des tables de rfrentiel - Avec user OSE
PHASE1 : EXTRACTION_SIHAM CREATION SCHEMA TABLES INTERMEDIAIRES POUR OSE : nommage UM_<nom table>
......
/* ====================================================================================================
A_3_P_OSE_procedure_insert_tables_src.sql
# Detail du connecteur PARTIE A/ SIHAM_REF : des tables de référentiel - Avec user OSE
PHASE1 : EXTRACTION_SIHAM CREATION SCHEMA TABLES INTERMEDIAIRES POUR OSE : nommage UM_<nom table>
......@@ -15,8 +16,10 @@
OSE.UM_SYNCHRO_GRADE
----------------------------
-- v2.1 - 03/07/2020 - MYP : ll_grade recup sur 39 au lieu de 40 car trop long pour ose ensuite car utf8
-- v2.2 - 03/12/2020 - MYP : V15 : UM_SYNCHRO_VOIRIE + ajout NUMERO_COMPL et VOIRIE dans adresses structure
-- v2.1 - 03/07/20 MYP : ll_grade recup sur 39 au lieu de 40 car trop long pour ose ensuite car utf8
-- v2.2 - 03/12/20 MYP : V15 : UM_SYNCHRO_VOIRIE + ajout NUMERO_COMPL et VOIRIE dans adresses structure
-- v2.3 - 28/05/21 MYP : retaillage zones adresse
-- v2.4 - 11/06/21 MYP : raz numero_compl_code si inexistant dans OSE.ADRESSE_NUMERO_COMPL
=====================================================================================================*/
CREATE OR REPLACE PROCEDURE OSE.UM_SYNCHRO_PAYS (p_source_id number) IS
......@@ -48,13 +51,13 @@ cursor cur_pays is
, trunc(reg.dtfva) as date_fin_val
, trim(reg.cdcode) as source_code -- code SIHAM
from
hr.zd00@SIHAM_TEST reg -- reglementation pour dept naissance
,hr.zd01@SIHAM_TEST lreg -- libelle reglementation
hr.zd00@SIHAM_PREP reg -- reglementation pour dept naissance
,hr.zd01@SIHAM_PREP lreg -- libelle reglementation
,(
select trim(cont.cdcode) as continent, trim(cont_pays.idcoun) as code_pays
from
hr.zd00@SIHAM_TEST cont
,hr.zd4k@SIHAM_TEST cont_pays
hr.zd00@SIHAM_PREP cont
,hr.zd4k@SIHAM_PREP cont_pays
where cont.cdcode = 'EUROPE'
and cont.nudoss = cont_pays.nudoss
) v_europe
......@@ -157,13 +160,13 @@ cursor cur_departement is
from dual
UNION
select
decode(trim(reg.cdcode),'004','404', lpad(nvl(trim(reg.cdcode),'0'), 3, '0')) as source_code -- code SIHAM
decode(trim(reg.cdcode),'004','404', lpad(nvl(trim(reg.cdcode),'0'), 3, '0')) as source_code -- code SIHAM spécial pour ne pas confondre avec dép. 04
, trim(lreg.liblon) as ll_dept
, trim(lreg.libabr) as lc_dept
, 'Siham' as source
from
hr.zd00@SIHAM_TEST reg -- reglementation pour dept naissance
,hr.zd01@SIHAM_TEST lreg -- libelle reglementation
hr.zd00@SIHAM_PREP reg -- reglementation pour dept naissance
,hr.zd01@SIHAM_PREP lreg -- libelle reglementation
where
reg.cdstco(+)in ('UGJ')
and reg.nudoss=lreg.nudoss
......@@ -249,23 +252,23 @@ v_ll varchar2(120);
cursor cur_voirie is
select distinct trim(reg.cdcode) as code_voie
, upper(trim(l_reg.liblon)) as ll_voie
from zd00@SIHAM_TEST reg -- reglementation
, zd01@SIHAM_TEST l_reg -- libelle reglementation
from zd00@SIHAM_PREP reg -- reglementation
, zd01@SIHAM_PREP l_reg -- libelle reglementation
where cdstco = 'VNT' -- adresse VNT ou WAM
and reg.nudoss = l_reg.nudoss
UNION
select distinct trim(reg.cdcode) as code_voie
, upper(trim(l_reg.liblon)) as ll_voie
from zd00@SIHAM_TEST reg
, zd01@SIHAM_TEST l_reg
from zd00@SIHAM_PREP reg
, zd01@SIHAM_PREP l_reg
where cdstco = 'WAM'
-- code de WAM qui n existent pas en VNT car libelles pas identiques pour meme code !
and trim(reg.cdcode) in (select distinct trim(reg.cdcode)
from zd00@SIHAM_TEST reg
from zd00@SIHAM_PREP reg
where cdstco = 'WAM'
minus
select distinct trim(reg.cdcode)
from zd00@SIHAM_TEST reg
from zd00@SIHAM_PREP reg
where cdstco = 'VNT'
)
and reg.nudoss = l_reg.nudoss
......@@ -337,15 +340,15 @@ v_new_id number(9) := 0;
cursor cur_numero_compl is
select distinct trim(reg.cdcode) as code_adr_num_compl
, trim(l_reg.liblon) as ll_adr_num_compl
from zd00@SIHAM_TEST reg -- reglementation
, zd01@SIHAM_TEST l_reg -- libelle reglementation
from zd00@SIHAM_PREP reg -- reglementation
, zd01@SIHAM_PREP l_reg -- libelle reglementation
where cdstco = 'WAN'
and reg.nudoss = l_reg.nudoss
and trim(reg.cdcode) in
( -- code pas deja ixistant dans table livree
select distinct trim(reg.cdcode)
from zd00@SIHAM_TEST reg -- reglementation
,zd01@SIHAM_TEST l_reg -- libelle reglementation
from zd00@SIHAM_PREP reg -- reglementation
,zd01@SIHAM_PREP l_reg -- libelle reglementation
where cdstco = 'WAN'
and reg.nudoss = l_reg.nudoss
minus
......@@ -421,7 +424,7 @@ v_principale number(1);
v_telephone varchar2(20);
v_no_voie varchar2(10);
v_nom_voie varchar2(60);
v_localite varchar2(26);
v_localite varchar2(40); -- v2.3 - 28/05/2021
v_code_postal varchar2(15);
v_ville varchar2(26);
v_pays_code_insee varchar2(3);
......@@ -460,10 +463,10 @@ cursor cur_structure_mere is
,substr(trim(l_uo.lboush),1,25) as lc_uo
,trim(uo.idou00) as code_uo_niveau_voulu --v1.9
from
hr.ze00@SIHAM_TEST uo -- uo
,hr.ze01@SIHAM_TEST l_uo -- libelles_uo
,hr.ze0a@SIHAM_TEST h_situ -- histo_situations
,hr.zev2@SIHAM_TEST rattach -- rattachement u mixte
hr.ze00@SIHAM_PREP uo -- uo
,hr.ze01@SIHAM_PREP l_uo -- libelles_uo
,hr.ze0a@SIHAM_PREP h_situ -- histo_situations
,hr.zev2@SIHAM_PREP rattach -- rattachement u mixte
where trim(uo.idou00) = trim(v_structure_mere)
and uo.idos00 = 'HIE'
and trunc(uo.dtef00) <= p_date_systeme
......@@ -540,12 +543,12 @@ cursor cur_structure is
-- trim(UM_CODE_UO_NIVEAU_DESSUS(trim(uo_niv.idou00),2)) as uo_mere
,2 as niveau
from
hr.ze00@SIHAM_TEST uo -- uo
,hr.ze01@SIHAM_TEST l_uo -- libelles_uo
,hr.ze0a@SIHAM_TEST h_situ -- histo_situations