Commit 97e99ac4 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Merge branch 'release-2.0.0' into develop

parents 08dfc755 55505809
Loading
Loading
Loading
Loading
+28 −11
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
+13 −13
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@ return [
        //
        'synchros' => [
            [
                'name' => 'SYNCHRO_STRUCTURE',
                'name' => 'structure',
                'source' => [
                    'name'               => 'app',
                    'table'              => 'SRC_STRUCTURE',
@@ -72,7 +72,7 @@ return [
                ],
            ],
            [
                'name' => 'SYNCHRO_ETABLISSEMENT',
                'name' => 'etablissement',
                'source' => [
                    'name'               => 'app',
                    'table'              => 'SRC_ETABLISSEMENT',
@@ -90,7 +90,7 @@ return [
                ],
            ],
            [
                'name' => 'SYNCHRO_ECOLE_DOCT',
                'name' => 'ecole-doctorale',
                'source' => [
                    'name'               => 'app',
                    'table'              => 'SRC_ECOLE_DOCT',
@@ -108,7 +108,7 @@ return [
                ],
            ],
            [
                'name' => 'SYNCHRO_UNITE_RECH',
                'name' => 'unite-recherche',
                'source' => [
                    'name'               => 'app',
                    'table'              => 'SRC_UNITE_RECH',
@@ -126,7 +126,7 @@ return [
                ],
            ],
            [
                'name' => 'SYNCHRO_INDIVIDU',
                'name' => 'individu',
                'source' => [
                    'name'               => 'app',
                    'table'              => 'SRC_INDIVIDU',
@@ -144,7 +144,7 @@ return [
                ],
            ],
            [
                'name' => 'SYNCHRO_DOCTORANT',
                'name' => 'doctorant',
                'source' => [
                    'name'               => 'app',
                    'table'              => 'SRC_DOCTORANT',
@@ -162,7 +162,7 @@ return [
                ],
            ],
            [
                'name' => 'SYNCHRO_THESE',
                'name' => 'these',
                'source' => [
                    'name'               => 'app',
                    'table'              => 'SRC_THESE',
@@ -180,7 +180,7 @@ return [
                ],
            ],
            [
                'name' => 'SYNCHRO_THESE_ANNEE_UNIV',
                'name' => 'these-annee-univ',
                'source' => [
                    'name'               => 'app',
                    'table'              => 'SRC_THESE_ANNEE_UNIV',
@@ -198,7 +198,7 @@ return [
                ],
            ],
            [
                'name' => 'SYNCHRO_ROLE',
                'name' => 'role',
                'source' => [
                    'name'               => 'app',
                    'table'              => 'SRC_ROLE',
@@ -216,7 +216,7 @@ return [
                ],
            ],
            [
                'name' => 'SYNCHRO_ACTEUR',
                'name' => 'acteur',
                'source' => [
                    'name'               => 'app',
                    'table'              => 'SRC_ACTEUR',
@@ -234,7 +234,7 @@ return [
                ],
            ],
            [
                'name' => 'SYNCHRO_FINANCEMENT',
                'name' => 'financement',
                'source' => [
                    'name'               => 'app',
                    'table'              => 'SRC_FINANCEMENT',
@@ -252,7 +252,7 @@ return [
                ],
            ],
            [
                'name' => 'SYNCHRO_TITRE_ACCES',
                'name' => 'titre-acces',
                'source' => [
                    'name'               => 'app',
                    'table'              => 'SRC_TITRE_ACCES',
@@ -270,7 +270,7 @@ return [
                ],
            ],
            [
                'name' => 'SYNCHRO_VARIABLE',
                'name' => 'variable',
                'source' => [
                    'name'               => 'app',
                    'table'              => 'SRC_VARIABLE',

doc/release-notes/v1.5.0.md

deleted100644 → 0
+0 −230
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;
```
+211 −0

File changed.

Preview size limit exceeded, changes collapsed.