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 | 397 | |
398 | 398 | ------- |
399 | 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 | 405 | - NEWSLETTER #5 envoyée |
401 | 406 | - Mise à jour du diagramme workflow (E-T) pour introduire la nouvelle étape TOBEORDERED ("En Commande") |
402 | 407 | - Bugfix : infos sur etiquettes affichées SEULEMENT si une étiqueteuse est configurée... | ... | ... |
README.md
config/app_labinvent_mandatory_fields.default.yml
... | ... | @@ -180,8 +180,6 @@ MANDATORY_FIELDS_LOT2: |
180 | 180 | |
181 | 181 | date_reception: 'Date de livraison' |
182 | 182 | |
183 | - #//'etiquette', // O/N | |
184 | - | |
185 | 183 | site_id: 'Site' |
186 | 184 | |
187 | 185 | #TODO: seulement si prix > 10K€ |
... | ... | @@ -196,10 +194,14 @@ MANDATORY_FIELDS_LOT2: |
196 | 194 | |
197 | 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 | 200 | # PROBLEME : |
200 | 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 | 206 | # ******* END OF $MANDATORY_FIELDS_LOT2 ******** |
205 | 207 | ... | ... |
src/Controller/MaterielsController.php
... | ... | @@ -1891,7 +1891,7 @@ class MaterielsController extends AppController { |
1891 | 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 | 1895 | * - l'étiquette doit être imprimée (et collée) |
1896 | 1896 | * - le n° inventaire tutelles doit être renseigné |
1897 | 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 | 1899 | $LABEL_NOT_PRINTED = false; |
1900 | 1900 | $NUM_INV_TUTELLES_NOT_FILLED = false; |
1901 | 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 | 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 | 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 | 2239 | //print_r($materiel); |
2236 | 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 | 2251 | if ($materiel->$fname === null || $materiel->$fname == '') { |
2246 | 2252 | $ALL_MANDATORY_FIELDS_GIVEN = false; |
... | ... | @@ -2606,7 +2612,7 @@ class MaterielsController extends AppController { |
2606 | 2612 | array_shift($modifiableFields); |
2607 | 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 | 2618 | //$this->set('isReadonlyField', $isReadonlyField); |
... | ... | @@ -2977,6 +2983,7 @@ class MaterielsController extends AppController { |
2977 | 2983 | |
2978 | 2984 | // Si au moins un champ obligatoire est nul ou vide => ERROR |
2979 | 2985 | foreach ($mandatoryFields as $fname => $fnicename) { |
2986 | + | |
2980 | 2987 | // Champ virtuel ? |
2981 | 2988 | if (strtoupper($fname) == 'DEVIS') { |
2982 | 2989 | if (! $materiel->hasDevis()) { |
... | ... | @@ -2989,6 +2996,7 @@ class MaterielsController extends AppController { |
2989 | 2996 | // on passe au champ suivant |
2990 | 2997 | continue; |
2991 | 2998 | } |
2999 | + | |
2992 | 3000 | // Champ physique (réel) ? |
2993 | 3001 | $fval = $materiel->$fname; |
2994 | 3002 | if ($fval === null || $fval == '') { |
... | ... | @@ -3050,8 +3058,8 @@ class MaterielsController extends AppController { |
3050 | 3058 | // Si au moins un champ obligatoire est nul ou vide => ERROR |
3051 | 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 | 3064 | $fval = $materiel->$fname; |
3057 | 3065 | //debug($fname); debug($fval); |
... | ... | @@ -3263,7 +3271,8 @@ class MaterielsController extends AppController { |
3263 | 3271 | */ |
3264 | 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 | 3277 | * (EP) moved to statusSetTo() |
3269 | 3278 | * if (in_array($_SESSION['Auth']['User']['sn'][0], TableRegistry::get('Users') | ... | ... |