Commit b8c666ca authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Correction mineure de vues (Oracle ou Physalis)

parent 40cf9ee2
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
Journal des modifications
=========================

2.1.0
-----
- Correction mineure de vues (Oracle ou Physalis).

2.0.0
-----
- Ajout d'une V2 à l'API pour permettre l'import avec unicaen/db-import par ESUP-SyGAL ; la V1 demeure.
+5 −5
Original line number Diff line number Diff line
@@ -337,7 +337,7 @@ select
    'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
    etb.cod_etb as id,                    -- Id unique
    null as sigle,                        --
    etb.lib_etb as libelle,               -- Libelle
    nvl(etb.lib_web_etb, etb.lib_etb) as libelle, -- Libelle
    pay.cod_pay as code_pays,             -- Code pays
    pay.lib_pay as libelle_pays           -- Libelle pays
from etablissement etb
@@ -367,7 +367,7 @@ select
    'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
    etb.cod_etb as id,                    -- Id unique
    null as sigle,                        --
    etb.lib_etb as libelle,               -- Libelle
    nvl(etb.lib_web_etb, etb.lib_etb) as libelle, -- Libelle
    pay.cod_pay as code_pays,             -- Code pays
    pay.lib_pay as libelle_pays           -- Libelle pays
from etablissement etb
@@ -382,7 +382,7 @@ select
    'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
    etb.cod_etb as id,                    -- Id unique
    null as sigle,                        --
    etb.lib_etb as libelle,               -- Libelle
    nvl(etb.lib_web_etb, etb.lib_etb) as libelle, -- Libelle
    pay.cod_pay as code_pays,             -- Code pays
    pay.lib_pay as libelle_pays           -- Libelle pays
from etablissement etb
@@ -397,7 +397,7 @@ select
    'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
    etb.cod_etb as id,                    -- Id unique
    null as sigle,                        --
    etb.lib_etb as libelle,               -- Libelle
    nvl(etb.lib_web_etb, etb.lib_etb) as libelle, -- Libelle
    pay.cod_pay as code_pays,             -- Code pays
    pay.lib_pay as libelle_pays           -- Libelle pays
from etablissement etb
@@ -415,7 +415,7 @@ select
    'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
    etb.cod_etb as id,                    -- Id unique
    null as sigle,                        --
    etb.lib_etb as libelle,               -- Libelle
    nvl(etb.lib_web_etb, etb.lib_etb) as libelle, -- Libelle
    pay.cod_pay as code_pays,             -- Code pays
    pay.lib_pay as libelle_pays           -- Libelle pays
from etablissement etb
+7 −7
Original line number Diff line number Diff line
@@ -381,8 +381,8 @@ where extract (YEAR from a.AVT_DATE_DEB_EXEC) >= 2016

CREATE VIEW "API_SCOLARITE"."V_SYGAL_INDIVIDU_V2" ("ID", "SOURCE_CODE", "TYPE", "SOURCE_ID", "CIV", "LIB_NOM_PAT_IND", "LIB_NOM_USU_IND", "LIB_PR1_IND", "LIB_PR2_IND", "LIB_PR3_IND", "EMAIL", "DATE_NAI_IND", "LIB_NAT", "COD_PAY_NAT", "SUPANN_ID") AS
SELECT
    distinct( i.pers_id)  AS ID,
        distinct( i.pers_id)  AS SOURCE_CODE,
            distinct( i.pers_id) as ID,
            i.pers_id as SOURCE_CODE,
            'doctorant' as TYPE,
            'physalis' as SOURCE_ID,

@@ -414,8 +414,8 @@ FROM RECHERCHE.DOCTORANT D
union
--membre d'un jury
SELECT
    distinct( i.pers_id) AS ID,
    distinct( i.pers_id) AS SOURCE_CODE,
            distinct( i.pers_id) as ID,
            i.pers_id as SOURCE_CODE,
            'acteur' as TYPE,
            'physalis' as SOURCE_ID,

@@ -469,8 +469,8 @@ union

--directeur de these
SELECT
    distinct( i.pers_id) AS ID,
    distinct( i.pers_id) AS SOURCE_CODE,
            distinct( i.pers_id) as ID,
            i.pers_id as SOURCE_CODE,
            'acteur' as TYPE,
            'physalis' as SOURCE_ID,

@@ -523,7 +523,7 @@ WHERE-- T.ID_THESE = 13 -- a modifier
  --extract(year from d.DATE_INSC_DOCTORAT_ETAB) >= 2016 and
        ASS_ID_PERE = (select ass_id from GRHUM.ASSOCIATION where ass_code = 'D_DIR')
  AND ASS_CODE != 'D_JR_INV'
/
;



+294 −0
Original line number Diff line number Diff line
Version 2.1.0
=============

Base de données
---------------

### Apogée

```sql
create or replace view V_SYGAL_STRUCTURE_V2 as
select
    edo.cod_nat_edo as source_code, --id unique
    'apogee' as source_id,  -- identifiant unique de la source
    'ecole-doctorale' as TYPE_STRUCTURE_ID, -- Type de structure
    edo.cod_nat_edo as id,                  -- Id unique : Identifiant national
    edo.lic_edo as sigle,                   -- Libellé court
    edo.lib_edo as libelle,                 -- Denomination
    null as code_pays,                        --
    null as libelle_pays                         --
from ecole_doctorale edo
union
-- UR
select
    eqr.cod_eqr as source_code, --id unique
    'apogee' as source_id,  -- identifiant unique de la source
    'unite-recherche' as TYPE_STRUCTURE_ID, -- Type de structure
    eqr.cod_eqr as id,                      -- Id unique
    eqr.lic_eqr as sigle,                   -- Libellé court
    eqr.lib_eqr as libelle,                 -- Denomination
    null as code_pays,                        --
    null as libelle_pays                         --
from equipe_rch  eqr
union
-- Etablissements de cotutelle
select
    etb.cod_etb as source_code, --id unique
    'apogee' as source_id,  -- identifiant unique de la source
    'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
    etb.cod_etb as id,                    -- Id unique
    null as sigle,                        --
    nvl(etb.lib_web_etb, etb.lib_etb) as libelle, -- Libelle
    pay.cod_pay as code_pays,             -- Code pays
    pay.lib_pay as libelle_pays           -- Libelle pays
from etablissement etb
         join these_hdr_sout ths on ths.cod_etb = etb.cod_etb and -- établissements de cotutelle
                                    ths.cod_ths_trv = '1' -- travaux exclus
         left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
union
-- Etablissements des directeurs de theses
select
    etb.cod_etb as source_code, --id unique
    'apogee' as source_id,  -- identifiant unique de la source
    'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
    etb.cod_etb as id,                    -- Id unique
    null as sigle,                        --
    etb.lib_etb as libelle,               -- Libelle
    pay.cod_pay as code_pays,             -- Code pays
    pay.lib_pay as libelle_pays           -- Libelle pays
from etablissement etb
         join these_hdr_sout ths on ths.cod_etb_dir = etb.cod_etb and -- établissements des directeurs de theses
                                    ths.cod_ths_trv = '1' -- travaux exclus
         left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
union
-- Etablissements des co-directeurs de theses
select
    etb.cod_etb as source_code, --id unique
    'apogee' as source_id,  -- identifiant unique de la source
    'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
    etb.cod_etb as id,                    -- Id unique
    null as sigle,                        --
    nvl(etb.lib_web_etb, etb.lib_etb) as libelle, -- Libelle
    pay.cod_pay as code_pays,             -- Code pays
    pay.lib_pay as libelle_pays           -- Libelle pays
from etablissement etb
         join these_hdr_sout ths on ths.cod_etb_cdr = etb.cod_etb and -- établissements des co-directeurs de theses
                                    ths.cod_ths_trv = '1' -- travaux exclus
         left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
union
-- Etablissements des seconds co-directeurs de theses
select
    etb.cod_etb as source_code, --id unique
    'apogee' as source_id,  -- identifiant unique de la source
    'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
    etb.cod_etb as id,                    -- Id unique
    null as sigle,                        --
    nvl(etb.lib_web_etb, etb.lib_etb) as libelle, -- Libelle
    pay.cod_pay as code_pays,             -- Code pays
    pay.lib_pay as libelle_pays           -- Libelle pays
from etablissement etb
         join these_hdr_sout ths on ths.cod_etb_cdr2 = etb.cod_etb and -- établissements des seconds co-directeurs de theses
                                    ths.cod_ths_trv = '1' -- travaux exclus
         left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
union
-- Etablissements des rapporteurs
select
    etb.cod_etb as source_code, --id unique
    'apogee' as source_id,  -- identifiant unique de la source
    'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
    etb.cod_etb as id,                    -- Id unique
    null as sigle,                        --
    nvl(etb.lib_web_etb, etb.lib_etb) as libelle, -- Libelle
    pay.cod_pay as code_pays,             -- Code pays
    pay.lib_pay as libelle_pays           -- Libelle pays
from etablissement etb
         join personnel   per on per.cod_etb = etb.cod_etb -- établissements des rapporteurs
         join ths_rap_sou trs on trs.cod_per = per.cod_per
         join these_hdr_sout ths on ths.cod_ths = trs.cod_ths and
                                    ths.cod_ths_trv = '1' -- travaux exclus
         left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
where per.tem_ext_int_per = 'X' -- personnels exterieurs uniquement
union
-- Etablissements des membres du jury
select
    etb.cod_etb as source_code, --id unique
    'apogee' as source_id,  -- identifiant unique de la source
    'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
    etb.cod_etb as id,                    -- Id unique
    null as sigle,                        --
    nvl(etb.lib_web_etb, etb.lib_etb) as libelle, -- Libelle
    pay.cod_pay as code_pays,             -- Code pays
    pay.lib_pay as libelle_pays           -- Libelle pays
from etablissement etb
         join personnel   per on per.cod_etb = etb.cod_etb -- établissements des membres du jury
         join ths_jur_per tjp on tjp.cod_per = per.cod_per
         join these_hdr_sout ths on ths.cod_ths = tjp.cod_ths and
                                    ths.cod_ths_trv = '1' -- travaux exclus
         left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
where per.tem_ext_int_per = 'X'
/
```

### Physalis

```sql
CREATE or replace VIEW "API_SCOLARITE"."V_SYGAL_INDIVIDU_V2" ("ID", "SOURCE_CODE", "TYPE", "SOURCE_ID", "CIV", "LIB_NOM_PAT_IND", "LIB_NOM_USU_IND", "LIB_PR1_IND", "LIB_PR2_IND", "LIB_PR3_IND", "EMAIL", "DATE_NAI_IND", "LIB_NAT", "COD_PAY_NAT", "SUPANN_ID") AS
SELECT
            distinct( i.pers_id) as ID,
            i.pers_id as SOURCE_CODE,
            'doctorant' as TYPE,
            'physalis' as SOURCE_ID,

            case I.c_civilite
                WHEN 'MLLE'  THEN 'MME.'
                ELSE  I.c_civilite
                end as CIV,
            upper(I.NOM_PATRONYMIQUE) AS LIB_NOM_PAT_IND,
            upper(I.NOM_USUEL) as LIB_NOM_USU_IND,
            upper( initcap(nvl(I.PRENOM_AFFICHAGE, I.PRENOM))) as LIB_PR1_IND,
            upper(garnuche.decouper_chaine_multi_seps(I.PRENOM2, ' ', 1)) as LIB_PR2_IND,
            upper(garnuche.decouper_chaine_multi_seps(I.PRENOM2, ' ', 2)) as LIB_PR3_IND,

            CASE
                WHEN cpt.CPT_EMAIL is    null THEN ' '
                ELSE cpt.CPT_EMAIL ||'@' || cpt.CPT_DOMAINE
                end as EMAIL,
            I.D_NAISSANCE AS DATE_NAI_IND,
            p.L_NATIONALITE   AS LIB_NAT,
            I.C_PAYS_NATIONALITE AS COD_PAY_NAT,
            i.pers_id as SUPANN_ID
FROM RECHERCHE.DOCTORANT D
         LEFT OUTER JOIN RECHERCHE.DOCTORANT_THESE T ON D.ID_DOCTORANT = T.ID_DOCTORANT
         INNER JOIN GRHUM.INDIVIDU_ULR I ON I.NO_INDIVIDU = D.NO_INDIVIDU
         left outer  JOIN GRHUM.COMPTE CPT on I.PERS_ID = CPT.PERS_ID and cpt.cpt_email is not null and cpt_ordre <> 60891 and cpt_ordre <> 58888
         left outer join grhum.pays p on I.C_PAYS_NATIONALITE  =p.C_PAYS
--where  extract(year from d.DATE_INSC_DOCTORAT_ETAB) >= 2016

union
--membre d'un jury
SELECT
            distinct( i.pers_id) as ID,
            i.pers_id as SOURCE_CODE,
            'acteur' as TYPE,
            'physalis' as SOURCE_ID,

            case I.c_civilite
                WHEN 'MLLE'  THEN 'MME.'
                ELSE  I.c_civilite
                end as CIV,
            case
                when  I.NOM_PATRONYMIQUE is null THEN I.NOM_USUEL
                ELSE  upper(I.NOM_PATRONYMIQUE)
                end as LIB_NOM_PAT_IND,

            upper(I.NOM_USUEL) as LIB_NOM_USU_IND,
            upper( initcap(nvl(I.PRENOM_AFFICHAGE, I.PRENOM))) as PRENOM1,
            upper(garnuche.decouper_chaine_multi_seps(I.PRENOM2, ' ', 1)) as PRENOM2,
            upper(garnuche.decouper_chaine_multi_seps(I.PRENOM2, ' ', 2)) as PRENOM3,

            CASE
                WHEN cpt.CPT_EMAIL is    null THEN ' '
                ELSE cpt.CPT_EMAIL ||'@' || cpt.CPT_DOMAINE
                end as EMAIL,
            I.D_NAISSANCE AS DATE_NAI_IND,
            p.L_NATIONALITE AS LIB_NAT,
            I.C_PAYS_NATIONALITE AS COD_PAY_NAT,
            i.pers_id as SUPANN_ID
--lower(nvl(CORPS.LIBELLE_EDITION, CORPS.LL_CORPS)) as LIBELLE_CORPS,
--case
-- when   CORPS.LL_CORPS is null THEN  upper( MJT.TITRE_SPECIAL)
-- when   MJT.TITRE_SPECIAL is null then upper(corps.LL_CORPS)
--end  as titre,
--ASS_CODE
FROM RECHERCHE.DOCTORANT D
         LEFT OUTER JOIN RECHERCHE.DOCTORANT_THESE T ON D.ID_DOCTORANT = T.ID_DOCTORANT
         INNER JOIN RECHERCHE.MEMBRE_JURY_THESE MJT ON MJT.ID_THESE = T.ID_THESE
         LEFT OUTER JOIN grhum.CORPS ON CORPS.C_CORPS = MJT.C_CORPS
         LEFT OUTER JOIN grhum.RNE ON RNE.C_RNE = MJT.C_RNE
         INNER JOIN ACCORDS.CONTRAT_PARTENAIRE CP ON CP.CP_ORDRE = MJT.CP_ORDRE
         INNER JOIN ACCORDS.CONTRAT C ON CP.CON_ORDRE = C.CON_ORDRE
         INNER JOIN GRHUM.INDIVIDU_ULR I ON I.PERS_ID = CP.PERS_ID
         left outer  JOIN GRHUM.COMPTE CPT on I.PERS_ID = CPT.PERS_ID and cpt.cpt_email is not null
         INNER JOIN GRHUM.REPART_ASSOCIATION RA ON RA.PERS_ID = CP.PERS_ID AND RA.C_STRUCTURE = C.CON_GROUPE_PARTENAIRE
         INNER JOIN GRHUM.ASSOCIATION A ON A.ASS_ID = RA.ASS_ID
         INNER JOIN GRHUM.ASSOCIATION_RESEAU AR ON A.ASS_ID = AR.ASS_ID_FILS
         left outer join grhum.pays p on I.C_PAYS_NATIONALITE  =p.C_PAYS
WHERE-- T.ID_THESE = 13 -- a modifier
-- membre du jury sauf invité
  -- extract(year from d.DATE_INSC_DOCTORAT_ETAB) >= 2016 and
        ASS_ID_PERE = (select ass_id from GRHUM.ASSOCIATION where ass_code = 'D_TYPE_JURY')
  AND ASS_CODE != 'D_JR_INV'  --AND to_char(T.DATE_SOUTENANCE ,'YYYY')='2016'
union

--directeur de these
SELECT
            distinct( i.pers_id) as ID,
            i.pers_id as SOURCE_CODE,
            'acteur' as TYPE,
            'physalis' as SOURCE_ID,

            case I.c_civilite
                WHEN 'MLLE'  THEN 'MME.'
                ELSE  I.c_civilite
                end as CIV,
            case
                when  I.NOM_PATRONYMIQUE is null THEN I.NOM_USUEL
                ELSE  upper(I.NOM_PATRONYMIQUE)
                end as LIB_NOM_PAT_IND,

            upper(I.NOM_USUEL) as LIB_NOM_USU_IND,
            upper( initcap(nvl(I.PRENOM_AFFICHAGE, I.PRENOM))) as PRENOM1,
            upper(garnuche.decouper_chaine_multi_seps(I.PRENOM2, ' ', 1)) as PRENOM2,
            upper(garnuche.decouper_chaine_multi_seps(I.PRENOM2, ' ', 2)) as PRENOM3,

            CASE
                WHEN cpt.CPT_EMAIL is    null THEN ' '
                ELSE cpt.CPT_EMAIL ||'@' || cpt.CPT_DOMAINE
                end as EMAIL,
            I.D_NAISSANCE AS DATE_NAI_IND,
            p.L_NATIONALITE AS LIB_NAT,
            I.C_PAYS_NATIONALITE AS COD_PAY_NAT,
            i.pers_id as SUPANN_ID
--lower(nvl(CORPS.LIBELLE_EDITION, CORPS.LL_CORPS)) as LIBELLE_CORPS,
--case
-- when   CORPS.LL_CORPS is null THEN  upper( MJT.TITRE_SPECIAL)
-- when   MJT.TITRE_SPECIAL is null then upper(corps.LL_CORPS)
--end  as titre,
--ASS_CODE
FROM RECHERCHE.DOCTORANT D
         LEFT OUTER JOIN RECHERCHE.DOCTORANT_THESE T ON D.ID_DOCTORANT = T.ID_DOCTORANT
         INNER JOIN RECHERCHE.DIRECTEUR_THESE MJT ON MJT.ID_THESE = T.ID_THESE
         LEFT OUTER JOIN grhum.RNE ON RNE.C_RNE = MJT.C_RNE
         INNER JOIN ACCORDS.CONTRAT_PARTENAIRE CP ON CP.CP_ORDRE = MJT.CP_ORDRE
         INNER JOIN ACCORDS.CONTRAT C ON CP.CON_ORDRE = C.CON_ORDRE
         INNER JOIN GRHUM.INDIVIDU_ULR I ON I.PERS_ID = CP.PERS_ID
         left outer  JOIN GRHUM.COMPTE CPT on I.PERS_ID = CPT.PERS_ID
         INNER JOIN GRHUM.REPART_ASSOCIATION RA ON RA.PERS_ID = CP.PERS_ID AND RA.C_STRUCTURE = C.CON_GROUPE_PARTENAIRE
         INNER JOIN GRHUM.ASSOCIATION A ON A.ASS_ID = RA.ASS_ID
         INNER JOIN GRHUM.ASSOCIATION_RESEAU AR ON A.ASS_ID = AR.ASS_ID_FILS
         left outer join grhum.pays p on I.C_PAYS_NATIONALITE  =p.C_PAYS
         left outer join API_SCOLARITE.SYGAL_ROLE_TMP ro on ro.ID = a.ass_id
         left outer join recherche.membre_jury_these mem on MJT.cp_ordre = mem.cp_ordre
         LEFT OUTER JOIN grhum.CORPS ON CORPS.C_CORPS = mem.C_CORPS
--left outer join
WHERE-- T.ID_THESE = 13 -- a modifier
-- membre du jury sauf invité
  --extract(year from d.DATE_INSC_DOCTORAT_ETAB) >= 2016 and
        ASS_ID_PERE = (select ass_id from GRHUM.ASSOCIATION where ass_code = 'D_DIR')
  AND ASS_CODE != 'D_JR_INV'
;
```


Sources PHP
-----------

Sur le serveur, placez-vous dans le répertoire du web service (sans doute `/var/www/sygal-import-ws`) 
puis lancez les commandes suivantes pour installer la nouvelle version :
```bash
git fetch && git fetch --tags && git checkout --force 2.1.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`