diff --git a/CHANGELOG b/CHANGELOG
index 37cb0b3..daa95dd 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -194,117 +194,116 @@ Outre ces changements, voici d'autres changements importants :
-======= TODO3 - PEUT ATTENDRE =======
+======= TODO QUI PEUT ATTENDRE =======
will_stay => resident (ou permanent)
-EOTP :
-“Sur quel(s) budget(s) ?” c'est pour le lot 1 pour l'acheteur (status CREATED)
-“Entité(s) dépensière(s)” / lot 2 gestionnaire (status VALIDATED)
-
-Modif d’une fiche materiel ne doit pas refaire une commande !!!
- Install from scratch
- Update VM
-
- check add by copy
- appel à contribuer
-STATS
-moyenne annuelle, total : arrondir (pas de virgule, ce sont des matos)
-2 premières ligne en jaune pour mettre en évidence
-mettre en rouge les évol. % négatifs
-Ca continue de marcher en 2021 ?
-
-Fournisseur update :
-3 - (LATER) Simplifier le beforeSave() sur le traitement des feurs car ça sera désormais inutile vue que CLEAN
-
-GO GENERIC :
-delete generic
-index generic
-add_edit generic
-
-Services (poles)
cakephp 3.9
cake crud + view
-Install DOCKER
Install WSL2 sur pc
-
-
- Adapter règles "nouveau suivi"
-======= TODO2 - URGENT =======
-
-
-- déclarer etiquette collée => supprimer ?
-
-
-
-ADMIN Dernier modificateur = Gestionnaire de ref.
-
-Ancien seuil 800€ doit rester valable pour anciens matos
+======= TODO A VOIR OU RE-VERIFIER (toujours nécessaire ?) =======
+ - Profils qui peuvent éditer/modifier les catégories / sous catégories dans une fiche matériel existante
+ En particulier les personnes qui ont un rôle de « responsable ».
+ Peuvent-elles modifier la catégorie/sous-catégorie d’un matériel existant ?
+ Si non, ça serait bien pratique qu’elles le puissent
+ car seul superadmin peut le faire...
+
+(Elodie) Install DCD sur postes :
+- Carole (+titreuse)
+- Marjorie et Dorine en premier lieu.
+- Quand elles reviendront : Nathalie et Joëlle.
+- Partager les imprimantes de Jean-Louis (pour Roche) et Carole (pour Belin)
+- install GEPI
-Responsable = groupe métier, ou projet, ou pôle (PIME), MAIS PAS thématique
+ *) Check extension ldap dans page web installation
+
+ *) Augmenter taille upload de mon labo
+
+ *) Créer une page qui liste les gestionnaires
+
+
+ *) SUPERADMIN
+ => par défaut, au minimum, mêmes droits que ADMIN
+ => mais il peut avoir des droits EN PLUS (jamais en moins)
+ Donc, en fait, SUPERADMIN = ADMIN (mais superadmin peut éventuellemet faire encore plus de choses)
+ (SUPERADMIN = ADMIN++) (SUPERADMIN >= ADMIN)
+
+ *) Vincent :
+ - email pas trouvé (ancienne fiche de vincent)
-Bug groupe thématique dans groupe metier sur fiche materiel
-(+ virer “code comptable” et changer le nom des champs eotp, ajouter ligne budgétaire…)
+ *) LDAP trou sécu (autres labos) : user se connecte avec bad mdp
+
+
+ == DEPRECATED ==
-Procédure accueil :
->=10K obligatoire (inventaire comptable)
-<10K : possible quand même (inventaire physique)
-Bouton “Je veux commander un matos”
+ Erreurs qu'on ne voit que si on met
+ 'errorLevel' => E_ALL,
+ dans app.php :
+
+
+ Deprecated (16384): Plugin::load() is deprecated. Use Application::addPlugin() instead. This method will be removed in 4.0.0. - /Users/epallier/_PROJ/_W/PROJ_LABINVENT/SOURCE/labinvent202101/config/bootstrap.php, line: 260
+ You can disable deprecation warnings by setting `Error.errorLevel` to `E_ALL & ~E_USER_DEPRECATED` in your config/app.php. [CORE/src/Core/functions.php, line 311]
-Mail “Matériel à commander (Fiche inventirap n° XXX)” :
-Ce mail est destiné au gestionnaire “untel”
-Acheteur/Demandeur :
-Utilisateur :
-Désignation :
-Description :
-A commander sur le(s) budget(s) :
-Devis en pièce jointe
+Deprecated (16384): Plugin::load() is deprecated. Use Application::addPlugin() instead. This method will be removed in 4.0.0. - /Users/epallier/_PROJ/_W/PROJ_LABINVENT/SOURCE/labinvent202101/config/bootstrap.php, line: 265
+ You can disable deprecation warnings by setting `Error.errorLevel` to `E_ALL & ~E_USER_DEPRECATED` in your config/app.php. [CORE/src/Core/functions.php, line 311]
+Deprecated (16384): Plugin::load() is deprecated. Use Application::addPlugin() instead. This method will be removed in 4.0.0. - /Users/epallier/_PROJ/_W/PROJ_LABINVENT/SOURCE/labinvent202101/config/bootstrap.php, line: 278
+ You can disable deprecation warnings by setting `Error.errorLevel` to `E_ALL & ~E_USER_DEPRECATED` in your config/app.php. [CORE/src/Core/functions.php, line 311]
+Deprecated (16384): Plugin::bootstrap() is deprecated. This method will be removed in 4.0.0. - /Users/epallier/_PROJ/_W/PROJ_LABINVENT/SOURCE/labinvent202101/vendor/cakephp/cakephp/src/Core/Plugin.php, line: 173
+ You can disable deprecation warnings by setting `Error.errorLevel` to `E_ALL & ~E_USER_DEPRECATED` in your config/app.php. [CORE/src/Core/functions.php, line 311]
-Nouvelle fiche matos :
-Bouton “Commander”
-=> Si ADMIN, devient “Enregistrer” (et pas de mail envoyé)
-Menu Matos/Nouveau materiel => ADMIN only
+Strict (2048): Non-static method App\Model\Table\AppTable::isValidRole() should not be called statically [APP/Model/Table/MaterielsTable.php, line 296]
+Warning (2): Cannot modify header information - headers already sent by (output started at /var/www/html/inventirap-test1/vendor/cakephp/cakephp/src/Error/Debugger.php:853) [APP/Template/Layout/default.ctp, line 43]
-Bugfix : un profil Utilisateur ne doit pas pouvoir changer l’acheteur (acheteur = lui) !!!
+ *) instance docker sur hyperion2 (et supprimer old pweb2)
+
+ *) src/Application.php
+- (Imprimer étiquette : toujours possible ?)
+- prévoir une alerte quand on save un champ qui n'est pas dans la BD (genre resp_credit...)
+print etiquette pour les 2 serveurs + tester fin garantie orange
-Outils : voir/gérer ?
+saisir les personnes du gt2i et de tous les groupes...
-Photo : type ?
-documents.photo = TRUE
+- (b) Bugfix fournisseur perdu (et champ vide qui n'est plus modifiable !) après validation du matos
+ (quand il manque un champ pour valider), et pourtant bien enregistré dans listes des fournisseurs
-Fournisseurs : src/Template/Common/add_edit.ctp
+======= TO DO MIGRÉS DANS REDMINE LE 30/11/2021 =======
Ecran d’accueil :
Voir Mes matériels (que j’ai achetés)
@@ -314,76 +313,7 @@ Voir les Matériels que j’utilise (find sur champ utilisateur)
(admin) “Voir les matériels ‘zombie’” (materiels CREATED depuis longtemps, et toujours pas ORDERED ou VALIDATED => sans doute à virer (pour ne pas fausser les stats...)
(admin) Voir matos à archiver
-
-
-
-
-
-
-
-
-======= TODO1 - BUGFIXES (ou TRES URGENT) =======
-
-- (MT) Install locale, puis répondre stagiaire
-
DB complète à mettre à jour
-- install GEPI
-
-User = Acheteur
-
-(Elodie) Install DCD sur postes :
-- Carole (+titreuse)
-- Marjorie et Dorine en premier lieu.
-- Quand elles reviendront : Nathalie et Joëlle.
-- Partager les imprimantes de Jean-Louis (pour Roche) et Carole (pour Belin)
-
-
-TAG version 3.7.9 finale ANCIEN workflow
-
-- technique/admin inutile
-
-
-Commencer à implémenter le nouveau workflow v5 :
-- Gestionnaire de ref : + “Je ne sais pas”
-- lot1 toujours obligatoire (en dur dans Table), LOT2 = ssi status > CREATED (géré via soft dans add_edit(), la vue ne doit rien gérer du tout !)
-- Infos obligatoires LOT1
-- Commande directe ou seulement pour inventaire : "Enregistrer & Commander" et "Enregistrer seulement"
-- Supprimer un CREATED + Annuler cde + tobeordered=true + edit possible
-- Validation (LOT2 obligatoire) + invalider + edit LOT2
-
-
-
-
-
-
- - Profils qui peuvent éditer/modifier les catégories / sous catégories dans une fiche matériel existante
- En particulier les personnes qui ont un rôle de « responsable ».
- Peuvent-elles modifier la catégorie/sous-catégorie d’un matériel existant ?
- Si non, ça serait bien pratique qu’elles le puissent
- car seul superadmin peut le faire...
-
-
-======= TODO =======
-
-
- *) TESTS !!!!
- *) Les tests doivent se faire avec la config par défaut (et non pas celle spécifique du labo)
- *) Ajouter test Commande (avec devis joint !)
-
- *)
- Relance auto lors de suivis périodiques
-
- *) DOMPDF : pb Qrcode absent sur fiche pdf (mais présent sur page web), alors que le QrCode est bien généré et que le chemin dans le pdf est OK !!!
-Par contre, ok avec FPDF
-
- *) LDAP trou sécu (autres labos) : user se connecte avec bad mdp
-
- *) => update matos lifecycle diag
-
-
-
-
-
*) Quand on supprime un matos de “ma liste”, il faut revenir à “ma liste”, pas à “tous les matos”
@@ -391,30 +321,13 @@ Par contre, ok avec FPDF
=> utiliser plutot localhost:8081
(update doc)
Mais ca serait mieux de faire localhost:8080 pour le site web et :8081 pour phpmyadmin (et non pas l’inverse !!)
-
- *) Check extension ldap dans page web installation
-
- *) Augmenter taille upload de mon labo
-
- *) Créer une page qui liste les gestionnaires
-
- *) SUPERADMIN
- => par défaut, au minimum, mêmes droits que ADMIN
- => mais il peut avoir des droits EN PLUS (jamais en moins)
- Donc, en fait, SUPERADMIN = ADMIN (mais superadmin peut éventuellemet faire encore plus de choses)
- (SUPERADMIN = ADMIN++) (SUPERADMIN >= ADMIN)
-
+
*) config champs matos : ajouter HIDDEN_FIELDS (sauf admin) :
- section administrative
- status
- numéro inventaire (hidden par défaut pour l'édition)
- ...
-
-
- *) Vincent :
- - email pas trouvé (ancienne fiche de vincent)
- - doc attaché : nom doit être modifiable
-
+
*) Resp :
- voir menus Outils & Autres (ou pas) ?
- respb de qqch !!!
@@ -422,107 +335,48 @@ Mais ca serait mieux de faire localhost:8080 pour le site web et :8081 pour phpm
*) qqsoit user : doit pouvoir voir sa fiche user (no modif)
=> mais pas celle des autres...
-
-
- *) Mail "[LabInvent] Ajout de matériel(s)" => c'est quoi ? ==> voir message de log associé
- (quelle diff avec "[LabInvent] Ajout d'un matériel" ??)
-
+ *)
+ validation (=livré ET payé)
+ Facture jointe (si > 10K)
+ Détail lieu stockage + S/N demandé ssi > 10K€
- *)
+ *)
TBO ou ARCHIVED (= validated) : ne pas autoriser edit ou delete des docs attachés
Autoriser certaines choses pour TBO :
- edit (mais pas delete)
- print label
- add doc attaché
- (pas emprunt ni suivi)
-
-
+ *) => update matos lifecycle diag
- *)
- validation (=livré ET payé)
- Facture jointe (si > 10K)
- Détail lieu stockage + S/N demandé ssi > 10K€
+ *) DOMPDF : pb Qrcode absent sur fiche pdf (mais présent sur page web), alors que le QrCode est bien généré et que le chemin dans le pdf est OK !!!
+Par contre, ok avec FPDF
*)
Procédures pour les utilisateurs et les gestionnaires désormais configurable via le fichier de conf
-
- *)
- Généraliser l'usage de Element/buttons_edit_del.ctp dans tous les formulaires de view
-
+ *) TESTS !!!!
+ *) Les tests doivent se faire avec la config par défaut (et non pas celle spécifique du labo)
+ *) Ajouter test Commande (avec devis joint !)
+
+
*)
Gérer les autorisations (ACL) via fichier de conf
-
-
- == DEPRECATED ==
-
- Erreurs qu'on ne voit que si on met
- 'errorLevel' => E_ALL,
- dans app.php :
-
-
- Deprecated (16384): Plugin::load() is deprecated. Use Application::addPlugin() instead. This method will be removed in 4.0.0. - /Users/epallier/_PROJ/_W/PROJ_LABINVENT/SOURCE/labinvent202101/config/bootstrap.php, line: 260
- You can disable deprecation warnings by setting `Error.errorLevel` to `E_ALL & ~E_USER_DEPRECATED` in your config/app.php. [CORE/src/Core/functions.php, line 311]
-
-Deprecated (16384): Plugin::load() is deprecated. Use Application::addPlugin() instead. This method will be removed in 4.0.0. - /Users/epallier/_PROJ/_W/PROJ_LABINVENT/SOURCE/labinvent202101/config/bootstrap.php, line: 265
- You can disable deprecation warnings by setting `Error.errorLevel` to `E_ALL & ~E_USER_DEPRECATED` in your config/app.php. [CORE/src/Core/functions.php, line 311]
-
-Deprecated (16384): Plugin::load() is deprecated. Use Application::addPlugin() instead. This method will be removed in 4.0.0. - /Users/epallier/_PROJ/_W/PROJ_LABINVENT/SOURCE/labinvent202101/config/bootstrap.php, line: 278
- You can disable deprecation warnings by setting `Error.errorLevel` to `E_ALL & ~E_USER_DEPRECATED` in your config/app.php. [CORE/src/Core/functions.php, line 311]
-
-Deprecated (16384): Plugin::bootstrap() is deprecated. This method will be removed in 4.0.0. - /Users/epallier/_PROJ/_W/PROJ_LABINVENT/SOURCE/labinvent202101/vendor/cakephp/cakephp/src/Core/Plugin.php, line: 173
- You can disable deprecation warnings by setting `Error.errorLevel` to `E_ALL & ~E_USER_DEPRECATED` in your config/app.php. [CORE/src/Core/functions.php, line 311]
-
-
-Strict (2048): Non-static method App\Model\Table\AppTable::isValidRole() should not be called statically [APP/Model/Table/MaterielsTable.php, line 296]
-
-Warning (2): Cannot modify header information - headers already sent by (output started at /var/www/html/inventirap-test1/vendor/cakephp/cakephp/src/Error/Debugger.php:853) [APP/Template/Layout/default.ctp, line 43]
-
-
-
+- besoin IP2I/LMA :
+ - materiels/index : on peut ajouter un filtre "Site" (et Dépt), et un filtre "tous/matos sensible/matos non sensible"
-
-
- == CAN WAIT ==
-
- *) instance docker sur hyperion2 (et supprimer old pweb2)
-
- *) src/Application.php
-
- *)
On doit pouvoir supprimer un devis sur un matériel commandé (TOBEORDERED) à condition qu'il en reste au moins 1
=> du coup, astuce, on peut REMPLACER un devis en ajoutant le nouveau puis en supprimant l'ancien
- - (Imprimer étiquette : toujours possible ?)
-
-
-
-
-
-
-TODO :
-
-- besoin IP2I/LMA :
- - pour materiels/view(/edit/delete) => le user courant ne peut pas voir un materiel "sensible" qui n'est pas du même Site (Dépt) que lui
- - pour materiels/index et /find et /export => il faut exclure les matos "sensibles" qui ne sont pas du même site que le user courant
- - materiels/index : on peut ajouter un filtre "Site" (et Dépt), et un filtre "tous/matos sensible/matos non sensible"
-
-- prévoir une alerte quand on save un champ qui n'est pas dans la BD (genre resp_credit...)
-
- gérer les liens url automatiquement dans champ description (rendre cliquable)
-
-
-
- améliorer affichage tableau stats :
- 4415 matos en tout sur index, mais 4406 seulement dans stats
-
-
-
+
- GENERICITÉ & REFACTORISATION :
- add_or_edit() générique
@@ -533,31 +387,28 @@ TODO :
- short_role AppController ligne 819 => généraliser
- - emprunts/index generique
+ - prets/index generique
- documents/index generique
- - ProjetsController minimaliste, doit juste étendre AppController avec un minimum de changement
- - fusionner groupe thematique et metier (et projet ?) :
- => faire hériter les Controller et les Table d'une meme superclasse GroupController et GroupTable
- => avoir un seul template
- => c'est vraiment stupide d'avoir 2 classes qui font la meme chose...
+ - GROUP générique : fusionner groupe thematique et metier (et projet ?) :
+ - ProjetsController minimaliste, doit juste étendre AppController avec un minimum de changement
+ - Groupe thematique et metier :
+ => faire hériter les Controller et les Table d'une meme superclasse GroupController et GroupTable
+ => avoir un seul template
+ => c'est vraiment stupide d'avoir 2 classes qui font la meme chose...
- Utiliser les vues "index" des entités associées pour la vue "view" de materiel (et suivi) :
=> éviter la redondance, le contenu est pratiquement le meme (???, sauf que les colonnes ne sont pas triables)
-
- Bien préciser quels sont les champs obligatoires avec une asterisque (et pour chaque LOT)
- S/N à renseigner (recommended) ssi > 10000€
Ajouter champ attributes.condition = "prix > 10000"
-======= NEXT =======
-
-print etiquette pour les 2 serveurs + tester fin garantie orange
-view générique à utiliser pour plusieurs entités
+ - view générique à utiliser pour plusieurs entités
Vues génériques (index et view) :
- savoir gérer les champs virtuels pour le tri
@@ -567,23 +418,12 @@ Vues génériques (index et view) :
- lieu_stockage = concat(site,lieu)
- users : vue "index" avec (responsable)
-- Suivis.statut => "en cours" ou "à terminer" => à calculer auto
-
-
-saisir les personnes du gt2i et de tous les groupes...
-groupe.users associés : ajouter "(responsable)" when relevant
+- Suivis.statut => "en cours" ou "à terminer" => à calculer auto
comment faire un tri sur la dernière colonne des stats (connexDurAvg) ?
-erreur download depuis page documents/ (ou depuis vue du matériel) sur inventirap : erreur 404 (action impossible)
-
-
-- (b) Bugfix fournisseur perdu (et champ vide qui n'est plus modifiable !) après validation du matos
- (quand il manque un champ pour valider), et pourtant bien enregistré dans listes des fournisseurs
-
-
-
+(b) erreur download depuis page documents/ (ou depuis vue du matériel) sur inventirap : erreur 404 (action impossible)
Utiliser les champs 'comment' de la config pour les labels des champs dans materiels/view et /add_edit
@@ -595,7 +435,7 @@ Ne pas autoriser la commande via url si le bouton order est désactivé dans la
...
-- Quelle est cette action ? le mail est un peu court... (ajout par copie ?)
+(b) - Quelle est cette action ? le mail est un peu court... (ajout par copie ?)
Titre "Ajout de matériel(s)"
Nathalie Oziol a ajouté des matériels (action 'add')
Vous recevez ce message car vous êtes concerné(e) par cette action effectuée sur l'inventaire des matériels du laboratoire
@@ -610,9 +450,39 @@ Gestion multi-sites :
- gestionnaires (admin) (et superadmin) continuent d'avoir accès à tout
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+======= NEXT (TODO urgent) =======
+
+rien ?
+
+
+
+
+
======= CHANGES =======
-------
+01/12/2021 v5.4.3-3.7.9
+ - (i) Tests : ajout d'un fichier de config de champs matériels spécialisé pour les TESTS : config/app_labinvent_mandatory_fields_test.yml
+ - (i) Passage de l'ensemble des tests (enfin !)
+
+-------
30/11/2021 v5.4.2-3.7.9
- (b) bugfix mysql sur filtrage materiels pour partitionnement par site (ça passait sur mysql récent mais pas sur vieux mysql)
=> requete sql plus propre
diff --git a/README.md b/README.md
index 0ccfd5d..1efab24 100644
--- a/README.md
+++ b/README.md
@@ -52,8 +52,8 @@ Logiciel testé et validé sur les configurations suivantes :
--------------------------------------------------------------------------------------------
-Date: 30/11/2021
-Version: v5.4.2-3.7.9
+Date: 01/12/2021
+Version: v5.4.3-3.7.9
HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes)
diff --git a/config/.gitignore b/config/.gitignore
index a5e249c..a549db5 100755
--- a/config/.gitignore
+++ b/config/.gitignore
@@ -1,5 +1,5 @@
/app.php.ORIG
-app_labinvent_mandatory_fields_*.yml
app_labinvent_mandatory_fields.php
app_labinvent_mandatory_fields.yml
app_labinvent_authorizations*
+/tmp/*
diff --git a/config/app_labinvent_mandatory_fields.default.yml b/config/app_labinvent_mandatory_fields.default.yml
index ee56b5b..9606fe0 100644
--- a/config/app_labinvent_mandatory_fields.default.yml
+++ b/config/app_labinvent_mandatory_fields.default.yml
@@ -20,11 +20,26 @@ MANDATORY_AND_READONLY_FIELDS:
MANDATORY_FIELDS_FOR_LOT0: {
fieldset_comment: Champs OBLIGATOIRES pour CRÉÉR une fiche matériel,
- designation: { selected: '1', comment: Désignation, except_roles: '' }, description: { selected: '1', comment: Description, except_roles: '' }, sur_categorie_id: { selected: '1', comment: Domaine, except_roles: '' }, categorie_id: { selected: '1', comment: Catégorie, except_roles: '' }, nom_responsable: { selected: '1', comment: 'Nom de l''Acheteur', except_roles: '' }, email_responsable: { selected: '1', comment: 'Email de l''Acheteur', except_roles: '' }, nom_user: { selected: '1', comment: 'Nom de l''utilisateur', except_roles: '' } }
+ designation: { selected: '1', comment: Désignation, except_roles: '' },
+ description: { selected: '1', comment: Description, except_roles: '' },
+ sur_categorie_id: { selected: '1', comment: Domaine, except_roles: '' },
+ categorie_id: { selected: '1', comment: Catégorie, except_roles: '' },
+ nom_responsable: { selected: '1', comment: 'Nom de l''Acheteur', except_roles: '' },
+ email_responsable: { selected: '1', comment: 'Email de l''Acheteur', except_roles: '' },
+ nom_user: { selected: '1', comment: 'Nom de l''utilisateur', except_roles: '' } }
UNEDITABLE_FIELDS_AFTER_LOT0: {
fieldset_comment: Champs READONLY après la CRÉATION de la fiche matériel,
- sur_categorie_id: { selected: '0', comment: 'Domaine', except_roles: [Administration] }, categorie_id: { selected: '0', comment: '', except_roles: [Administration] }, resp_credit: { selected: '0', comment: '', except_roles: [Administration] }, gestionnaire_id: { selected: '0', comment: '', except_roles: [Administration] }, fournisseur_id: { selected: '0', comment: '', except_roles: [Administration] }, organisme_id: { selected: '0', comment: '', except_roles: [Administration] }, prix_ht: { selected: '0', comment: '', except_roles: [Administration] }, budgets: { selected: '0', comment: '', except_roles: [Administration] }, DOC_DEVIS: { selected: '0', comment: '', except_roles: '' }, DOC_BC: { selected: '0', comment: '', except_roles: [Administration] } }
+ sur_categorie_id: { selected: '0', comment: 'Domaine', except_roles: [Administration] },
+ categorie_id: { selected: '0', comment: '', except_roles: [Administration] },
+ resp_credit: { selected: '0', comment: '', except_roles: [Administration] },
+ gestionnaire_id: { selected: '0', comment: '', except_roles: [Administration] },
+ fournisseur_id: { selected: '0', comment: '', except_roles: [Administration] },
+ organisme_id: { selected: '0', comment: '', except_roles: [Administration] },
+ prix_ht: { selected: '0', comment: '', except_roles: [Administration] },
+ budgets: { selected: '0', comment: '', except_roles: [Administration] },
+ DOC_DEVIS: { selected: '0', comment: '', except_roles: '' },
+ DOC_BC: { selected: '0', comment: '', except_roles: [Administration] } }
RECOMMENDED_FIELDS_AFTER_LOT0: {
fieldset_comment: Champs RECOMMANDÉS après la CRÉATION de la fiche matériel,
diff --git a/config/app_labinvent_mandatory_fields_test.yml b/config/app_labinvent_mandatory_fields_test.yml
new file mode 100644
index 0000000..e96080a
--- /dev/null
+++ b/config/app_labinvent_mandatory_fields_test.yml
@@ -0,0 +1,116 @@
+# TEST config file
+
+MANDATORY_AND_READONLY_FIELDS:
+
+ GENERAL: {
+ fieldset_comment: Paramètres généraux,
+ HAS_ORDER_BUTTON: { selected: '1', comment: 'Ajouter un bouton COMMANDE sur la fiche matériel ?' } }
+
+ UNEDITABLE_FIELDS: {
+ fieldset_comment: Champs READONLY dès le début,
+ designation: { selected: '0', comment: Désignation, except_roles: '' },
+ description: { selected: '0', comment: 'Description, commentaire explicatif', except_roles: '' },
+ nom_responsable: { selected: '1', comment: 'nom du responsable', except_roles: [Responsable, Administration] },
+ eotp: { selected: '1', comment: 'entité-s dépensière-s, budget-s', except_roles: [Administration] },
+ numero_commande: { selected: '1', comment: 'N° BC', except_roles: [Administration] },
+ numero_inventaire_organisme: { selected: '1', comment: '', except_roles: [Administration] },
+ numero_inventaire_old: { selected: '1', comment: 'Ancien numéro d''inventaire si existe', except_roles: [Administration] },
+ numero_laboratoire: { selected: '1', comment: '', except_roles: '' } }
+
+
+ # LOT 1 - Création de la fiche matériel
+
+ MANDATORY_FIELDS_FOR_LOT0: {
+ fieldset_comment: Champs OBLIGATOIRES pour CRÉÉR une fiche matériel,
+ designation: { selected: '1', comment: Désignation, except_roles: '' },
+ description: { selected: '1', comment: Description, except_roles: '' },
+ sur_categorie_id: { selected: '1', comment: Domaine, except_roles: '' },
+ categorie_id: { selected: '1', comment: Catégorie, except_roles: '' },
+ nom_responsable: { selected: '1', comment: 'Nom de l''Acheteur', except_roles: '' },
+ email_responsable: { selected: '1', comment: 'Email de l''Acheteur', except_roles: '' },
+ nom_user: { selected: '1', comment: 'Nom de l''utilisateur', except_roles: '' } }
+
+ UNEDITABLE_FIELDS_AFTER_LOT0: {
+ fieldset_comment: Champs READONLY après la CRÉATION de la fiche matériel,
+ sur_categorie_id: { selected: '0', comment: 'Domaine', except_roles: [Administration] },
+ categorie_id: { selected: '0', comment: '', except_roles: [Administration] },
+ resp_credit: { selected: '0', comment: '', except_roles: [Administration] },
+ gestionnaire_id: { selected: '0', comment: '', except_roles: [Administration] },
+ fournisseur_id: { selected: '0', comment: '', except_roles: [Administration] },
+ organisme_id: { selected: '0', comment: '', except_roles: [Administration] },
+ prix_ht: { selected: '0', comment: '', except_roles: [Administration] },
+ budgets: { selected: '0', comment: '', except_roles: [Administration] },
+ DOC_DEVIS: { selected: '0', comment: '', except_roles: '' },
+ DOC_BC: { selected: '0', comment: '', except_roles: [Administration] } }
+
+ RECOMMENDED_FIELDS_AFTER_LOT0: {
+ fieldset_comment: Champs RECOMMANDÉS après la CRÉATION de la fiche matériel,
+ etiquette: { selected: '0', comment: 'd''imprimer l''étiquette associée et de la coller sur le matériel', except_roles: '' }, numero_inventaire_organisme: { selected: '0', comment: 'de renseigner le champ ''N° inventaire comptable/tutelles _Organisme_''', except_roles: '' }, DOC_BC: { selected: '0', comment: 'd''ajouter le Bon de Commande', except_roles: '' }, DOC_BL: { selected: '0', comment: 'd''ajouter le Bon de Livraison', except_roles: '' }, DOC_FACTURE: { selected: '0', comment: 'd''ajouter la Facture', except_roles: '' } }
+
+
+ # LOT 1 - Demamnde d'Achat (Commande)
+
+ MANDATORY_FIELDS_FOR_LOT1: {
+ fieldset_comment: 'Champs OBLIGATOIRES pour passer la COMMANDE (en plus du LOT 0)',
+ organisme_id: { selected: '1', comment: Organisme, except_roles: '' },
+ prix_ht: { selected: '1', comment: 'Prix HT', except_roles: '' },
+ resp_credit: { selected: '0', comment: 'Responsable du crédit', except_roles: '' },
+ gestionnaire_id: { selected: '1', comment: 'Gestionnaire de référence', except_roles: '' },
+ fournisseur_id: { selected: '1', comment: Fournisseur, except_roles: '' },
+ budgets: { selected: '1', comment: Budgets, except_roles: '' },
+ DOC_DEVIS: { selected: '0', comment: Devis, except_roles: '' } }
+
+ UNEDITABLE_FIELDS_AFTER_LOT1: {
+ fieldset_comment: 'Champs READONLY après avoir passé la COMMANDE (en plus du LOT 0)',
+ sur_categorie_id: { selected: '1', comment: 'Domaine', except_roles: [Administration] }, categorie_id: { selected: '1', comment: '', except_roles: [Administration] },
+ resp_credit: { selected: '1', comment: 'Responsable du crédit', except_roles: [Administration] },
+ gestionnaire_id: { selected: '1', comment: 'Gestionnaire de référence', except_roles: [Administration] },
+ fournisseur_id: { selected: '1', comment: 'Fournisseur', except_roles: [Administration] },
+ organisme_id: { selected: '1', comment: 'Organisme', except_roles: [Administration] },
+ prix_ht: { selected: '1', comment: 'Prix HT', except_roles: [Administration] },
+ budgets: { selected: '1', comment: 'Budgets', except_roles: [Administration] },
+ DOC_DEVIS: { selected: '1', comment: 'Devis joint', except_roles: '' },
+ DOC_BC: { selected: '1', comment: 'BC joint', except_roles: [Administration] } }
+
+ RECOMMENDED_FIELDS_AFTER_LOT1: {
+ fieldset_comment: 'Champs RECOMMANDÉS après avoir passé la COMMANDE (en plus du LOT 0)',
+ etiquette: { selected: '0', comment: 'd''imprimer l''étiquette associée et de la coller sur le matériel', except_roles: '' }, numero_inventaire_organisme: { selected: '0', comment: 'de renseigner le champ ''N° inventaire comptable/tutelles _Organisme_''', except_roles: '' }, DOC_BC: { selected: '0', comment: 'd''ajouter le Bon de Commande', except_roles: '' }, DOC_BL: { selected: '0', comment: 'd''ajouter le Bon de Livraison', except_roles: '' }, DOC_FACTURE: { selected: '0', comment: 'd''ajouter la Facture', except_roles: '' } }
+
+
+ # LOT 2 - Validation, Livraison (matériel livré et payé)
+
+ MANDATORY_FIELDS_FOR_LOT2: {
+ fieldset_comment: 'Champs OBLIGATOIRES pour VALIDER la livraison (en plus du LOT 1)',
+ date_acquisition: { selected: '1', comment: 'Date d''achat', except_roles: '' },
+ date_reception: { selected: '1', comment: 'Date de livraison', except_roles: '' },
+ site_id: { selected: '0', comment: Site, except_roles: '' },
+ lieu_detail: { selected: '0', comment: 'Lieu de stockage', except_roles: '' },
+ eotp: { selected: '1', comment: 'Entité(s) dépensière(s), budget(s)', except_roles: '' },
+ numero_commande: { selected: '1', comment: 'Num. BC', except_roles: '' },
+ DOC_DEVIS: { selected: '0', comment: 'Devis joint', except_roles: '' } }
+
+ UNEDITABLE_FIELDS_AFTER_LOT2: {
+ fieldset_comment: 'Champs READONLY après VALIDATION de la livraison (en plus du LOT 1)',
+ sur_categorie_id: { selected: '1', comment: 'Domaine', except_roles: '' },
+ categorie_id: { selected: '1', comment: 'Catégorie', except_roles: '' },
+ date_acquisition: { selected: '1', comment: 'Date de commande', except_roles: '' },
+ date_reception: { selected: '1', comment: 'Date de livraison', except_roles: '' },
+ eotp: { selected: '1', comment: 'Entité(s) dépensière(s)', except_roles: '' },
+ numero_commande: { selected: '1', comment: 'N° BC', except_roles: '' },
+ DOC_BC: { selected: '1', comment: 'BC joint', except_roles: '' },
+ DOC_BL: { selected: '1', comment: 'BL joint', except_roles: '' },
+ DOC_FACTURE: { selected: '1', comment: 'Facture jointe', except_roles: '' } }
+
+ RECOMMENDED_FIELDS_AFTER_LOT2: {
+ fieldset_comment: 'Champs RECOMMANDÉS après VALIDATION de la livraison (en plus du LOT 1)',
+ etiquette: { selected: '1', comment: 'd''imprimer l''étiquette associée et de la coller sur le matériel', except_roles: '' },
+ numero_inventaire_organisme: { selected: '1', comment: 'de renseigner le champ ''N° inventaire comptable/tutelles _Organisme_''', except_roles: '' },
+ numero_serie: { selected: '0', comment: 'de renseigner le numéro de série du matériel', except_roles: '' },
+ DOC_BC: { selected: '1', comment: 'd''ajouter le Bon de Commande', except_roles: '' },
+ DOC_BL: { selected: '1', comment: 'd''ajouter le Bon de Livraison', except_roles: '' },
+ DOC_FACTURE: { selected: '1', comment: 'd''ajouter la Facture', except_roles: '' } }
+
+
+ # LOT 3 - Archivage (pas encore implémenté)
+ #MANDATORY_FIELDS_FOR_LOT3: {}
+ #UNEDITABLE_FIELDS_AFTER_LOT3: {}
diff --git a/config/bootstrap.php b/config/bootstrap.php
index dcd39f3..2b462d0 100755
--- a/config/bootstrap.php
+++ b/config/bootstrap.php
@@ -109,34 +109,51 @@ try {
exit($e->getMessage() . "\n");
}
+
+# Affiche "true" si on est en mode test
+# (cette constante est définie dans /tests/bootstrap.php)
+//debug ( defined('_IN_TEST_MODE') );
+
+
// (EP 2021 09 Ajout nouveaux fichiers config pour les champs obligatoires (et les autorisations))
//$config_mandatory_fields_file_name = 'app_labinvent_mandatory_fields';
// Si le fichier de conf n'existe pas, on le crée en copiant le fichier par défaut
//if ( !file_exists(CONFIG.DS.$config_mandatory_fields_file_name.'.yml') )
//$config_matos_full_file_name = $config_matos_full_file_name_default = CONFIG.DS.CONFIG_MATERIEL_FIELDS_FILE_NAME;
-$config_matos_full_file_name = $config_matos_full_file_name_default = CONFIG_MATERIEL_FIELDS_FILE_NAME;
+$config_matos_file_name = $config_matos_file_name_default = CONFIG_MATERIEL_FIELDS_FILE_NAME;
//$config_matos_full_file_name_default = $config_matos_full_file_name;
-$config_matos_full_file_name .= '.yml';
-$config_matos_full_file_name_default .= '.default.yml';
+
+if (defined('_IN_TEST_MODE')) $config_matos_file_name .= '_test';
//if ( !file_exists($config_matos_full_file_name) ) copy($config_matos_full_file_name_default, $config_matos_full_file_name);
try {
Configure::config('my_yaml_engine', new YamlConfig());
//Configure::load($config_mandatory_fields_file_name, 'yaml', true);
- Configure::load(CONFIG_MATERIEL_FIELDS_FILE_NAME, 'my_yaml_engine');
+ Configure::load($config_matos_file_name, 'my_yaml_engine');
+ //Configure::load(CONFIG_MATERIEL_FIELDS_FILE_NAME, 'my_yaml_engine');
//Configure::load('app_labinvent_mandatory_fields_IP2I', 'yaml');
//Configure::load('app_labinvent_authorizations', 'yaml');
} catch (\Exception $e) {
- echo("
config/bootstrap.php: Impossible de charger le fichier de configuration des champs matériels (".CONFIG.DS.CONFIG_MATERIEL_FIELDS_FILE_NAME.".yml)");
+ $config_matos_file_name .= '.yml';
+ $config_matos_file_name_default .= '.default.yml';
+ echo("
config/bootstrap.php: Impossible de charger le fichier de configuration des champs matériels (".CONFIG.DS.$config_matos_file_name.")");
echo("
- soit ce fichier n'est pas accessible en lecture par le serveur web (attention, il faut aussi qu'il soit accessible en écriture)");
echo("
- soit il n'existe pas => dans ce cas, créez le en faisant une copie du fichier de configuration par défaut :");
echo("
cd ".CONFIG);
- echo("
cp $config_matos_full_file_name_default $config_matos_full_file_name");
- echo("
chown webserver_user_name $config_matos_full_file_name");
- echo("
chmod 600 $config_matos_full_file_name");
+ echo("
cp $config_matos_file_name_default $config_matos_file_name");
+ echo("
chown webserver_user_name $config_matos_file_name");
+ echo("
chmod 600 $config_matos_file_name");
echo("
(si vous ne voulez pas faire le chown, faite plutot un chmod 666, moins propre, mais marche aussi)");
die();
}
+
+/* Pour voir quelle config on lit (test ou prod ?)
+$data = Configure::read('MANDATORY_AND_READONLY_FIELDS.MANDATORY_FIELDS_FOR_LOT2');
+debug($data);
+*/
+
+
+
// Load an environment local configuration file.
// You can use a file like app_local.php to provide local overrides to your
// shared configuration.
diff --git a/src/Controller/MaterielsController.php b/src/Controller/MaterielsController.php
index 23aaecf..74fbbcc 100755
--- a/src/Controller/MaterielsController.php
+++ b/src/Controller/MaterielsController.php
@@ -2941,6 +2941,9 @@ class MaterielsController extends AppController {
* - VALIDATED => CREATED (il faudra commander à nouveau si le matos était commandé...)
*/
if ($newStatus == 'CREATED') {
+ //$materiel->status = $this->Materiels->getPreviousStatusFrom($materiel->status);
+ $materiel->status = $materiel->getPreviousStatus();
+ /*
if ($materiel->status == 'ARCHIVED')
$materiel->status = 'TOBEARCHIVED';
elseif ($materiel->status == 'TOBEARCHIVED')
@@ -2948,6 +2951,7 @@ class MaterielsController extends AppController {
// Par défaut => CREATED (VALIDATED ou TOBEORDERED => CREATED)
else
$materiel->status = 'CREATED';
+ */
}
// Set new status
else $materiel->status = $newStatus;
@@ -3264,7 +3268,8 @@ class MaterielsController extends AppController {
*/
public function statusCreated($id = null, $from = 'index')
{
- $this->_statusSetTo('CREATED', "Le matériel a bien été rétrogradé au statut 'CRÉÉ'", $id, $from);
+ $this->_statusSetTo('CREATED', "Le statut du matériel a bien été rétrogradé", $id, $from);
+ //$this->_statusSetTo('CREATED', "Le matériel a bien été rétrogradé au statut 'CRÉÉ'", $id, $from);
}
/**
diff --git a/src/Model/Entity/Materiel.php b/src/Model/Entity/Materiel.php
index 04355cb..81143d1 100755
--- a/src/Model/Entity/Materiel.php
+++ b/src/Model/Entity/Materiel.php
@@ -88,7 +88,12 @@ class Materiel extends Entity {
// Ce qui s'affiche quand on fait echo $entity
public function __toString() { return $this->designation; }
-
+
+ public function getPreviousStatus() {
+ //debug($this->getSource()); exit; // 'Materiels' (str)
+ return MaterielsTable::getPreviousStatusFrom($this->status);
+ }
+
public function check_date_is_not_too_old($date_field_name) {
$d = $this->$date_field_name;
if (is_null($d)) return true;
diff --git a/src/Model/Table/MaterielsTable.php b/src/Model/Table/MaterielsTable.php
index 8e405c2..4ff60eb 100755
--- a/src/Model/Table/MaterielsTable.php
+++ b/src/Model/Table/MaterielsTable.php
@@ -228,7 +228,14 @@ class MaterielsTable extends AppTable
'ARCHIVED'
);
- public function toto() { return "titi"; }
+ //public function toto() { return "titi"; }
+
+ public static function getPreviousStatusFrom($current_status) {
+ if ($current_status == 'ARCHIVED') return 'TOBEARCHIVED';
+ if ($current_status == 'TOBEARCHIVED') return 'VALIDATED';
+ // Par défaut => CREATED (VALIDATED ou TOBEORDERED => CREATED)
+ return 'CREATED';
+ }
public static function getLabName() {
// Singleton (on ne lit qu'1 seule fois la config !!!)
diff --git a/tests/Fixture/MaterielsFixture.php b/tests/Fixture/MaterielsFixture.php
index 0837854..0cdd708 100755
--- a/tests/Fixture/MaterielsFixture.php
+++ b/tests/Fixture/MaterielsFixture.php
@@ -681,6 +681,7 @@ class MaterielsFixture extends TestFixture {
// matos CREATED owned by USER
[
//'id' => 1,
+ 'status' => 'CREATED',
// TODO: définir budgets comme champ optionnel dans la BD !!!
'budgets' => 'toto',
'designation' => 'matos 1 USER (C)',
@@ -693,7 +694,6 @@ class MaterielsFixture extends TestFixture {
'description' => 'Lorem ipsum dolor sit amet, aliquet feugiat. Convallis morbi fringilla gravida, phasellus feugiat dapibus velit nunc, pulvinar eget sollicitudin venenatis cum nullam, vivamus ut a sed, mollitia lectus. Nulla vestibulum massa neque ut et, id hendrerit sit, feugiat in taciti enim proin nibh, tempor dignissim, rhoncus duis vestibulum nunc mattis convallis.',
'materiel_administratif' => 0,
'materiel_technique' => 1,
- 'status' => 'CREATED',
//'status' => 'VALIDATED',
//'date_acquisition' => '2018-04-19', // 2014-04-19
//'date_acquisition' => yyyy1.'-04-19', // 2014-04-19
@@ -737,6 +737,7 @@ class MaterielsFixture extends TestFixture {
// matos CREATED owned by anybody
[
//'id' => 2,
+ 'status' => 'CREATED',
// TODO: définir budgets comme champ optionnel dans la BD !!!
'budgets' => 'toto',
'designation' => 'Matos Test 2 (C)',
@@ -749,7 +750,6 @@ class MaterielsFixture extends TestFixture {
'description' => 'Lorem ipsum dolor sit amet, aliquet feugiat. Convallis morbi fringilla gravida, phasellus feugiat dapibus velit nunc, pulvinar eget sollicitudin venenatis cum nullam, vivamus ut a sed, mollitia lectus. Nulla vestibulum massa neque ut et, id hendrerit sit, feugiat in taciti enim proin nibh, tempor dignissim, rhoncus duis vestibulum nunc mattis convallis.',
'materiel_administratif' => 0,
'materiel_technique' => 1,
- 'status' => 'CREATED',
//'date_acquisition' => '2019-04-19', // 2015-04-19
//'date_acquisition' => yyyy2.'-'.mmdd1, // 2015-04-19
'date_acquisition' => yyyy2mmdd1,
@@ -789,6 +789,7 @@ class MaterielsFixture extends TestFixture {
// matos VALIDATED (et administratif) owned by anybody
[
//'id' => 3,
+ 'status' => 'VALIDATED',
// TODO: définir budgets comme champ optionnel dans la BD !!!
'budgets' => 'toto',
'designation' => 'Test 3 (V)',
@@ -800,7 +801,6 @@ class MaterielsFixture extends TestFixture {
'description' => 'Lorem ipsum dolor sit amet, aliquet feugiat. Convallis morbi fringilla gravida, phasellus feugiat dapibus velit nunc, pulvinar eget sollicitudin venenatis cum nullam, vivamus ut a sed, mollitia lectus. Nulla vestibulum massa neque ut et, id hendrerit sit, feugiat in taciti enim proin nibh, tempor dignissim, rhoncus duis vestibulum nunc mattis convallis.',
'materiel_administratif' => 1,
'materiel_technique' => 1,
- 'status' => 'VALIDATED',
//'date_acquisition' => '2020-05-11', // 2016-05-11
//'date_acquisition' => yyyy2.'-'.mmdd2,
'date_acquisition' => yyyy2mmdd2,
@@ -836,8 +836,11 @@ class MaterielsFixture extends TestFixture {
//'nom_responsable' => 'test0 test9'
[
'id' => 11,
+
+ 'status' => 'CREATED',
// TODO: définir budgets comme champ optionnel dans la BD !!!
'budgets' => 'toto',
+
'designation' => 'Test 11 (C)',
'sur_categorie_id' => 1,
'categorie_id' => 1,
@@ -848,7 +851,6 @@ class MaterielsFixture extends TestFixture {
'description' => 'Lorem ipsum dolor sit amet, aliquet feugiat. Convallis morbi fringilla gravida, phasellus feugiat dapibus velit nunc, pulvinar eget sollicitudin venenatis cum nullam, vivamus ut a sed, mollitia lectus. Nulla vestibulum massa neque ut et, id hendrerit sit, feugiat in taciti enim proin nibh, tempor dignissim, rhoncus duis vestibulum nunc mattis convallis.',
'materiel_administratif' => 1,
'materiel_technique' => 1,
- 'status' => 'CREATED',
//'date_acquisition' => '2020-05-11', // +4
//'date_acquisition' => yyyy2.'-'.mmdd1,
'date_acquisition' => yyyy2mmdd2,
@@ -888,6 +890,7 @@ class MaterielsFixture extends TestFixture {
// matos VALIDATED owned by anybody
[
//'id' => 12,
+ 'status' => 'VALIDATED',
// TODO: définir budgets comme champ optionnel dans la BD !!!
'budgets' => 'toto',
'designation' => 'Test 12 (V)',
@@ -899,7 +902,6 @@ class MaterielsFixture extends TestFixture {
'description' => 'Lorem ipsum dolor sit amet, aliquet feugiat. Convallis morbi fringilla gravida, phasellus feugiat dapibus velit nunc, pulvinar eget sollicitudin venenatis cum nullam, vivamus ut a sed, mollitia lectus. Nulla vestibulum massa neque ut et, id hendrerit sit, feugiat in taciti enim proin nibh, tempor dignissim, rhoncus duis vestibulum nunc mattis convallis.',
'materiel_administratif' => 1,
'materiel_technique' => 1,
- 'status' => 'VALIDATED',
//'date_acquisition' => '2020-05-11', // + 4
//'date_acquisition' => yyyy2.'-'.mmdd2,
'date_acquisition' => yyyy2mmdd2,
@@ -937,6 +939,7 @@ class MaterielsFixture extends TestFixture {
// matos TBA owned by anybody
[
//'id' => 13,
+ 'status' => 'TOBEARCHIVED',
// TODO: définir budgets comme champ optionnel dans la BD !!!
'budgets' => 'toto',
'designation' => 'Test 13 (TBA)',
@@ -948,7 +951,6 @@ class MaterielsFixture extends TestFixture {
'description' => 'TEST COPIE MATERIEL',
'materiel_administratif' => 1,
'materiel_technique' => 1,
- 'status' => 'TOBEARCHIVED',
//'date_acquisition' => '2020-05-11', // +4
'date_acquisition' => yyyy2mmdd2,
'prix_ht' => 75.00,
diff --git a/tests/TestCase/Controller/General.php b/tests/TestCase/Controller/General.php
index 8ab3df4..a12ba88 100644
--- a/tests/TestCase/Controller/General.php
+++ b/tests/TestCase/Controller/General.php
@@ -14,6 +14,9 @@ use Cake\Http\Exception\NotImplementedException;
use Cake\Utility\Inflector;
use App\Controller\UsersController;
+use Cake\Core\Configure;
+
+
//use App\Controller\MaterielsController;
/**
@@ -148,6 +151,14 @@ class General extends TestCase {
$this->assertTextEquals(1, $confLabinvent->test, 'On ne lit pas la bonne configuration');
$this->assertTextEquals(800, $confLabinvent->prix_inventaire_administratif, 'On ne lit pas la bonne configuration');
$this->assertTextEquals('TEST', $confLabinvent->labNameShort, 'On ne lit pas la bonne configuration');
+
+ // On lit la config de test pour les champs materiels
+ /*
+ #Configure::config('my_yaml_engine', new YamlConfig());
+ $filetoload = CORE_PATH . 'config' . DS . CONFIG_MATERIEL_FIELDS_FILE_NAME.'.test.yml';
+ Configure::load($filetoload, 'my_yaml_engine');
+ */
+
}
diff --git a/tests/TestCase/Controller/MaterielsControllerTest.php b/tests/TestCase/Controller/MaterielsControllerTest.php
index a439127..7df4238 100755
--- a/tests/TestCase/Controller/MaterielsControllerTest.php
+++ b/tests/TestCase/Controller/MaterielsControllerTest.php
@@ -387,7 +387,7 @@ class MaterielsControllerTest extends General {
* Basic ACL testing ($easyACL array rules)
* *****************************************************************************
*/
- public function testOLDEasyACL() {
+ public function DEACTIVATED_testOLDEasyACL() {
$matCont = new MaterielsController();
$appCont = new AppController();
/*
@@ -1957,13 +1957,12 @@ class MaterielsControllerTest extends General {
13 => '1',
]);
- $this->get('/materiels/view/11');
-
$statusC = $this->Materiels->getNiceStatus('CREATED');
$statusV = $this->Materiels->getNiceStatus('VALIDATED');
$statusTBA = $this->Materiels->getNiceStatus('TOBEARCHIVED');
$statusA = $this->Materiels->getNiceStatus('ARCHIVED');
+ $this->get('/materiels/view/11');
//$this->assertResponseContains('VALIDATED', "(11) La mise à jour de plusieurs statuts sur le materiel ne se fait pas correctement.");
$this->assertResponseContains($statusV, "(11) La mise à jour de plusieurs statuts sur le materiel ne se fait pas correctement.");
$this->assertResponseNotContains($statusC, "(11) La mise à jour de plusieurs statuts sur le materiel ne se fait pas correctement.");
@@ -1976,10 +1975,10 @@ class MaterielsControllerTest extends General {
$this->assertResponseNotContains($statusTBA, "La mise à jour de plusieurs statuts sur le materiel ne se fait pas correctement.");
$this->assertResponseNotContains($statusA, "La mise à jour de plusieurs statuts sur le materiel ne se fait pas correctement.");
- $this->get('/materiels/view/13');
- $this->assertResponseContains($statusV, "(13) La mise à jour de plusieurs statuts sur le materiel ne se fait pas correctement.");
+ $this->get('/materiels/view/13'); // TBA
+ $this->assertResponseNotContains($statusV, "(13) La mise à jour de plusieurs statuts sur le materiel ne se fait pas correctement.");
$this->assertResponseNotContains($statusC, "(13) La mise à jour de plusieurs statuts sur le materiel ne se fait pas correctement.");
- $this->assertResponseNotContains($statusTBA, "La mise à jour de plusieurs statuts sur le materiel ne se fait pas correctement.");
+ $this->assertResponseContains($statusTBA, "La mise à jour de plusieurs statuts sur le materiel ne se fait pas correctement.");
$this->assertResponseNotContains($statusA, "La mise à jour de plusieurs statuts sur le materiel ne se fait pas correctement.");
}
@@ -2626,6 +2625,7 @@ class MaterielsControllerTest extends General {
private function _assertFlashMessageIsAsExpectedForAction($action, $SUCCESS=true) {
// Par défaut, pas de message flash
$expected_flash_message = [];
+ //debug($action);
if (in_array($action, ['add', 'edit', 'delete', 'statusCreated', 'statusValidated', 'statusTobearchived', 'statusArchived']))
$expected_flash_message = 'Le matériel a bien été ';
switch($action) {
@@ -2640,11 +2640,12 @@ class MaterielsControllerTest extends General {
break;
case 'statusCreated':
//$expected_flash_message .= 'rétrogradé au statut CREATED';
- $expected_flash_message .= "rétrogradé au statut 'CRÉÉ'";
+ //$expected_flash_message .= "rétrogradé au statut 'CRÉÉ'";
+ $expected_flash_message = "Le statut du matériel a bien été rétrogradé";
break;
case 'statusValidated':
$expected_flash_message .= 'validé';
- if (!$SUCCESS) $expected_flash_message = "Pour valider un matériel, le champ suivant ne doit pas être vide :";
+ if (!$SUCCESS) $expected_flash_message = "Pour valider ce matériel, le champ suivant ne doit pas être vide :";
/*
if (!$SUCCESS) $expected_flash_message = "Pour valider un matériel, les champs suivants ne doivent pas être vides :";
Date de reception,
@@ -2725,9 +2726,17 @@ class MaterielsControllerTest extends General {
$this->_doActionAndCheckResult($action, $id, $SUCCESS=false, $new_data);
// 2) On vérifie qu'on peut le modifier si on le dévalide :
+ $m = $this->_resetMaterielToInitialStatus($m);
+ /*
+ $m->status = 'CREATED';
+ $this->Materiels->save($m);
+ */
+ /*
$action = 'statusCreated';
$this->_doActionAndCheckResult($action, $id, $SUCCESS=true);
+ */
$this->_checkMaterielStatusChangedTo($id,'CREATED');
+
$action = 'edit';
$this->_doActionAndCheckResult($action, $id, $SUCCESS=true, $new_data);
$m = $this->Materiels->get($id);
@@ -3069,7 +3078,13 @@ class MaterielsControllerTest extends General {
// Check qu'on ne peut pas supprimer le materiel à moins de le devalider d'abord
$this->_doActionAndCheckResult($action, $id, $SUCCESS=false);
// Pour le supprimer, je dois d'abord le dévalider puis faire en sorte qu'il m'appartienne
- $this->_doActionAndCheckResult('statusCreated', $id, $SUCCESS=true);
+ //$this->_doActionAndCheckResult('statusCreated', $id, $SUCCESS=true);
+ $m = $this->Materiels->get($id);
+ $m = $this->_resetMaterielToInitialStatus($m);
+ /*
+ $m->status = 'CREATED';
+ $this->Materiels->save($m);
+ */
/////$this->_doActionAndCheckResult('edit', $id, $SUCCESS=true, [ 'nom_responsable' => 'user1 SUPER' ]);
$this->_doActionAndCheckResult('edit', $id, $SUCCESS=true, [ 'nom_responsable' => 'SUPER user1' ]);
$this->_doActionAndCheckResult($action, $id, $SUCCESS=true);
@@ -3079,6 +3094,14 @@ class MaterielsControllerTest extends General {
}
+ private function _resetMaterielToInitialStatus($m) {
+ $m->status = 'CREATED';
+ $this->Materiels->save($m);
+ return $m;
+ }
+
+
+
diff --git a/tests/bootstrap.php b/tests/bootstrap.php
index 0ca191e..dfa0b28 100644
--- a/tests/bootstrap.php
+++ b/tests/bootstrap.php
@@ -5,8 +5,22 @@
* Add additional configuration/setup your application needs when running
* unit tests in this file.
*/
+
+// EP added 20211130 : pour savoir si je suis en mode test ou pas
+// Voir comment je teste cette variable dans config/bootstrap.php
+define('_IN_TEST_MODE', true);
+
+
+
+
require dirname(__DIR__) . '/vendor/autoload.php';
require dirname(__DIR__) . '/config/bootstrap.php';
$_SERVER['PHP_SELF'] = '/';
+
+
+
+
+
+
--
libgit2 0.21.2