From 4201247420fa4bd193b797ac139a0854929d34cd Mon Sep 17 00:00:00 2001 From: Etienne Pallier Date: Mon, 14 Sep 2020 08:20:12 +0200 Subject: [PATCH] Gestionnaire de référence désormais obligatoire pour valider un matériel --- CHANGES.txt | 10 ++++++++++ README.md | 4 ++-- src/Controller/MaterielsController.php | 30 +++++++++++++++++++++++++++--- src/Template/Materiels/index.ctp | 28 ++++++++++++++-------------- src/Template/Materiels/view.ctp | 2 +- 5 files changed, 54 insertions(+), 20 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index ef58b95..056a81f 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -90,6 +90,16 @@ Outre ces changements, voici d'autres changements importants : ======= CHANGES ======= ------- +14/09/2020 v4.101.0-3.7.9 (EP) + - (e) Gestionnaire de référence désormais obligatoire pour valider un matériel + - (e) Gestionnaire de référence automatiquement positionné quand c'est un gestionnaire qui crée ou édite une fiche + - (e) Message d'erreur plus précis pour dire quel champ manque lors de la validation + - (e) Nouveau schéma de version : A.B.C-D.E.F + => avec A.B.C le numéro de version du logiciel LabInvent, et D.E.F le numéro de version du framework CakePhp utilisé + => avec A.B.C = A numéro de version majeur, B numéro de version mineur (nouvelle fonctionnalité), C numéro de bugfix + => avec A=1 (toute première version Upsillon), A=2 (première version remaniée par l'IRAP avec CakePhp2), A=3 (version avec CakePhp3), A=4 (version mobile) + +------- 11/09/2020 v3.7.9.100 (EP) - (e) Nouveau filtre de la liste des matériels (index) => par "projet" - (i) Enorme refactorisation de tous les filtres (nb lignes, age, domaine, projet) de la page index (liste des matériels) => une fonction unique $displayFilter() dans index.ctp diff --git a/README.md b/README.md index 46898c6..247b577 100644 --- a/README.md +++ b/README.md @@ -42,8 +42,8 @@ Logiciel testé et validé sur les configurations suivantes : -------------------------------------------------------------------------------------------- -Date: 11/09/2020 -Version: 3.7.9.100 +Date: 14/09/2020 +Version: 4.101.0-3.7.9 HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes) diff --git a/src/Controller/MaterielsController.php b/src/Controller/MaterielsController.php index 9e29ac6..0316695 100755 --- a/src/Controller/MaterielsController.php +++ b/src/Controller/MaterielsController.php @@ -1919,6 +1919,11 @@ class MaterielsController extends AppController { } // EDIT only + // Si le user est un admin, on le met comme gestionnaire de référence + // (sauf si le gestionnaire est déjà défini) + if ($this->USER_IS_ADMIN() && empty($materiel->gestionnaire_id)) + $materiel->gestionnaire_id = $this->getCurrentUserEntity()->id; + /* About set and compact : * * The compact (php) function returns an associative array, built by taking the names specified in the input array, @@ -2156,24 +2161,36 @@ class MaterielsController extends AppController { // - VALIDATED if ($newStatus == 'VALIDATED') { $mandatoryFields = array( + 'Nom utilisateur' => $materiel->nom_responsable, + 'Fournisseur' => $materiel->fournisseur_id, + 'Numéro de commande' => $materiel->numero_commande, + 'Organisme' => $materiel->organisme_id, + 'Date de reception' => $materiel->date_reception, + 'Prix' => $materiel->prix_ht, + // (EP202009) Un gestionnaire par défaut (de référence) doit être choisi AVANT validation + 'Gestionnaire de référence' => $materiel->gestionnaire_id + ); + /* + $mandatoryFields = array( $materiel->nom_responsable, $materiel->fournisseur_id, $materiel->numero_commande, $materiel->organisme_id, $materiel->date_reception, - $materiel->prix_ht + $materiel->prix_ht, ); - // Ne pas oublier les espaces après chaque virgule/fin de ligne (sinon le message d'erreur est pas joli) $msgError1 = "Pour valider un matériel, les champs suivants ne doivent pas être vides : Date de reception, Nom utilisateur, + Gestionnaire de référence, Fournisseur, Organisme, Prix, et Numéro de commande"; + */ // Si au moins un champ obligatoire est nul ou vide => ERROR - foreach ($mandatoryFields as $field) { + foreach ($mandatoryFields as $fname => $field) { if ($field === null || $field == '') { // Validation d'un seul matériel => on revient à "edit" if ($onlyOneMateriel) { @@ -2185,7 +2202,12 @@ class MaterielsController extends AppController { * (il se peut qu'on n'aie plus besoin de faire ça dans une prochaine version * de bootstrap, ou bootsrap-ui, ou cakephp..., à surveiller donc) */ + $msgError1 = "Pour valider un matériel, le champ suivant ne doit pas être vide : ".$fname.' du matériel'; $this->Flash->error($msgError1); + /* MARCHE PAS POURQUOI ? + $materiel->setError($field, 'Ce champ ne doit pas être vide'); + $materiel->setError('numero_commande', 'Ce champ ne doit pas être vide'); + */ // (EP 2020 03) Si on ne veut pas de bouton de suppression du message : //$this->Flash->set($msgError1, ['params' => ['class' => 'alert alert-dismissible in alert-danger']]); //$this->Flash->set($msgError1, ['params' => ['class' => 'alert alert-dismissible fade in alert-danger']]); @@ -2204,6 +2226,7 @@ class MaterielsController extends AppController { //debug($materiel->date_validated); //exit; + /* (EP202009) déplacé dans add_or_edit() // Si le current user est un admin => on le met comme "gestionnaire" de ce matériel //if ($newStatus == 'VALIDATED') { $current_user = $_SESSION['Auth']['User']['sn'][0]; @@ -2231,6 +2254,7 @@ class MaterielsController extends AppController { $materiel->gestionnaire_id = $gestionnaireID; } // if //} + */ } // VALIDATED diff --git a/src/Template/Materiels/index.ctp b/src/Template/Materiels/index.ctp index 568e39b..c5b3adf 100644 --- a/src/Template/Materiels/index.ctp +++ b/src/Template/Materiels/index.ctp @@ -314,13 +314,13 @@ $displayFilters = function($form, $request, */ //$f1_func, //$f1_func, - $f1_name, $f1_options, + $f1_name, $f1_label, $f1_options, //$f2_func, $f2_options, - $f2_name, $f2_options, + $f2_name, $f2_label, $f2_options, //$displayDomaineSelector, $domain_options, //$displayProjetSelector, $projet_options - $f3_name, $f3_options, - $f4_name, $f4_options + $f3_name, $f3_label, $f3_options, + $f4_name, $f4_label, $f4_options ) { //echo '
'; echo '
'; @@ -330,28 +330,28 @@ $displayFilters = function($form, $request, echo ''; //$displayNbLinesSelector($form, $request); //$f1_func($form, $request); - $df($f1_name, $form, $request, $f1_options); + $df($f1_name, $f1_label, $form, $request, $f1_options); echo ''; // Filtre 2 echo ''; //$displayAgeSelector($form, $request); //$f2_func($form, $request, $f2_options); - $df($f2_name, $form, $request, $f2_options); + $df($f2_name, $f2_label, $form, $request, $f2_options); echo ''; // Filtre 3 echo ''; //$displayDomaineSelector($form, $request, $domain_options); //$df('domain', $form, $request, $domain_options); - $df($f3_name, $form, $request, $f3_options); + $df($f3_name, $f3_label, $form, $request, $f3_options); echo ''; // Filtre 4 echo ''; //$displayProjetSelector('projet', $form, $request, $projet_options); //$df('projet', $form, $request, $projet_options); - $df($f4_name, $form, $request, $f4_options); + $df($f4_name, $f4_label, $form, $request, $f4_options); echo ''; echo ''; @@ -441,7 +441,7 @@ $displayProjetSelector = function($filter_name, // 'projet' }; */ -$displayFilter = function($filter_name, // 'projet' +$displayFilter = function($filter_name, $filter_label,// 'projet' $form, $request, $options ) { //echo '
'; @@ -449,7 +449,7 @@ $displayFilter = function($filter_name, // 'projet' //echo $form->control('projet_selector', [ echo $form->control($filter_name.'_selector', [ // 'projet_selector' //'label' => 'Projet', - 'label' => ucfirst($filter_name), // 'Projet' + 'label' => $filter_label ? $filter_label : ucfirst($filter_name), // 'Projet' //'onchange' => "updateUrlWithSelectedValue('projet-selector', 'projet')", //'onchange' => "updateUrlWithSelectedValue($filter_name.'-selector', $filter_name)", // ('projet-selector', 'projet') 'onchange' => "updateUrlWithSelectedValue('$html_filter_name', '$filter_name')", // ('projet-selector', 'projet') @@ -737,13 +737,13 @@ $displayFilters( $this->Form, $this->request, $displayFilter, //$displayNbLinesSelector, - 'nblines', $nblines_options, + 'nblines', 'Lignes par page', $nblines_options, //$displayAgeSelector, $age_options, - 'age', $age_options, + 'age', '', $age_options, //$displayDomaineSelector, $domain_options, //$displayProjetSelector, $projet_options - 'domaine', $domaine_options, - 'projet', $projet_options + 'domaine', '', $domaine_options, + 'projet', '', $projet_options ); //$displayNbLinesSelector($this->Form, $this->request); diff --git a/src/Template/Materiels/view.ctp b/src/Template/Materiels/view.ctp index ecac0dc..d401f26 100755 --- a/src/Template/Materiels/view.ctp +++ b/src/Template/Materiels/view.ctp @@ -645,7 +645,7 @@ $displayElement(__('N. interne (labo)'), h($entity->numero_laboratoire)); $gestionnaire = TableRegistry::get('Users')->find()->where([ 'id =' => $entity->gestionnaire_id ]); -$displayElement(__('Nom du gestionnaire de référence'), h($gestionnaire->first()['nom'])); +$displayElement(__('Gestionnaire de référence'), h($gestionnaire->first()['nom'])); if ($role == 'Super Administrateur') { //$displayElement(__('Date création'), h($entity->created)); $displayElement(__('Nom du créateur'), h($entity->nom_createur)); -- libgit2 0.21.2