Commit a541f625734ae5e9be82e62f8cd9e3279b6db4cf

Authored by Etienne Pallier
1 parent 9e0dc822
Exists in master and in 1 other branch dev

- (i) changé mot-clé "except" par "sauf" dans fichier config champs

readonly (et adapté traitement)

+ nouvelle exception si mot-clé "sauf" mal utilisé

v5.2.18-3.7.9
CHANGELOG
... ... @@ -461,6 +461,11 @@ Commencer à implémenter le nouveau workflow v5 :
461 461 ======= CHANGES =======
462 462  
463 463 -------
  464 +23/10/2021 v5.2.18-3.7.9
  465 + - (i) changé mot-clé "except" par "sauf" dans fichier config champs readonly (et adapté traitement)
  466 + - nouvelle exception si mot-clé "sauf" mal utilisé
  467 +
  468 +-------
464 469 22/10/2021 v5.2.17-3.7.9
465 470 - (i) Amélioration importante de la config des champs non modifiables : ajout optionnel d'une exception pour un (ou plusieurs) role(s)
466 471 => Exemple pour interdire la modif du fournisseur (sauf pour le role Administration) :
... ...
README.md
... ... @@ -52,8 +52,8 @@ Logiciel testé et validé sur les configurations suivantes :
52 52  
53 53 --------------------------------------------------------------------------------------------
54 54  
55   -Date: 22/10/2021
56   -Version: v5.2.17-3.7.9
  55 +Date: 23/10/2021
  56 +Version: v5.2.18-3.7.9
57 57  
58 58  
59 59  
... ...
config/app_labinvent_mandatory_fields.default.yml
... ... @@ -101,7 +101,7 @@ UNEDITABLE_FIELDS_LOT0:
101 101 #- nom_user
102 102  
103 103 # - Acheteur (le Créateur de la fiche) - Un role "Utilisateur" ne peut pas changer ça, c'est par défaut lui-même
104   - - nom_responsable (except Responsable, Administration)
  104 + - nom_responsable (sauf Responsable, Administration)
105 105  
106 106 #- nom_ancien_responsable
107 107  
... ... @@ -118,11 +118,11 @@ UNEDITABLE_FIELDS_LOT0:
118 118 #- budgets
119 119  
120 120 # #### CHAMPS ADMINISTRATIFS : ####
121   - - eotp (except Administration)
122   - - numero_commande (except Administration)
  121 + - eotp (sauf Administration)
  122 + - numero_commande (sauf Administration)
123 123 - numero_laboratoire # READONLY toujours car généré automatiquement
124   - - numero_inventaire_organisme (except Administration)
125   - - numero_inventaire_old (except Administration)
  124 + - numero_inventaire_organisme (sauf Administration)
  125 + - numero_inventaire_old (sauf Administration)
126 126  
127 127  
128 128  
... ... @@ -217,8 +217,8 @@ UNEDITABLE_FIELDS_LOT1:
217 217  
218 218 # On ne devrait pas pouvoir changer la NATURE du bien
219 219 # Domaine & Catégorie
220   - - sur_categorie_id (except Administration) # Domaine
221   - - categorie_id (except Administration) # Catégorie
  220 + - sur_categorie_id (sauf Administration) # Domaine
  221 + - categorie_id (sauf Administration) # Catégorie
222 222 #- sous_categorie_id
223 223  
224 224 #- groupes_thematique_id
... ... @@ -256,7 +256,7 @@ UNEDITABLE_FIELDS_LOT1:
256 256 #- nom_user
257 257  
258 258 # - Acheteur (le Créateur de la fiche) - Un role "Utilisateur" ne peut pas changer ça, c'est par défaut lui-même
259   - #- nom_responsable (except Responsable, Administration)
  259 + #- nom_responsable (sauf Responsable, Administration)
260 260  
261 261 #- nom_ancien_responsable
262 262  
... ... @@ -266,11 +266,11 @@ UNEDITABLE_FIELDS_LOT1:
266 266 #- gestionnaire_id
267 267  
268 268 # Fournisseur
269   - - fournisseur_id (except Administration)
  269 + - fournisseur_id (sauf Administration)
270 270  
271 271 #- organisme_id
272 272  
273   - - prix_ht (except Administration)
  273 + - prix_ht (sauf Administration)
274 274  
275 275 # Utilisé par la Gestion pour remplir le champ eotp
276 276 #- budgets
... ... @@ -280,11 +280,11 @@ UNEDITABLE_FIELDS_LOT1:
280 280 # Le devis attaché au matériel commandé n'est ni modifiable ni supprimable
281 281  
282 282 # #### CHAMPS ADMINISTRATIFS : ####
283   - - eotp (except Administration)
284   - - numero_commande (except Administration)
  283 + - eotp (sauf Administration)
  284 + - numero_commande (sauf Administration)
285 285 - numero_laboratoire # READONLY toujours car généré automatiquement
286   - - numero_inventaire_organisme (except Administration)
287   - - numero_inventaire_old (except Administration)
  286 + - numero_inventaire_organisme (sauf Administration)
  287 + - numero_inventaire_old (sauf Administration)
288 288  
289 289  
290 290  
... ... @@ -397,7 +397,7 @@ UNEDITABLE_FIELDS_LOT2:
397 397 #- nom_user
398 398  
399 399 # - Acheteur (le Créateur de la fiche) - Un role "Utilisateur" ne peut pas changer ça, c'est par défaut lui-même
400   - #- nom_responsable (except Responsable, Administration)
  400 + #- nom_responsable (sauf Responsable, Administration)
401 401  
402 402 #- nom_ancien_responsable
403 403  
... ...
src/Model/Table/MaterielsTable.php
... ... @@ -271,18 +271,23 @@ class MaterielsTable extends AppTable
271 271 $dict = [];
272 272 foreach ($uneditable_fields as $f) {
273 273 $except_roles = [];
274   - $except_str = '(except';
  274 + $except_str = '(sauf';
  275 + $pos0 = strpos($f, '(');
275 276 $pos = strpos($f, $except_str);
276   - // Si le nom du champ $f fini par "(except ...)", on récupère cette chaine except (sans le mot except ni la parenthèse finale) dans $except
277   - if ($pos !== false) {
  277 + // Si le nom du champ $f fini par "(sauf ...)", on récupère cette chaine except (sans le mot 'sauf' ni la parenthèse finale) dans $except
  278 + if ($pos0 !== false) {
  279 + $error_msg = "Erreur dans le fichier de configuration des champs non modifiables";
  280 + // EXCEPTION si parenthèse début mais pas suivie du mot-clé 'sauf'
  281 + if ($pos === false)
  282 + throw new \Exception("$error_msg : une parenthèse doit toujours être suivie du mot-clé 'sauf', ce qui n'est pas le cas de la ligne '$f'");
278 283 // EXCEPTION si pas de parenthèse finale, ou role mal orthographié
279 284 //$except_list = trim( substr($f, $pos + strlen($except_str), -1) );
280 285 if ( substr($f, -1) != ')' )
281   - throw new \Exception("Erreur dans le fichier de configuration des champs non modifiables : il manque une parenthèse à la fin de la ligne '$f'");
  286 + throw new \Exception("$error_msg : il manque une parenthèse à la fin de la ligne '$f'");
282 287 $except_roles = str_replace(" ", "", substr($f, $pos + strlen($except_str), -1) );
283 288 $except_roles = explode(',', $except_roles);
284 289 foreach ($except_roles as $role) if (! self::isValidRole($role))
285   - throw new \Exception("Erreur dans le fichier de configuration des champs non modifiables : le role '$role' est mal orthographié dans la ligne '$f'");
  290 + throw new \Exception("$error_msg : le role '$role' est mal orthographié dans la ligne '$f'");
286 291 $f = trim( substr($f,0,$pos) );
287 292 }
288 293 $dict[$f] = $except_roles;
... ...