Loading bin/run-import.sh +28 −11 Changes for bin/run-import.sh: 28 added lines, 11 removed lines. Original line number Diff line number Diff line #!/bin/bash #!/usr/bin/env bash ############################################################################################# # Script de lancement de l'import et de la synchro pour un établissement. ############################################################################################# # # Usage : # $ run-import.sh "UCN" # Variables d'env requises : # ETAB : code de l'établissement à traiter, ex: "UCN". # # Variables d'env possibles : # SERVICE : code du service à traiter, ex: "variable". # ############################################################################################# usage() { cat << EOF Script de lancement de l'import et de la synchro pour un établissement. Usage: $0 <ETAB> Usage: ETAB=<etab> [SERVICE=<service>] $0 EOF exit 0; } [[ -z "$1" ]] && usage echo "Etablissement : $ETAB" echo "Service : $SERVICE" [[ -z "$ETAB" ]] && usage CURR_DIR=$(cd `dirname $0` && pwd) APP_DIR=$(cd ${CURR_DIR}/.. && pwd) ROOT_DIR=$(cd `dirname $0` && pwd)/.. ETAB="$1" echo "Répertoire courant : $CURR_DIR" echo "Répertoire de l'appli : $APP_DIR" php "$ROOT_DIR"/public/index.php import-all --etablissement="$ETAB" --synchronize=0 --breakOnServiceNotFound=0 && \ php "$ROOT_DIR"/public/index.php run synchro --all # >> "/tmp/cron_sygal_import_$1.log" 2>&1 && \ # Import (appel web service) puis Synchro if [ -z "$SERVICE" ]; then # tous les services set -x /usr/bin/php ${APP_DIR}/public/index.php import-all --etablissement=${ETAB} --synchronize=0 --breakOnServiceNotFound=0 && \ /usr/bin/php ${APP_DIR}/public/index.php run synchro --all else # seul service spécifié set -x /usr/bin/php ${APP_DIR}/public/index.php import --etablissement=${ETAB} --service=${SERVICE} --synchronize=0 && \ /usr/bin/php ${APP_DIR}/public/index.php run synchro --name=${SERVICE} fi No newline at end of file config/autoload/unicaen-db-import.global.php +13 −13 Changes for config/autoload/unicaen-db-import.global.php: 13 added lines, 13 removed lines. Original line number Diff line number Diff line Loading @@ -54,7 +54,7 @@ return [ // 'synchros' => [ [ 'name' => 'SYNCHRO_STRUCTURE', 'name' => 'structure', 'source' => [ 'name' => 'app', 'table' => 'SRC_STRUCTURE', Loading @@ -72,7 +72,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_ETABLISSEMENT', 'name' => 'etablissement', 'source' => [ 'name' => 'app', 'table' => 'SRC_ETABLISSEMENT', Loading @@ -90,7 +90,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_ECOLE_DOCT', 'name' => 'ecole-doctorale', 'source' => [ 'name' => 'app', 'table' => 'SRC_ECOLE_DOCT', Loading @@ -108,7 +108,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_UNITE_RECH', 'name' => 'unite-recherche', 'source' => [ 'name' => 'app', 'table' => 'SRC_UNITE_RECH', Loading @@ -126,7 +126,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_INDIVIDU', 'name' => 'individu', 'source' => [ 'name' => 'app', 'table' => 'SRC_INDIVIDU', Loading @@ -144,7 +144,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_DOCTORANT', 'name' => 'doctorant', 'source' => [ 'name' => 'app', 'table' => 'SRC_DOCTORANT', Loading @@ -162,7 +162,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_THESE', 'name' => 'these', 'source' => [ 'name' => 'app', 'table' => 'SRC_THESE', Loading @@ -180,7 +180,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_THESE_ANNEE_UNIV', 'name' => 'these-annee-univ', 'source' => [ 'name' => 'app', 'table' => 'SRC_THESE_ANNEE_UNIV', Loading @@ -198,7 +198,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_ROLE', 'name' => 'role', 'source' => [ 'name' => 'app', 'table' => 'SRC_ROLE', Loading @@ -216,7 +216,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_ACTEUR', 'name' => 'acteur', 'source' => [ 'name' => 'app', 'table' => 'SRC_ACTEUR', Loading @@ -234,7 +234,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_FINANCEMENT', 'name' => 'financement', 'source' => [ 'name' => 'app', 'table' => 'SRC_FINANCEMENT', Loading @@ -252,7 +252,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_TITRE_ACCES', 'name' => 'titre-acces', 'source' => [ 'name' => 'app', 'table' => 'SRC_TITRE_ACCES', Loading @@ -270,7 +270,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_VARIABLE', 'name' => 'variable', 'source' => [ 'name' => 'app', 'table' => 'SRC_VARIABLE', Loading doc/release-notes/v1.5.0.mddeleted 100644 → 0 +0 −230 Changes for doc/release-notes/v1.5.0.md: 0 added lines, 230 removed lines. Original line number Diff line number Diff line # Version 1.5.0 ## 1. Sur le serveur d'application - Placez-vous dans le répertoire de l'application puis lancez la commande suivante pour installer la nouvelle version : ```bash git fetch --tags && git checkout --force 1.5.0 && \ bash ./install.sh ``` - Selon le moteur PHP que vous avez installé, rechargez le service, exemple : - php7.0-fpm : `service php7.0-fpm reload` - apache2-mod-php7.0 : `service apache2 reload` ## 2. Dans la base de données ```sql -- -- Suppression de THESE.ANNEE_UNIV_1ERE_INSC obsolète et posant problème au module unicaen/import. -- create or replace view SRC_THESE as select null as id, tmp.source_code as source_code, src.id as source_id, e.id as etablissement_id, d.id as doctorant_id, coalesce(ed_substit.id, ed.id) as ecole_doct_id, coalesce(ur_substit.id, ur.id) as unite_rech_id, tmp.lib_ths as titre, tmp.eta_ths as etat_these, to_number(tmp.cod_neg_tre) as resultat, tmp.lib_int1_dis as lib_disc, tmp.dat_deb_ths as date_prem_insc, tmp.dat_prev_sou as date_prev_soutenance, tmp.dat_sou_ths as date_soutenance, tmp.dat_fin_cfd_ths as date_fin_confid, tmp.lib_etab_cotut as lib_etab_cotut, tmp.lib_pays_cotut as lib_pays_cotut, tmp.correction_possible as correc_autorisee, tem_sou_aut_ths as soutenance_autoris, dat_aut_sou_ths as date_autoris_soutenance, tem_avenant_cotut as tem_avenant_cotut, dat_abandon as date_abandon, dat_transfert_dep as date_transfert from tmp_these tmp JOIN STRUCTURE s ON s.SOURCE_CODE = tmp.ETABLISSEMENT_ID join etablissement e on e.structure_id = s.id join source src on src.code = tmp.source_id join doctorant d on d.source_code = tmp.doctorant_id left join ecole_doct ed on ed.source_code = tmp.ecole_doct_id left join unite_rech ur on ur.source_code = tmp.unite_rech_id left join structure_substit ss_ed on ss_ed.from_structure_id = ed.structure_id left join ecole_doct ed_substit on ed_substit.structure_id = ss_ed.to_structure_id left join structure_substit ss_ur on ss_ur.from_structure_id = ur.structure_id left join unite_rech ur_substit on ur_substit.structure_id = ss_ur.to_structure_id ; create or replace view V_DIFF_THESE as select diff."ID",diff."SOURCE_ID",diff."SOURCE_CODE",diff."IMPORT_ACTION",diff."CORREC_AUTORISEE",diff."DATE_ABANDON",diff."DATE_AUTORIS_SOUTENANCE",diff."DATE_FIN_CONFID",diff."DATE_PREM_INSC",diff."DATE_PREV_SOUTENANCE",diff."DATE_SOUTENANCE",diff."DATE_TRANSFERT",diff."DOCTORANT_ID",diff."ECOLE_DOCT_ID",diff."ETABLISSEMENT_ID",diff."ETAT_THESE",diff."LIB_DISC",diff."LIB_ETAB_COTUT",diff."LIB_PAYS_COTUT",diff."RESULTAT",diff."SOUTENANCE_AUTORIS",diff."TEM_AVENANT_COTUT",diff."TITRE",diff."UNITE_RECH_ID",diff."U_CORREC_AUTORISEE",diff."U_DATE_ABANDON",diff."U_DATE_AUTORIS_SOUTENANCE",diff."U_DATE_FIN_CONFID",diff."U_DATE_PREM_INSC",diff."U_DATE_PREV_SOUTENANCE",diff."U_DATE_SOUTENANCE",diff."U_DATE_TRANSFERT",diff."U_DOCTORANT_ID",diff."U_ECOLE_DOCT_ID",diff."U_ETABLISSEMENT_ID",diff."U_ETAT_THESE",diff."U_LIB_DISC",diff."U_LIB_ETAB_COTUT",diff."U_LIB_PAYS_COTUT",diff."U_RESULTAT",diff."U_SOUTENANCE_AUTORIS",diff."U_TEM_AVENANT_COTUT",diff."U_TITRE",diff."U_UNITE_RECH_ID" from (SELECT COALESCE( D.id, S.id ) id, COALESCE( S.source_id, D.source_id ) source_id, COALESCE( S.source_code, D.source_code ) source_code, CASE WHEN S.source_code IS NOT NULL AND D.source_code IS NULL THEN 'insert' WHEN S.source_code IS NOT NULL AND D.source_code IS NOT NULL AND (D.histo_destruction IS NULL OR D.histo_destruction > SYSDATE) THEN 'update' WHEN S.source_code IS NULL AND D.source_code IS NOT NULL AND (D.histo_destruction IS NULL OR D.histo_destruction > SYSDATE) THEN 'delete' WHEN S.source_code IS NOT NULL AND D.source_code IS NOT NULL AND D.histo_destruction IS NOT NULL AND D.histo_destruction <= SYSDATE THEN 'undelete' END import_action, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.CORREC_AUTORISEE ELSE S.CORREC_AUTORISEE END CORREC_AUTORISEE, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.DATE_ABANDON ELSE S.DATE_ABANDON END DATE_ABANDON, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.DATE_AUTORIS_SOUTENANCE ELSE S.DATE_AUTORIS_SOUTENANCE END DATE_AUTORIS_SOUTENANCE, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.DATE_FIN_CONFID ELSE S.DATE_FIN_CONFID END DATE_FIN_CONFID, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.DATE_PREM_INSC ELSE S.DATE_PREM_INSC END DATE_PREM_INSC, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.DATE_PREV_SOUTENANCE ELSE S.DATE_PREV_SOUTENANCE END DATE_PREV_SOUTENANCE, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.DATE_SOUTENANCE ELSE S.DATE_SOUTENANCE END DATE_SOUTENANCE, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.DATE_TRANSFERT ELSE S.DATE_TRANSFERT END DATE_TRANSFERT, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.DOCTORANT_ID ELSE S.DOCTORANT_ID END DOCTORANT_ID, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.ECOLE_DOCT_ID ELSE S.ECOLE_DOCT_ID END ECOLE_DOCT_ID, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.ETABLISSEMENT_ID ELSE S.ETABLISSEMENT_ID END ETABLISSEMENT_ID, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.ETAT_THESE ELSE S.ETAT_THESE END ETAT_THESE, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.LIB_DISC ELSE S.LIB_DISC END LIB_DISC, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.LIB_ETAB_COTUT ELSE S.LIB_ETAB_COTUT END LIB_ETAB_COTUT, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.LIB_PAYS_COTUT ELSE S.LIB_PAYS_COTUT END LIB_PAYS_COTUT, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.RESULTAT ELSE S.RESULTAT END RESULTAT, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.SOUTENANCE_AUTORIS ELSE S.SOUTENANCE_AUTORIS END SOUTENANCE_AUTORIS, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.TEM_AVENANT_COTUT ELSE S.TEM_AVENANT_COTUT END TEM_AVENANT_COTUT, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.TITRE ELSE S.TITRE END TITRE, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.UNITE_RECH_ID ELSE S.UNITE_RECH_ID END UNITE_RECH_ID, CASE WHEN D.CORREC_AUTORISEE <> S.CORREC_AUTORISEE OR (D.CORREC_AUTORISEE IS NULL AND S.CORREC_AUTORISEE IS NOT NULL) OR (D.CORREC_AUTORISEE IS NOT NULL AND S.CORREC_AUTORISEE IS NULL) THEN 1 ELSE 0 END U_CORREC_AUTORISEE, CASE WHEN D.DATE_ABANDON <> S.DATE_ABANDON OR (D.DATE_ABANDON IS NULL AND S.DATE_ABANDON IS NOT NULL) OR (D.DATE_ABANDON IS NOT NULL AND S.DATE_ABANDON IS NULL) THEN 1 ELSE 0 END U_DATE_ABANDON, CASE WHEN D.DATE_AUTORIS_SOUTENANCE <> S.DATE_AUTORIS_SOUTENANCE OR (D.DATE_AUTORIS_SOUTENANCE IS NULL AND S.DATE_AUTORIS_SOUTENANCE IS NOT NULL) OR (D.DATE_AUTORIS_SOUTENANCE IS NOT NULL AND S.DATE_AUTORIS_SOUTENANCE IS NULL) THEN 1 ELSE 0 END U_DATE_AUTORIS_SOUTENANCE, CASE WHEN D.DATE_FIN_CONFID <> S.DATE_FIN_CONFID OR (D.DATE_FIN_CONFID IS NULL AND S.DATE_FIN_CONFID IS NOT NULL) OR (D.DATE_FIN_CONFID IS NOT NULL AND S.DATE_FIN_CONFID IS NULL) THEN 1 ELSE 0 END U_DATE_FIN_CONFID, CASE WHEN D.DATE_PREM_INSC <> S.DATE_PREM_INSC OR (D.DATE_PREM_INSC IS NULL AND S.DATE_PREM_INSC IS NOT NULL) OR (D.DATE_PREM_INSC IS NOT NULL AND S.DATE_PREM_INSC IS NULL) THEN 1 ELSE 0 END U_DATE_PREM_INSC, CASE WHEN D.DATE_PREV_SOUTENANCE <> S.DATE_PREV_SOUTENANCE OR (D.DATE_PREV_SOUTENANCE IS NULL AND S.DATE_PREV_SOUTENANCE IS NOT NULL) OR (D.DATE_PREV_SOUTENANCE IS NOT NULL AND S.DATE_PREV_SOUTENANCE IS NULL) THEN 1 ELSE 0 END U_DATE_PREV_SOUTENANCE, CASE WHEN D.DATE_SOUTENANCE <> S.DATE_SOUTENANCE OR (D.DATE_SOUTENANCE IS NULL AND S.DATE_SOUTENANCE IS NOT NULL) OR (D.DATE_SOUTENANCE IS NOT NULL AND S.DATE_SOUTENANCE IS NULL) THEN 1 ELSE 0 END U_DATE_SOUTENANCE, CASE WHEN D.DATE_TRANSFERT <> S.DATE_TRANSFERT OR (D.DATE_TRANSFERT IS NULL AND S.DATE_TRANSFERT IS NOT NULL) OR (D.DATE_TRANSFERT IS NOT NULL AND S.DATE_TRANSFERT IS NULL) THEN 1 ELSE 0 END U_DATE_TRANSFERT, CASE WHEN D.DOCTORANT_ID <> S.DOCTORANT_ID OR (D.DOCTORANT_ID IS NULL AND S.DOCTORANT_ID IS NOT NULL) OR (D.DOCTORANT_ID IS NOT NULL AND S.DOCTORANT_ID IS NULL) THEN 1 ELSE 0 END U_DOCTORANT_ID, CASE WHEN D.ECOLE_DOCT_ID <> S.ECOLE_DOCT_ID OR (D.ECOLE_DOCT_ID IS NULL AND S.ECOLE_DOCT_ID IS NOT NULL) OR (D.ECOLE_DOCT_ID IS NOT NULL AND S.ECOLE_DOCT_ID IS NULL) THEN 1 ELSE 0 END U_ECOLE_DOCT_ID, CASE WHEN D.ETABLISSEMENT_ID <> S.ETABLISSEMENT_ID OR (D.ETABLISSEMENT_ID IS NULL AND S.ETABLISSEMENT_ID IS NOT NULL) OR (D.ETABLISSEMENT_ID IS NOT NULL AND S.ETABLISSEMENT_ID IS NULL) THEN 1 ELSE 0 END U_ETABLISSEMENT_ID, CASE WHEN D.ETAT_THESE <> S.ETAT_THESE OR (D.ETAT_THESE IS NULL AND S.ETAT_THESE IS NOT NULL) OR (D.ETAT_THESE IS NOT NULL AND S.ETAT_THESE IS NULL) THEN 1 ELSE 0 END U_ETAT_THESE, CASE WHEN D.LIB_DISC <> S.LIB_DISC OR (D.LIB_DISC IS NULL AND S.LIB_DISC IS NOT NULL) OR (D.LIB_DISC IS NOT NULL AND S.LIB_DISC IS NULL) THEN 1 ELSE 0 END U_LIB_DISC, CASE WHEN D.LIB_ETAB_COTUT <> S.LIB_ETAB_COTUT OR (D.LIB_ETAB_COTUT IS NULL AND S.LIB_ETAB_COTUT IS NOT NULL) OR (D.LIB_ETAB_COTUT IS NOT NULL AND S.LIB_ETAB_COTUT IS NULL) THEN 1 ELSE 0 END U_LIB_ETAB_COTUT, CASE WHEN D.LIB_PAYS_COTUT <> S.LIB_PAYS_COTUT OR (D.LIB_PAYS_COTUT IS NULL AND S.LIB_PAYS_COTUT IS NOT NULL) OR (D.LIB_PAYS_COTUT IS NOT NULL AND S.LIB_PAYS_COTUT IS NULL) THEN 1 ELSE 0 END U_LIB_PAYS_COTUT, CASE WHEN D.RESULTAT <> S.RESULTAT OR (D.RESULTAT IS NULL AND S.RESULTAT IS NOT NULL) OR (D.RESULTAT IS NOT NULL AND S.RESULTAT IS NULL) THEN 1 ELSE 0 END U_RESULTAT, CASE WHEN D.SOUTENANCE_AUTORIS <> S.SOUTENANCE_AUTORIS OR (D.SOUTENANCE_AUTORIS IS NULL AND S.SOUTENANCE_AUTORIS IS NOT NULL) OR (D.SOUTENANCE_AUTORIS IS NOT NULL AND S.SOUTENANCE_AUTORIS IS NULL) THEN 1 ELSE 0 END U_SOUTENANCE_AUTORIS, CASE WHEN D.TEM_AVENANT_COTUT <> S.TEM_AVENANT_COTUT OR (D.TEM_AVENANT_COTUT IS NULL AND S.TEM_AVENANT_COTUT IS NOT NULL) OR (D.TEM_AVENANT_COTUT IS NOT NULL AND S.TEM_AVENANT_COTUT IS NULL) THEN 1 ELSE 0 END U_TEM_AVENANT_COTUT, CASE WHEN D.TITRE <> S.TITRE OR (D.TITRE IS NULL AND S.TITRE IS NOT NULL) OR (D.TITRE IS NOT NULL AND S.TITRE IS NULL) THEN 1 ELSE 0 END U_TITRE, CASE WHEN D.UNITE_RECH_ID <> S.UNITE_RECH_ID OR (D.UNITE_RECH_ID IS NULL AND S.UNITE_RECH_ID IS NOT NULL) OR (D.UNITE_RECH_ID IS NOT NULL AND S.UNITE_RECH_ID IS NULL) THEN 1 ELSE 0 END U_UNITE_RECH_ID FROM THESE D FULL JOIN SRC_THESE S ON S.source_id = D.source_id AND S.source_code = D.source_code WHERE (S.source_code IS NOT NULL AND D.source_code IS NOT NULL AND D.histo_destruction IS NOT NULL AND D.histo_destruction <= SYSDATE) OR (S.source_code IS NULL AND D.source_code IS NOT NULL AND (D.histo_destruction IS NULL OR D.histo_destruction > SYSDATE)) OR (S.source_code IS NOT NULL AND D.source_code IS NULL) OR D.CORREC_AUTORISEE <> S.CORREC_AUTORISEE OR (D.CORREC_AUTORISEE IS NULL AND S.CORREC_AUTORISEE IS NOT NULL) OR (D.CORREC_AUTORISEE IS NOT NULL AND S.CORREC_AUTORISEE IS NULL) OR D.DATE_ABANDON <> S.DATE_ABANDON OR (D.DATE_ABANDON IS NULL AND S.DATE_ABANDON IS NOT NULL) OR (D.DATE_ABANDON IS NOT NULL AND S.DATE_ABANDON IS NULL) OR D.DATE_AUTORIS_SOUTENANCE <> S.DATE_AUTORIS_SOUTENANCE OR (D.DATE_AUTORIS_SOUTENANCE IS NULL AND S.DATE_AUTORIS_SOUTENANCE IS NOT NULL) OR (D.DATE_AUTORIS_SOUTENANCE IS NOT NULL AND S.DATE_AUTORIS_SOUTENANCE IS NULL) OR D.DATE_FIN_CONFID <> S.DATE_FIN_CONFID OR (D.DATE_FIN_CONFID IS NULL AND S.DATE_FIN_CONFID IS NOT NULL) OR (D.DATE_FIN_CONFID IS NOT NULL AND S.DATE_FIN_CONFID IS NULL) OR D.DATE_PREM_INSC <> S.DATE_PREM_INSC OR (D.DATE_PREM_INSC IS NULL AND S.DATE_PREM_INSC IS NOT NULL) OR (D.DATE_PREM_INSC IS NOT NULL AND S.DATE_PREM_INSC IS NULL) OR D.DATE_PREV_SOUTENANCE <> S.DATE_PREV_SOUTENANCE OR (D.DATE_PREV_SOUTENANCE IS NULL AND S.DATE_PREV_SOUTENANCE IS NOT NULL) OR (D.DATE_PREV_SOUTENANCE IS NOT NULL AND S.DATE_PREV_SOUTENANCE IS NULL) OR D.DATE_SOUTENANCE <> S.DATE_SOUTENANCE OR (D.DATE_SOUTENANCE IS NULL AND S.DATE_SOUTENANCE IS NOT NULL) OR (D.DATE_SOUTENANCE IS NOT NULL AND S.DATE_SOUTENANCE IS NULL) OR D.DATE_TRANSFERT <> S.DATE_TRANSFERT OR (D.DATE_TRANSFERT IS NULL AND S.DATE_TRANSFERT IS NOT NULL) OR (D.DATE_TRANSFERT IS NOT NULL AND S.DATE_TRANSFERT IS NULL) OR D.DOCTORANT_ID <> S.DOCTORANT_ID OR (D.DOCTORANT_ID IS NULL AND S.DOCTORANT_ID IS NOT NULL) OR (D.DOCTORANT_ID IS NOT NULL AND S.DOCTORANT_ID IS NULL) OR D.ECOLE_DOCT_ID <> S.ECOLE_DOCT_ID OR (D.ECOLE_DOCT_ID IS NULL AND S.ECOLE_DOCT_ID IS NOT NULL) OR (D.ECOLE_DOCT_ID IS NOT NULL AND S.ECOLE_DOCT_ID IS NULL) OR D.ETABLISSEMENT_ID <> S.ETABLISSEMENT_ID OR (D.ETABLISSEMENT_ID IS NULL AND S.ETABLISSEMENT_ID IS NOT NULL) OR (D.ETABLISSEMENT_ID IS NOT NULL AND S.ETABLISSEMENT_ID IS NULL) OR D.ETAT_THESE <> S.ETAT_THESE OR (D.ETAT_THESE IS NULL AND S.ETAT_THESE IS NOT NULL) OR (D.ETAT_THESE IS NOT NULL AND S.ETAT_THESE IS NULL) OR D.LIB_DISC <> S.LIB_DISC OR (D.LIB_DISC IS NULL AND S.LIB_DISC IS NOT NULL) OR (D.LIB_DISC IS NOT NULL AND S.LIB_DISC IS NULL) OR D.LIB_ETAB_COTUT <> S.LIB_ETAB_COTUT OR (D.LIB_ETAB_COTUT IS NULL AND S.LIB_ETAB_COTUT IS NOT NULL) OR (D.LIB_ETAB_COTUT IS NOT NULL AND S.LIB_ETAB_COTUT IS NULL) OR D.LIB_PAYS_COTUT <> S.LIB_PAYS_COTUT OR (D.LIB_PAYS_COTUT IS NULL AND S.LIB_PAYS_COTUT IS NOT NULL) OR (D.LIB_PAYS_COTUT IS NOT NULL AND S.LIB_PAYS_COTUT IS NULL) OR D.RESULTAT <> S.RESULTAT OR (D.RESULTAT IS NULL AND S.RESULTAT IS NOT NULL) OR (D.RESULTAT IS NOT NULL AND S.RESULTAT IS NULL) OR D.SOUTENANCE_AUTORIS <> S.SOUTENANCE_AUTORIS OR (D.SOUTENANCE_AUTORIS IS NULL AND S.SOUTENANCE_AUTORIS IS NOT NULL) OR (D.SOUTENANCE_AUTORIS IS NOT NULL AND S.SOUTENANCE_AUTORIS IS NULL) OR D.TEM_AVENANT_COTUT <> S.TEM_AVENANT_COTUT OR (D.TEM_AVENANT_COTUT IS NULL AND S.TEM_AVENANT_COTUT IS NOT NULL) OR (D.TEM_AVENANT_COTUT IS NOT NULL AND S.TEM_AVENANT_COTUT IS NULL) OR D.TITRE <> S.TITRE OR (D.TITRE IS NULL AND S.TITRE IS NOT NULL) OR (D.TITRE IS NOT NULL AND S.TITRE IS NULL) OR D.UNITE_RECH_ID <> S.UNITE_RECH_ID OR (D.UNITE_RECH_ID IS NULL AND S.UNITE_RECH_ID IS NOT NULL) OR (D.UNITE_RECH_ID IS NOT NULL AND S.UNITE_RECH_ID IS NULL) ) diff JOIN source on source.id = diff.source_id WHERE import_action IS NOT NULL AND source.importable = 1 ; alter table THESE drop column ANNEE_UNIV_1ERE_INSC ; -- -- Corrections de vues SRC pour le nouveau module unicaen/db-import. -- create or replace view SRC_STRUCTURE as SELECT NULL AS id, tmp.SOURCE_CODE as SOURCE_CODE, tmp.id as CODE, src.id AS SOURCE_ID, ts.id as TYPE_STRUCTURE_ID, tmp.SIGLE, tmp.LIBELLE --tmp.CODE_PAYS, --tmp.LIBELLE_PAYS FROM TMP_STRUCTURE tmp JOIN TYPE_STRUCTURE ts on ts.CODE = tmp.TYPE_STRUCTURE_ID JOIN SOURCE src ON src.CODE = tmp.SOURCE_ID ; -- -- Modification de colonnes posant problème au module unicaen/import. -- alter table ACTEUR modify HISTO_MODIFICATEUR_ID default null null; alter table ACTEUR modify HISTO_MODIFICATION default null null; alter table DOCTORANT modify HISTO_MODIFICATEUR_ID default null null; alter table DOCTORANT modify HISTO_MODIFICATION default null null; alter table ECOLE_DOCT modify HISTO_MODIFICATEUR_ID default null null; alter table ECOLE_DOCT modify HISTO_MODIFICATION default null null; alter table ETABLISSEMENT modify HISTO_MODIFICATEUR_ID default null null; alter table ETABLISSEMENT modify HISTO_MODIFICATION default null null; alter table FINANCEMENT modify HISTO_MODIFICATEUR_ID default null null; alter table FINANCEMENT modify HISTO_MODIFICATION default null null; alter table INDIVIDU modify HISTO_MODIFICATEUR_ID default null null; alter table INDIVIDU modify HISTO_MODIFICATION default null null; alter table ROLE modify HISTO_MODIFICATEUR_ID default null null; alter table ROLE modify HISTO_MODIFICATION default null null; alter table STRUCTURE modify HISTO_MODIFICATEUR_ID default null null; alter table STRUCTURE modify HISTO_MODIFICATION default null null; alter table THESE modify HISTO_MODIFICATEUR_ID default null null; alter table THESE modify HISTO_MODIFICATION default null null; alter table THESE_ANNEE_UNIV modify HISTO_MODIFICATEUR_ID default null null; alter table THESE_ANNEE_UNIV modify HISTO_MODIFICATION default null null; alter table TITRE_ACCES modify HISTO_MODIFICATEUR_ID default null null; alter table TITRE_ACCES modify HISTO_MODIFICATION default null null; alter table UNITE_RECH modify HISTO_MODIFICATEUR_ID default null null; alter table UNITE_RECH modify HISTO_MODIFICATION default null null; alter table VARIABLE modify HISTO_MODIFICATEUR_ID default null null; alter table VARIABLE modify HISTO_MODIFICATION default null null; -- -- Refonte des tables d'observation de la synchro. -- NB: Parmi les 6 instructions suivantes, vous pouvez ignorer celles qui échouent. -- alter table IMPORT_OBSERV_ETAB_RESULT rename constraint IMPORT_OBSERV_RESULT_PK to IMPORT_OBSERV_ETAB_RESULT_PK; alter table IMPORT_OBSERV_ETAB_RESULT rename constraint IMPORT_OBSERV_RESULT_IOE_FK to IMPORT_OBSERV_ETAB_RESU_IOE_FK; alter index IMPORT_OBSERV_RESULT_PK rename to IMPORT_OBSERV_ETAB_RESULT_PK; rename IMPORT_OBSERV_RESULT_ID_SEQ to IMPORT_OBSERV_ETAB_RESU_ID_SEQ; alter table IMPORT_OBSERV add ENABLED NUMBER(1) default 0 not null; create sequence IMPORT_OBSERV_RESULT_ID_SEQ; alter table IMPORT_OBSERV add FILTER CLOB; update IMPORT_OBSERV set ENABLED = 1; update IMPORT_OBSERV set FILTER = q'#ETABLISSEMENT_ID IN (SELECT ID FROM ETABLISSEMENT WHERE SOURCE_CODE = 'UCN')#'; create table IMPORT_OBSERV_RESULT ( ID NUMBER not null constraint IMPORT_OBSERV_RESULT_PK primary key, IMPORT_OBSERV_ID NUMBER not null constraint IMPORT_OBSERV_RESULT_IOE_FK references IMPORT_OBSERV on delete cascade, DATE_CREATION DATE default SYSDATE not null, SOURCE_CODE VARCHAR2(64 char) not null, RESULTAT CLOB not null, DATE_NOTIF date, -- colonne provisoire DATE_LIMITE_NOTIF date, -- colonne provisoire Z_IOER_ID NUMBER -- colonne provisoire pour migration ); create sequence IMPORT_OBSERV_RESULT_ID_SEQ; insert into IMPORT_OBSERV_RESULT (ID, IMPORT_OBSERV_ID, DATE_CREATION, SOURCE_CODE, RESULTAT, DATE_NOTIF, DATE_LIMITE_NOTIF, Z_IOER_ID) select IMPORT_OBSERV_RESULT_ID_SEQ.nextval, io.id, DATE_CREATION, SOURCE_CODE, RESULTAT, DATE_NOTIF, DATE_CREATION + interval '1' day, ioer.id from IMPORT_OBSERV_ETAB_RESULT ioer join IMPORT_OBSERV_ETAB ioe on ioe.id = ioer.IMPORT_OBSERV_ETAB_ID join IMPORT_OBSERV io on io.id = ioe.IMPORT_OBSERV_ID ; rename IMPORT_OBSERV_ETAB_RESULT to Z_IMPORT_OBSERV_ETAB_RESULT; rename IMPORT_OBSERV_ETAB to Z_IMPORT_OBSERV_ETAB; ``` doc/release-notes/v2.0.0.md +211 −0 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
bin/run-import.sh +28 −11 Changes for bin/run-import.sh: 28 added lines, 11 removed lines. Original line number Diff line number Diff line #!/bin/bash #!/usr/bin/env bash ############################################################################################# # Script de lancement de l'import et de la synchro pour un établissement. ############################################################################################# # # Usage : # $ run-import.sh "UCN" # Variables d'env requises : # ETAB : code de l'établissement à traiter, ex: "UCN". # # Variables d'env possibles : # SERVICE : code du service à traiter, ex: "variable". # ############################################################################################# usage() { cat << EOF Script de lancement de l'import et de la synchro pour un établissement. Usage: $0 <ETAB> Usage: ETAB=<etab> [SERVICE=<service>] $0 EOF exit 0; } [[ -z "$1" ]] && usage echo "Etablissement : $ETAB" echo "Service : $SERVICE" [[ -z "$ETAB" ]] && usage CURR_DIR=$(cd `dirname $0` && pwd) APP_DIR=$(cd ${CURR_DIR}/.. && pwd) ROOT_DIR=$(cd `dirname $0` && pwd)/.. ETAB="$1" echo "Répertoire courant : $CURR_DIR" echo "Répertoire de l'appli : $APP_DIR" php "$ROOT_DIR"/public/index.php import-all --etablissement="$ETAB" --synchronize=0 --breakOnServiceNotFound=0 && \ php "$ROOT_DIR"/public/index.php run synchro --all # >> "/tmp/cron_sygal_import_$1.log" 2>&1 && \ # Import (appel web service) puis Synchro if [ -z "$SERVICE" ]; then # tous les services set -x /usr/bin/php ${APP_DIR}/public/index.php import-all --etablissement=${ETAB} --synchronize=0 --breakOnServiceNotFound=0 && \ /usr/bin/php ${APP_DIR}/public/index.php run synchro --all else # seul service spécifié set -x /usr/bin/php ${APP_DIR}/public/index.php import --etablissement=${ETAB} --service=${SERVICE} --synchronize=0 && \ /usr/bin/php ${APP_DIR}/public/index.php run synchro --name=${SERVICE} fi No newline at end of file
config/autoload/unicaen-db-import.global.php +13 −13 Changes for config/autoload/unicaen-db-import.global.php: 13 added lines, 13 removed lines. Original line number Diff line number Diff line Loading @@ -54,7 +54,7 @@ return [ // 'synchros' => [ [ 'name' => 'SYNCHRO_STRUCTURE', 'name' => 'structure', 'source' => [ 'name' => 'app', 'table' => 'SRC_STRUCTURE', Loading @@ -72,7 +72,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_ETABLISSEMENT', 'name' => 'etablissement', 'source' => [ 'name' => 'app', 'table' => 'SRC_ETABLISSEMENT', Loading @@ -90,7 +90,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_ECOLE_DOCT', 'name' => 'ecole-doctorale', 'source' => [ 'name' => 'app', 'table' => 'SRC_ECOLE_DOCT', Loading @@ -108,7 +108,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_UNITE_RECH', 'name' => 'unite-recherche', 'source' => [ 'name' => 'app', 'table' => 'SRC_UNITE_RECH', Loading @@ -126,7 +126,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_INDIVIDU', 'name' => 'individu', 'source' => [ 'name' => 'app', 'table' => 'SRC_INDIVIDU', Loading @@ -144,7 +144,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_DOCTORANT', 'name' => 'doctorant', 'source' => [ 'name' => 'app', 'table' => 'SRC_DOCTORANT', Loading @@ -162,7 +162,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_THESE', 'name' => 'these', 'source' => [ 'name' => 'app', 'table' => 'SRC_THESE', Loading @@ -180,7 +180,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_THESE_ANNEE_UNIV', 'name' => 'these-annee-univ', 'source' => [ 'name' => 'app', 'table' => 'SRC_THESE_ANNEE_UNIV', Loading @@ -198,7 +198,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_ROLE', 'name' => 'role', 'source' => [ 'name' => 'app', 'table' => 'SRC_ROLE', Loading @@ -216,7 +216,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_ACTEUR', 'name' => 'acteur', 'source' => [ 'name' => 'app', 'table' => 'SRC_ACTEUR', Loading @@ -234,7 +234,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_FINANCEMENT', 'name' => 'financement', 'source' => [ 'name' => 'app', 'table' => 'SRC_FINANCEMENT', Loading @@ -252,7 +252,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_TITRE_ACCES', 'name' => 'titre-acces', 'source' => [ 'name' => 'app', 'table' => 'SRC_TITRE_ACCES', Loading @@ -270,7 +270,7 @@ return [ ], ], [ 'name' => 'SYNCHRO_VARIABLE', 'name' => 'variable', 'source' => [ 'name' => 'app', 'table' => 'SRC_VARIABLE', Loading
doc/release-notes/v1.5.0.mddeleted 100644 → 0 +0 −230 Changes for doc/release-notes/v1.5.0.md: 0 added lines, 230 removed lines. Original line number Diff line number Diff line # Version 1.5.0 ## 1. Sur le serveur d'application - Placez-vous dans le répertoire de l'application puis lancez la commande suivante pour installer la nouvelle version : ```bash git fetch --tags && git checkout --force 1.5.0 && \ bash ./install.sh ``` - Selon le moteur PHP que vous avez installé, rechargez le service, exemple : - php7.0-fpm : `service php7.0-fpm reload` - apache2-mod-php7.0 : `service apache2 reload` ## 2. Dans la base de données ```sql -- -- Suppression de THESE.ANNEE_UNIV_1ERE_INSC obsolète et posant problème au module unicaen/import. -- create or replace view SRC_THESE as select null as id, tmp.source_code as source_code, src.id as source_id, e.id as etablissement_id, d.id as doctorant_id, coalesce(ed_substit.id, ed.id) as ecole_doct_id, coalesce(ur_substit.id, ur.id) as unite_rech_id, tmp.lib_ths as titre, tmp.eta_ths as etat_these, to_number(tmp.cod_neg_tre) as resultat, tmp.lib_int1_dis as lib_disc, tmp.dat_deb_ths as date_prem_insc, tmp.dat_prev_sou as date_prev_soutenance, tmp.dat_sou_ths as date_soutenance, tmp.dat_fin_cfd_ths as date_fin_confid, tmp.lib_etab_cotut as lib_etab_cotut, tmp.lib_pays_cotut as lib_pays_cotut, tmp.correction_possible as correc_autorisee, tem_sou_aut_ths as soutenance_autoris, dat_aut_sou_ths as date_autoris_soutenance, tem_avenant_cotut as tem_avenant_cotut, dat_abandon as date_abandon, dat_transfert_dep as date_transfert from tmp_these tmp JOIN STRUCTURE s ON s.SOURCE_CODE = tmp.ETABLISSEMENT_ID join etablissement e on e.structure_id = s.id join source src on src.code = tmp.source_id join doctorant d on d.source_code = tmp.doctorant_id left join ecole_doct ed on ed.source_code = tmp.ecole_doct_id left join unite_rech ur on ur.source_code = tmp.unite_rech_id left join structure_substit ss_ed on ss_ed.from_structure_id = ed.structure_id left join ecole_doct ed_substit on ed_substit.structure_id = ss_ed.to_structure_id left join structure_substit ss_ur on ss_ur.from_structure_id = ur.structure_id left join unite_rech ur_substit on ur_substit.structure_id = ss_ur.to_structure_id ; create or replace view V_DIFF_THESE as select diff."ID",diff."SOURCE_ID",diff."SOURCE_CODE",diff."IMPORT_ACTION",diff."CORREC_AUTORISEE",diff."DATE_ABANDON",diff."DATE_AUTORIS_SOUTENANCE",diff."DATE_FIN_CONFID",diff."DATE_PREM_INSC",diff."DATE_PREV_SOUTENANCE",diff."DATE_SOUTENANCE",diff."DATE_TRANSFERT",diff."DOCTORANT_ID",diff."ECOLE_DOCT_ID",diff."ETABLISSEMENT_ID",diff."ETAT_THESE",diff."LIB_DISC",diff."LIB_ETAB_COTUT",diff."LIB_PAYS_COTUT",diff."RESULTAT",diff."SOUTENANCE_AUTORIS",diff."TEM_AVENANT_COTUT",diff."TITRE",diff."UNITE_RECH_ID",diff."U_CORREC_AUTORISEE",diff."U_DATE_ABANDON",diff."U_DATE_AUTORIS_SOUTENANCE",diff."U_DATE_FIN_CONFID",diff."U_DATE_PREM_INSC",diff."U_DATE_PREV_SOUTENANCE",diff."U_DATE_SOUTENANCE",diff."U_DATE_TRANSFERT",diff."U_DOCTORANT_ID",diff."U_ECOLE_DOCT_ID",diff."U_ETABLISSEMENT_ID",diff."U_ETAT_THESE",diff."U_LIB_DISC",diff."U_LIB_ETAB_COTUT",diff."U_LIB_PAYS_COTUT",diff."U_RESULTAT",diff."U_SOUTENANCE_AUTORIS",diff."U_TEM_AVENANT_COTUT",diff."U_TITRE",diff."U_UNITE_RECH_ID" from (SELECT COALESCE( D.id, S.id ) id, COALESCE( S.source_id, D.source_id ) source_id, COALESCE( S.source_code, D.source_code ) source_code, CASE WHEN S.source_code IS NOT NULL AND D.source_code IS NULL THEN 'insert' WHEN S.source_code IS NOT NULL AND D.source_code IS NOT NULL AND (D.histo_destruction IS NULL OR D.histo_destruction > SYSDATE) THEN 'update' WHEN S.source_code IS NULL AND D.source_code IS NOT NULL AND (D.histo_destruction IS NULL OR D.histo_destruction > SYSDATE) THEN 'delete' WHEN S.source_code IS NOT NULL AND D.source_code IS NOT NULL AND D.histo_destruction IS NOT NULL AND D.histo_destruction <= SYSDATE THEN 'undelete' END import_action, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.CORREC_AUTORISEE ELSE S.CORREC_AUTORISEE END CORREC_AUTORISEE, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.DATE_ABANDON ELSE S.DATE_ABANDON END DATE_ABANDON, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.DATE_AUTORIS_SOUTENANCE ELSE S.DATE_AUTORIS_SOUTENANCE END DATE_AUTORIS_SOUTENANCE, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.DATE_FIN_CONFID ELSE S.DATE_FIN_CONFID END DATE_FIN_CONFID, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.DATE_PREM_INSC ELSE S.DATE_PREM_INSC END DATE_PREM_INSC, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.DATE_PREV_SOUTENANCE ELSE S.DATE_PREV_SOUTENANCE END DATE_PREV_SOUTENANCE, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.DATE_SOUTENANCE ELSE S.DATE_SOUTENANCE END DATE_SOUTENANCE, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.DATE_TRANSFERT ELSE S.DATE_TRANSFERT END DATE_TRANSFERT, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.DOCTORANT_ID ELSE S.DOCTORANT_ID END DOCTORANT_ID, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.ECOLE_DOCT_ID ELSE S.ECOLE_DOCT_ID END ECOLE_DOCT_ID, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.ETABLISSEMENT_ID ELSE S.ETABLISSEMENT_ID END ETABLISSEMENT_ID, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.ETAT_THESE ELSE S.ETAT_THESE END ETAT_THESE, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.LIB_DISC ELSE S.LIB_DISC END LIB_DISC, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.LIB_ETAB_COTUT ELSE S.LIB_ETAB_COTUT END LIB_ETAB_COTUT, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.LIB_PAYS_COTUT ELSE S.LIB_PAYS_COTUT END LIB_PAYS_COTUT, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.RESULTAT ELSE S.RESULTAT END RESULTAT, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.SOUTENANCE_AUTORIS ELSE S.SOUTENANCE_AUTORIS END SOUTENANCE_AUTORIS, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.TEM_AVENANT_COTUT ELSE S.TEM_AVENANT_COTUT END TEM_AVENANT_COTUT, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.TITRE ELSE S.TITRE END TITRE, CASE WHEN S.source_code IS NULL AND D.source_code IS NOT NULL THEN D.UNITE_RECH_ID ELSE S.UNITE_RECH_ID END UNITE_RECH_ID, CASE WHEN D.CORREC_AUTORISEE <> S.CORREC_AUTORISEE OR (D.CORREC_AUTORISEE IS NULL AND S.CORREC_AUTORISEE IS NOT NULL) OR (D.CORREC_AUTORISEE IS NOT NULL AND S.CORREC_AUTORISEE IS NULL) THEN 1 ELSE 0 END U_CORREC_AUTORISEE, CASE WHEN D.DATE_ABANDON <> S.DATE_ABANDON OR (D.DATE_ABANDON IS NULL AND S.DATE_ABANDON IS NOT NULL) OR (D.DATE_ABANDON IS NOT NULL AND S.DATE_ABANDON IS NULL) THEN 1 ELSE 0 END U_DATE_ABANDON, CASE WHEN D.DATE_AUTORIS_SOUTENANCE <> S.DATE_AUTORIS_SOUTENANCE OR (D.DATE_AUTORIS_SOUTENANCE IS NULL AND S.DATE_AUTORIS_SOUTENANCE IS NOT NULL) OR (D.DATE_AUTORIS_SOUTENANCE IS NOT NULL AND S.DATE_AUTORIS_SOUTENANCE IS NULL) THEN 1 ELSE 0 END U_DATE_AUTORIS_SOUTENANCE, CASE WHEN D.DATE_FIN_CONFID <> S.DATE_FIN_CONFID OR (D.DATE_FIN_CONFID IS NULL AND S.DATE_FIN_CONFID IS NOT NULL) OR (D.DATE_FIN_CONFID IS NOT NULL AND S.DATE_FIN_CONFID IS NULL) THEN 1 ELSE 0 END U_DATE_FIN_CONFID, CASE WHEN D.DATE_PREM_INSC <> S.DATE_PREM_INSC OR (D.DATE_PREM_INSC IS NULL AND S.DATE_PREM_INSC IS NOT NULL) OR (D.DATE_PREM_INSC IS NOT NULL AND S.DATE_PREM_INSC IS NULL) THEN 1 ELSE 0 END U_DATE_PREM_INSC, CASE WHEN D.DATE_PREV_SOUTENANCE <> S.DATE_PREV_SOUTENANCE OR (D.DATE_PREV_SOUTENANCE IS NULL AND S.DATE_PREV_SOUTENANCE IS NOT NULL) OR (D.DATE_PREV_SOUTENANCE IS NOT NULL AND S.DATE_PREV_SOUTENANCE IS NULL) THEN 1 ELSE 0 END U_DATE_PREV_SOUTENANCE, CASE WHEN D.DATE_SOUTENANCE <> S.DATE_SOUTENANCE OR (D.DATE_SOUTENANCE IS NULL AND S.DATE_SOUTENANCE IS NOT NULL) OR (D.DATE_SOUTENANCE IS NOT NULL AND S.DATE_SOUTENANCE IS NULL) THEN 1 ELSE 0 END U_DATE_SOUTENANCE, CASE WHEN D.DATE_TRANSFERT <> S.DATE_TRANSFERT OR (D.DATE_TRANSFERT IS NULL AND S.DATE_TRANSFERT IS NOT NULL) OR (D.DATE_TRANSFERT IS NOT NULL AND S.DATE_TRANSFERT IS NULL) THEN 1 ELSE 0 END U_DATE_TRANSFERT, CASE WHEN D.DOCTORANT_ID <> S.DOCTORANT_ID OR (D.DOCTORANT_ID IS NULL AND S.DOCTORANT_ID IS NOT NULL) OR (D.DOCTORANT_ID IS NOT NULL AND S.DOCTORANT_ID IS NULL) THEN 1 ELSE 0 END U_DOCTORANT_ID, CASE WHEN D.ECOLE_DOCT_ID <> S.ECOLE_DOCT_ID OR (D.ECOLE_DOCT_ID IS NULL AND S.ECOLE_DOCT_ID IS NOT NULL) OR (D.ECOLE_DOCT_ID IS NOT NULL AND S.ECOLE_DOCT_ID IS NULL) THEN 1 ELSE 0 END U_ECOLE_DOCT_ID, CASE WHEN D.ETABLISSEMENT_ID <> S.ETABLISSEMENT_ID OR (D.ETABLISSEMENT_ID IS NULL AND S.ETABLISSEMENT_ID IS NOT NULL) OR (D.ETABLISSEMENT_ID IS NOT NULL AND S.ETABLISSEMENT_ID IS NULL) THEN 1 ELSE 0 END U_ETABLISSEMENT_ID, CASE WHEN D.ETAT_THESE <> S.ETAT_THESE OR (D.ETAT_THESE IS NULL AND S.ETAT_THESE IS NOT NULL) OR (D.ETAT_THESE IS NOT NULL AND S.ETAT_THESE IS NULL) THEN 1 ELSE 0 END U_ETAT_THESE, CASE WHEN D.LIB_DISC <> S.LIB_DISC OR (D.LIB_DISC IS NULL AND S.LIB_DISC IS NOT NULL) OR (D.LIB_DISC IS NOT NULL AND S.LIB_DISC IS NULL) THEN 1 ELSE 0 END U_LIB_DISC, CASE WHEN D.LIB_ETAB_COTUT <> S.LIB_ETAB_COTUT OR (D.LIB_ETAB_COTUT IS NULL AND S.LIB_ETAB_COTUT IS NOT NULL) OR (D.LIB_ETAB_COTUT IS NOT NULL AND S.LIB_ETAB_COTUT IS NULL) THEN 1 ELSE 0 END U_LIB_ETAB_COTUT, CASE WHEN D.LIB_PAYS_COTUT <> S.LIB_PAYS_COTUT OR (D.LIB_PAYS_COTUT IS NULL AND S.LIB_PAYS_COTUT IS NOT NULL) OR (D.LIB_PAYS_COTUT IS NOT NULL AND S.LIB_PAYS_COTUT IS NULL) THEN 1 ELSE 0 END U_LIB_PAYS_COTUT, CASE WHEN D.RESULTAT <> S.RESULTAT OR (D.RESULTAT IS NULL AND S.RESULTAT IS NOT NULL) OR (D.RESULTAT IS NOT NULL AND S.RESULTAT IS NULL) THEN 1 ELSE 0 END U_RESULTAT, CASE WHEN D.SOUTENANCE_AUTORIS <> S.SOUTENANCE_AUTORIS OR (D.SOUTENANCE_AUTORIS IS NULL AND S.SOUTENANCE_AUTORIS IS NOT NULL) OR (D.SOUTENANCE_AUTORIS IS NOT NULL AND S.SOUTENANCE_AUTORIS IS NULL) THEN 1 ELSE 0 END U_SOUTENANCE_AUTORIS, CASE WHEN D.TEM_AVENANT_COTUT <> S.TEM_AVENANT_COTUT OR (D.TEM_AVENANT_COTUT IS NULL AND S.TEM_AVENANT_COTUT IS NOT NULL) OR (D.TEM_AVENANT_COTUT IS NOT NULL AND S.TEM_AVENANT_COTUT IS NULL) THEN 1 ELSE 0 END U_TEM_AVENANT_COTUT, CASE WHEN D.TITRE <> S.TITRE OR (D.TITRE IS NULL AND S.TITRE IS NOT NULL) OR (D.TITRE IS NOT NULL AND S.TITRE IS NULL) THEN 1 ELSE 0 END U_TITRE, CASE WHEN D.UNITE_RECH_ID <> S.UNITE_RECH_ID OR (D.UNITE_RECH_ID IS NULL AND S.UNITE_RECH_ID IS NOT NULL) OR (D.UNITE_RECH_ID IS NOT NULL AND S.UNITE_RECH_ID IS NULL) THEN 1 ELSE 0 END U_UNITE_RECH_ID FROM THESE D FULL JOIN SRC_THESE S ON S.source_id = D.source_id AND S.source_code = D.source_code WHERE (S.source_code IS NOT NULL AND D.source_code IS NOT NULL AND D.histo_destruction IS NOT NULL AND D.histo_destruction <= SYSDATE) OR (S.source_code IS NULL AND D.source_code IS NOT NULL AND (D.histo_destruction IS NULL OR D.histo_destruction > SYSDATE)) OR (S.source_code IS NOT NULL AND D.source_code IS NULL) OR D.CORREC_AUTORISEE <> S.CORREC_AUTORISEE OR (D.CORREC_AUTORISEE IS NULL AND S.CORREC_AUTORISEE IS NOT NULL) OR (D.CORREC_AUTORISEE IS NOT NULL AND S.CORREC_AUTORISEE IS NULL) OR D.DATE_ABANDON <> S.DATE_ABANDON OR (D.DATE_ABANDON IS NULL AND S.DATE_ABANDON IS NOT NULL) OR (D.DATE_ABANDON IS NOT NULL AND S.DATE_ABANDON IS NULL) OR D.DATE_AUTORIS_SOUTENANCE <> S.DATE_AUTORIS_SOUTENANCE OR (D.DATE_AUTORIS_SOUTENANCE IS NULL AND S.DATE_AUTORIS_SOUTENANCE IS NOT NULL) OR (D.DATE_AUTORIS_SOUTENANCE IS NOT NULL AND S.DATE_AUTORIS_SOUTENANCE IS NULL) OR D.DATE_FIN_CONFID <> S.DATE_FIN_CONFID OR (D.DATE_FIN_CONFID IS NULL AND S.DATE_FIN_CONFID IS NOT NULL) OR (D.DATE_FIN_CONFID IS NOT NULL AND S.DATE_FIN_CONFID IS NULL) OR D.DATE_PREM_INSC <> S.DATE_PREM_INSC OR (D.DATE_PREM_INSC IS NULL AND S.DATE_PREM_INSC IS NOT NULL) OR (D.DATE_PREM_INSC IS NOT NULL AND S.DATE_PREM_INSC IS NULL) OR D.DATE_PREV_SOUTENANCE <> S.DATE_PREV_SOUTENANCE OR (D.DATE_PREV_SOUTENANCE IS NULL AND S.DATE_PREV_SOUTENANCE IS NOT NULL) OR (D.DATE_PREV_SOUTENANCE IS NOT NULL AND S.DATE_PREV_SOUTENANCE IS NULL) OR D.DATE_SOUTENANCE <> S.DATE_SOUTENANCE OR (D.DATE_SOUTENANCE IS NULL AND S.DATE_SOUTENANCE IS NOT NULL) OR (D.DATE_SOUTENANCE IS NOT NULL AND S.DATE_SOUTENANCE IS NULL) OR D.DATE_TRANSFERT <> S.DATE_TRANSFERT OR (D.DATE_TRANSFERT IS NULL AND S.DATE_TRANSFERT IS NOT NULL) OR (D.DATE_TRANSFERT IS NOT NULL AND S.DATE_TRANSFERT IS NULL) OR D.DOCTORANT_ID <> S.DOCTORANT_ID OR (D.DOCTORANT_ID IS NULL AND S.DOCTORANT_ID IS NOT NULL) OR (D.DOCTORANT_ID IS NOT NULL AND S.DOCTORANT_ID IS NULL) OR D.ECOLE_DOCT_ID <> S.ECOLE_DOCT_ID OR (D.ECOLE_DOCT_ID IS NULL AND S.ECOLE_DOCT_ID IS NOT NULL) OR (D.ECOLE_DOCT_ID IS NOT NULL AND S.ECOLE_DOCT_ID IS NULL) OR D.ETABLISSEMENT_ID <> S.ETABLISSEMENT_ID OR (D.ETABLISSEMENT_ID IS NULL AND S.ETABLISSEMENT_ID IS NOT NULL) OR (D.ETABLISSEMENT_ID IS NOT NULL AND S.ETABLISSEMENT_ID IS NULL) OR D.ETAT_THESE <> S.ETAT_THESE OR (D.ETAT_THESE IS NULL AND S.ETAT_THESE IS NOT NULL) OR (D.ETAT_THESE IS NOT NULL AND S.ETAT_THESE IS NULL) OR D.LIB_DISC <> S.LIB_DISC OR (D.LIB_DISC IS NULL AND S.LIB_DISC IS NOT NULL) OR (D.LIB_DISC IS NOT NULL AND S.LIB_DISC IS NULL) OR D.LIB_ETAB_COTUT <> S.LIB_ETAB_COTUT OR (D.LIB_ETAB_COTUT IS NULL AND S.LIB_ETAB_COTUT IS NOT NULL) OR (D.LIB_ETAB_COTUT IS NOT NULL AND S.LIB_ETAB_COTUT IS NULL) OR D.LIB_PAYS_COTUT <> S.LIB_PAYS_COTUT OR (D.LIB_PAYS_COTUT IS NULL AND S.LIB_PAYS_COTUT IS NOT NULL) OR (D.LIB_PAYS_COTUT IS NOT NULL AND S.LIB_PAYS_COTUT IS NULL) OR D.RESULTAT <> S.RESULTAT OR (D.RESULTAT IS NULL AND S.RESULTAT IS NOT NULL) OR (D.RESULTAT IS NOT NULL AND S.RESULTAT IS NULL) OR D.SOUTENANCE_AUTORIS <> S.SOUTENANCE_AUTORIS OR (D.SOUTENANCE_AUTORIS IS NULL AND S.SOUTENANCE_AUTORIS IS NOT NULL) OR (D.SOUTENANCE_AUTORIS IS NOT NULL AND S.SOUTENANCE_AUTORIS IS NULL) OR D.TEM_AVENANT_COTUT <> S.TEM_AVENANT_COTUT OR (D.TEM_AVENANT_COTUT IS NULL AND S.TEM_AVENANT_COTUT IS NOT NULL) OR (D.TEM_AVENANT_COTUT IS NOT NULL AND S.TEM_AVENANT_COTUT IS NULL) OR D.TITRE <> S.TITRE OR (D.TITRE IS NULL AND S.TITRE IS NOT NULL) OR (D.TITRE IS NOT NULL AND S.TITRE IS NULL) OR D.UNITE_RECH_ID <> S.UNITE_RECH_ID OR (D.UNITE_RECH_ID IS NULL AND S.UNITE_RECH_ID IS NOT NULL) OR (D.UNITE_RECH_ID IS NOT NULL AND S.UNITE_RECH_ID IS NULL) ) diff JOIN source on source.id = diff.source_id WHERE import_action IS NOT NULL AND source.importable = 1 ; alter table THESE drop column ANNEE_UNIV_1ERE_INSC ; -- -- Corrections de vues SRC pour le nouveau module unicaen/db-import. -- create or replace view SRC_STRUCTURE as SELECT NULL AS id, tmp.SOURCE_CODE as SOURCE_CODE, tmp.id as CODE, src.id AS SOURCE_ID, ts.id as TYPE_STRUCTURE_ID, tmp.SIGLE, tmp.LIBELLE --tmp.CODE_PAYS, --tmp.LIBELLE_PAYS FROM TMP_STRUCTURE tmp JOIN TYPE_STRUCTURE ts on ts.CODE = tmp.TYPE_STRUCTURE_ID JOIN SOURCE src ON src.CODE = tmp.SOURCE_ID ; -- -- Modification de colonnes posant problème au module unicaen/import. -- alter table ACTEUR modify HISTO_MODIFICATEUR_ID default null null; alter table ACTEUR modify HISTO_MODIFICATION default null null; alter table DOCTORANT modify HISTO_MODIFICATEUR_ID default null null; alter table DOCTORANT modify HISTO_MODIFICATION default null null; alter table ECOLE_DOCT modify HISTO_MODIFICATEUR_ID default null null; alter table ECOLE_DOCT modify HISTO_MODIFICATION default null null; alter table ETABLISSEMENT modify HISTO_MODIFICATEUR_ID default null null; alter table ETABLISSEMENT modify HISTO_MODIFICATION default null null; alter table FINANCEMENT modify HISTO_MODIFICATEUR_ID default null null; alter table FINANCEMENT modify HISTO_MODIFICATION default null null; alter table INDIVIDU modify HISTO_MODIFICATEUR_ID default null null; alter table INDIVIDU modify HISTO_MODIFICATION default null null; alter table ROLE modify HISTO_MODIFICATEUR_ID default null null; alter table ROLE modify HISTO_MODIFICATION default null null; alter table STRUCTURE modify HISTO_MODIFICATEUR_ID default null null; alter table STRUCTURE modify HISTO_MODIFICATION default null null; alter table THESE modify HISTO_MODIFICATEUR_ID default null null; alter table THESE modify HISTO_MODIFICATION default null null; alter table THESE_ANNEE_UNIV modify HISTO_MODIFICATEUR_ID default null null; alter table THESE_ANNEE_UNIV modify HISTO_MODIFICATION default null null; alter table TITRE_ACCES modify HISTO_MODIFICATEUR_ID default null null; alter table TITRE_ACCES modify HISTO_MODIFICATION default null null; alter table UNITE_RECH modify HISTO_MODIFICATEUR_ID default null null; alter table UNITE_RECH modify HISTO_MODIFICATION default null null; alter table VARIABLE modify HISTO_MODIFICATEUR_ID default null null; alter table VARIABLE modify HISTO_MODIFICATION default null null; -- -- Refonte des tables d'observation de la synchro. -- NB: Parmi les 6 instructions suivantes, vous pouvez ignorer celles qui échouent. -- alter table IMPORT_OBSERV_ETAB_RESULT rename constraint IMPORT_OBSERV_RESULT_PK to IMPORT_OBSERV_ETAB_RESULT_PK; alter table IMPORT_OBSERV_ETAB_RESULT rename constraint IMPORT_OBSERV_RESULT_IOE_FK to IMPORT_OBSERV_ETAB_RESU_IOE_FK; alter index IMPORT_OBSERV_RESULT_PK rename to IMPORT_OBSERV_ETAB_RESULT_PK; rename IMPORT_OBSERV_RESULT_ID_SEQ to IMPORT_OBSERV_ETAB_RESU_ID_SEQ; alter table IMPORT_OBSERV add ENABLED NUMBER(1) default 0 not null; create sequence IMPORT_OBSERV_RESULT_ID_SEQ; alter table IMPORT_OBSERV add FILTER CLOB; update IMPORT_OBSERV set ENABLED = 1; update IMPORT_OBSERV set FILTER = q'#ETABLISSEMENT_ID IN (SELECT ID FROM ETABLISSEMENT WHERE SOURCE_CODE = 'UCN')#'; create table IMPORT_OBSERV_RESULT ( ID NUMBER not null constraint IMPORT_OBSERV_RESULT_PK primary key, IMPORT_OBSERV_ID NUMBER not null constraint IMPORT_OBSERV_RESULT_IOE_FK references IMPORT_OBSERV on delete cascade, DATE_CREATION DATE default SYSDATE not null, SOURCE_CODE VARCHAR2(64 char) not null, RESULTAT CLOB not null, DATE_NOTIF date, -- colonne provisoire DATE_LIMITE_NOTIF date, -- colonne provisoire Z_IOER_ID NUMBER -- colonne provisoire pour migration ); create sequence IMPORT_OBSERV_RESULT_ID_SEQ; insert into IMPORT_OBSERV_RESULT (ID, IMPORT_OBSERV_ID, DATE_CREATION, SOURCE_CODE, RESULTAT, DATE_NOTIF, DATE_LIMITE_NOTIF, Z_IOER_ID) select IMPORT_OBSERV_RESULT_ID_SEQ.nextval, io.id, DATE_CREATION, SOURCE_CODE, RESULTAT, DATE_NOTIF, DATE_CREATION + interval '1' day, ioer.id from IMPORT_OBSERV_ETAB_RESULT ioer join IMPORT_OBSERV_ETAB ioe on ioe.id = ioer.IMPORT_OBSERV_ETAB_ID join IMPORT_OBSERV io on io.id = ioe.IMPORT_OBSERV_ID ; rename IMPORT_OBSERV_ETAB_RESULT to Z_IMPORT_OBSERV_ETAB_RESULT; rename IMPORT_OBSERV_ETAB to Z_IMPORT_OBSERV_ETAB; ```
doc/release-notes/v2.0.0.md +211 −0 File changed.Preview size limit exceeded, changes collapsed. Show changes