From 07035c50b325fff5d81018e98aedd424e063a44b Mon Sep 17 00:00:00 2001 From: Etienne Pallier Date: Fri, 10 Sep 2021 11:53:41 +0200 Subject: [PATCH] devis attaché à matériel commandé (TOBEORDERED) doit être NON MODIFIABLE --- CHANGELOG | 7 +++++++ README.md | 2 +- src/Controller/DocumentsController.php | 22 +++++++++++++++++++++- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 0e87345..e57d6d6 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -402,11 +402,18 @@ Commencer à implémenter le nouveau workflow v5 : *) Gérer les autorisations (ACL) via fichier de conf + *) + 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 ======= CHANGES ======= ------- +09/09/2021 v5.2.2-3.7.9 + - (e) Le devis attaché à un matériel commandé (TOBEORDERED) doit être NON MODIFIABLE + +------- 09/09/2021 v5.2.1-3.7.9 - (i) Changement config par défaut pour ajouter des champs non modifiables après commande (LOT1) - (b) Bugfix : suppression message debug diff --git a/README.md b/README.md index f8108b4..cca1980 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ Logiciel testé et validé sur les configurations suivantes : -------------------------------------------------------------------------------------------- Date: 10/09/2021 -Version: v5.2.1-3.7.9 +Version: v5.2.2-3.7.9 diff --git a/src/Controller/DocumentsController.php b/src/Controller/DocumentsController.php index 76882f6..78831e7 100755 --- a/src/Controller/DocumentsController.php +++ b/src/Controller/DocumentsController.php @@ -425,7 +425,10 @@ class DocumentsController extends AppController // On refuse de creer une entité sans préciser l'id de l'entité parente associée (suivi ou materiel) if ($id===null) return; - $document = $IS_ADD ? $this->Documents->newEntity() : $this->Documents->get($id, ['contain' => []]); + //$document = $IS_ADD ? $this->Documents->newEntity() : $this->Documents->get($id, ['contain' => []]); + $document = $IS_ADD ? $this->Documents->newEntity() : $this->Documents->get($id, ['contain' => ['TypeDocuments']]); + //$document = $this->getEntity($id, false, ['TypeDocuments']); + // POST (on vient de soumettre un nouveau doc) // add @@ -561,6 +564,23 @@ class DocumentsController extends AppController else { $PARENT_IS_MATOS = ! empty($document->materiel_id); $parent_id = $PARENT_IS_MATOS ? $document->materiel_id : $document->suivi_id; + + if ($PARENT_IS_MATOS) { + + $materiel = $this->Documents->Materiels->get($parent_id); + + // ATTENTION, règle de gestion complexe : + // On ne doit pas pouvoir modifier (ni supprimer) un DEVIS associé à un matériel de status TOBEORDERED (commandé) + if ($document->is_devis && $materiel->is_tobeordered) { + $this->Flash->error(__("Ce matériel est en commande, vous ne pouvez donc pas modifier son devis")); + $this->ACTION_CANCELLED = TRUE; + return $this->redirect([ + 'controller' => 'materiels', + 'action' => 'view', + $parent_id + ]); + } + } } //$parent_controller = $PARENT_IS_MATOS ? 'Materiels' : 'Suivis'; -- libgit2 0.21.2