Commit 343be2a7 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

[FIX] Années universitaires d'inscription : les années historisées n'étaient pas écartées.

parent b1eec4fe
Loading
Loading
Loading
Loading
+1 −0
Changes for CHANGELOG.md: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ Journal des modifications
- Changement du lien dans le mail pour la validation des présidents : redirect + selection du rôle
- [FIX] Amélioration de la robustesse de la proposition de soutenance pour les cas de th_se sans ED, sans UR ou sans ETAB
- Ajout d'une vérification de la date de soutenance dans le formulaire pour prévenir des erreurs de saisie (p.e. 12/09/0022)
- [FIX] Années universitaires d'inscription : les années historisées n'étaient pas écartées.

5.2.0 
-----
+24 −0
Changes for doc/release-notes/v5.2.1.md: 24 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -17,6 +17,30 @@ git fetch --tags && git checkout --force 5.2.1 && bash ./install.sh
## 2. Dans la base de données

```sql
create or replace view v_these_annee_univ_first
          (id, source_code, source_id, these_id, annee_univ, histo_createur_id, histo_creation, histo_modificateur_id,
           histo_modification, histo_destructeur_id, histo_destruction)
as
WITH firsts(source_code) AS (
  SELECT DISTINCT first_value(source_code)
                  OVER (PARTITION BY these_id ORDER BY annee_univ) AS first_value
  FROM these_annee_univ
  where histo_destruction is null
)
SELECT au.id,
       au.source_code,
       au.source_id,
       au.these_id,
       au.annee_univ,
       au.histo_createur_id,
       au.histo_creation,
       au.histo_modificateur_id,
       au.histo_modification,
       au.histo_destructeur_id,
       au.histo_destruction
FROM these_annee_univ au
       JOIN firsts fi ON au.source_code::text = fi.source_code::text;

/**
 * Rattachement à une thèse destination de tout ce qui a été saisi sur une thèse source.
 */
+12 −5
Changes for module/These/src/These/Entity/Db/These.php: 12 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -1456,11 +1456,18 @@ class These implements HistoriqueAwareInterface, ResourceInterface
     * @param string $glue Séparateur, ex: ' - '
     * @return string Ex: "2015/2016, 2016/2017, 2017/2018"
     */
    public function getAnneesUnivInscriptionToString($glue = ', ')
    {
        return implode($glue, array_map(function(TheseAnneeUniv $tau) {
            return $tau->getAnneeUnivToString();
        }, $this->anneesUnivInscription->toArray()));
    public function getAnneesUnivInscriptionToString(string $glue = ', '): string
    {
        $anneesUnivs = array_map(
            fn(TheseAnneeUniv $tau) => $tau->getAnneeUnivToString(),
            array_filter(
                $this->anneesUnivInscription->toArray(),
                fn(TheseAnneeUniv $tau) => $tau->estNonHistorise()
            )
        );
        sort($anneesUnivs);

        return implode($glue, $anneesUnivs);
    }

    /**
+3 −2
Changes for module/These/src/These/Service/These/TheseSearchService.php: 3 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
namespace These\Service\These;

use Application\Entity\Db\Role;
use Doctrine\ORM\Query\Expr\Join;
use These\Entity\Db\These;
use Structure\Entity\Db\TypeStructure;
use Application\Filter\AnneeUnivFormatter;
@@ -497,11 +498,11 @@ EOS;
            $filterValue = $filter->getValue();
            if ($filterValue === 'NULL') {
                $qb
                    ->leftJoin("$alias.anneesUnivInscription", 'aui')
                    ->leftJoin("$alias.anneesUnivInscription", 'aui', Join::WITH, 'aui.histoDestruction is null')
                    ->andWhere('aui.anneeUniv IS NULL');
            } else {
                $qb
                    ->join("$alias.anneesUnivInscription", 'aui')
                    ->join("$alias.anneesUnivInscription", 'aui', Join::WITH, 'aui.histoDestruction is null')
                    ->andWhere('aui.anneeUniv = :anneeUniv')
                    ->setParameter('anneeUniv', $filterValue);
            }