Commit 5b7a2731 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Correction du dysfonctionnement des notifications envoyées lors de certains...

Correction du dysfonctionnement des notifications envoyées lors de certains événements sur les données importées
parent 0be81e25
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
Journal des modifications
=========================

1.4.5 (08/04/2020)
------------------

- Correction du dysfonctionnement des notifications envoyées lors de certains événements sur les données importées 
  (résultat d'une thèse passant à admis, corrections facultatives ou obligatoires attendues).


1.4.4 (03/04/2020)
------------------

+167 −121
Original line number Diff line number Diff line
@@ -5,16 +5,17 @@
-- ------------------------------------------------------------------------------------------------

--
-- 0/ Désactiver la synchro CRONée.
-- 1/ Désactiver l'import et l'observation des résultats d'import CRONés.
--
-- Ex: ssh root@host.domain.fr 'chmod -x /etc/cron.d/sygal'

--
-- 0/ Recherche des SOURCE_CODE des thèses.
-- 2/ Recherche d'une thèse dont le RESULTAT est à NULL.
--
select SOURCE_CODE from these where id in (25948);
select SOURCE_CODE from these where RESULTAT is null order by id desc;


-- 1/ Modif Vue src_these.
-- 3/ Modif Vue src_these.
--
-- Simule qu'une thèse a son résultat qui passe à 1 à l'issu de la synchro :
--
@@ -23,155 +24,200 @@ select SOURCE_CODE from these where id in (25948);
--   select text from all_views where view_name = 'SRC_THESE';
--
create or replace view src_these as
  with v as (
  with
   t as (
       select 'UCN::16635' these_source_code from dual
   ),
   v as (
      -- script initial de la vue src_these A VERIFIER !
      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,
        --     ed.id  AS ecole_doct_id,
        --     ur.id  AS unite_rech_id,
        ed.id                           AS ecole_doct_id_orig,
        ur.id                           AS unite_rech_id_orig,
        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
      FROM TMP_THESE tmp
        JOIN STRUCTURE s ON s.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 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,
            ed.id                           as ecole_doct_id_orig,
            ur.id                           as unite_rech_id_orig,
            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.ANNEE_UNIV_1ERE_INSC        as annee_univ_1ere_insc, -- deprecated
            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
)
  select * from v where SOURCE_CODE not in ('UCN::4783')
  select
      id,
      source_code,
      source_id,
      etablissement_id,
      doctorant_id,
      ecole_doct_id,
      unite_rech_id,
      ecole_doct_id_orig,
      unite_rech_id_orig,
      titre,
      etat_these,
      lib_disc,
      date_prem_insc,
      annee_univ_1ere_insc,
      date_prev_soutenance,
      date_soutenance,
      date_fin_confid,
      lib_etab_cotut,
      lib_pays_cotut,
      correc_autorisee,
      soutenance_autoris,
      date_autoris_soutenance,
      tem_avenant_cotut,
      date_abandon,
      date_transfert,
      1 as resultat
  from t, v where source_code in (these_source_code)
union
  select
    ID,
    SOURCE_CODE,
    SOURCE_ID,
    ETABLISSEMENT_ID,
    DOCTORANT_ID,
    ECOLE_DOCT_ID,
    UNITE_RECH_ID,
    ECOLE_DOCT_ID_ORIG,
    UNITE_RECH_ID_ORIG,
    TITRE,
    ETAT_THESE,
    1 as RESULTAT,
    LIB_DISC,
    DATE_PREM_INSC,
    DATE_PREV_SOUTENANCE,
    DATE_SOUTENANCE,
    DATE_FIN_CONFID,
    LIB_ETAB_COTUT,
    LIB_PAYS_COTUT,
    CORREC_AUTORISEE,
    SOUTENANCE_AUTORIS,
    DATE_AUTORIS_SOUTENANCE,
    TEM_AVENANT_COTUT
  FROM v where SOURCE_CODE in ('UCN::4783')
      id,
      source_code,
      source_id,
      etablissement_id,
      doctorant_id,
      ecole_doct_id,
      unite_rech_id,
      ecole_doct_id_orig,
      unite_rech_id_orig,
      titre,
      etat_these,
      lib_disc,
      date_prem_insc,
      annee_univ_1ere_insc,
      date_prev_soutenance,
      date_soutenance,
      date_fin_confid,
      lib_etab_cotut,
      lib_pays_cotut,
      correc_autorisee,
      soutenance_autoris,
      date_autoris_soutenance,
      tem_avenant_cotut,
      date_abandon,
      date_transfert,
      resultat
  from t, v where source_code not in (these_source_code)
;

--
-- 2/ Vérification que les thèses apparaissent bien dans la vue diff.
-- 4/ Vérification que les thèses apparaissent bien dans la vue diff.
--
select id, SOURCE_CODE, IMPORT_ACTION, CORREC_AUTORISEE, RESULTAT, U_CORREC_AUTORISEE, U_RESULTAT
from v_diff_these
where source_code in ('UCN::4783');
where source_code in ('UCN::16635');

--
-- 3/ Lancement procédure.
-- 5/ Lancement procédure.
--
begin app_import.STORE_OBSERV_RESULTS; end; commit;
/

--
-- 4/ Vérification présence d'un résultat d'observation.
-- 6/ Vérification présence d'un résultat d'observation.
--
select ior.id, io.CODE, ior.DATE_CREATION, ior.SOURCE_CODE, ior.RESULTAT, ior.DATE_NOTIF
from IMPORT_OBSERV_RESULT ior
join IMPORT_OBSERV io on ior.IMPORT_OBSERV_ID = io.ID
where SOURCE_CODE = 'UCN::4783'
select ioer.id, io.CODE, ioer.DATE_CREATION, ioer.SOURCE_CODE, ioer.RESULTAT, ioer.DATE_NOTIF, ioer.TOO_OLD
from IMPORT_OBSERV_ETAB_RESULT ioer
join IMPORT_OBSERV_ETAB ioe on ioer.IMPORT_OBSERV_ETAB_ID = ioe.ID
join IMPORT_OBSERV io on ioe.IMPORT_OBSERV_ID = io.ID
where SOURCE_CODE = 'UCN::16635'
order by DATE_CREATION desc
;

--
-- 5/ Lancer le script PHP de traitement des résultats d'observation :
-- 7/ Lancer le script PHP de traitement des résultats d'observation :
--    un mail devrait être envoyé...
--
-- $ php public/index.php process-observed-import-results
-- $ php public/index.php process-observed-import-results --etablissement=UCN --import-observ=RESULTAT_PASSE_A_ADMIS --source-code=UCN::16635


--
-- 6/ Restauration Vue src_these initiale.
-- 8/ Vérification date de notif enregistrée.
--
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,
    --     ed.id  AS ecole_doct_id,
    --     ur.id  AS unite_rech_id,
    ed.id                           AS ecole_doct_id_orig,
    ur.id                           AS unite_rech_id_orig,
    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
  FROM TMP_THESE tmp
    JOIN STRUCTURE s ON s.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
select ioer.id, io.CODE, ioer.DATE_CREATION, ioer.SOURCE_CODE, ioer.RESULTAT, ioer.DATE_NOTIF, ioer.TOO_OLD
from IMPORT_OBSERV_ETAB_RESULT ioer
         join IMPORT_OBSERV_ETAB ioe on ioer.IMPORT_OBSERV_ETAB_ID = ioe.ID
         join IMPORT_OBSERV io on ioe.IMPORT_OBSERV_ID = io.ID
where SOURCE_CODE = 'UCN::16635'
order by DATE_CREATION desc
;

    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
--
-- 9/ Restauration Vue src_these initiale.
--
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,
    ed.id                           as ecole_doct_id_orig,
    ur.id                           as unite_rech_id_orig,
    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.ANNEE_UNIV_1ERE_INSC        as annee_univ_1ere_insc, -- deprecated
    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
;


--
-- 7/ Réactiver la synchro CRONée.
-- 10/ Réactiver la synchro CRONée.
--
-- Ex: ssh root@host.domain.fr 'chmod +x /etc/cron.d/sygal'
+156 −0
Original line number Diff line number Diff line
--------------------------------------------------------------------------------------
--         Migration des tables impliquées dans l'observation de l'import.
--------------------------------------------------------------------------------------

--
-- IMPORT_OBSERV_ETAB
--
create table IMPORT_OBSERV_ETAB (
    ID NUMBER not null constraint IMPORT_OBSERV_ETAB_PK primary key,
    IMPORT_OBSERV_ID NUMBER not null constraint IMPORT_OBSERV_ETAB_OBSERV_FK references IMPORT_OBSERV on delete cascade,
    ETABLISSEMENT_ID NUMBER not null constraint IMPORT_OBSERV_ETAB_ETAB_FK references IMPORT_OBSERV_ETAB on delete cascade,
    ENABLED NUMBER(1) default 0 not null,
    constraint IMPORT_OBSERV_ETAB_UN unique (IMPORT_OBSERV_ID, ETABLISSEMENT_ID)
);
INSERT INTO IMPORT_OBSERV_ETAB (ID, IMPORT_OBSERV_ID, ETABLISSEMENT_ID, ENABLED)
select IMPORT_OBSERV_ETAB_ID_SEQ.nextval, io.id, e.id, io.ENABLED
from IMPORT_OBSERV io,
     ETABLISSEMENT e
where e.EST_MEMBRE = 1;

--
-- IMPORT_OBSERV
--
alter table IMPORT_OBSERV drop column ENABLED;

--
-- IMPORT_OBSERV_RESULT
--
alter table IMPORT_OBSERV_RESULT add IMPORT_OBSERV_ETAB_ID NUMBER /*not null ajouté plus bas*/;
update IMPORT_OBSERV_RESULT ioer set IMPORT_OBSERV_ETAB_ID = (
    select ioe.id
    from IMPORT_OBSERV_ETAB ioe,
         ETABLISSEMENT e
    where e.SOURCE_CODE = substr(ioer.SOURCE_CODE, 1, instr(ioer.SOURCE_CODE, '::') - 1)
      and ioe.ETABLISSEMENT_ID = e.id
      and ioe.IMPORT_OBSERV_ID = ioer.IMPORT_OBSERV_ID
);
alter table IMPORT_OBSERV_RESULT add TOO_OLD NUMBER(1) default 0 not null;
alter table IMPORT_OBSERV_RESULT modify IMPORT_OBSERV_ETAB_ID not null;
alter table IMPORT_OBSERV_RESULT drop column IMPORT_OBSERV_ID;
rename IMPORT_OBSERV_RESULT to IMPORT_OBSERV_ETAB_RESULT ;
alter table IMPORT_OBSERV_ETAB_RESULT
    add constraint IMPORT_OBSERV_ETAB_RESULT_IOE_FK
        foreign key (IMPORT_OBSERV_ETAB_ID) references IMPORT_OBSERV_ETAB (ID) on delete cascade;
create index IMPORT_OBSERV_ETAB_RES_IOE_IDX on IMPORT_OBSERV_ETAB_RESULT (IMPORT_OBSERV_ETAB_ID);

--
--
--
create or replace PACKAGE "APP_IMPORT" IS
    PROCEDURE REFRESH_MV( mview_name VARCHAR2 );
    PROCEDURE SYNC_TABLES;
    PROCEDURE SYNCHRONISATION;
    PROCEDURE STORE_OBSERV_RESULTS;
END APP_IMPORT;

create or replace PACKAGE BODY "APP_IMPORT"
IS
    PROCEDURE REFRESH_MV( mview_name VARCHAR2 ) IS
    BEGIN
        DBMS_MVIEW.REFRESH(mview_name, 'C');
    EXCEPTION WHEN OTHERS THEN
        UNICAEN_IMPORT.SYNC_LOG( SQLERRM, mview_name );
    END;

    PROCEDURE SYNC_TABLES
        IS
    BEGIN
        -- mise à jour des tables à partir des vues sources
        -- NB: l'ordre importe !
        UNICAEN_IMPORT.MAJ_STRUCTURE();
        UNICAEN_IMPORT.MAJ_ETABLISSEMENT();
        UNICAEN_IMPORT.MAJ_ECOLE_DOCT();
        UNICAEN_IMPORT.MAJ_UNITE_RECH();
        UNICAEN_IMPORT.MAJ_INDIVIDU();
        UNICAEN_IMPORT.MAJ_DOCTORANT();
        UNICAEN_IMPORT.MAJ_THESE();
        UNICAEN_IMPORT.MAJ_THESE_ANNEE_UNIV();
        UNICAEN_IMPORT.MAJ_ROLE();
        UNICAEN_IMPORT.MAJ_ACTEUR();
        UNICAEN_IMPORT.MAJ_VARIABLE();
        UNICAEN_IMPORT.MAJ_FINANCEMENT();
        UNICAEN_IMPORT.MAJ_TITRE_ACCES();
        REFRESH_MV('MV_RECHERCHE_THESE'); -- NB: à faire en dernier
    END;

    --
    -- Recherche des changements de type UPDATE concernant la colonne de table observée et
    -- enregistrement de ces changements dans une table.
    --
    PROCEDURE STORE_UPDATE_OBSERV_RESULT(observEtab IMPORT_OBSERV_ETAB%ROWTYPE)
        IS
        u_col_name VARCHAR2(50);
        where_to_value CLOB;
        i_query CLOB;
        observ IMPORT_OBSERV%ROWTYPE;

        TYPE r_cursor is REF CURSOR;
        rc r_cursor;
        l_id CLOB;
        l_detail CLOB;
    BEGIN
        select * into observ from IMPORT_OBSERV where id = observEtab.IMPORT_OBSERV_ID;

        -- Construction du nom de la colonne de la vue V_DIFF_X indiquant un changement de valeur dans la table X.
        -- Ex: 'U_RESULTAT' (dans la vue V_DIFF_THESE, indiquant que la colonne THESE.RESULTAT a changé).
        u_col_name := 'U_' || observ.COLUMN_NAME;

        -- Construction de la clause permettant de ne prendre en compte que la prise de valeur qui nous intéresse.
        -- Ex: "v.COLONNE = 'VALEUR'" ou "v.COLONNE IS NULL".
        where_to_value := 'v.' || observ.COLUMN_NAME ||
                          case when observ.TO_VALUE is null then ' is null' else ' = ''' || observ.TO_VALUE || '''' end;

        -- Construction de la requête recherchant dans la vue V_DIFF_X les lignes correspondant à :
        -- une prise de valeur particulière spécifiée par IMPORT_OBSERV.TO_VALUE,
        -- de la colonne spécifiée par IMPORT_OBSERV.COLUMN_NAME,
        -- dans la table spécifiée par IMPORT_OBSERV.TABLE_NAME.
        i_query := 'select v.source_code, t.' || observ.COLUMN_NAME || ' || ''>'' || v.' || observ.COLUMN_NAME || ' detail ' ||
                   'from V_DIFF_' || observ.TABLE_NAME || ' v ' ||
                   'join ' || observ.TABLE_NAME || ' t on t.source_code = v.source_code ' ||
                   'where ' || u_col_name || ' = 1 and ' || where_to_value || ' ' ||
                   'order by v.source_code';

        --DBMS_OUTPUT.PUT_LINE(i_query);
        OPEN rc FOR i_query;
        LOOP
            FETCH rc INTO l_id, l_detail;
            EXIT WHEN rc%NOTFOUND;
            --DBMS_OUTPUT.PUT_LINE(l_id); DBMS_OUTPUT.PUT_LINE(l_detail);
            insert into IMPORT_OBSERV_ETAB_RESULT(ID, IMPORT_OBSERV_ETAB_ID, DATE_CREATION, SOURCE_CODE, RESULTAT, TOO_OLD)
            values (IMPORT_OBSERV_RESULT_ID_SEQ.nextval, observEtab.ID, sysdate, l_id, l_detail, 0);
        END LOOP;
    END;

    PROCEDURE STORE_OBSERV_RESULTS
        IS
    BEGIN
        -- Parcours des IMPORT_OBSERV_ETAB de type UPDATE et non désactivés.
        for observEtab in (
            select ioe.*
            from IMPORT_OBSERV_ETAB ioe
                     join IMPORT_OBSERV io on ioe.IMPORT_OBSERV_ID = io.ID and io.OPERATION = 'UPDATE'
            where ioe.ENABLED = 1
            ) loop
                STORE_UPDATE_OBSERV_RESULT(observEtab);
            end loop;
    END;

    PROCEDURE SYNCHRONISATION
        IS
    BEGIN
        STORE_OBSERV_RESULTS;
        SYNC_TABLES;
    END;

END APP_IMPORT;
+19 −0
Original line number Diff line number Diff line
# Version 1.4.5

## 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.4.5 && \
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

Exécuter dans l'ordre les scripts SQL présents dans le répertoire [1.4.5](1.4.5).
+1 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ services:
    volumes:
     - .:/app
     - /tmp:/tmp
     - $HOME/.ssh:/root/.ssh
    working_dir: /app
    links:
    - "sygal-import-ws"
Loading