diff --git a/CHANGELOG.md b/CHANGELOG.md index b24322eb87c44bd1d772b1b19dbd5f81fdd46760..639e927f7575708438ba76c1254f465de69b440c 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,9 @@ Objectif : Plafonds personnalisables # OSE 17 (à venir) Objectif : Connecteur Export OSE => Logiciel RH +## Corrections de bugs + +* Au niveau du connecteur Actul+, les formations fermées étaient ignorées, elles sont également synchronisées diff --git a/data/ddl/view/V_IMPORT_DEPUIS_DOSSIERS.sql b/data/ddl/view/V_IMPORT_DEPUIS_DOSSIERS.sql new file mode 100644 index 0000000000000000000000000000000000000000..99f1d227da405c6007e799f65bb6c0402ac50fe0 --- /dev/null +++ b/data/ddl/view/V_IMPORT_DEPUIS_DOSSIERS.sql @@ -0,0 +1,104 @@ +CREATE OR REPLACE FORCE VIEW V_IMPORT_DEPUIS_DOSSIERS AS +SELECT + t.annee_id, + t.intervenant_code, + si.code z_statut_id, + t.z_civilite_id, + t.nom_usuel, + t.prenom, + t.date_naissance, + t.nom_patronymique, + t.commune_naissance, + t.z_pays_naissance_id, + t.z_departement_naissance_id, + t.z_pays_nationalite_id, + t.tel_pro, + t.tel_perso, + t.email_pro, + t.email_perso, + t.adresse_precisions, + t.adresse_numero, + t.z_adresse_numero_compl_id, + t.z_adresse_voirie_id, + t.adresse_voie, + t.adresse_lieu_dit, + t.adresse_code_postal, + t.adresse_commune, + t.z_adresse_pays_id, + t.numero_insee, + t.numero_insee_provisoire, + t.iban, + t.bic, + t.rib_hors_sepa, + t.autre_1, + t.autre_2, + t.autre_3, + t.autre_4, + t.autre_5, + t.z_employeur_id +FROM + ( + SELECT + i.annee_id annee_id, + i.code intervenant_code, + MIN(ds.ordre) z_statut_ordre, + MAX(cv.libelle_court) z_civilite_id, + MAX(d.nom_usuel) nom_usuel, + MAX(d.prenom) prenom, + MAX(d.date_naissance) date_naissance, + MAX(d.nom_patronymique) nom_patronymique, + MAX(d.commune_naissance) commune_naissance, + MAX(pn.source_code) z_pays_naissance_id, + MAX(dep.source_code) z_departement_naissance_id, + MAX(pnat.source_code) z_pays_nationalite_id, + MAX(d.tel_pro) tel_pro, + MAX(d.tel_perso) tel_perso, + MAX(d.email_pro) email_pro, + MAX(d.email_perso) email_perso, + MAX(d.adresse_precisions) adresse_precisions, + MAX(d.adresse_numero) adresse_numero, + MAX(anc.code) z_adresse_numero_compl_id, + MAX(av.source_code) z_adresse_voirie_id, + MAX(d.adresse_voie) adresse_voie, + MAX(d.adresse_lieu_dit) adresse_lieu_dit, + MAX(d.adresse_code_postal) adresse_code_postal, + MAX(d.adresse_commune) adresse_commune, + MAX(padr.source_code) z_adresse_pays_id, + MAX(d.numero_insee) numero_insee, + MAX(d.numero_insee_provisoire) numero_insee_provisoire, + MAX(d.iban) iban, + MAX(d.bic) bic, + MAX(d.rib_hors_sepa) rib_hors_sepa, + MAX(d.autre_1) autre_1, + MAX(d.autre_2) autre_2, + MAX(d.autre_3) autre_3, + MAX(d.autre_4) autre_4, + MAX(d.autre_5) autre_5, + MAX(empl.source_code) z_employeur_id + FROM + intervenant i + JOIN statut_intervenant si ON si.id = i.statut_id + JOIN intervenant_dossier d ON d.intervenant_id = i.id + AND d.histo_destruction IS NULL + + JOIN type_validation tv ON tv.code = 'DONNEES_PERSO_PAR_COMP' + JOIN validation v ON v.intervenant_id = i.id + AND v.type_validation_id = tv.id + AND v.histo_destruction IS NULL + JOIN statut_intervenant ds ON ds.id = d.statut_id + JOIN civilite cv ON cv.id = d.civilite_id + LEFT JOIN pays pn ON pn.id = d.pays_naissance_id + LEFT JOIN departement dep ON dep.id = d.departement_naissance_id + LEFT JOIN pays pnat ON pnat.id = d.pays_nationalite_id + LEFT JOIN adresse_numero_compl anc ON anc.id = d.adresse_numero_compl_id + LEFT JOIN voirie av ON av.id = d.adresse_voirie_id + LEFT JOIN pays padr ON padr.id = d.adresse_pays_id + LEFT JOIN employeur empl ON empl.id = d.employeur_id + WHERE + i.histo_destruction IS NULL + AND si.code NOT IN ('AUTRES') + AND si.peut_saisir_dossier = 1 + GROUP BY + i.annee_id, i.code + ) t + JOIN statut_intervenant si ON si.ordre = t.z_statut_ordre diff --git "a/doc/Connecteurs-Import/G\303\251n\303\251rique/SRC_INTERVENANT.sql" "b/doc/Connecteurs-Import/G\303\251n\303\251rique/SRC_INTERVENANT.sql" index f3e445583daabde779c05f75dce0bb7d38fe2a74..ce9a966c27da37ff9698581aedda9869c23a4cf1 100644 --- "a/doc/Connecteurs-Import/G\303\251n\303\251rique/SRC_INTERVENANT.sql" +++ "b/doc/Connecteurs-Import/G\303\251n\303\251rique/SRC_INTERVENANT.sql" @@ -37,9 +37,13 @@ SELECT adresse_pays_id, numero_insee, numero_insee_provisoire, - iban, - bic, - rib_hors_sepa, + -- Pour synchroniser les coord. bancaires uniquement sur l'année n, il faut décommenter les 3 lignes ci-dessous et commenter les trois lignes d'après + --CASE WHEN annee_id < current_annee_id THEN i_iban ELSE s_iban END iban, + --CASE WHEN annee_id < current_annee_id THEN i_bic ELSE s_bic END bic, + --CASE WHEN annee_id < current_annee_id THEN i_rib_hors_sepa ELSE s_rib_hors_sepa END rib_hors_sepa, + s_iban iban, + s_bic bic, + s_rib_hors_sepa rib_hors_sepa, autre_1, autre_2, autre_3, @@ -240,9 +244,12 @@ FROM ( padr.id adresse_pays_id, s.numero_insee numero_insee, COALESCE(s.numero_insee_provisoire,i.numero_insee_provisoire,0) numero_insee_provisoire, - s.iban iban, - s.bic bic, - s.rib_hors_sepa rib_hors_sepa, + s.iban s_iban, + s.bic s_bic, + s.rib_hors_sepa s_rib_hors_sepa, + i.iban i_iban, + i.bic i_bic, + i.rib_hors_sepa i_rib_hors_sepa, s.autre_1 autre_1, s.autre_2 autre_2, s.autre_3 autre_3, diff --git a/doc/Connecteurs-Import/Octopus/MV_INTERVENANT.sql b/doc/Connecteurs-Import/Octopus/MV_INTERVENANT.sql index 4629fcfa8f93944311ed7ae7e4269d5764deb079..92d8645f666447d920abc7ae8a17ce549bea159c 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,16 +33,21 @@ 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 LEFT JOIN octo.v_individu_contrat_type_ose@octoprod icto ON uni.c_individu_chaine = icto.individu_id AND (icto.code_ose IN('DOCTOR') AND icto.d_debut - 184 <= SYSDATE) WHERE inds.d_debut - 184 <= SYSDATE --On ne remonte pas de statut autre pour ceux qui ont déjà un certain type de contrat @@ -49,6 +57,7 @@ WITH i AS ( OR (inds.t_enseignant = 'O' AND inds.t_heberge = 'O') OR (inds.t_vacataire = 'O') OR (inds.t_heberge = 'O')) + AND (vinds.t_doctorant='N' OR vinds.individu_id IS NULL) AND inds.c_source IN ('HARP', 'OCTO', 'SIHAM') ) t ), @@ -235,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'))