diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f14f17f324f654f0d43a953a2d70199aa134fbb..6b830b0dfbce646512424b5b269f6e5479b311f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,18 @@ Journal des modifications 1.4.0 (??/01/2020) ------------------ +### Ajouts + +- La remise d'un exemplaire papier de la thèse n'est requise que si la diffusion est acceptée avec embargo ou refusée. +- Inversion des étapes Diffusion et Attestations. +- Modification des textes liés à l'autorisation de diffusion dans le formulaire et dans la convention PDF générée. +- Convention de MEL : suppression du petit logo dans l'entête puisqu'il y en a déjà un sous le titre +- Nouvelle charte de diffusion téléchargeable. +- Ajout du flag "fermé" pour les structures et utilisations dans la recherche de thèses. +- Ajout d'un champ "Id HAL" dans le formulaire d'autorisation de diffusion. - Ajout d'un menu dépôt pour séparer les action liés au dépôt de la partie annuaire +- La couverture est maintenant recto/verso lorsque la premiere page n'est pas retirée +- Ajout de la colonne durée des thèses dans l'export 1.3.3 (18/12/2019) ------------------ diff --git a/config/autoload/version.global.php b/config/autoload/version.global.php index 50a0d36e45a1ad8c567218e2ba547a3012ed4081..27f00e5102c3cee599d47900748e15af1f195629 100644 --- a/config/autoload/version.global.php +++ b/config/autoload/version.global.php @@ -2,9 +2,9 @@ return [ 'unicaen-app' => [ 'app_infos' => [ - 'version' => '1.3.3', - 'date' => '18/12/2019', + 'version' => '1.4.0', + 'date' => '15/01/2020', ], ], - 'comment' => 'Fichier généré le 18/12/2019 à 11:49:34 avec /home/metivier/MyWeb/sygal/bump-version', + 'comment' => 'Fichier généré le 15/01/2020 à 09:22:35 avec /home/gauthierb/workspace/sygal/bump-version', ]; diff --git a/doc/release-notes/1.4.0/01-schema-1.4.0.sql b/doc/release-notes/1.4.0/01-schema-1.4.0.sql new file mode 100644 index 0000000000000000000000000000000000000000..e138f6bb3cc89d2b668afacde52452cbb37ae8b8 --- /dev/null +++ b/doc/release-notes/1.4.0/01-schema-1.4.0.sql @@ -0,0 +1,987 @@ + +-- +-- Structure fermée +-- + +alter table STRUCTURE + add EST_FERME number(1) default 0 ; + +-- +-- Id HAL dans le formulaire de diffusion. +-- + +alter table DIFFUSION add HAL_ID varchar2(100) ; + +-- +-- La remise d'un exemplaire papier dépend de l'autorisation de diffusion. +-- + +alter table DIFFUSION add VERSION_CORRIGEE NUMBER(1) default 0 not null; +alter table ATTESTATION modify EX_IMPR_CONFORM_VER_DEPO default null null; +alter table ATTESTATION add VERSION_CORRIGEE NUMBER(1) default 0 not null; +alter table RDV_BU modify EXEMPL_PAPIER_FOURNI default null null; + +create or replace view V_WF_ETAPE_PERTIN as +select + to_number(these_id) these_id, + to_number(etape_id) etape_id, + code, + ordre, + rownum id +from ( + -- + -- validation_page_de_couverture + -- + select + t.id as these_id, + e.id as etape_id, + e.code, + e.ordre + from these t + join wf_etape e on e.code = 'VALIDATION_PAGE_DE_COUVERTURE' + where t.ETAT_THESE in ('E', 'S') -- thèses en cours ou soutenues + + union all + + -- + -- depot_version_originale + -- + select + t.id as these_id, + e.id as etape_id, + e.code, + e.ordre + from these t + join wf_etape e on e.code = 'DEPOT_VERSION_ORIGINALE' + where t.ETAT_THESE in ('E', 'S') -- thèses en cours ou soutenues + + union all + + -- + -- autorisation_diffusion_these + -- + select + t.id as these_id, + e.id as etape_id, + e.code, + e.ordre + from these t + join wf_etape e on e.code = 'AUTORISATION_DIFFUSION_THESE' + where t.ETAT_THESE in ('E', 'S') -- thèses en cours ou soutenues + + union all + + -- + -- attestations + -- + select + t.id as these_id, + e.id as etape_id, + e.code, + e.ordre + from these t + join wf_etape e on e.code = 'ATTESTATIONS' + where t.ETAT_THESE in ('E', 'S') -- thèses en cours ou soutenues + + union all + + -- + -- signalement_these + -- + select + t.id as these_id, + e.id as etape_id, + e.code, + e.ordre + from these t + join wf_etape e on e.code = 'SIGNALEMENT_THESE' + where t.ETAT_THESE in ('E', 'S') -- thèses en cours ou soutenues + + union all + + -- + -- archivabilite_version_originale + -- + select + t.id as these_id, + e.id as etape_id, + e.code, + e.ordre + from these t + join wf_etape e on e.code = 'ARCHIVABILITE_VERSION_ORIGINALE' + where t.ETAT_THESE in ('E', 'S') -- thèses en cours ou soutenues + + union all + + -- + -- depot_version_archivage + -- + select + t.id as these_id, + e.id as etape_id, + e.code, + e.ordre + from these t + join wf_etape e on e.code = 'DEPOT_VERSION_ARCHIVAGE' + join v_situ_archivab_vo situ on situ.these_id = t.id and situ.est_valide = 0 -- VO non archivable + where t.ETAT_THESE in ('E', 'S') -- thèses en cours ou soutenues + + union all + + -- + -- archivabilite_version_archivage + -- + select + t.id as these_id, + e.id as etape_id, + e.code, + e.ordre + from these t + join wf_etape e on e.code = 'ARCHIVABILITE_VERSION_ARCHIVAGE' + join v_situ_archivab_vo situ on situ.these_id = t.id and situ.est_valide = 0 -- VO non archivable + where t.ETAT_THESE in ('E', 'S') -- thèses en cours ou soutenues + + union all + + -- + -- verification_version_archivage + -- + select + t.id as these_id, + e.id as etape_id, + e.code, + e.ordre + from these t + join wf_etape e on e.code = 'VERIFICATION_VERSION_ARCHIVAGE' + join v_situ_archivab_va situ on situ.these_id = t.id and situ.est_valide = 1 -- VA archivable + where t.ETAT_THESE in ('E', 'S') -- thèses en cours ou soutenues + + union all + + -- + -- rdv_bu_saisie_doctorant + -- + select + t.id as these_id, + e.id as etape_id, + e.code, + e.ordre + from these t + join wf_etape e on e.code = 'RDV_BU_SAISIE_DOCTORANT' + where t.ETAT_THESE in ('E', 'S') -- thèses en cours ou soutenues + + union all + + -- + -- rdv_bu_saisie_bu + -- + select + t.id as these_id, + e.id as etape_id, + e.code, + e.ordre + from these t + join wf_etape e on e.code = 'RDV_BU_SAISIE_BU' + where t.ETAT_THESE in ('E', 'S') -- thèses en cours ou soutenues + + union all + + -- + -- rdv_bu_validation_bu + -- + select + t.id as these_id, + e.id as etape_id, + e.code, + e.ordre + from these t + join wf_etape e on e.code = 'RDV_BU_VALIDATION_BU' + where t.ETAT_THESE in ('E', 'S') -- thèses en cours ou soutenues + + + + union all + + + + -- + -- depot_version_originale_corrigee + -- + select + t.id as these_id, + e.id as etape_id, + e.code, + e.ordre + from these t + join wf_etape e on e.code = 'DEPOT_VERSION_ORIGINALE_CORRIGEE' + where (t.correc_autorisee is not null or t.CORREC_AUTORISEE_FORCEE is not null) -- correction attendue + and t.ETAT_THESE in ('E', 'S') -- thèses en cours ou soutenues + + union all + + -- + -- autorisation_diffusion_these_version_corrigee + -- + select + t.id as these_id, + e.id as etape_id, + e.code, + e.ordre + from these t + join wf_etape e on e.code = 'AUTORISATION_DIFFUSION_THESE_VERSION_CORRIGEE' + where (t.correc_autorisee is not null or t.CORREC_AUTORISEE_FORCEE is not null) -- correction attendue + and t.ETAT_THESE in ('E', 'S') -- thèses en cours ou soutenues + + union all + + -- + -- attestations_version_corrigee + -- + select + t.id as these_id, + e.id as etape_id, + e.code, + e.ordre + from these t + join wf_etape e on e.code = 'ATTESTATIONS_VERSION_CORRIGEE' + where (t.correc_autorisee is not null or t.CORREC_AUTORISEE_FORCEE is not null) -- correction attendue + and t.ETAT_THESE in ('E', 'S') -- thèses en cours ou soutenues + + union all + + -- + -- archivabilite_version_originale_corrigee + -- + select + t.id as these_id, + e.id as etape_id, + e.code, + e.ordre + from these t + join wf_etape e on e.code = 'ARCHIVABILITE_VERSION_ORIGINALE_CORRIGEE' + where (t.correc_autorisee is not null or t.CORREC_AUTORISEE_FORCEE is not null) -- correction attendue + and t.ETAT_THESE in ('E', 'S') -- thèses en cours ou soutenues + + union all + + -- + -- depot_version_archivage_corrigee + -- + select + t.id as these_id, + e.id as etape_id, + e.code, + e.ordre + from these t + join wf_etape e on e.code = 'DEPOT_VERSION_ARCHIVAGE_CORRIGEE' + join v_situ_archivab_voc situ on situ.these_id = t.id and situ.est_valide = 0 -- VOC non archivable + where (t.correc_autorisee is not null or t.CORREC_AUTORISEE_FORCEE is not null) -- correction attendue + and t.ETAT_THESE in ('E', 'S') -- thèses en cours ou soutenues + + union all + + -- + -- archivabilite_version_archivage_corrigee + -- + select + t.id as these_id, + e.id as etape_id, + e.code, + e.ordre + from these t + join wf_etape e on e.code = 'ARCHIVABILITE_VERSION_ARCHIVAGE_CORRIGEE' + join v_situ_archivab_voc situ on situ.these_id = t.id and situ.est_valide = 0 -- VOC non archivable + where (t.correc_autorisee is not null or t.CORREC_AUTORISEE_FORCEE is not null) -- correction attendue + and t.ETAT_THESE in ('E', 'S') -- thèses en cours ou soutenues + + union all + + -- + -- verification_version_archivage_corrigee + -- + select + t.id as these_id, + e.id as etape_id, + e.code, + e.ordre + from these t + join wf_etape e on e.code = 'VERIFICATION_VERSION_ARCHIVAGE_CORRIGEE' + join v_situ_archivab_vac situ on situ.these_id = t.id and situ.est_valide = 1 -- VAC archivable + where (t.correc_autorisee is not null or t.CORREC_AUTORISEE_FORCEE is not null) -- correction attendue + and t.ETAT_THESE in ('E', 'S') -- thèses en cours ou soutenues + + union all + + -- + -- depot_version_corrigee_validation_doctorant + -- + select + t.id as these_id, + e.id as etape_id, + e.code, + e.ordre + from these t + join wf_etape e on e.code = 'DEPOT_VERSION_CORRIGEE_VALIDATION_DOCTORANT' + where (t.correc_autorisee is not null or t.CORREC_AUTORISEE_FORCEE is not null) -- correction attendue + and t.ETAT_THESE in ('E', 'S') -- thèses en cours ou soutenues + + union all + + -- + -- depot_version_corrigee_validation_directeur + -- + select + t.id as these_id, + e.id as etape_id, + e.code, + e.ordre + from these t + join wf_etape e on e.code = 'DEPOT_VERSION_CORRIGEE_VALIDATION_DIRECTEUR' + where (t.correc_autorisee is not null or t.CORREC_AUTORISEE_FORCEE is not null) -- correction attendue + and t.ETAT_THESE in ('E', 'S') -- thèses en cours ou soutenues + + union all + + -- + -- REMISE_EXEMPLAIRE_PAPIER_THESE_CORRIGEE + -- + select + t.id as these_id, + e.id as etape_id, + e.code, + e.ordre + from these t + join wf_etape e on e.code = 'REMISE_EXEMPLAIRE_PAPIER_THESE_CORRIGEE' + join DIFFUSION d on d.VERSION_CORRIGEE = 1 and d.AUTORIS_MEL in (0/*Non*/, 1/*Oui+embargo*/) -- exemplaire papier requis + where (t.correc_autorisee is not null or t.CORREC_AUTORISEE_FORCEE is not null) -- correction attendue + and t.ETAT_THESE in ('E', 'S') -- thèses en cours ou soutenues + + ) +; + +create or replace view V_WORKFLOW as +SELECT + ROWNUM as id, + t.THESE_ID, + t.ETAPE_ID, + t.CODE, + t.ORDRE, + t.FRANCHIE, + t.RESULTAT, + t.OBJECTIF, + -- NB: dans les 3 lignes suivantes, c'est la même expression 'dense_rank() over(...)' qui est répétée : + (dense_rank() over(partition by t.THESE_ID, t.FRANCHIE order by t.ORDRE)) dense_rank, + case when t.FRANCHIE = 1 or (dense_rank() over(partition by t.THESE_ID, t.FRANCHIE order by t.ORDRE)) = 1 then 1 else 0 end atteignable, + case when (dense_rank() over(partition by t.THESE_ID, t.FRANCHIE order by t.ORDRE)) = 1 and t.FRANCHIE = 0 then 1 else 0 end courante +FROM ( + + -- + -- VALIDATION_PAGE_DE_COUVERTURE : franchie si version page de couverture validée + -- + SELECT + t.id AS these_id, + e.id AS etape_id, + e.code, + e.ORDRE, + CASE WHEN v.valide IS NULL THEN 0 ELSE 1 END franchie, + CASE WHEN v.valide IS NULL THEN 0 ELSE 1 END resultat, + 1 objectif + FROM these t + JOIN WF_ETAPE e ON e.code = 'VALIDATION_PAGE_DE_COUVERTURE' + LEFT JOIN V_SITU_VALIDATION_PAGE_COUV v ON v.these_id = t.id + + UNION ALL + + -- + -- DEPOT_VERSION_ORIGINALE : franchie si version originale déposée + -- + SELECT + t.id AS these_id, + e.id AS etape_id, + e.code, + e.ORDRE, + CASE WHEN v.fichier_id IS NULL + THEN 0 + ELSE 1 END franchie, + CASE WHEN v.fichier_id IS NULL + THEN 0 + ELSE 1 END resultat, + 1 objectif + FROM these t + JOIN WF_ETAPE e ON e.code = 'DEPOT_VERSION_ORIGINALE' + LEFT JOIN V_SITU_DEPOT_VO v ON v.these_id = t.id + + UNION ALL + + -- + -- AUTORISATION_DIFFUSION_THESE : franchie si données saisies + -- + SELECT + t.id AS these_id, + e.id AS etape_id, + e.code, + e.ORDRE, + CASE WHEN v.diffusion_id IS NULL + THEN 0 + ELSE 1 END franchie, + CASE WHEN v.diffusion_id IS NULL + THEN 0 + ELSE 1 END resultat, + 1 objectif + FROM these t + JOIN WF_ETAPE e ON e.code = 'AUTORISATION_DIFFUSION_THESE' + LEFT JOIN V_SITU_AUTORIS_DIFF_THESE v ON v.these_id = t.id + + UNION ALL + + -- + -- ATTESTATIONS : franchie si données saisies + -- + SELECT + t.id AS these_id, + e.id AS etape_id, + e.code, + e.ORDRE, + CASE WHEN v.attestation_id IS NULL THEN 0 ELSE 1 END franchie, + CASE WHEN v.attestation_id IS NULL THEN 0 ELSE 1 END resultat, + 1 objectif + FROM these t + JOIN WF_ETAPE e ON e.code = 'ATTESTATIONS' + LEFT JOIN V_SITU_ATTESTATIONS v ON v.these_id = t.id + + UNION ALL + + -- + -- SIGNALEMENT_THESE : franchie si données saisies + -- + SELECT + t.id AS these_id, + e.id AS etape_id, + e.code, + e.ORDRE, + CASE WHEN v.description_id IS NULL + THEN 0 + ELSE 1 END franchie, + CASE WHEN v.description_id IS NULL + THEN 0 + ELSE 1 END resultat, + 1 objectif + FROM these t + JOIN WF_ETAPE e ON e.code = 'SIGNALEMENT_THESE' + LEFT JOIN V_SITU_SIGNALEMENT_THESE v ON v.these_id = t.id + + UNION ALL + + -- + -- ARCHIVABILITE_VERSION_ORIGINALE : franchie si l'archivabilité de la version originale a été testée + -- + SELECT + t.id AS these_id, + e.id AS etape_id, + e.code, + e.ORDRE, + CASE WHEN v.THESE_ID IS NULL THEN 0 ELSE 1 END franchie, + -- CASE WHEN v.THESE_ID IS NULL THEN + -- 0 -- test d'archivabilité inexistant + -- ELSE + -- CASE WHEN v.EST_VALIDE IS NULL THEN + -- 1 -- test d'archivabilité existant mais résultat indéterminé (plantage) + -- ELSE + -- CASE WHEN v.EST_VALIDE = 1 THEN + -- 1 -- test d'archivabilité réussi + -- ELSE + -- 0 -- test d'archivabilité échoué + -- END + -- END + -- END franchie, + CASE WHEN v.EST_VALIDE IS NULL OR v.EST_VALIDE = 0 THEN 0 ELSE 1 END resultat, + 1 objectif + FROM these t + JOIN WF_ETAPE e ON e.code = 'ARCHIVABILITE_VERSION_ORIGINALE' + LEFT JOIN V_SITU_ARCHIVAB_VO v ON v.these_id = t.id + + UNION ALL + + -- + -- DEPOT_VERSION_ARCHIVAGE : franchie si version d'archivage déposée + -- + SELECT + t.id AS these_id, + e.id AS etape_id, + e.code, + e.ORDRE, + CASE WHEN v.fichier_id IS NULL + THEN 0 + ELSE 1 END franchie, + CASE WHEN v.fichier_id IS NULL + THEN 0 + ELSE 1 END resultat, + 1 objectif + FROM these t + JOIN WF_ETAPE e ON e.code = 'DEPOT_VERSION_ARCHIVAGE' + LEFT JOIN V_SITU_DEPOT_VA v ON v.these_id = t.id + LEFT JOIN fichier f ON f.id = v.fichier_id + + UNION ALL + + -- + -- ARCHIVABILITE_VERSION_ARCHIVAGE : franchie si l'archivabilité de la version d'archivage a été testée + -- + SELECT + t.id AS these_id, + e.id AS etape_id, + e.code, + e.ORDRE, + CASE WHEN v.EST_VALIDE IS NULL + THEN 0 + ELSE 1 END franchie, + CASE WHEN v.EST_VALIDE IS NULL OR v.EST_VALIDE = 0 + THEN 0 + ELSE 1 END resultat, + 1 objectif + FROM these t + JOIN WF_ETAPE e ON e.code = 'ARCHIVABILITE_VERSION_ARCHIVAGE' + LEFT JOIN V_SITU_ARCHIVAB_VA v ON v.these_id = t.id + + UNION ALL + + -- + -- VERIFICATION_VERSION_ARCHIVAGE : franchie si vérification de la version originale effectuée (peu importe la réponse) + -- + SELECT + t.id AS these_id, + e.id AS etape_id, + e.code, + e.ORDRE, + CASE WHEN v.EST_CONFORME IS NULL + THEN 0 + ELSE 1 END franchie, + CASE WHEN v.EST_CONFORME IS NULL OR v.EST_CONFORME = 0 + THEN 0 + ELSE 1 END resultat, + 1 objectif + FROM these t + JOIN WF_ETAPE e ON e.code = 'VERIFICATION_VERSION_ARCHIVAGE' + LEFT JOIN V_SITU_VERIF_VA v ON v.these_id = t.id + + UNION ALL + + -- + -- RDV_BU_SAISIE_DOCTORANT : franchie si données doctorant saisies + -- + SELECT + t.id AS these_id, + e.id AS etape_id, + e.code, + e.ORDRE, + coalesce(v.ok, 0) franchie, + (CASE WHEN rdv.COORD_DOCTORANT IS NULL THEN 0 ELSE 1 END + + CASE WHEN rdv.DISPO_DOCTORANT IS NULL THEN 0 ELSE 1 END) resultat, + 2 objectif + FROM these t + JOIN WF_ETAPE e ON e.code = 'RDV_BU_SAISIE_DOCTORANT' + LEFT JOIN V_SITU_RDV_BU_SAISIE_DOCT v ON v.these_id = t.id + LEFT JOIN RDV_BU rdv ON rdv.THESE_ID = t.id + + UNION ALL + + -- + -- RDV_BU_VALIDATION_BU : franchie si /*données BU saisies ET*/ une validation BU existe + -- + SELECT + t.id AS these_id, + e.id AS etape_id, + e.code, + e.ORDRE, + /*coalesce(vs.ok, 0) **/ coalesce(v.valide, 0) franchie, + /*coalesce(vs.ok, 0) +*/ coalesce(v.valide, 0) resultat, + /*2*/1 objectif + FROM these t + JOIN WF_ETAPE e ON e.code = 'RDV_BU_VALIDATION_BU' + --LEFT JOIN V_SITU_RDV_BU_SAISIE_BU vs ON vs.these_id = t.id + LEFT JOIN V_SITU_RDV_BU_VALIDATION_BU v ON v.these_id = t.id + + UNION ALL + + -- + -- DEPOT_VERSION_ORIGINALE_CORRIGEE : franchie si version originale corrigée déposée + -- + SELECT + t.id AS these_id, + e.id AS etape_id, + e.code, + e.ORDRE, + CASE WHEN v.fichier_id IS NULL + THEN 0 + ELSE 1 END franchie, + CASE WHEN v.fichier_id IS NULL + THEN 0 + ELSE 1 END resultat, + 1 objectif + FROM these t + JOIN WF_ETAPE e ON e.code = 'DEPOT_VERSION_ORIGINALE_CORRIGEE' + LEFT JOIN V_SITU_DEPOT_VOC v ON v.these_id = t.id + + UNION ALL + + -- + -- AUTORISATION_DIFFUSION_THESE_VERSION_CORRIGEE : franchie si données saisies + -- + SELECT + t.id AS these_id, + e.id AS etape_id, + e.code, + e.ORDRE, + CASE WHEN v.diffusion_id IS NULL THEN 0 ELSE 1 END franchie, + CASE WHEN v.diffusion_id IS NULL THEN 0 ELSE 1 END resultat, + 1 objectif + FROM these t + JOIN WF_ETAPE e ON e.code = 'AUTORISATION_DIFFUSION_THESE_VERSION_CORRIGEE' + LEFT JOIN V_SITU_AUTORIS_DIFF_THESE_VOC v ON v.these_id = t.id + + UNION ALL + + -- + -- ATTESTATIONS_VERSION_CORRIGEE : franchie si données saisies + -- + SELECT + t.id AS these_id, + e.id AS etape_id, + e.code, + e.ORDRE, + CASE WHEN v.attestation_id IS NULL THEN 0 ELSE 1 END franchie, + CASE WHEN v.attestation_id IS NULL THEN 0 ELSE 1 END resultat, + 1 objectif + FROM these t + JOIN WF_ETAPE e ON e.code = 'ATTESTATIONS_VERSION_CORRIGEE' + LEFT JOIN V_SITU_ATTESTATIONS_VOC v ON v.these_id = t.id + + UNION ALL + + -- + -- ARCHIVABILITE_VERSION_ORIGINALE_CORRIGEE : franchie si l'archivabilité de la version originale corrigée a été testée + -- + SELECT + t.id AS these_id, + e.id AS etape_id, + e.code, + e.ORDRE, + CASE WHEN v.THESE_ID IS NULL THEN 0 ELSE 1 END franchie, + CASE WHEN v.EST_VALIDE IS NULL OR v.EST_VALIDE = 0 THEN 0 ELSE 1 END resultat, + 1 objectif + FROM these t + JOIN WF_ETAPE e ON e.code = 'ARCHIVABILITE_VERSION_ORIGINALE_CORRIGEE' + LEFT JOIN V_SITU_ARCHIVAB_VOC v ON v.these_id = t.id + + UNION ALL + + -- + -- DEPOT_VERSION_ARCHIVAGE_CORRIGEE : franchie si version d'archivage corrigée déposée + -- + SELECT + t.id AS these_id, + e.id AS etape_id, + e.code, + e.ORDRE, + CASE WHEN v.fichier_id IS NULL + THEN 0 + ELSE 1 END franchie, + CASE WHEN v.fichier_id IS NULL + THEN 0 + ELSE 1 END resultat, + 1 objectif + FROM these t + JOIN WF_ETAPE e ON e.code = 'DEPOT_VERSION_ARCHIVAGE_CORRIGEE' + LEFT JOIN V_SITU_DEPOT_VAC v ON v.these_id = t.id + LEFT JOIN fichier f ON f.id = v.fichier_id + + UNION ALL + + -- + -- ARCHIVABILITE_VERSION_ARCHIVAGE_CORRIGEE : franchie si la version d'archivage corrigée est archivable + -- + SELECT + t.id AS these_id, + e.id AS etape_id, + e.code, + e.ORDRE, + CASE WHEN v.EST_VALIDE = 1 THEN 1 ELSE 0 END franchie, + CASE WHEN v.EST_VALIDE = 1 THEN 1 ELSE 0 END resultat, + 1 objectif + FROM these t + JOIN WF_ETAPE e ON e.code = 'ARCHIVABILITE_VERSION_ARCHIVAGE_CORRIGEE' + LEFT JOIN V_SITU_ARCHIVAB_VAC v ON v.these_id = t.id + + UNION ALL + + -- + -- VERIFICATION_VERSION_ARCHIVAGE_CORRIGEE : franchie si la version corrigée est certifiée conforme + -- + SELECT + t.id AS these_id, + e.id AS etape_id, + e.code, + e.ORDRE, + CASE WHEN v.EST_CONFORME = 1 THEN 1 ELSE 0 END franchie, + CASE WHEN v.EST_CONFORME = 1 THEN 1 ELSE 0 END resultat, + 1 objectif + FROM these t + JOIN WF_ETAPE e ON e.code = 'VERIFICATION_VERSION_ARCHIVAGE_CORRIGEE' + LEFT JOIN V_SITU_VERIF_VAC v ON v.these_id = t.id + + UNION ALL + + -- + -- DEPOT_VERSION_CORRIGEE_VALIDATION_DOCTORANT : franchie si la validation attendue existe + -- + SELECT + t.id AS these_id, + e.id AS etape_id, + e.code, + e.ORDRE, + coalesce(v.valide, 0) franchie, + coalesce(v.valide, 0) resultat, + 1 objectif + FROM these t + JOIN WF_ETAPE e ON e.code = 'DEPOT_VERSION_CORRIGEE_VALIDATION_DOCTORANT' + LEFT JOIN V_SITU_DEPOT_VC_VALID_DOCT v ON v.these_id = t.id + + UNION ALL + + -- + -- DEPOT_VERSION_CORRIGEE_VALIDATION_DIRECTEUR : franchie si toutes les validations attendues existent + -- + select * from ( + WITH tmp AS ( + SELECT + these_id, + sum(valide) AS resultat, + count(valide) AS objectif + FROM V_SITU_DEPOT_VC_VALID_DIR + GROUP BY these_id + ) + SELECT + t.id AS these_id, + e.id AS etape_id, + e.code, + e.ORDRE, + case when coalesce(v.resultat, 0) = v.objectif then 1 else 0 end franchie, + coalesce(v.resultat, 0) resultat, + v.objectif + FROM these t + JOIN WF_ETAPE e ON e.code = 'DEPOT_VERSION_CORRIGEE_VALIDATION_DIRECTEUR' + LEFT JOIN tmp v ON v.these_id = t.id + ) + + UNION ALL + + -- + -- REMISE_EXEMPLAIRE_PAPIER_THESE_CORRIGEE : franchie pas pour le moment + -- + select * from ( + WITH tmp_last AS ( + SELECT + THESE_ID as these_id, + count(THESE_ID) AS resultat + FROM V_SITU_VERSION_PAPIER_CORRIGEE + GROUP BY THESE_ID + ) + SELECT + t.id AS these_id, + e.id AS etape_id, + e.code, + e.ORDRE, + coalesce(tl.resultat, 0) franchie, + 0, + 1 + FROM these t + JOIN WF_ETAPE e ON e.code = 'REMISE_EXEMPLAIRE_PAPIER_THESE_CORRIGEE' + LEFT JOIN tmp_last tl ON tl.these_id = t.id + ) + + ) t + JOIN V_WF_ETAPE_PERTIN v ON t.these_id = v.these_id AND t.etape_id = v.etape_id +; + +create or replace view V_SITU_AUTORIS_DIFF_THESE as +SELECT + d.these_id, + d.id AS diffusion_id +FROM DIFFUSION d +where d.VERSION_CORRIGEE = 0 and d.HISTO_DESTRUCTEUR_ID is null +; + +create or replace view V_SITU_AUTORIS_DIFF_THESE_VOC as +SELECT + d.these_id, + d.id AS diffusion_id +FROM DIFFUSION d + -- NB: on se base sur l'existence d'une version corrigée et pas sur t.CORRECTION_AUTORISEE qui peut revenir à null + JOIN FICHIER_THESE ft ON ft.THESE_ID = d.THESE_ID AND EST_ANNEXE = 0 AND EST_EXPURGE = 0 + JOIN FICHIER f ON ft.FICHIER_ID = f.id and f.HISTO_DESTRUCTION is null + JOIN VERSION_FICHIER v ON f.VERSION_FICHIER_ID = v.id AND v.CODE = 'VOC' +where d.VERSION_CORRIGEE = 1 and d.HISTO_DESTRUCTEUR_ID is null +; + +create or replace view V_SITU_ATTESTATIONS as +SELECT + a.these_id, + a.id AS attestation_id +FROM ATTESTATION a +where a.VERSION_CORRIGEE = 0 and a.HISTO_DESTRUCTEUR_ID is null +; + +create or replace view V_SITU_ATTESTATIONS_VOC as +SELECT + a.these_id, + a.id AS attestation_id +FROM ATTESTATION a + -- NB: on se base sur l'existence d'une version corrigée et pas sur t.CORRECTION_AUTORISEE qui peut revenir à null + JOIN FICHIER_THESE ft ON ft.THESE_ID = a.THESE_ID AND EST_ANNEXE = 0 AND EST_EXPURGE = 0 + JOIN FICHIER f ON ft.FICHIER_ID = f.id and f.HISTO_DESTRUCTION is null + JOIN VERSION_FICHIER v ON f.VERSION_FICHIER_ID = v.id AND v.CODE = 'VOC' +where a.VERSION_CORRIGEE = 1 and a.HISTO_DESTRUCTEUR_ID is null +; + + + +-- +-- Ajout des dates d'abandon et de transfert. +-- + +alter table TMP_THESE + add DAT_ABANDON date +/ +alter table TMP_THESE + add DAT_TRANSFERT_DEP date +/ +alter table THESE + add DATE_ABANDON date +/ +alter table THESE + add DATE_TRANSFERT date +/ + +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 +/ + +create or replace view V_DIFF_THESE as +select diff."ID",diff."SOURCE_ID",diff."SOURCE_CODE",diff."IMPORT_ACTION",diff."ANNEE_UNIV_1ERE_INSC",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_ANNEE_UNIV_1ERE_INSC",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.ANNEE_UNIV_1ERE_INSC ELSE S.ANNEE_UNIV_1ERE_INSC END ANNEE_UNIV_1ERE_INSC, + 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.ANNEE_UNIV_1ERE_INSC <> S.ANNEE_UNIV_1ERE_INSC OR (D.ANNEE_UNIV_1ERE_INSC IS NULL AND S.ANNEE_UNIV_1ERE_INSC IS NOT NULL) OR (D.ANNEE_UNIV_1ERE_INSC IS NOT NULL AND S.ANNEE_UNIV_1ERE_INSC IS NULL) THEN 1 ELSE 0 END U_ANNEE_UNIV_1ERE_INSC, + 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.ANNEE_UNIV_1ERE_INSC <> S.ANNEE_UNIV_1ERE_INSC OR (D.ANNEE_UNIV_1ERE_INSC IS NULL AND S.ANNEE_UNIV_1ERE_INSC IS NOT NULL) OR (D.ANNEE_UNIV_1ERE_INSC IS NOT NULL AND S.ANNEE_UNIV_1ERE_INSC 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 +/ diff --git a/doc/release-notes/1.4.0/02-data-1.4.0.sql b/doc/release-notes/1.4.0/02-data-1.4.0.sql new file mode 100644 index 0000000000000000000000000000000000000000..027b05e8003a012088d6fcd7a8eb1517c1ec9d27 --- /dev/null +++ b/doc/release-notes/1.4.0/02-data-1.4.0.sql @@ -0,0 +1,11 @@ + +-- +-- Inversion des étapes du WF Diffusion et Attestations. +-- + +update WF_ETAPE set ORDRE = 13 where CODE = 'AUTORISATION_DIFFUSION_THESE' ; +update WF_ETAPE set ORDRE = 18 where CODE = 'ATTESTATIONS' ; +update WF_ETAPE set ORDRE = 213 where CODE = 'AUTORISATION_DIFFUSION_THESE_VERSION_CORRIGEE' ; +update WF_ETAPE set ORDRE = 218 where CODE = 'ATTESTATIONS_VERSION_CORRIGEE' ; + +-- COMMIT ; diff --git a/doc/release-notes/v1.4.0.md b/doc/release-notes/v1.4.0.md index a32495d23e8ab38259a2d59e5f65a71f3cbe5838..c90f4159e0962c5c90d116e5ebab1748397d2b92 100644 --- a/doc/release-notes/v1.4.0.md +++ b/doc/release-notes/v1.4.0.md @@ -16,4 +16,4 @@ bash ./install.sh ## 2. Dans la base de données -Rien à faire \ No newline at end of file +Exécuter dans l'ordre les scripts SQL présents dans le répertoire [1.4.0](1.4.0). diff --git a/module/Application/src/Application/Command/AbstractCommand.php b/module/Application/src/Application/Command/AbstractCommand.php index 39767c3b0b4048a5526f3b32d75b5cd587773a93..f2c56494e620a50aa94f73ff864d9499403e524b 100644 --- a/module/Application/src/Application/Command/AbstractCommand.php +++ b/module/Application/src/Application/Command/AbstractCommand.php @@ -2,7 +2,7 @@ namespace Application\Command; -use Retraitement\Exception\TimedOutCommandException; +use Application\Command\Exception\TimedOutCommandException; use UnicaenApp\Exception\LogicException; use UnicaenApp\Exception\RuntimeException; @@ -44,6 +44,7 @@ abstract class AbstractCommand implements CommandInterface /** * @return string + * @throws TimedOutCommandException Si un timeout d'exécution a été défini et qu'il a expiré */ public function execute() { @@ -73,23 +74,6 @@ abstract class AbstractCommand implements CommandInterface return $output; } - /** - * Exécute la commande avec une limite de temps d'exécution. - * - * @param string $timeoutValue Ex: '60s', '1m', '2h', '1d'. Cf. "man timeout". - * @return string - */ - public function executeWithTimeout($timeoutValue = '20s') - { - if (!$this->commandLine) { - throw new LogicException("La ligne de commande n'a pas été générée, utilisez generate()."); - } - - $this->commandLine = "timeout --signal=HUP $timeoutValue " . $this->commandLine; - - return $this->execute(); - } - /** * @return int|null */ diff --git a/module/Application/src/Application/Command/CommandInterface.php b/module/Application/src/Application/Command/CommandInterface.php index 5f5ebc07e925320653fa92d53f80f0316f6f7265..57e065ba2a1452f07737de7f1c47761227388bc9 100644 --- a/module/Application/src/Application/Command/CommandInterface.php +++ b/module/Application/src/Application/Command/CommandInterface.php @@ -2,6 +2,7 @@ namespace Application\Command; +use Application\Command\Exception\TimedOutCommandException; use UnicaenApp\Exception\RuntimeException; interface CommandInterface @@ -37,6 +38,7 @@ interface CommandInterface /** * @return string + * @throws TimedOutCommandException Si un timeout d'exécution a été défini et qu'il a expiré */ public function execute(); diff --git a/module/Retraitement/src/Retraitement/Exception/TimedOutCommandException.php b/module/Application/src/Application/Command/Exception/TimedOutCommandException.php similarity index 66% rename from module/Retraitement/src/Retraitement/Exception/TimedOutCommandException.php rename to module/Application/src/Application/Command/Exception/TimedOutCommandException.php index fa1fcf1ec8f000910d7b91237b70cb3689ba9e98..0a6ada4b9079deca689fd6368845eab5f06b483d 100644 --- a/module/Retraitement/src/Retraitement/Exception/TimedOutCommandException.php +++ b/module/Application/src/Application/Command/Exception/TimedOutCommandException.php @@ -1,16 +1,14 @@ <?php -namespace Retraitement\Exception; +namespace Application\Command\Exception; -use UnicaenApp\Exception\RuntimeException; - -class TimedOutCommandException extends RuntimeException +class TimedOutCommandException extends \Exception { private $timeout; /** * @param string $userFirendlyTimeout - * @return TimedOutCommandException + * @return $this */ public function setTimeout($userFirendlyTimeout) { diff --git a/module/Application/src/Application/Controller/ExportController.php b/module/Application/src/Application/Controller/ExportController.php index 455f6a4adb1ad0083f6e6c89b842e68a4cdc8727..9b594b56f9c8022c73ba80ec353ec685627c726d 100644 --- a/module/Application/src/Application/Controller/ExportController.php +++ b/module/Application/src/Application/Controller/ExportController.php @@ -82,6 +82,8 @@ class ExportController extends AbstractController //Dates 'Date de première inscription' => function (These $these) { return $these->getDatePremiereInscription(); }, + "Date d'abandon" => function (These $these) { return $these->getDateAbandon(); }, + 'Date de transfert' => function (These $these) { return $these->getDateTransfert(); }, 'Date de prévisionnel de soutenance' => function (These $these) { return $these->getDatePrevisionSoutenance(); }, 'Date de soutenance' => function (These $these) { return $these->getDateSoutenance(); }, 'Date de fin de confientialité' => function (These $these) { return $these->getDateFinConfidentialite(); }, diff --git a/module/Application/src/Application/Controller/FichierTheseController.php b/module/Application/src/Application/Controller/FichierTheseController.php index c636167881569d2ef4283d489531d1669329d6ae..fb96f3d33245526830d5be4a09b589d0067ddb3f 100644 --- a/module/Application/src/Application/Controller/FichierTheseController.php +++ b/module/Application/src/Application/Controller/FichierTheseController.php @@ -2,9 +2,9 @@ namespace Application\Controller; +use Application\Command\Exception\TimedOutCommandException; use Application\Entity\Db\Fichier; use Application\Entity\Db\FichierThese; -use Application\Entity\Db\NatureFichier; use Application\Entity\Db\These; use Application\Entity\Db\VersionFichier; use Application\EventRouterReplacerAwareTrait; @@ -445,7 +445,11 @@ class FichierTheseController extends AbstractController } $pdcData = $this->theseService->fetchInformationsPageDeCouverture($these); - $outputFilePath = $this->fichierTheseService->fusionnerPdcEtThese($these, $pdcData, $versionFichier, $removeFirstPage); + try { + $outputFilePath = $this->fichierTheseService->fusionnerPdcEtThese($these, $pdcData, $versionFichier, $removeFirstPage); + } catch (TimedOutCommandException $e) { + // n'arrive jamais car aucun timeout n'a été spécifié lors de l'appel à fusionnerPdcEtThese() + } $this->eventRouterReplacer->replaceEventRouter($this->getEvent()); diff --git a/module/Application/src/Application/Controller/StructureConcreteController.php b/module/Application/src/Application/Controller/StructureConcreteController.php index 729a28bc594a7dc7d94692674ae72deeb90befbb..62a2456a4de5c5dd9242f3eb79b09b3d4fff5d25 100644 --- a/module/Application/src/Application/Controller/StructureConcreteController.php +++ b/module/Application/src/Application/Controller/StructureConcreteController.php @@ -278,7 +278,7 @@ abstract class StructureConcreteController extends AbstractController $structureId = $this->params()->fromRoute("structure"); $this->supprimerLogoStructure(); - return $this->redirect()->toRoute($this->routeName, [], ['query' => ['selected' => $structureId], "fragment" => $structureId], true); + return $this->redirect()->toRoute($this->routeName."/information", [], ['query' => ['selected' => $structureId], "fragment" => $structureId], true); } /** diff --git a/module/Application/src/Application/Controller/TheseController.php b/module/Application/src/Application/Controller/TheseController.php index c1ecd4350bb585b19ceff228298b9d5933e2d85f..30ff5b2454f396117a40f5ce16deee7c64e20395 100755 --- a/module/Application/src/Application/Controller/TheseController.php +++ b/module/Application/src/Application/Controller/TheseController.php @@ -2,6 +2,7 @@ namespace Application\Controller; +use Application\Command\Exception\TimedOutCommandException; use Application\Entity\Db\Attestation; use Application\Entity\Db\Diffusion; use Application\Entity\Db\FichierThese; @@ -24,8 +25,6 @@ use Application\Form\MetadonneeTheseForm; use Application\Form\PointsDeVigilanceForm; use Application\Form\RdvBuTheseDoctorantForm; use Application\Form\RdvBuTheseForm; -use Application\Rule\AutorisationDiffusionRule; -use Application\Rule\SuppressionAttestationsRequiseRule; use Application\Service\Etablissement\EtablissementServiceAwareTrait; use Application\Service\FichierThese\Exception\ValidationImpossibleException; use Application\Service\FichierThese\FichierTheseServiceAwareTrait; @@ -48,7 +47,6 @@ use Doctrine\ORM\OptimisticLockException; use Doctrine\ORM\Tools\Pagination\Paginator; use DoctrineORMModule\Paginator\Adapter\DoctrinePaginator; use Import\Service\Traits\ImportServiceAwareTrait; -use Retraitement\Exception\TimedOutCommandException; use UnicaenApp\Exception\RuntimeException; use UnicaenApp\Service\EntityManagerAwareTrait; use UnicaenApp\Service\MessageCollectorAwareTrait; @@ -497,6 +495,7 @@ class TheseController extends AbstractController { $estDoctorant = (bool) $this->userContextService->getSelectedRoleDoctorant(); $these = $this->requestedThese(); + $version = $this->fichierTheseService->fetchVersionFichier(VersionFichier::CODE_ORIG); $asynchronous = $this->params()->fromRoute('asynchronous'); $versionArchivable = $this->fichierTheseService->getRepository()->getVersionArchivable($these); @@ -508,6 +507,7 @@ class TheseController extends AbstractController $view = new ViewModel([ 'these' => $these, + 'diffusion' => $these->getDiffusionForVersion($version), 'estDoctorant' => $estDoctorant, 'modifierUrl' => $this->urlThese()->modifierRdvBuUrl($these), 'validerUrl' => $this->urlThese()->validerRdvBuUrl($these), @@ -623,7 +623,7 @@ class TheseController extends AbstractController $form = $this->getServiceLocator()->get('formElementManager')->get($estDoctorant ? 'RdvBuTheseDoctorantForm' : 'RdvBuTheseForm'); $form->bind($rdvBu); - if (! $this->theseService->isExemplPapierFourniPertinent($these)) { + if ($form instanceof RdvBuTheseForm && ! $this->theseService->isExemplPapierFourniPertinent($these)) { $form->disableExemplPapierFourni(); } @@ -806,8 +806,6 @@ class TheseController extends AbstractController } catch (TimedOutCommandException $toce) { // relancer le retraitement en tâche de fond $this->fichierTheseService->creerFichierTheseRetraiteAsync($fichierVersionOriginale); - } catch (RuntimeException $re) { - // erreur prévue } } return $this->redirect()->toRoute(null, [], ['query'=>$this->params()->fromQuery()], true); @@ -1327,7 +1325,6 @@ class TheseController extends AbstractController $codes = [ Variable::CODE_ETB_LIB, Variable::CODE_ETB_ART_ETB_LIB, - Variable::CODE_TRIBUNAL_COMPETENT, ]; $dateObs = $these->getDateSoutenance() ?: $these->getDatePrevisionSoutenance(); $variableRepo = $this->variableService->getRepository(); @@ -1337,7 +1334,6 @@ class TheseController extends AbstractController $libEtablissementA = "à " . $letab; $libEtablissementLe = $letab; $libEtablissementDe = "de " . $letab; - $libTribunal = lcfirst($vars[Variable::CODE_TRIBUNAL_COMPETENT]->getValeur()); $renderer = $this->getServiceLocator()->get('view_renderer'); /* @var $renderer \Zend\View\Renderer\PhpRenderer */ $exporter = new ConventionPdfExporter($renderer, 'A4'); @@ -1350,7 +1346,6 @@ class TheseController extends AbstractController 'libEtablissementA' => $libEtablissementA, 'libEtablissementLe' => $libEtablissementLe, 'libEtablissementDe' => $libEtablissementDe, - 'libTribunal' => $libTribunal, ]); $exporter->export('export.pdf'); exit; @@ -1567,7 +1562,7 @@ class TheseController extends AbstractController $pdcData = $this->theseService->fetchInformationsPageDeCouverture($these); try { - // Un timeout peut être appliqué au lancement du script de retraitement. + // Un timeout peut être appliqué au lancement du script. // Si ce timout est atteint, l'exécution du script est interrompue // et une exception TimedOutCommandException est levée. $timeout = $this->timeoutRetraitement; @@ -1576,10 +1571,8 @@ class TheseController extends AbstractController $destinataires = [ $this->userContextService->getIdentityDb()->getEmail() ] ; // relancer le retraitement en tâche de fond $this->fichierTheseService->fusionneFichierTheseAsync($these, $versionFichier, $removal, $destinataires); + return $this->redirect()->toRoute('these/rdv-bu', ['these' => $these->getId(), 'asynchronous' => 1], [], true); - exit(); - } catch (RuntimeException $re) { - // erreur prévue } /** Retourner un PDF ... */ diff --git a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Structure.dcm.xml b/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Structure.dcm.xml index ac2f4c947e5d5c1fb168386581a6daba48bf61e7..a9a5026241c2dc3bd8f23d9ee1bcee69aaa5c513 100644 --- a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Structure.dcm.xml +++ b/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Structure.dcm.xml @@ -10,6 +10,7 @@ </id> <field name="sigle" type="string" column="SIGLE" length="32" nullable="true"/> <field name="libelle" type="string" column="LIBELLE" length="128" nullable="false"/> + <field name="ferme" type="integer" column="EST_FERME" nullable="false"/> <field name="cheminLogo" type="string" column="CHEMIN_LOGO" length="200" nullable="true"/> <many-to-one field="typeStructure" target-entity="Application\Entity\Db\TypeStructure"> diff --git a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.These.dcm.xml b/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.These.dcm.xml index 683409d7a9c7a56f6bb72c45edfcf91e334bacc1..364a890adda6beeb46337b1c0dd3f467915a4236 100644 --- a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.These.dcm.xml +++ b/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.These.dcm.xml @@ -16,6 +16,8 @@ <field name="datePrevisionSoutenance" type="datetime" column="DATE_PREV_SOUTENANCE" nullable="true"/> <field name="dateSoutenance" type="datetime" column="DATE_SOUTENANCE" nullable="true"/> <field name="dateFinConfidentialite" type="datetime" column="DATE_FIN_CONFID" nullable="true"/> + <field name="dateAbandon" type="datetime" column="DATE_ABANDON" nullable="true"/> + <field name="dateTransfert" type="datetime" column="DATE_TRANSFERT" nullable="true"/> <field name="codeUniteRecherche" type="string" column="COD_UNIT_RECH" length="50" nullable="true"/> <field name="libelleUniteRecherche" type="string" column="LIB_UNIT_RECH" length="200" nullable="true"/> <field name="correctionAutorisee" type="string" column="CORREC_AUTORISEE" nullable="true"/> diff --git a/module/Application/src/Application/Entity/Db/Structure.php b/module/Application/src/Application/Entity/Db/Structure.php index 887e73433b322f1d992ce572bbc6c182795d7150..ba0a853f3a5a8b1c2a97fc8588eac598d791cfc2 100644 --- a/module/Application/src/Application/Entity/Db/Structure.php +++ b/module/Application/src/Application/Entity/Db/Structure.php @@ -23,11 +23,13 @@ class Structure implements StructureInterface, HistoriqueAwareInterface, SourceA * @var string $sigle * @var string $libelle * @var string $cheminLogo + * @var integer $cheminLogo */ private $id; protected $sigle; protected $libelle; protected $cheminLogo; + protected $ferme; /** * @var string @@ -341,4 +343,20 @@ class Structure implements StructureInterface, HistoriqueAwareInterface, SourceA { return 'structure'; } + + /** + * @return bool + */ + public function isFerme() + { + return $this->ferme === 1; + } + + /** + * @param boolean $ferme + */ + public function setFerme($ferme) + { + if (!$ferme) $this->ferme = 0; else $this->ferme = 1; + } } \ No newline at end of file diff --git a/module/Application/src/Application/Entity/Db/These.php b/module/Application/src/Application/Entity/Db/These.php index a5cf586a49a1e0d32ffa851515a7bdcb9031874d..132ee4d5e4bef8343ae04a23bd9d9412dfab6572 100644 --- a/module/Application/src/Application/Entity/Db/These.php +++ b/module/Application/src/Application/Entity/Db/These.php @@ -125,6 +125,16 @@ class These implements HistoriqueAwareInterface, ResourceInterface */ protected $dateFinConfidentialite; + /** + * @var DateTime|null + */ + protected $dateAbandon; + + /** + * @var DateTime|null + */ + protected $dateTransfert; + /** * @var string */ @@ -451,6 +461,60 @@ class These implements HistoriqueAwareInterface, ResourceInterface return $this; } + /** + * @return DateTime|null + */ + public function getDateAbandon() + { + return $this->dateAbandon; + } + + /** + * @return string + */ + public function getDateAbandonToString(): string + { + return Util::formattedDate($this->getDateAbandon()); + } + + /** + * @param DateTime|null $dateAbandon + * @return These + */ + public function setDateAbandon(DateTime $dateAbandon = null): These + { + $this->dateAbandon = $dateAbandon; + + return $this; + } + + /** + * @return DateTime|null + */ + public function getDateTransfert() + { + return $this->dateTransfert; + } + + /** + * @return string + */ + public function getDateTransfertToString(): string + { + return Util::formattedDate($this->getDateTransfert()); + } + + /** + * @param DateTime|null $dateTransfert + * @return These + */ + public function setDateTransfert(DateTime $dateTransfert = null): These + { + $this->dateTransfert = $dateTransfert; + + return $this; + } + /** * @return string */ diff --git a/module/Application/src/Application/Entity/Db/Variable.php b/module/Application/src/Application/Entity/Db/Variable.php index 9450e6e0140038fd73664e48e9a426b407dbd9d3..c99b9a58a3d85cd1cf0ba681e292aa2d49e1577f 100644 --- a/module/Application/src/Application/Entity/Db/Variable.php +++ b/module/Application/src/Application/Entity/Db/Variable.php @@ -21,7 +21,6 @@ class Variable implements HistoriqueAwareInterface const CODE_ETB_LIB = 'ETB_LIB'; // Ex: "Université de Caen Normandie" const CODE_ETB_LIB_TIT_RESP = 'ETB_LIB_TIT_RESP'; // Ex: "Le Président" const CODE_ETB_LIB_NOM_RESP = 'ETB_LIB_NOM_RESP'; // Ex: "Pierre Denise" - const CODE_TRIBUNAL_COMPETENT = 'TRIBUNAL_COMPETENT'; // Ex: "Trinbunal administratif de Caen" /** * @var string diff --git a/module/Application/src/Application/Form/DiffusionTheseForm.php b/module/Application/src/Application/Form/DiffusionTheseForm.php index 42fa9cd1748a41f398e2a31fec426888d7f6d43a..04ac65f9273e840f27233da809d30b0a65f8775a 100644 --- a/module/Application/src/Application/Form/DiffusionTheseForm.php +++ b/module/Application/src/Application/Form/DiffusionTheseForm.php @@ -218,7 +218,7 @@ class DiffusionTheseForm extends Form 'type' => 'Text', 'name' => 'halId', 'options' => [ - 'label' => 'Identifiant HAL (facultatif)', + 'label' => 'IdHAL (facultatif)', ], 'attributes' => [ 'title' => "", diff --git a/module/Application/src/Application/Form/EcoleDoctoraleForm.php b/module/Application/src/Application/Form/EcoleDoctoraleForm.php index 579a28b20496835063e29557baa27125d7a9be9d..6a32a25fc53a326961bedee17ee925d45461dc52 100644 --- a/module/Application/src/Application/Form/EcoleDoctoraleForm.php +++ b/module/Application/src/Application/Form/EcoleDoctoraleForm.php @@ -3,6 +3,7 @@ namespace Application\Form; use Application\Entity\Db\EcoleDoctorale; +use Zend\Form\Element\Checkbox; use Zend\Form\Element\Hidden; use Zend\Form\Element\File; use Zend\Form\Element\Submit; @@ -39,6 +40,10 @@ class EcoleDoctoraleForm extends Form new Text('code')) ->setLabel("Code :") ); + $this->add( + (new Checkbox('estFerme')) + ->setLabel("École doctorale fermée") + ); $this ->add(( new File('cheminLogo')) diff --git a/module/Application/src/Application/Form/EtablissementForm.php b/module/Application/src/Application/Form/EtablissementForm.php index 4a9b80fe20a1f1ec3e15c1d8fecd3f5a934dbae8..b41d209319175b285f2b15dca5845486bd3d4441 100644 --- a/module/Application/src/Application/Form/EtablissementForm.php +++ b/module/Application/src/Application/Form/EtablissementForm.php @@ -54,6 +54,10 @@ class EtablissementForm extends Form (new Checkbox('estAssocie')) ->setLabel("Établissement associé") ); + $this->add( + (new Checkbox('estFerme')) + ->setLabel("Établissement fermé") + ); $this ->add(( diff --git a/module/Application/src/Application/Form/Hydrator/EcoleDoctoraleHydrator.php b/module/Application/src/Application/Form/Hydrator/EcoleDoctoraleHydrator.php index 718f12a6b8bc26fe1960b7e87fdacd81856be0ba..bf1bfbac0cd994133a4cb3dc78d5ffced3addef4 100644 --- a/module/Application/src/Application/Form/Hydrator/EcoleDoctoraleHydrator.php +++ b/module/Application/src/Application/Form/Hydrator/EcoleDoctoraleHydrator.php @@ -20,6 +20,7 @@ class EcoleDoctoraleHydrator extends DoctrineObject $data['code'] = $ed->getStructure()->getCode(); $data['sigle'] = $ed->getSigle(); $data['cheminLogo'] = $ed->getCheminLogo(); + $data['estFerme'] = $ed->getStructure()->isFerme(); return $data; } @@ -40,6 +41,7 @@ class EcoleDoctoraleHydrator extends DoctrineObject $object->getStructure()->setCode($data['code']); $object->setSigle($data['sigle']); $object->setCheminLogo($data['cheminLogo']); + if (isset($data['estFerme']) AND $data['estFerme'] === "1") $object->getStructure()->setFerme(true); else $object->getStructure()->setFerme(false); return $object; } diff --git a/module/Application/src/Application/Form/Hydrator/EtablissementHydrator.php b/module/Application/src/Application/Form/Hydrator/EtablissementHydrator.php index 632fd8da184579f2ca625acd46ca13cd73528bf2..9f71687023fc738e5c0dc4563316d86eb24b4258 100644 --- a/module/Application/src/Application/Form/Hydrator/EtablissementHydrator.php +++ b/module/Application/src/Application/Form/Hydrator/EtablissementHydrator.php @@ -24,6 +24,7 @@ class EtablissementHydrator extends DoctrineObject $data['estMembre'] = $etablissement->estMembre(); $data['estAssocie'] = $etablissement->estAssocie(); $data['cheminLogo'] = $etablissement->getCheminLogo(); + $data['estFerme'] = $etablissement->getStructure()->isFerme(); return $data; } @@ -47,7 +48,7 @@ class EtablissementHydrator extends DoctrineObject $object->setEstMembre($data['estMembre']); $object->setEstAssocie($data['estAssocie']); $object->setCheminLogo($data['cheminLogo']); - + if (isset($data['estFerme']) AND $data['estFerme'] === "1") $object->getStructure()->setFerme(true); else $object->getStructure()->setFerme(false); return $object; } } \ No newline at end of file diff --git a/module/Application/src/Application/Form/Hydrator/UniteRechercheHydrator.php b/module/Application/src/Application/Form/Hydrator/UniteRechercheHydrator.php index cb40b5857d53ff8bbc97bb0e964213970172cc84..3684eb8923215ebd0f98ce925ef46c28ae44ee37 100644 --- a/module/Application/src/Application/Form/Hydrator/UniteRechercheHydrator.php +++ b/module/Application/src/Application/Form/Hydrator/UniteRechercheHydrator.php @@ -21,6 +21,7 @@ class UniteRechercheHydrator extends DoctrineObject $data['sigle'] = $ur->getSigle(); $data['cheminLogo'] = $ur->getCheminLogo(); $data['RNSR'] = $ur->getRNSR(); + $data['estFerme'] = $ur->getStructure()->isFerme(); return $data; } @@ -42,6 +43,7 @@ class UniteRechercheHydrator extends DoctrineObject $object->setSigle($data['sigle']); $object->setCheminLogo($data['cheminLogo']); $object->setRNSR($data['RNSR']); + if (isset($data['estFerme']) AND $data['estFerme'] === "1") $object->getStructure()->setFerme(true); else $object->getStructure()->setFerme(false); return $object; } diff --git a/module/Application/src/Application/Form/RdvBuTheseForm.php b/module/Application/src/Application/Form/RdvBuTheseForm.php index 72ef07b746ee4c839ce4921fef30bb401b377903..c6e1e8dbc14775aa01e954fb5c3799e691d48cef 100644 --- a/module/Application/src/Application/Form/RdvBuTheseForm.php +++ b/module/Application/src/Application/Form/RdvBuTheseForm.php @@ -109,7 +109,7 @@ class RdvBuTheseForm extends Form 'type' => 'Text', 'name' => 'halId', 'options' => [ - 'label' => 'Identifiant HAL (facultatif)', + 'label' => 'IdHAL (facultatif)', ], 'attributes' => [ 'title' => "", diff --git a/module/Application/src/Application/Form/UniteRechercheForm.php b/module/Application/src/Application/Form/UniteRechercheForm.php index 372dfbbafc14727d1ad747f4fe14cdd99525e641..38c51bc8f9d97b4a35ab94abfbac54e080104ea3 100644 --- a/module/Application/src/Application/Form/UniteRechercheForm.php +++ b/module/Application/src/Application/Form/UniteRechercheForm.php @@ -3,6 +3,7 @@ namespace Application\Form; use Application\Entity\Db\UniteRecherche; +use Zend\Form\Element\Checkbox; use Zend\Form\Element\Submit; use Zend\Form\Element\Text; use Zend\Form\Element\File; @@ -42,6 +43,10 @@ class UniteRechercheForm extends Form new Text('RNSR')) ->setLabel("Identifiant RNSR :") ); + $this->add( + (new Checkbox('estFerme')) + ->setLabel("Unité de recherche fermée") + ); $this ->add(( new File('cheminLogo')) diff --git a/module/Application/src/Application/Service/FichierThese/FichierTheseService.php b/module/Application/src/Application/Service/FichierThese/FichierTheseService.php index 74497f3eb4569a9b888b48cee622559b27e7c927..5880a66b994dfcdaed75f494a268eb925d9798b7 100644 --- a/module/Application/src/Application/Service/FichierThese/FichierTheseService.php +++ b/module/Application/src/Application/Service/FichierThese/FichierTheseService.php @@ -26,7 +26,7 @@ use Application\Service\VersionFichier\VersionFichierServiceAwareTrait; use Application\Validator\Exception\CinesErrorException; use Application\Validator\FichierCinesValidator; use Doctrine\ORM\OptimisticLockException; -use Retraitement\Exception\TimedOutCommandException; +use Application\Command\Exception\TimedOutCommandException; use Retraitement\Service\RetraitementServiceAwareTrait; use UnicaenApp\Exception\LogicException; use UnicaenApp\Exception\RuntimeException; @@ -286,6 +286,7 @@ class FichierTheseService extends BaseService * @param FichierThese $fichierThese Fichier à retraiter * @param string $timeout Timeout éventuel à appliquer au lancement du script de retraitement. * @return FichierThese Fichier retraité + * @throws TimedOutCommandException */ public function creerFichierTheseRetraite(FichierThese $fichierThese, $timeout = null) { @@ -437,12 +438,14 @@ class FichierTheseService extends BaseService * @param PdcData $pdcData * @param PhpRenderer $renderer * @param string $filepath + * @param boolean $recto */ - public function generatePageDeCouverture(PdcData $pdcData, PhpRenderer $renderer, $filepath = null) + public function generatePageDeCouverture(PdcData $pdcData, PhpRenderer $renderer, $filepath = null, $recto = true) { $exporter = new PageDeCouverturePdfExporter($renderer, 'A4'); $exporter->setVars([ 'informations' => $pdcData, + 'recto/verso' => $recto, ]); if ($filepath !== null) { $exporter->export($filepath, Pdf::DESTINATION_FILE); @@ -507,6 +510,7 @@ class FichierTheseService extends BaseService * @param bool $removeFirstPage * @param int $timeout * @return string + * @throws TimedOutCommandException */ public function fusionnerPdcEtThese(These $these, PdcData $pdcData, $versionFichier, $removeFirstPage = false, $timeout = 0) { @@ -531,9 +535,6 @@ class FichierTheseService extends BaseService )); } } - catch (TimedOutCommandException $toce) { - throw $toce; - } catch (RuntimeException $rte) { throw new RuntimeException( "Une erreur est survenue lors de l'exécution de la commande " . $command->getName(), @@ -568,12 +569,17 @@ class FichierTheseService extends BaseService { // generation de la couverture $filename = "sygal_couverture_" . $these->getId() . "_" . uniqid() . ".pdf"; - $this->generatePageDeCouverture($pdcData, $this->renderer, $filename); + $this->generatePageDeCouverture($pdcData, $this->renderer, $filename, !$removeFirstPage); // recuperation de la bonne version du manuscript $manuscritFichier = current($this->getRepository()->fetchFichierTheses($these, NatureFichier::CODE_THESE_PDF, $versionFichier)); $manuscritChemin = $this->fichierService->computeDestinationFilePathForFichier($manuscritFichier->getFichier()); + if (!is_readable($manuscritChemin)) { + throw new RuntimeException( + "Le fichier suivant n'existe pas ou n'est pas accessible sur le serveur : " . $manuscritChemin); + } + $inputFiles = [ 'couverture' => sys_get_temp_dir() . '/' . $filename, 'manuscrit' => $manuscritChemin diff --git a/module/Application/src/Application/Service/Structure/StructureService.php b/module/Application/src/Application/Service/Structure/StructureService.php index 4cc5b54061a95d3c648f57db77d613b83a4b968c..3e09b44040c9882693fe2fdb06360a6466d44e59 100755 --- a/module/Application/src/Application/Service/Structure/StructureService.php +++ b/module/Application/src/Application/Service/Structure/StructureService.php @@ -5,7 +5,6 @@ namespace Application\Service\Structure; use Application\Command\ConvertCommand; use Application\Entity\Db\EcoleDoctorale; use Application\Entity\Db\Etablissement; -use Application\Entity\Db\Source; use Application\Entity\Db\Structure; use Application\Entity\Db\StructureConcreteInterface; use Application\Entity\Db\StructureInterface; @@ -25,7 +24,7 @@ use Doctrine\ORM\NonUniqueResultException; use Doctrine\ORM\OptimisticLockException; use DoctrineModule\Stdlib\Hydrator\DoctrineObject; use Import\Service\Traits\SynchroServiceAwareTrait; -use Retraitement\Exception\TimedOutCommandException; +use Application\Command\Exception\TimedOutCommandException; use UnicaenApp\Exception\RuntimeException; use UnicaenApp\Util; use Webmozart\Assert\Assert; @@ -635,9 +634,9 @@ class StructureService extends BaseService ->leftJoin('structure.structureSubstituante', 'substitutionTo') ->leftJoin('structure.structuresSubstituees', 'substitutionFrom') ->andWhere('substitutionTo.id IS NULL OR pasHistorise(substitutionTo) != 1'); - if ($order) $qb->orderBy('structure.' . $order); + if ($order) $qb->orderBy(' structure.' . $order); else { - if ($type === TypeStructure::CODE_ECOLE_DOCTORALE) $qb->orderBy('structureConcrete.sourceCode'); + if ($type === TypeStructure::CODE_ECOLE_DOCTORALE) $qb->orderBy('structure.ferme, structureConcrete.sourceCode'); } $result = $qb->getQuery()->getResult(); @@ -889,7 +888,7 @@ class StructureService extends BaseService )); } } catch (TimedOutCommandException $toce) { - throw $toce; + // n'arrive jamais car aucun timeout n'a été transmis à ConvertCommand } catch (RuntimeException $rte) { throw new RuntimeException( diff --git a/module/Application/src/Application/Service/These/Convention/ConventionPdfExporter.php b/module/Application/src/Application/Service/These/Convention/ConventionPdfExporter.php index ef36a7eccb9055ce059aa7e367bfe8ba6a263e58..e9d17dfd17f7e87bdf402935d2fe643fc91aba37 100644 --- a/module/Application/src/Application/Service/These/Convention/ConventionPdfExporter.php +++ b/module/Application/src/Application/Service/These/Convention/ConventionPdfExporter.php @@ -8,14 +8,21 @@ use Zend\View\Renderer\PhpRenderer; use Zend\View\Resolver\AggregateResolver; use Zend\View\Resolver\TemplatePathStack; - class ConventionPdfExporter extends PdfExporter { + /** + * @var array + */ private $vars; - - - + /** + * ConventionPdfExporter constructor. + * + * @param PhpRenderer|null $renderer + * @param string $format + * @param bool $orientationPaysage + * @param int $defaultFontSize + */ public function __construct(PhpRenderer $renderer = null, $format = 'A4', $orientationPaysage = false, $defaultFontSize = 10) { parent::__construct($renderer, $format, $orientationPaysage, $defaultFontSize); @@ -25,13 +32,18 @@ class ConventionPdfExporter extends PdfExporter $resolver->attach(new TemplatePathStack(['script_paths' => [__DIR__]])); $this->setLogo(file_get_contents(APPLICATION_DIR . '/public/logo_normandie_univ.jpg')); // 'var:logo' dans les phtml - $this->setHeaderScript('partial/header.phtml'); + $this->setHeaderScript('partial/header-odd.phtml', 'O'); // pages paires + $this->setHeaderScript('partial/header-even.phtml', 'E'); // pages impaires $this->setFooterScript('partial/footer.phtml'); $this->setMarginTop(20); $this->setMarginBottom(25); $this->setFooterTitle("Convention de mise en ligne"); } + /** + * @param array $vars + * @return $this + */ public function setVars(array $vars) { $this->vars = $vars; @@ -40,6 +52,12 @@ class ConventionPdfExporter extends PdfExporter return $this; } + /** + * @param string $filename + * @param string $destination + * @param string $memoryLimit + * @return string + */ public function export($filename = null, $destination = self::DESTINATION_BROWSER, $memoryLimit = null) { if (empty($this->vars)) { diff --git a/module/Application/src/Application/Service/These/Convention/convention.phtml b/module/Application/src/Application/Service/These/Convention/convention.phtml index b5ca2f1db443835460c94d172fb5f497261dbda8..f14751ceced1d4efa03f8ffc5088c7ce74efe25c 100644 --- a/module/Application/src/Application/Service/These/Convention/convention.phtml +++ b/module/Application/src/Application/Service/These/Convention/convention.phtml @@ -1,16 +1,17 @@ <?php +use Application\Entity\Db\Diffusion; use Application\Entity\Db\These; +use Application\Service\Message\DiffusionMessages; use Application\View\Renderer\PhpRenderer; /** * @var PhpRenderer $this * @var These $these + * @var Diffusion $diffusion * @var string $libEtablissement * @var string $libEtablissementA * @var string $libEtablissementLe - * @var string $libEtablissementDe - * @var string $libTribunal */ ?> @@ -75,12 +76,7 @@ use Application\View\Renderer\PhpRenderer; <div> <p> - La thèse est disponible en version imprimée au service de documentation <?php echo $libEtablissementDe ?> et - en PDF pour l'esemble de la communauté universitaire (en intranet ou dans le cadre du Prêt Entre Bibliothèques). - </p> - <p> - La loi applicable à cette présente convention est la loi française. Le tribunal compétent pour juger de tout - contentieux lié au présent contrat est <?php echo $libTribunal ?>. + <?php echo $this->message()->render(DiffusionMessages::AUTORIS_MISE_EN_LIGNE_LAIUS, [], $diffusion) ?> </p> </div> diff --git a/module/Application/src/Application/Service/These/Convention/partial/diffusion.phtml b/module/Application/src/Application/Service/These/Convention/partial/diffusion.phtml index 042ad8675688dc23202f84ac9264a41dfa9e790d..2b45a8faae8066086b7e71a57b8c9963b746f4ce 100644 --- a/module/Application/src/Application/Service/These/Convention/partial/diffusion.phtml +++ b/module/Application/src/Application/Service/These/Convention/partial/diffusion.phtml @@ -28,7 +28,4 @@ use Application\View\Renderer\PhpRenderer; <div class="diffusion-item-value"> <?php echo $this->message()->render(DiffusionMessages::AUTORIS_MISE_EN_LIGNE_REPONSE, [], $diffusion) ?> </div> - <div class="autorisation-laius text-info"> - <?php echo $this->message()->render(DiffusionMessages::AUTORIS_MISE_EN_LIGNE_LAIUS, [], $diffusion) ?> - </div> </div> \ No newline at end of file diff --git a/module/Application/src/Application/Service/These/Convention/partial/header.phtml b/module/Application/src/Application/Service/These/Convention/partial/header-even.phtml similarity index 100% rename from module/Application/src/Application/Service/These/Convention/partial/header.phtml rename to module/Application/src/Application/Service/These/Convention/partial/header-even.phtml diff --git a/module/Application/src/Application/Service/These/Convention/partial/header-odd.phtml b/module/Application/src/Application/Service/These/Convention/partial/header-odd.phtml new file mode 100644 index 0000000000000000000000000000000000000000..f6219cbd3c3257895db6a637e7d518f5e4c37049 --- /dev/null +++ b/module/Application/src/Application/Service/These/Convention/partial/header-odd.phtml @@ -0,0 +1,14 @@ +<table width="100%" style="font-size: 110%; vertical-align: top;"> + <tr> + <td width="30%" style="text-align: left;"> + <?php echo $this->headerSubtitle; ?> + </td> + <td width="40%" align="cegnter" style="font-weight: bold; /*font-size: 120%;*/"> + <?php echo $this->headerTitle; ?> + </td> + <td width="20" style="text-align: right;"> + + </td> + </tr> +</table> + diff --git a/module/Application/src/Application/Service/These/PageDeGarde/PageDeCouverturePdfExporter.php b/module/Application/src/Application/Service/These/PageDeGarde/PageDeCouverturePdfExporter.php index f3fb5e0434c91727d39694c5e1c5b2c3bc26f6d7..e769a14f0c6b3f0ddb5d7beefb4f3514aa6b479c 100644 --- a/module/Application/src/Application/Service/These/PageDeGarde/PageDeCouverturePdfExporter.php +++ b/module/Application/src/Application/Service/These/PageDeGarde/PageDeCouverturePdfExporter.php @@ -31,6 +31,9 @@ class PageDeCouverturePdfExporter extends PdfExporter $this->setHeaderScript('empty.phtml'); $this->setFooterScript('empty.phtml'); $this->addBodyScript('pagedecouverture.phtml', false, $this->vars); + if (isset($this->vars['recto/verso']) AND $this->vars['recto/verso'] === true) { + $this->addBodyScript('empty.phtml', true, $this->vars); + } return PdfExporter::export($filename, $destination, $memoryLimit); } } \ No newline at end of file diff --git a/module/Application/src/Application/Service/These/TheseRechercheService.php b/module/Application/src/Application/Service/These/TheseRechercheService.php index 24973213674564de7bf823d848b7b16175c67e99..1e58e4b9b510abbe64e54d318cfc916332f439c6 100644 --- a/module/Application/src/Application/Service/These/TheseRechercheService.php +++ b/module/Application/src/Application/Service/These/TheseRechercheService.php @@ -775,11 +775,17 @@ class TheseRechercheService private function optionify($value = null, $label = null) { if ($value instanceof Etablissement) { - return ['value' => $value->getStructure()->getCode(), 'label' => $value->getSigle()]; + $subtext = $value->getLibelle(); + if ($value->getStructure()->isFerme()) $subtext.= " <span class='label' style='color:darkred;'>FERME</span>"; + return ['value' => $value->getStructure()->getCode(), 'label' => $subtext]; } elseif ($value instanceof EcoleDoctorale) { - return ['value' => $value->getSourceCode(), 'label' => $value->getSigle(), 'subtext' => $value->getLibelle()]; + $subtext = $value->getLibelle(); + if ($value->getStructure()->isFerme()) $subtext.= " <span class='label' style='color:darkred;'>FERMEE</span>"; + return ['value' => $value->getSourceCode(), 'label' => $value->getSigle(), 'subtext' => $subtext]; } elseif ($value instanceof UniteRecherche) { - return ['value' => $value->getSourceCode(), 'label' => $value->getCode(), 'subtext' => $value->getLibelle()]; + $subtext = $value->getLibelle(); + if ($value->getStructure()->isFerme()) $subtext.= " <span class='label' style='color:darkred;'>FERMEE</span>"; + return ['value' => $value->getSourceCode(), 'label' => $value->getCode(), 'subtext' => $subtext]; } elseif ($value instanceof DomaineScientifique) { return ['value' => (string) $value->getId(), 'label' => $value->getLibelle()]; } elseif ($value instanceof OrigineFinancement) { diff --git a/module/Application/view/application/ecole-doctorale/index.phtml b/module/Application/view/application/ecole-doctorale/index.phtml index e6989fc6d3b58949ac764aa0340fe38d845e4551..b4ab849da140ad17dd0aaae63dd2bbb5bd276bb1 100644 --- a/module/Application/view/application/ecole-doctorale/index.phtml +++ b/module/Application/view/application/ecole-doctorale/index.phtml @@ -60,6 +60,9 @@ $canSubstituer = $this->isAllowed(SubstitutionPrivileges::getResourceId(Substitu <td> <a href="<?php echo $this->url('ecole-doctorale/information', ['structure' => $ecole->getStructure()->getId()], [], true); ?>"> <?php echo $ecole->getLibelle(); ?> + <?php if ($ecole->getStructure()->isFerme()) : ?> + <span class="label" style="background-color: darkred">Structure fermée</span> + <?php endif; ?> </a> </td> <td> diff --git a/module/Application/view/application/ecole-doctorale/information.phtml b/module/Application/view/application/ecole-doctorale/information.phtml index 5fac43e9e90ed2029f0b9657203b70504822af65..efa65afca9aefd5bd22b38a3fbe4739f6215a4de 100644 --- a/module/Application/view/application/ecole-doctorale/information.phtml +++ b/module/Application/view/application/ecole-doctorale/information.phtml @@ -38,6 +38,14 @@ $canAddRole = $canEdit; <dd> <?php echo $ecole->getSigle(); ?> </dd> <dt> Code :</dt> <dd> <?php echo $ecole->getStructure()->getCode(); ?> </dd> + <dt> Statut :</dt> + <dd> + <?php if ($ecole->getStructure()->isFerme()) : ?> + <span class="label" style="background-color:darkred">Structure fermée</span> + <?php else : ?> + <span class="label" style="background-color:darkgreen">Structure ouverte</span> + <?php endif; ?> + </dd> </dl> </div> <div class="col-md-4"> diff --git a/module/Application/view/application/ecole-doctorale/modifier.phtml b/module/Application/view/application/ecole-doctorale/modifier.phtml index 6177ff87b37f0a922772639d9b6fd351b93fcfe0..03136e73504fd534f350de7d001c513c825aefad 100644 --- a/module/Application/view/application/ecole-doctorale/modifier.phtml +++ b/module/Application/view/application/ecole-doctorale/modifier.phtml @@ -45,6 +45,7 @@ $form->get('code')->setAttribute('readonly', !$editable); <?php echo $fcg($form->get('libelle')) ?> <?php echo $fcg($form->get('sigle')) ?> <?php echo $fcg($form->get('code')) ?> + <?php echo $fcg($form->get('estFerme')) ?> </div> <div id="logo-div" class="col-md-6"> diff --git a/module/Application/view/application/etablissement/index.phtml b/module/Application/view/application/etablissement/index.phtml index 51ebdd5abe4f97c6bcfb45e05369e9ca326a2a58..0551a9a9b1c3028e5e43d783a2a3a5f20d17adf6 100644 --- a/module/Application/view/application/etablissement/index.phtml +++ b/module/Application/view/application/etablissement/index.phtml @@ -72,6 +72,9 @@ $canSubstituer = $this->isAllowed(SubstitutionPrivileges::getResourceId(Substitu <td> <a href="<?php echo $this->url('etablissement/information', ['structure' => $etablissement->getStructure()->getId()], [], true); ?>"> <?php echo $etablissement->getLibelle(); ?> + <?php if ($etablissement->getStructure()->isFerme()) : ?> + <span class="label" style="background-color: darkred">Structure fermée</span> + <?php endif; ?> </a> <?php if ($etablissement->estMembre()): ?> <span class="label label-primary">Membre</span> diff --git a/module/Application/view/application/etablissement/information.phtml b/module/Application/view/application/etablissement/information.phtml index a508ad5409510eaf59d1a9383a19a29b51d9db67..7a4480fa1525b3c52b996ed492d72191f7b944a3 100644 --- a/module/Application/view/application/etablissement/information.phtml +++ b/module/Application/view/application/etablissement/information.phtml @@ -67,6 +67,11 @@ $canAddRole = true; <?php if ($etablissement->estAssocie()): ?> <span class="label label-info">Associé</span> <?php endif ?> + <?php if ($etablissement->getStructure()->isFerme()) : ?> + <span class="label" style="background-color:darkred">Structure fermée</span> + <?php else : ?> + <span class="label" style="background-color:darkgreen">Structure ouverte</span> + <?php endif; ?> </dd> </dl> </div> diff --git a/module/Application/view/application/etablissement/modifier.phtml b/module/Application/view/application/etablissement/modifier.phtml index 1cc03b970e1c3a56e916b4f79c25536192381211..70c31d7e0417835e68dab79db562e85c8455db01 100644 --- a/module/Application/view/application/etablissement/modifier.phtml +++ b/module/Application/view/application/etablissement/modifier.phtml @@ -19,13 +19,19 @@ $fcg = $this->formControlGroup(); ?> <?php echo $this->form()->openTag($form->prepare()->setAttribute('class', 'etablissement')) ?> -<?php echo $this->formHidden($form->get('id')) ?> -<?php echo $fcg($form->get('libelle')) ?> -<?php echo $fcg($form->get('sigle')) ?> -<?php echo $fcg($form->get('code')) ?> -<?php echo $fcg($form->get('domaine')) ?> -<?php echo $fcg($form->get('estMembre')) ?> -<?php echo $fcg($form->get('estAssocie')) ?> + +<div class="row"> + <div class="col-md-6"> + <?php echo $this->formHidden($form->get('id')) ?> + <?php echo $fcg($form->get('libelle')) ?> + <?php echo $fcg($form->get('sigle')) ?> + <?php echo $fcg($form->get('code')) ?> + <?php echo $fcg($form->get('domaine')) ?> + <?php echo $fcg($form->get('estMembre')) ?> + <?php echo $fcg($form->get('estAssocie')) ?> + <?php echo $fcg($form->get('estFerme')) ?> + </div> + <div class="col-md-6"> <div id="logo-div"> <?php @@ -76,8 +82,9 @@ $fcg = $this->formControlGroup(); </ul> </small> </div> - </div> + </div> +</div> <?php echo $this->formElement($form->get('submit')) ?> <?php echo $this->form()->closeTag() ?> diff --git a/module/Application/view/application/substitution/index-structure.phtml b/module/Application/view/application/substitution/index-structure.phtml index b67682a673f554bf720d28cf49955122e4ff9b20..5ff760e277c3db384b234c509a6fb7a94f59a8e3 100644 --- a/module/Application/view/application/substitution/index-structure.phtml +++ b/module/Application/view/application/substitution/index-structure.phtml @@ -31,14 +31,14 @@ $canEdit = $this->isAllowed(SubstitutionPrivileges::getResourceId(SubstitutionP ?> <?php if ($canView): ?> - <div class="panel panel-info"> + <div class="box panel panel-info"> <div class="panel-heading"> - <h3> + <h2> <?php echo $libelle; ?> <span class="badge"> <?php echo count($structures); ?> </span> - </h3> + </h2> </div> <div class="panel-body"> diff --git a/module/Application/view/application/these/identite.phtml b/module/Application/view/application/these/identite.phtml index c35ed6290483cfcb1b79f6ea45ba30699770d830..d41a49dc1b0283b60badaf058cb4a8309aef7de7 100644 --- a/module/Application/view/application/these/identite.phtml +++ b/module/Application/view/application/these/identite.phtml @@ -323,6 +323,16 @@ $financementFormatter->setDisplayAs(FinancementFormatter::DISPLAY_AS_LINE); <dt>Années universitaires<br>d'inscription</dt> <dd><?php echo $these->getAnneesUnivInscriptionToString('<br>') ?: "(Non renseignée)" ?></dd> + <?php if ($these->getDateAbandon()): ?> + <dt>Date d'abandon</dt> + <dd><?php echo $these->getDateAbandonToString() ?></dd> + <?php endif ?> + + <?php if ($these->getDateTransfert()): ?> + <dt>Date de transfert + <dd><?php echo $these->getDateTransfertToString() ?></dd> + <?php endif ?> + <?php if ($these->getSoutenanceAutorisee()): ?> <dt>Soutenance autorisée</dt> <dd><?php echo $these->getSoutenanceAutorisee() === 'O' ? "Oui" : "Non" ?></dd> diff --git a/module/Application/view/application/these/partial/diffusion.phtml b/module/Application/view/application/these/partial/diffusion.phtml index 090cb431e7c4a687ad38de9d235a04ac84fcad2d..3902b4edd1247e29fea50ef5bc2f89eeb463cb81 100644 --- a/module/Application/view/application/these/partial/diffusion.phtml +++ b/module/Application/view/application/these/partial/diffusion.phtml @@ -49,6 +49,6 @@ use Application\Service\Message\DiffusionMessages; <?php endif ?> <?php if ($halId = $diffusion->getHalId()): ?> - <li>Identifiant HAL : <code class="text-muted"><?php echo $halId ?></code></li> + <li>IdHAL : <code class="text-muted"><?php echo $halId ?></code></li> <?php endif ?> </ul> \ No newline at end of file diff --git a/module/Application/view/application/these/rdv-bu-doctorant.phtml b/module/Application/view/application/these/rdv-bu-doctorant.phtml index 594e0d4233410872ed3f2063d891fe35a1770ce6..6f97899ea244976bcac83be900d60b9a06595067 100644 --- a/module/Application/view/application/these/rdv-bu-doctorant.phtml +++ b/module/Application/view/application/these/rdv-bu-doctorant.phtml @@ -1,5 +1,6 @@ <?php +use Application\Entity\Db\Diffusion; use Application\Entity\Db\These; use Application\Entity\Db\Validation; use Application\Provider\Privilege\ThesePrivileges; @@ -8,6 +9,7 @@ use Application\View\Renderer\PhpRenderer; /** * @var $this PhpRenderer * @var These $these + * @var Diffusion $diffusion * @var bool $estDoctorant * @var string $modifierUrl * @var Validation|null $validation @@ -27,13 +29,17 @@ $rdvBu = $these->getRdvBu(); <div class="panel panel-info box"> <div class="panel-heading"> - <h2 class="first">Téléchargement de la version imprimable de votre thèse </h2> + <h2 class="first">Téléchargement de la version imprimable de votre thèse</h2> </div> <div class="panel-body"> <p> - Avant de vous rendre au rendez-vous à la BU, vous devez imprimer un exemplaire papier de votre thèse.<br/> - Pour obtenir la version imprimable de votre thèse (avec page de couverture), veuillez cliquer sur le bouton ci-dessous. + <?php if ($diffusion->isRemiseExemplairePapierRequise()): ?> + Avant que la BU ne prenne contact avec vous, vous devez télécharger la thèse complète, c'est à dire le corps du mémoire auquel est ajoutée la page de couverture générée automatiquement par l'application. + Une fois la thèse complète téléchargée, assurez-vous que toutes les informations sur la page de couverture sont présentes et que la fusion n'a pas endommagé le mémoire. + <?php else: ?> + Vous pouvez obtenir la version imprimable de votre thèse (avec page de couverture) en cliquant sur le bouton ci-dessous. + <?php endif ?> </p> <!-- <div class="pull-right">--> diff --git a/module/Application/view/application/these/rdv-bu.phtml b/module/Application/view/application/these/rdv-bu.phtml index 6c2d75b5d76a0ba22d16c30723623cf031177063..b187557d99cd108ee2a720df2b22a9d26895d65e 100644 --- a/module/Application/view/application/these/rdv-bu.phtml +++ b/module/Application/view/application/these/rdv-bu.phtml @@ -1,5 +1,7 @@ <?php +use Application\Controller\TheseController; +use Application\Entity\Db\Diffusion; use Application\Entity\Db\These; use Application\Entity\Db\Validation; use Application\Entity\Db\WfEtape; @@ -12,6 +14,7 @@ use Application\Entity\Db\Repository\FichierTheseRepository; /** * @var PhpRenderer $this * @var These $these + * @var Diffusion $diffusion * @var bool $estDoctorant * @var string $modifierUrl * @var string $validerUrl @@ -21,6 +24,8 @@ use Application\Entity\Db\Repository\FichierTheseRepository; * @var string $nextStepUrl * @var FichierTheseRepository $fichierRepository * @var boolean $asynchronous + * + * @see TheseController::modifierRdvBuAction() */ $canEdit = $this->isAllowed($these, ThesePrivileges::THESE_SAISIE_RDV_BU); @@ -38,14 +43,18 @@ $rdvBu = $these->getRdvBu(); <div class="panel panel-info box"> <div class="panel-heading"> - <h2 class="first">Téléchargement de la thèse avec page de couverture</h2> + <h2 class="first">Téléchargement de la version imprimable de votre thèse</h2> </div> <div class="panel-body"> <p> + <?php if ($diffusion->isRemiseExemplairePapierRequise()): ?> Avant que la BU ne prenne contact avec vous, vous devez télécharger la thèse complète, c'est à dire le corps du mémoire auquel est ajoutée la page de couverture générée automatiquement par l'application. Une fois la thèse complète téléchargée, assurez-vous que toutes les informations sur la page de couverture sont présentes et que la fusion n'a pas endommagé le mémoire. + <?php else: ?> + Vous pouvez obtenir la version imprimable de votre thèse (avec page de couverture) en cliquant sur le bouton ci-dessous. + <?php endif ?> </p> - <div class="checkbox"> + <div class="checkbox checkbox-sm"> <label for="removal"> <input type="checkbox" id="removal"/> <span class="checkbox-label">La 1ère page du corps du mémoire est une page de couverture fournie par le doctorant et je veux retirer cette 1ère page.</span> diff --git a/module/Application/view/application/these/validation-these-corrigee.phtml b/module/Application/view/application/these/validation-these-corrigee.phtml index 5e676d440180b5839c7bc8093ee2c8e112ed220a..904be7102a792e2c323d017dc5191748e47c85e5 100644 --- a/module/Application/view/application/these/validation-these-corrigee.phtml +++ b/module/Application/view/application/these/validation-these-corrigee.phtml @@ -32,7 +32,7 @@ $canUnvalidate = $this->isAllowed($these, ValidationPrivileges::VALIDATION_DEPOT </h1> <div> - <div class="panel panel-info"> + <div class="box panel panel-info"> <div class="panel-heading"> <h2 class="first">Téléchargement de la thèse corrigée complète </h2></div> <div class="panel-body"> diff --git a/module/Application/view/application/unite-recherche/index.phtml b/module/Application/view/application/unite-recherche/index.phtml index b1d8a8928fa72ad4a4dd8dbda360c592c726f969..94714dcf89728690be1b1e2a6bbbbef1fdbb3fd2 100644 --- a/module/Application/view/application/unite-recherche/index.phtml +++ b/module/Application/view/application/unite-recherche/index.phtml @@ -62,6 +62,9 @@ $canSubstituer = $this->isAllowed(SubstitutionPrivileges::getResourceId(Substitu <td> <a href="<?php echo $this->url('unite-recherche/information', ['structure' => $unite->getStructure()->getId()], [], true); ?>"> <?php echo $unite->getLibelle(); ?> + <?php if ($unite->getStructure()->isFerme()) : ?> + <span class="label" style="background-color: darkred">Structure fermée</span> + <?php endif; ?> </a> </td> <td> diff --git a/module/Application/view/application/unite-recherche/information.phtml b/module/Application/view/application/unite-recherche/information.phtml index 6bfc2968b42f4daf83cadbd203ba9d957ab92c91..578a56dc93fe6cc660e1aeffba5c9f95bf88e0e1 100644 --- a/module/Application/view/application/unite-recherche/information.phtml +++ b/module/Application/view/application/unite-recherche/information.phtml @@ -57,6 +57,14 @@ $canAddRole = $canEdit; <?php endforeach; ?> </ul> </dd> + <dt> Statut :</dt> + <dd> + <?php if ($unite->getStructure()->isFerme()) : ?> + <span class="label" style="background-color:darkred">Structure fermée</span> + <?php else : ?> + <span class="label" style="background-color:darkgreen">Structure ouverte</span> + <?php endif; ?> + </dd> </dl> </div> <div class="col-md-4"> diff --git a/module/Application/view/application/unite-recherche/modifier.phtml b/module/Application/view/application/unite-recherche/modifier.phtml index 005006c86ca21c1d667fc41f9457fa05ee36707b..d05928138b126d81af0a7e8cfdf67ba66fea8287 100644 --- a/module/Application/view/application/unite-recherche/modifier.phtml +++ b/module/Application/view/application/unite-recherche/modifier.phtml @@ -59,6 +59,7 @@ $form->get('code')->setAttribute('readonly', !$editable); <?php echo $fcg($form->get('sigle')) ?> <?php echo $fcg($form->get('code')) ?> <?php echo $fcg($form->get('RNSR')) ?> + <?php echo $fcg($form->get('estFerme')) ?> </div> <div class="col-md-6" id="logo-div"> diff --git a/module/Import/src/Import/Model/Mapping/Import.Model.TmpThese.dcm.xml b/module/Import/src/Import/Model/Mapping/Import.Model.TmpThese.dcm.xml index 07c1eca8fcc0365a1c177d32a86b6ed03e853fb6..7a38f90e4442c1b876c4ae3926a871e55a23eb7d 100644 --- a/module/Import/src/Import/Model/Mapping/Import.Model.TmpThese.dcm.xml +++ b/module/Import/src/Import/Model/Mapping/Import.Model.TmpThese.dcm.xml @@ -17,6 +17,8 @@ <field name="datePremiereInsc" type="date" column="DAT_DEB_THS" nullable="true"/> <field name="dateSoutenancePrev" type="date" column="DAT_PREV_SOU" nullable="true"/> <field name="dateSoutenance" type="date" column="DAT_SOU_THS" nullable="true"/> + <field name="dateAbandon" type="date" column="DAT_ABANDON" nullable="true"/> + <field name="dateTransfert" type="date" column="DAT_TRANSFERT_DEP" nullable="true"/> <field name="etatThese" type="string" column="ETA_THS" length="20" nullable="true"/> <field name="libDiscipline" type="string" column="LIB_INT1_DIS" length="200" nullable="true"/> diff --git a/module/Import/src/Import/Model/TmpThese.php b/module/Import/src/Import/Model/TmpThese.php index 86833dcf0e93da41627825f8cf589a83dd16cd18..3acc2544a98cd4b1f115cbea00dc74626a2ede87 100644 --- a/module/Import/src/Import/Model/TmpThese.php +++ b/module/Import/src/Import/Model/TmpThese.php @@ -62,6 +62,16 @@ class TmpThese */ private $dateSoutenance; + /** + * @var \DateTime + */ + private $dateAbandon; + + /** + * @var \DateTime + */ + private $dateTransfert; + /** * @var string */ diff --git a/module/Retraitement/src/Retraitement/Service/RetraitementService.php b/module/Retraitement/src/Retraitement/Service/RetraitementService.php index 56011b62ed21f0e7134b617e95c335a6fb69418d..99ca1cfec08c716fffa0556773ee96d44ae97f72 100644 --- a/module/Retraitement/src/Retraitement/Service/RetraitementService.php +++ b/module/Retraitement/src/Retraitement/Service/RetraitementService.php @@ -2,16 +2,16 @@ namespace Retraitement\Service; -use Retraitement\Exception\TimedOutCommandException; +use Application\Command\Exception\TimedOutCommandException; use Application\Command\CommandInterface; use RuntimeException; class RetraitementService { /** - * FichierStarCorrector constructor. + * RetraitementService constructor. * - * @param \Application\Filter\Command\\Application\Command\CommandInterface $command + * @param CommandInterface $command */ public function __construct(CommandInterface $command) { @@ -19,12 +19,12 @@ class RetraitementService } /** - * @var \Application\Filter\Command\\Application\Command\CommandInterface + * @var CommandInterface */ private $command; /** - * @param \Application\Filter\Command\CommandInterface $command + * @param CommandInterface $command * @return self */ public function setCommand(CommandInterface $command) @@ -40,7 +40,7 @@ class RetraitementService * @param string $inputFilePath Chemin du fichier à retraiter * @param string $outputFilePath Chemin du fichier retraité généré * @param string $timeout Timeout à appliquer au lancement du script de retraitement. - * @throws TimedOutCommandException Le timout a été atteint + * @throws TimedOutCommandException Le timout d'exécution a été atteint */ private function retraiterFichierByPath($inputFilePath, $outputFilePath, $timeout = null) { @@ -62,9 +62,6 @@ class RetraitementService )); } } - catch (TimedOutCommandException $toce) { - throw $toce; - } catch (RuntimeException $rte) { throw new RuntimeException( "Une erreur est survenue lors de l'exécution de la commande de retraitement " . $this->command->getName(), diff --git a/module/Retraitement/src/Retraitement/Service/RetraitementServiceFactory.php b/module/Retraitement/src/Retraitement/Service/RetraitementServiceFactory.php index 0eae5abda5ff45005a96099a27ddc11e6f36dd6e..0d82e1042a3b7396786a6f876975ad43af05461f 100644 --- a/module/Retraitement/src/Retraitement/Service/RetraitementServiceFactory.php +++ b/module/Retraitement/src/Retraitement/Service/RetraitementServiceFactory.php @@ -2,7 +2,6 @@ namespace Retraitement\Service; -use Application\Service\FichierThese\FichierTheseService; use Application\Command\CommandInterface; use Zend\ServiceManager\Exception\InvalidArgumentException; use Zend\ServiceManager\FactoryInterface; @@ -20,11 +19,13 @@ class RetraitementServiceFactory implements FactoryInterface { $command = $this->createCommand($serviceLocator); - $service = new RetraitementService($command); - - return $service; + return new RetraitementService($command); } + /** + * @param ServiceLocatorInterface $serviceLocator + * @return CommandInterface + */ private function createCommand(ServiceLocatorInterface $serviceLocator) { $config = $serviceLocator->get('config'); @@ -37,7 +38,7 @@ class RetraitementServiceFactory implements FactoryInterface throw new InvalidArgumentException("La classe spécifiée dans l'option de 'config sygal.retraitement.command.class' n'existe pas"); } - /** @var \Application\Filter\Command\\Application\Command\CommandInterface $command */ + /** @var CommandInterface $command */ $command = new $commandClass; if (isset($config['sygal']['retraitement']['command']['options'])) { diff --git a/public/css/app.css b/public/css/app.css index af69191f920c129afc3f9236403f96bf6019896e..3dca3cde511a25edc23bdda8c10c2f0940f00230 100644 --- a/public/css/app.css +++ b/public/css/app.css @@ -406,6 +406,12 @@ p.autoris-diffusion-motif { .checkbox .checkbox-label { margin-left: 5px; } +.checkbox-sm input[type="checkbox"] { + transform: scale(0.9); } +.checkbox-sm .checkbox-label { + margin-left: 2px; + font-size: 90%; } + form.form-retraiter { margin: 4px 0 15px 0; } diff --git a/public/css/app.css.map b/public/css/app.css.map index 2db31d52c8b43d7e43f614f1e221aff7c533f0a4..f1daf68a8bb2008dcf3fbc1e7cf3625e0168c0a8 100644 --- a/public/css/app.css.map +++ b/public/css/app.css.map @@ -1,6 +1,6 @@ { "version": 3, -"mappings": ";AAOA,UAAW;EACT,WAAW,EAAE,IAAI;;AAGnB,EAAG;EACD,UAAU,EAAE,IAAI;;AAGlB,iBAAkB;EAChB,UAAU,EAAE,IAAI;;AAGlB,4BAA6B;EAC3B,gBAAgB,EAAE,8BAA8B;EAChD,iBAAiB,EAAE,SAAS;EAC5B,eAAe,EAAE,SAAS;EAC1B,mBAAmB,EAAE,SAAS;EAC9B,OAAO,EAAE,YAAY;EACrB,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI;EACX,WAAW,EAAE,OAAO;;AAIpB,cAAG;EACD,SAAS,EAAE,IAAI;AAEjB,6BAAkB;EAChB,UAAU,EAAE,CAAC;;AAIjB,cAAe;EACb,gBAAgB,EAAE,KAAK;EACvB,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,CAAC;EACb,OAAO,EAAE,CAAC;;AAGZ,4BAA6B;EAEzB,WAAG,EAAE,GAAG;EACR,cAAM,EAAE,GAAG;;AAGf,aAAc;EACZ,gBAAgB,EAAE,OAAiB;EACnC,0BAAa;IACX,KAAK,EAAE,KAAK;IACZ,gBAAgB,EAAE,WAAW;;AAI/B,kBAAK;EACH,OAAO,EAAE,OAAO;;AAIpB,UAAW;EACT,aAAa,EAAE,IAAI;EAEnB,yBAAe;IACb,OAAO,EAAE,QAAQ;IACjB,4BAAG;MACD,SAAS,EAAE,IAAI;MACf,MAAM,EAAE,CAAC;IAEX,wCAAe;MACb,YAAY,EAAE,GAAG;EAInB,yBAAG;IAEC,SAAI,EAAE,IAAI;EAGd,yBAAG;IAEC,SAAI,EAAE,IAAI;IACV,WAAM,EAAE,IAAI;EAIhB,wCAAkB;IAChB,UAAU,EAAE,CAAC;EAEf,kIAAuC;IACrC,UAAU,EAAE,CAAC;EAGf,0CAAoB;IAClB,KAAK,EAAE,GAAG;IACV,SAAS,EAAE,KAAK;IAEd,UAAG,EAAE,IAAI;IACT,WAAI,EAAE,CAAC;;AAKf,4BAA6B;EAC3B,KAAK,EAAE,GAAG;;AAGZ,qBAAsB;EACpB,cAAc,EAAE,SAAS;;AAG3B,WAAY;EACV,YAAY,EAnHF,OAAO;;AAqHnB,4BAA6B;EAC3B,KAAK,EAAE,KAAK;EACZ,gBAAgB,EAvHN,OAAO;EAwHjB,YAAY,EAxHF,OAAO;;AA2HnB,cAAe;EACb,YAAY,EA3HC,OAAO;;AA6HtB,+BAAgC;EAC9B,KAAK,EAAE,KAAK;EACZ,gBAAgB,EA/HH,OAAO;EAgIpB,YAAY,EAhIC,OAAO;;AAmItB,aAAc;EACZ,YAAY,EAlIA,OAAO;;AAoIrB,8BAA+B;EAC7B,KAAK,EAAE,KAAK;EACZ,gBAAgB,EAtIJ,OAAO;EAuInB,YAAY,EAvIA,OAAO;;AA0IrB,cAAe;EACb,YAAY,EA5IC,OAAO;;AA8ItB,+BAAgC;EAC9B,KAAK,EAAE,KAAK;EACZ,gBAAgB,EAhJH,OAAO;EAiJpB,YAAY,EAjJC,OAAO;;AAqJtB,eAAgB;EACd,SAAS,EAAE,GAAG;EACd;6BACY;IACV,OAAO,EAAE,QAAQ;;AAKnB,2DAA4B;EAC1B,SAAS,EAAE,GAAG;EACd,OAAO,EAAE,OAAO;;AAIpB,qCAAsC;EACpC,YAAY,EAAE,CAAC;EACf,eAAe,EAAE,IAAI;EACrB,2CAAG;IACD,YAAY,EAAE,IAAI;IAClB,aAAa,EAAE,GAAG;IAClB,WAAW,EAAE,SAAS;IACtB,iDAAG;MACD,MAAM,EAAE,CAAC;;AAKb,gBAAG;EAED,iBAAiB,EAAE,OAAO;;AAI5B,yBAAG;EAED,iBAAiB,EAAE,OAAO;;AAI9B,UAAW;EACT,SAAS,EAAE,IAAI;EACf,aAAG;IACD,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;;AAItB;mBACoB;EAClB,SAAS,EAAE,IAAI;;AAGjB,kBAAmB;EAEf,UAAG,EAAE,KAAK;EACV,aAAM,EAAE,IAAI;;AAIhB,WAAY;EACV,gBAAgB,EAAE,iDAAiD;EACnE,mBAAmB,EAAE,aAAa;EAClC,UAAU,EAAE,IAAI;EAChB,aAAE;IACA,OAAO,EAAE,GAAG;;AAKd,4BAAS;EACP,gBAAgB,EAAE,iDAAiD;EACnE,mBAAmB,EAAE,OAAO;;AAqBhC,eAAgB;EACd,SAAS,EAAE,IAAI;EACf,YAAY,EAAE,IAAI;;AAGpB,WAAY;EACV,aAAa,EAAE,IAAI;EACnB,sBAAW;IACT,YAAY,EAAE,GAAG;;AAIrB,qBAAsB;EACpB,UAAU,EAAE,KAAK;;AAGnB,2BAA4B;EAC1B,UAAU,EAAE,CAAC;;AAGf,kBAAmB;EACjB,SAAS,EAAE,GAAG;;AAGhB,YAAa;EACX,SAAS,EAAE,GAAG;EAEZ,UAAG,EAAE,IAAI;EAEX,KAAK,EAAE,OAAO;;AAGhB,gBAAiB;EACf,OAAO,EAAE,eAAe;EACxB,aAAa,EAAE,IAAI;EACnB,MAAM,EAAE,eAAe;EAErB,8EAAiB;IACf,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,GAAG;IAChB,KAAK,EAAE,OAAO;IAEZ,SAAI,EAAE,GAAG;IACT,WAAM,EAAE,IAAI;IAEd,cAAc,EAAE,GAAG;;AAKzB,cAAe;EACb,OAAO,EAAE,KAAK;EAEZ,WAAI,EAAE,IAAI;EACV,YAAK,EAAE,IAAI;EAEb,KAAK,EAAE,KAAK;;AAIZ,kBAAK;EACH,OAAO,EAAE,OAAO;EAChB,SAAS,EAAE,GAAG;;AAIlB,kBAAmB;EACjB,SAAS,EAAE,GAAG;;AAGhB,YAAa;EACX,SAAS,EAAE,GAAG;;AAEhB,8BAA+B;EAC7B,UAAU,EAAE,IAAI;EAChB,aAAa,EAAE,GAAG;EAClB,OAAO,EAAE,YAAY;;AAEvB,6BAA8B;EAC5B,UAAU,EAAE,GAAG;;AAGjB,8CAA+C;EAC7C,eAAe,EAAE,IAAI;;AAKvB,YAAY;AAGV,cAAG;EAEC,WAAM,EAAE,IAAI;EACZ,SAAI,EAAE,IAAI;EAGV,UAAG,EAAE,CAAC;EACN,aAAM,EAAE,CAAC;;AAKf,eAAgB;EACd,OAAO,EAAE,aAAa;EACtB,WAAW,EAAE,cAAc;;AAG7B,uBAAwB;EACtB,OAAO,EAAE,KAAK;;AAId,4BAAK;EAED,SAAI,EAAE,GAAG;EACT,WAAM,EAAE,MAAM;;AAMlB,4BAAY;EACV,WAAW,EAAE,GAAG;;AAKlB,8BAAa;EACX,WAAW,EAAE,IAAI;;AAKnB,iBAAG;EACD,UAAU,EAAE,GAAG;EACf,SAAS,EAAE,IAAI;AAEjB,oDAAuB;EACrB,WAAW,EAAE,mBAAmB;;AAKlC,uCAAoB;EAClB,SAAS,EAvYU,GAAG;;AA4YxB,0CAAiB;EACf,SAAS,EA7YU,GAAG;;AAkZxB,KAAG;EAED,aAAa,EAAE,oBAAoB;AAErC,KAAG;EACD,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,GAAG;;AAKpB,sBAAQ;EACN,UAAU,EAAE,KAAK;;AAIrB,gBAAiB;EACf,aAAa,EAAE,IAAI;;AAGrB,cAAe;EACb,SAAS,EAAE,GAAG;EACd,IAAI,EAAE,KAAK;EACX,GAAG,EAAE,KAAK;EACV,KAAK,EAAE,gBAAgB;EACvB,QAAQ,EAAE,QAAQ;;AAIpB,sBAAuB;EACrB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;;AAGd,QAAS;EACP,SAAS,EAAE,GAAG;;AAGhB,QAAS;EACP,SAAS,EAAE,GAAG;;AAId,iBAAW;EACT,KAAK,EAAE,IAAI;EACX,aAAa,EAAE,GAAG;;AAItB,mBAAoB;EAClB,WAAW,EAAE,IAAI;;AAGnB,eAAgB;EACd,SAAS,EAAE,GAAG;EACd,OAAO,EAAE,QAAQ;;AAGnB,eAAgB;EACd,SAAS,EAAE,GAAG;EACd,OAAO,EAAE,OAAO;;AAGlB,SAAU;EACR,SAAS,EAAE,GAAG;EAEd,MAAM,EAAE,eAAe;EAErB,gBAAK,EAAE,IAAI;EACX,gBAAK,EAAE,WAAW;EAEpB,sBAAa;IACX,WAAW,EAAE,GAAG;;AAKlB,aAAG;EACD,OAAO,EAAE,CAAC;EACV,eAAe,EAAE,IAAI;EACrB,gBAAG;IACD,aAAa,EAAE,oBAAoB;EAErC,oCAAuB;IACrB,aAAa,EAAE,IAAI;;AASrB;oBACG;EAEC,WAAI,EAAE,eAAe;EACrB,YAAK,EAAE,eAAe;EAGtB,WAAG,EAAE,cAAc;EACnB,cAAM,EAAE,cAAc;AAI5B,0BAAe;EACb,OAAO,EAAE,QAAQ;AAEnB,uBAAY;EACV,aAAa,EAAE,GAAG;EAClB;2BACE;IACA,SAAS,EAAE,GAAG;AAIlB,gBAAK;EACH,OAAO,EAAE,IAAI;EACb,4BAAY;IACV,YAAY,EAAE,GAAG;IACjB,cAAc,EAAE,MAAM;IACtB,SAAS,EA/BI,IAAI;IAgCjB,6CAAiB;MACf,SAAS,EAjCE,IAAI;MAkCf,+CAAE;QACA,OAAO,EAAE,OAAO;IAGpB,6CAAiB;MACf,SAAS,EAvCE,IAAI;MAwCf,OAAO,EAAE,iBAAiB;EAQ9B,sBAAM;IACJ,OAAO,EAAE,KAAK;IACd,aAAa,EAAE,GAAG;IAClB,WAAW,EAAE,GAAG;EAElB,+DAA8B;IAC5B,SAAS,EAtDI,IAAI;;AA2DvB,iBAAkB;EAChB,SAAS,EAAE,KAAK;EAChB,SAAS,EAAE,GAAG;;AAGhB,QAAS;EACP,SAAS,EAAE,IAAI;EAAE,4DAA4D;;AAG/E,mBAAoB;EAEhB,SAAI,EAAE,GAAG;EACT,UAAK,EAAE,OAAO;;AAKhB,4BAAG;EACD,aAAa,EAAE,IAAI;EACnB,sDAA0B;IACxB,YAAY,EAAE,IAAI;;AAKxB,2BAA4B;EAC1B,SAAS,EAAE,GAAG;;AAGhB,0BAA2B;EACzB,OAAO,EAAE,SAAS;EAClB,WAAW,EAAE,GAAG;EAChB,KAAK,EAAE,OAAO;EAEZ,SAAI,EAAE,GAAG;EACT,WAAM,EAAE,IAAI;EAEd,cAAc,EAAE,GAAG;;AAGrB,oBAAqB;EACnB,eAAe,EAAE,YAAY;;AAG/B,oBAAqB;EACnB,UAAU,EAAE,GAAG;;AAGjB,yBAA0B;EACxB,SAAS,EAAE,GAAG;;AAGhB,oBAAqB;EACnB,SAAS,EAAE,GAAG;;AAEhB,cAAe;EACb,OAAO,EAAE,SAAS;EAClB,MAAM,EAAE,cAAc;EACtB,aAAa,EAAE,GAAG;;AAGpB,wBAAyB;EACvB,UAAU,EAAE,GAAG;;AAIf,sBAAI;EACF,UAAU,EAAE,iBAAiB;EAC7B,OAAO,EAAE,KAAK;;AAIlB,yBAA0B;EACxB,SAAS,EAAE,GAAG;;AAId,gCAAuB;EACrB,UAAU,EAAE,GAAG;AAEjB,yBAAgB;EACd,WAAW,EAAE,GAAG;;AAKpB,mBAAoB;EAClB,MAAM,EAAE,YAAY;;AAGtB,yBAA0B;EAEtB,kCAAG;IACD,KAAK,EAAE,KAAK;EAEd,kCAAG;IACD,WAAW,EAAE,KAAK;;EAIpB,kCAAG;IACD,KAAK,EAAE,KAAK;EAEd,kCAAG;IACD,WAAW,EAAE,KAAK;AAKxB,0BAA2B;EACzB,aAAc;IACZ,KAAK,EAAE,MAAM;AAIjB,0BAA2B;EACzB,UAAW;IACT,KAAK,EAAE,MAAM;AAIjB,0BAA2B;EACzB,UAAW;IACT,KAAK,EAAE,MAAM;AAKf,yBAAqB;EACnB,UAAU,EAAE,IAAI;;AAIpB,8BAA8B;AAG5B,mBAAe;EACb,YAAY,EAAE,GAAG;;AAIrB,SAAU;EACR,gBAAgB,EAnrBN,OAAO;EAorBjB,YAAY,EAprBF,OAAO;;AAsrBnB,YAAa;EACX,gBAAgB,EAtrBH,OAAO;EAurBpB,YAAY,EAvrBC,OAAO;;AAyrBtB,WAAY;EACV,gBAAgB,EAxrBJ,OAAO;EAyrBnB,YAAY,EAzrBA,OAAO;;AA2rBrB,YAAa;EACX,gBAAgB,EA7rBH,OAAO;EA8rBpB,YAAY,EA9rBC,OAAO;;AAksBpB,0BAAe;EACb,YAAY,EAAE,GAAG;;AAKnB,qBAAiB;EACf,aAAa,EAAE,IAAI;EAEjB,YAAI,EAAE,IAAI;EACV,aAAK,EAAE,IAAI;AAGf,qCAAiC;EAC/B,aAAa,EAAE,IAAI;;AAIvB,oCAAoC;AAGlC;4CAC+B;EAC7B,SAAS,EAAE,IAAI;EACf,YAAY,EAAE,GAAG;;AAIrB,qBAAsB;EACpB,MAAM,EAAE,KAAK;EACb,wBAAG;IACD,SAAS,EAAE,eAAe;IAExB,uDAAW;MACT,YAAY,EAAE,GAAG;MACjB,SAAS,EAAE,IAAI;MACf,cAAc,EAAE,WAAW;;AAOnC,kCAAkC;AAElC;mBACoB;EAClB,UAAU,EAAE,OAAO;EACnB,aAAa,EAAE,GAAG;EAClB,OAAO,EAAE,GAAG;EACZ,UAAU,EAAE,WAAW;EAEvB;wBAAG;IACD,UAAU,EAAE,CAAC;IAEb;uCAAa;MACX,OAAO,EAAE,KAAK;MACd,MAAM,EAAE,GAAG;MACX,UAAU,EAAE,iBAAiB;IAI/B;oCAAU;MACR,WAAW,EAAE,IAAI;IAKnB;kEAAwC;MACtC,OAAO,EAAE,GAAG;IAEd;6EAAmD;MACjD,OAAO,EAAE,IAAI;IAEf;;yEAA+F;MAC7F,OAAO,EAAE,GAAG;;AAKlB,2BAA4B;EAC1B,WAAW,EAAE,IAAI;EACjB,SAAS,EAAE,IAAI;EACf,aAAa,EAAE,GAAG;EAClB,MAAM,EAAE,iBAAiB;EACzB,OAAO,EAAE,GAAG;EACZ,UAAU,EAAE,MAAM;EAClB,gBAAgB,EAAE,IAAI;EACtB,aAAa,EAAE,IAAI;;AAKrB;2BAC4B;EAC1B,gCAAgC;EAChC,2BAA2B;EAC3B,gBAAgB,EAAE,uBAAuB;EACzC,KAAK,EAAE,KAAK;;AAKZ;6BAAE;EACA,KAAK,EAAE,KAAK;;AAMZ,4BAAO;EACL,SAAS,EAAE,GAAG;EACd,KAAK,EAAE,IAAI;;AAMjB,oDAAc;EACZ,WAAW,EAAE,GAAG;EAChB,KAAK,EAAE,OAAO;EAEZ,SAAI,EAAE,GAAG;EACT,WAAM,EAAE,IAAI;;AAIhB,kBAAmB;EAEjB,OAAO,EAAE,WAAW;;AAEtB,iBAAkB;EAEhB,OAAO,EAAE,UAAU;;AAIrB,6CAA6C;AAE7C,qBAAsB;EACpB,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,KAAK;EAEX,YAAK,EAAE,MAAM;EACb,YAAK,EAAE,SAAS;EAChB,YAAK,EAAE,GAAG;;AAGd,6BAA8B;EAC5B,UAAU,EAAE,kEAAkE;;AAGhF,UAAW;EACT,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI;EACX,YAAY,EAAE,IAAI;;AAIpB,iCAAiC;AAG/B,SAAG;EACD,WAAW,EAAE,IAAI;EACjB,SAAS,EAAE,IAAI;;AAKnB,gDAAgD;AAEhD,kBAAmB;EACjB,WAAW,EAAE,IAAI;EACjB,MAAM,EAAE,CAAC;;AAOX,yBAA0B;EACxB,OAAO,EAAE,MAAM;EACf,8CAAqB;IACnB,MAAM,EAAE,SAAS;;AAKrB,qBAAsB;EACpB,UAAU,EAAE,IAAI;EAChB,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,oBAAoB;EAChC,iCAAY;IACV,KAAK,EAAE,IAAI;IACX,YAAY,EAAE,GAAG;EAEnB,0BAAK;IACH,UAAU,EAAE,CAAC", +"mappings": "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", "sources": ["app.scss"], "names": [], "file": "app.css" diff --git a/public/css/app.scss b/public/css/app.scss index cccae9d1346378437f9dc534239f261bbf3d5c23..bf43078a21c02a5b18c4eff293895c124b22f477 100755 --- a/public/css/app.scss +++ b/public/css/app.scss @@ -633,7 +633,15 @@ p.autoris-diffusion-motif { margin-left: 5px; } } - +.checkbox-sm { + input[type="checkbox"] { + transform : scale(0.9); + } + .checkbox-label { + margin-left: 2px; + font-size: 90%; + } +} form.form-retraiter { margin: 4px 0 15px 0;