Commit 4e94b523a19534a163db6f4c2ec049ab91f10e0e
1 parent
8c9b696c
Exists in
master
and in
1 other branch
Champs obligatoires "etiq. posée" & "n° invent. tutel." gérés via config
(si obligatoires, ces champs ne sont pas demandés à la saisie, mais un simple rappel est affiché sur la vue détaillée du matériel)
Showing
4 changed files
with
34 additions
and
18 deletions
Show diff stats
CHANGELOG
@@ -397,6 +397,11 @@ Commencer à implémenter le nouveau workflow v5 : | @@ -397,6 +397,11 @@ Commencer à implémenter le nouveau workflow v5 : | ||
397 | 397 | ||
398 | ------- | 398 | ------- |
399 | 13/09/2021 v5.2.6-3.7.9 | 399 | 13/09/2021 v5.2.6-3.7.9 |
400 | + - Champs obligatoires "etiquette posée" et "n° inventaire tutelles" gérés via config | ||
401 | + (si obligatoires, ces champs ne sont pas demandés à la saisie, mais un simple rappel est affiché sur la vue détaillée du matériel) | ||
402 | + | ||
403 | +------- | ||
404 | +13/09/2021 v5.2.6-3.7.9 | ||
400 | - NEWSLETTER #5 envoyée | 405 | - NEWSLETTER #5 envoyée |
401 | - Mise à jour du diagramme workflow (E-T) pour introduire la nouvelle étape TOBEORDERED ("En Commande") | 406 | - Mise à jour du diagramme workflow (E-T) pour introduire la nouvelle étape TOBEORDERED ("En Commande") |
402 | - Bugfix : infos sur etiquettes affichées SEULEMENT si une étiqueteuse est configurée... | 407 | - Bugfix : infos sur etiquettes affichées SEULEMENT si une étiqueteuse est configurée... |
README.md
@@ -53,7 +53,7 @@ Logiciel testé et validé sur les configurations suivantes : | @@ -53,7 +53,7 @@ Logiciel testé et validé sur les configurations suivantes : | ||
53 | -------------------------------------------------------------------------------------------- | 53 | -------------------------------------------------------------------------------------------- |
54 | 54 | ||
55 | Date: 13/09/2021 | 55 | Date: 13/09/2021 |
56 | -Version: v5.2.6-3.7.9 | 56 | +Version: v5.2.7-3.7.9 |
57 | 57 | ||
58 | 58 | ||
59 | 59 |
config/app_labinvent_mandatory_fields.default.yml
@@ -180,8 +180,6 @@ MANDATORY_FIELDS_LOT2: | @@ -180,8 +180,6 @@ MANDATORY_FIELDS_LOT2: | ||
180 | 180 | ||
181 | date_reception: 'Date de livraison' | 181 | date_reception: 'Date de livraison' |
182 | 182 | ||
183 | - #//'etiquette', // O/N | ||
184 | - | ||
185 | site_id: 'Site' | 183 | site_id: 'Site' |
186 | 184 | ||
187 | #TODO: seulement si prix > 10K€ | 185 | #TODO: seulement si prix > 10K€ |
@@ -196,10 +194,14 @@ MANDATORY_FIELDS_LOT2: | @@ -196,10 +194,14 @@ MANDATORY_FIELDS_LOT2: | ||
196 | 194 | ||
197 | numero_commande: 'Num. BC' | 195 | numero_commande: 'Num. BC' |
198 | 196 | ||
197 | + # Ce champ ne sera pas demandé à la saisie, mais un simple rappel sera affiché sur la vue détaillée du matériel | ||
198 | + etiquette: 'Etiquette posée' | ||
199 | + | ||
199 | # PROBLEME : | 200 | # PROBLEME : |
200 | # On ne peut pas exiger ce numéro au moment de la livraison | 201 | # On ne peut pas exiger ce numéro au moment de la livraison |
201 | - # car le gestionnaire n'a cette info que lorsque "Service fait CNRS" (il récupère alors le n° inventaire "Tutelle" sur GESLAB) | ||
202 | - #numero_inventaire_organisme: "N° inventaire de l'organisme" | 202 | + # car le gestionnaire n'a cette info que lorsque "Service fait CNRS" (il récupère alors le n° inventaire "Tutelle" sur GESLAB) |
203 | + # => Ce champ ne sera pas demandé à la saisie, mais un simple rappel sera affiché sur la vue détaillée du matériel | ||
204 | + numero_inventaire_organisme: "N° inventaire de l'organisme" | ||
203 | 205 | ||
204 | # ******* END OF $MANDATORY_FIELDS_LOT2 ******** | 206 | # ******* END OF $MANDATORY_FIELDS_LOT2 ******** |
205 | 207 |
src/Controller/MaterielsController.php
@@ -1891,7 +1891,7 @@ class MaterielsController extends AppController { | @@ -1891,7 +1891,7 @@ class MaterielsController extends AppController { | ||
1891 | //debug($emails); | 1891 | //debug($emails); |
1892 | 1892 | ||
1893 | /* | 1893 | /* |
1894 | - * Si le materiel est VALIDATED : | 1894 | + * Si le materiel est VALIDATED (et que les champs suivants sont obligatoires) : |
1895 | * - l'étiquette doit être imprimée (et collée) | 1895 | * - l'étiquette doit être imprimée (et collée) |
1896 | * - le n° inventaire tutelles doit être renseigné | 1896 | * - le n° inventaire tutelles doit être renseigné |
1897 | * Si ça n'est pas le cas, on affiche un message de rappel sur cette vue détaillée | 1897 | * Si ça n'est pas le cas, on affiche un message de rappel sur cette vue détaillée |
@@ -1899,8 +1899,12 @@ class MaterielsController extends AppController { | @@ -1899,8 +1899,12 @@ class MaterielsController extends AppController { | ||
1899 | $LABEL_NOT_PRINTED = false; | 1899 | $LABEL_NOT_PRINTED = false; |
1900 | $NUM_INV_TUTELLES_NOT_FILLED = false; | 1900 | $NUM_INV_TUTELLES_NOT_FILLED = false; |
1901 | if ($entity->is_validated) { | 1901 | if ($entity->is_validated) { |
1902 | - if ($CAN_PRINT_LABEL) $LABEL_NOT_PRINTED = ! $entity->etiquette; | ||
1903 | - $NUM_INV_TUTELLES_NOT_FILLED = empty($entity->numero_inventaire_organisme); | 1902 | + //debug($this->Materiels->getMandatoryFieldsForMaterielStatus($materiel->status)); |
1903 | + //debug(array_key_exists('etiquette', $this->Materiels->getMandatoryFieldsForMaterielStatus($materiel->status))); | ||
1904 | + if ($CAN_PRINT_LABEL && array_key_exists('etiquette', $this->Materiels->getMandatoryFieldsForMaterielStatus($materiel->status))) | ||
1905 | + $LABEL_NOT_PRINTED = ! $entity->etiquette; | ||
1906 | + if (array_key_exists('numero_inventaire_organisme', $this->Materiels->getMandatoryFieldsForMaterielStatus($materiel->status))) | ||
1907 | + $NUM_INV_TUTELLES_NOT_FILLED = empty($entity->numero_inventaire_organisme); | ||
1904 | if ($LABEL_NOT_PRINTED) $this->Flash->set("Cette fiche est validée mais n'oubliez pas d'imprimer l'étiquette associée et de la coller sur le matériel"); | 1908 | if ($LABEL_NOT_PRINTED) $this->Flash->set("Cette fiche est validée mais n'oubliez pas d'imprimer l'étiquette associée et de la coller sur le matériel"); |
1905 | if ($NUM_INV_TUTELLES_NOT_FILLED) $this->Flash->set("Cette fiche est validée mais vous n'avez pas encore rempli le champ 'N° inventaire comptable/tutelles'"); | 1909 | if ($NUM_INV_TUTELLES_NOT_FILLED) $this->Flash->set("Cette fiche est validée mais vous n'avez pas encore rempli le champ 'N° inventaire comptable/tutelles'"); |
1906 | } | 1910 | } |
@@ -2235,12 +2239,14 @@ class MaterielsController extends AppController { | @@ -2235,12 +2239,14 @@ class MaterielsController extends AppController { | ||
2235 | //print_r($materiel); | 2239 | //print_r($materiel); |
2236 | foreach ($mandatory_fields as $fname=>$fname_nice) { | 2240 | foreach ($mandatory_fields as $fname=>$fname_nice) { |
2237 | 2241 | ||
2238 | - // Champs spéciaux dont le caractère obligatoire est géré indirectement (via beforeSave()) | ||
2239 | - // (fournisseur_id, et autres champs ajoutés dans l'avenir ? ...) | ||
2240 | - if ($fname=='fournisseur_id') continue; | ||
2241 | - | ||
2242 | - // Champs virtuels (n'existent pas physiquement) | ||
2243 | - if (strtoupper($fname)=='DEVIS') continue; | 2242 | + /* |
2243 | + * Champs obligatoires à ignorer : | ||
2244 | + * - champs virtuels (n'existent pas physiquement) | ||
2245 | + * - champs ne pouvant être exigés si tôt | ||
2246 | + * - champs spéciaux dont le caractère obligatoire est géré indirectement (via beforeSave()) | ||
2247 | + * ... | ||
2248 | + */ | ||
2249 | + if ( in_array($fname, ['DEVIS', 'fournisseur_id', 'etiquette', 'numero_inventaire_organisme']) ) continue; | ||
2244 | 2250 | ||
2245 | if ($materiel->$fname === null || $materiel->$fname == '') { | 2251 | if ($materiel->$fname === null || $materiel->$fname == '') { |
2246 | $ALL_MANDATORY_FIELDS_GIVEN = false; | 2252 | $ALL_MANDATORY_FIELDS_GIVEN = false; |
@@ -2606,7 +2612,7 @@ class MaterielsController extends AppController { | @@ -2606,7 +2612,7 @@ class MaterielsController extends AppController { | ||
2606 | array_shift($modifiableFields); | 2612 | array_shift($modifiableFields); |
2607 | return ! in_array($fieldName, $modifiableFields); | 2613 | return ! in_array($fieldName, $modifiableFields); |
2608 | } | 2614 | } |
2609 | - return in_array($fieldName, $myReadonlyFields); | 2615 | + return ( !empty($materiel->$fieldName) && in_array($fieldName, $myReadonlyFields) ); |
2610 | }; | 2616 | }; |
2611 | 2617 | ||
2612 | //$this->set('isReadonlyField', $isReadonlyField); | 2618 | //$this->set('isReadonlyField', $isReadonlyField); |
@@ -2977,6 +2983,7 @@ class MaterielsController extends AppController { | @@ -2977,6 +2983,7 @@ class MaterielsController extends AppController { | ||
2977 | 2983 | ||
2978 | // Si au moins un champ obligatoire est nul ou vide => ERROR | 2984 | // Si au moins un champ obligatoire est nul ou vide => ERROR |
2979 | foreach ($mandatoryFields as $fname => $fnicename) { | 2985 | foreach ($mandatoryFields as $fname => $fnicename) { |
2986 | + | ||
2980 | // Champ virtuel ? | 2987 | // Champ virtuel ? |
2981 | if (strtoupper($fname) == 'DEVIS') { | 2988 | if (strtoupper($fname) == 'DEVIS') { |
2982 | if (! $materiel->hasDevis()) { | 2989 | if (! $materiel->hasDevis()) { |
@@ -2989,6 +2996,7 @@ class MaterielsController extends AppController { | @@ -2989,6 +2996,7 @@ class MaterielsController extends AppController { | ||
2989 | // on passe au champ suivant | 2996 | // on passe au champ suivant |
2990 | continue; | 2997 | continue; |
2991 | } | 2998 | } |
2999 | + | ||
2992 | // Champ physique (réel) ? | 3000 | // Champ physique (réel) ? |
2993 | $fval = $materiel->$fname; | 3001 | $fval = $materiel->$fname; |
2994 | if ($fval === null || $fval == '') { | 3002 | if ($fval === null || $fval == '') { |
@@ -3050,8 +3058,8 @@ class MaterielsController extends AppController { | @@ -3050,8 +3058,8 @@ class MaterielsController extends AppController { | ||
3050 | // Si au moins un champ obligatoire est nul ou vide => ERROR | 3058 | // Si au moins un champ obligatoire est nul ou vide => ERROR |
3051 | foreach ($mandatoryFields as $fname => $fnicename) { | 3059 | foreach ($mandatoryFields as $fname => $fnicename) { |
3052 | 3060 | ||
3053 | - // Champ virtuel ? => ignorer | ||
3054 | - if ($fname == 'DEVIS') continue; | 3061 | + // Champs obligatoires à ignorer : Champs virtuels ou ne pouvant être exigés si tôt |
3062 | + if ( in_array($fname, ['DEVIS', 'etiquette', 'numero_inventaire_organisme']) ) continue; | ||
3055 | 3063 | ||
3056 | $fval = $materiel->$fname; | 3064 | $fval = $materiel->$fname; |
3057 | //debug($fname); debug($fval); | 3065 | //debug($fname); debug($fval); |
@@ -3263,7 +3271,8 @@ class MaterielsController extends AppController { | @@ -3263,7 +3271,8 @@ class MaterielsController extends AppController { | ||
3263 | */ | 3271 | */ |
3264 | public function statusValidated($id = null, $from = 'index') | 3272 | public function statusValidated($id = null, $from = 'index') |
3265 | { | 3273 | { |
3266 | - $this->_statusSetTo('VALIDATED', "Le matériel a bien été validé (n'oubliez pas de saisir le n° inventaire 'tutelle' une fois le 'service fait')", $id, $from); | 3274 | + //$this->_statusSetTo('VALIDATED', "Le matériel a bien été validé (n'oubliez pas de saisir le n° inventaire 'tutelle' une fois le 'service fait')", $id, $from); |
3275 | + $this->_statusSetTo('VALIDATED', "Le matériel a bien été validé", $id, $from); | ||
3267 | /* | 3276 | /* |
3268 | * (EP) moved to statusSetTo() | 3277 | * (EP) moved to statusSetTo() |
3269 | * if (in_array($_SESSION['Auth']['User']['sn'][0], TableRegistry::get('Users') | 3278 | * if (in_array($_SESSION['Auth']['User']['sn'][0], TableRegistry::get('Users') |