Commit 07ffc697d23fe276da42f5806a59ec6f6bfb04c0

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

Amelioration Suivis (3) (v3.7.9.17)

	- ajout champ is_metro dans table type_suivis pour les types liés au
module métrologie
	- Nombreuses simplifications (et bugfix) des VUES en enrichissant le
controleur de Suivis (et de Materiels)
	- (les vues doivent toujours être le plus BETE, SIMPLE possibles, la
complexité ne doit être QUE dans le controleur)
	- commentaires et repagination pour que le code soit LISIBLE !!!!
	- début d'utilisation des migrations de BD
	- ...
README.md
... ... @@ -53,15 +53,16 @@ Logiciel testé et validé sur les configurations suivantes :
53 53  
54 54 VERSION ACTUELLE
55 55  
56   -Date: 07/04/2020
57   -Version: 3.7.9.16
  56 +Date: 09/04/2020
  57 +Version: 3.7.9.17
58 58 Author: EP
59 59 Commentaire:
60   - Amelioration Suivis (2) :
61   - - amélioration du code javascript
62   - - ajout champ "is_regular" dans table type_suivis pour déclarer les types des suivis réguliers (fréquence) ou irréguliers (date)
63   - - mise à jour vues suivi et type_suivis pour le champ "is_regular"
64   - - commentaires
  60 + Amelioration Suivis (3) :
  61 + - ajout champ is_metro dans table type_suivis pour les types liés au module métrologie
  62 + - Nombreuses simplifications (et bugfix) des VUES en enrichissant le controleur de Suivis (et de Materiels)
  63 + - (les vues doivent toujours être le plus BETE, SIMPLE possibles, la complexité ne doit être QUE dans le controleur)
  64 + - commentaires et repagination pour que le code soit LISIBLE !!!!
  65 + - début d'utilisation des migrations de BD
65 66 - ...
66 67  
67 68  
... ... @@ -98,6 +99,16 @@ La liste ci-dessous n'est plus à jour, elle est désormais en ligne ici : https
98 99  
99 100 -----------------------------------------------------------------------------------------------------------
100 101  
  102 +07/04/2020 Version 3.7.9.16 (EP)
  103 + Amelioration Suivis (2) :
  104 + - amélioration du code javascript par refactorisation
  105 + - test de cohérence des dates suite à saisie (javascript)
  106 + - ajout champ "is_regular" dans table type_suivis pour déclarer les types de suivis réguliers (fréquence) ou irréguliers (date)
  107 + - mise à jour vues suivi et type_suivis pour le champ "is_regular"
  108 + - commentaires
  109 + - début d'utilisation des migrations de BD
  110 + - ...
  111 +
101 112 02/04/2020 Version 3.7.9.15 (EP)
102 113 Bugfix Materiels bouton Annuler
103 114 Amelioration Suivis (1)
... ...
src/Controller/MaterielsController.php
... ... @@ -818,7 +818,10 @@ class MaterielsController extends AppController
818 818 'Sites',
819 819 'Documents',
820 820 'Emprunts',
821   - 'Suivis',
  821 + // Tous les suivis de ce $materiel (sans leur type)
  822 + //'Suivis',
  823 + // Tous les suivis de ce $materiel AVEC leur type de suivi
  824 + 'Suivis.TypeSuivis',
822 825 'Fournisseurs'
823 826 ]
824 827 ]);
... ... @@ -911,11 +914,17 @@ class MaterielsController extends AppController
911 914 $this->set('IS_ARCHIVED', $IS_ARCHIVED);
912 915 $this->set('status', $status);
913 916  
914   - $sites = TableRegistry::get('Sites');
  917 + $sites = TableRegistry::getTableLocator()->get('Sites');
915 918 //$sites = TableLocator::get('Sites');
916   - $typeSuivis = TableRegistry::get('TypeSuivis');
917   - $typeDocuments = TableRegistry::get('TypeDocuments');
918   - $fournisseurs = TableRegistry::get('Fournisseurs');
  919 + //$typeSuivis = TableRegistry::getTableLocator()->get('TypeSuivis');
  920 + /*
  921 + $typeSuivisAll = $typeSuivis->find('list', [
  922 + 'keyField' => 'id',
  923 + 'valueField' => 'is_regular',
  924 + ])->toArray();
  925 + */
  926 + $typeDocuments = TableRegistry::getTableLocator()->get('TypeDocuments');
  927 + $fournisseurs = TableRegistry::getTableLocator()->get('Fournisseurs');
919 928 //$fournisseurs = TableLocator::get('Fournisseurs');
920 929  
921 930 if ($materiel->photo_id != null) {
... ... @@ -924,14 +933,17 @@ class MaterielsController extends AppController
924 933 }
925 934  
926 935 $this->set('PDF_ENGINE', $this->confLabinvent->pdf_engine);
927   - $this->set('sites', $sites);
928   - $this->set('typeSuivis', $typeSuivis);
929   - $this->set('typeDocuments', $typeDocuments);
930   - $this->set('fournisseurs', $fournisseurs);
931   - $this->set('materiel', $materiel);
  936 +
  937 + $entity = $materiel;
  938 + $this->set(compact('sites', 'typeDocuments', 'fournisseurs',
  939 + 'entity'
  940 + //'materiel', // @deprecated
  941 + ));
  942 + /* (EP) inutile
932 943 $this->set('_serialize', [
933 944 'materiel'
934 945 ]);
  946 + */
935 947  
936 948 /* TODO:
937 949 $CAN_EDIT = $IS_CREATED && (
... ...
src/Controller/SuivisController.php
... ... @@ -101,44 +101,52 @@ class SuivisController extends AppController
101 101 $GT = $this->request->getQuery('GT');
102 102 if ($GM !== null || $GT !== null) {
103 103 if ($GM !== null && $GM != TableRegistry::getTableLocator()->get('GroupesMetiers')->find()
104   - ->where([
105   - 'nom =' => 'N/A'
106   - ])
107   - ->first()['id']) {
108   - $condition = [
109   - 'Suivis.groupes_metier_id =' => $GM
110   - ];
111   - } else if ($GT !== null && $GT != TableRegistry::getTableLocator()->get('GroupesThematiques')->find()
112   - ->where([
113   - 'nom =' => 'N/A'
114   - ])
115   - ->first()['id']) {
116   - $condition = [
117   - 'Suivis.groupes_thematique_id =' => $GT
118   - ];
119   - } else {
120   - $condition = [
121   - 'Suivis.id =' => 0
122   - ];
123   - }
  104 + ->where([
  105 + 'nom =' => 'N/A'
  106 + ])
  107 + ->first()['id']
  108 + )
  109 + $condition = ['Suivis.groupes_metier_id =' => $GM];
  110 + else if ($GT !== null && $GT != TableRegistry::getTableLocator()->get('GroupesThematiques')->find()
  111 + ->where([
  112 + 'nom =' => 'N/A'
  113 + ])
  114 + ->first()['id']
  115 + )
  116 + $condition = ['Suivis.groupes_thematique_id =' => $GT];
  117 + else
  118 + $condition = ['Suivis.id =' => 0];
124 119 }
  120 + /*
125 121 $this->paginate = [
126 122 'contain' => [
127 123 'Materiels',
128 124 'TypeSuivis'
129 125 ]
130 126 ];
  127 + */
131 128 $suivis = $this->paginate($this->Suivis->find('all', [
132   - 'conditions' => $condition
  129 + 'contain' => ['Materiels','TypeSuivis'],
  130 + 'conditions' => $condition,
133 131 ]));
  132 + /*
  133 + // Pour avoir une version plus sophistiquée comprenant aussi le champ 'is_metro'
  134 + // Voir cette même variable définie dans la fonction add_or_edit()
  135 + $typeSuivisAll = $this->Suivis->TypeSuivis->find('list', [
  136 + 'keyField' => 'id',
  137 + 'valueField' => 'is_regular',
  138 + ])->toArray();
  139 + */
  140 +
134 141 $this->set('nbSuivis', $this->Suivis->find('all', [
135 142 'conditions' => $condition
136   - ])
137   - ->count());
  143 + ])->count());
138 144 $this->set(compact('suivis'));
  145 + /* (EP) inutile
139 146 $this->set('_serialize', [
140 147 'suivis'
141 148 ]);
  149 + */
142 150 } // index
143 151  
144 152 /**
... ... @@ -184,7 +192,7 @@ class SuivisController extends AppController
184 192 */
185 193 $IS_OWNER = $this->userName == $suivi->nom_createur;
186 194 //debug($this->priviledgedUser);
187   - $CAN_EDIT_DELETE_LINK = (
  195 + $CAN_EDIT_DELETE = (
188 196 $IS_OWNER || in_array($this->userRole, ['Administration','Administration Plus','Super Administrateur'])
189 197 //|| ($role == 'Utilisateur' && in_array($username, [$suivi->nom_createur]))
190 198 //|| ($role == 'Responsable' && in_array($username, [$suivi->nom_createur]))
... ... @@ -205,7 +213,7 @@ class SuivisController extends AppController
205 213 )
206 214 )
207 215 );
208   - $this->set(compact('typeDocuments', 'suivi', 'fiche', 'CAN_EDIT_DELETE_LINK'));
  216 + $this->set(compact('typeDocuments', 'suivi', 'fiche', 'CAN_EDIT_DELETE'));
209 217 } // view
210 218  
211 219  
... ... @@ -376,9 +384,37 @@ class SuivisController extends AppController
376 384 }
377 385 */
378 386  
  387 + /* On construit un tableau de la forme :
  388 + * typesuivi_id => [
  389 + * 'is_regular' => value,
  390 + 'is_metro' => value
  391 + * ]
  392 + *
  393 + * Exemple :
  394 + (int) 1 => [
  395 + 'is_regular' => true,
  396 + 'is_metro' => false
  397 + ],
  398 + (int) 2 => [
  399 + 'is_regular' => false,
  400 + 'is_metro' => false
  401 + ],
  402 + (int) 5 => [
  403 + 'is_regular' => true,
  404 + 'is_metro' => false
  405 + ],
  406 + ...
  407 + */
379 408 $typeSuivisAll = $this->Suivis->TypeSuivis->find('list', [
380 409 'keyField' => 'id',
381   - 'valueField' => 'is_regular',
  410 + //'valueField' => 'is_regular',
  411 + //'valueField' => ['is_regular','is_metro']
  412 + 'valueField' => function ($typesuivi) {
  413 + return [
  414 + 'is_regular' => $typesuivi->is_regular,
  415 + 'is_metro' => $typesuivi->is_metro
  416 + ];
  417 + }
382 418 ])->toArray();
383 419  
384 420 // $domaineresp= TableRegistry::getTableLocator()->get('Users')->find()->select('sur_categorie_id')->where(['username =' => $this->LdapAuth->user($this->request->getSession()->read('authType'))[0]])->first()['sur_categorie_id'];
... ...
src/Template/Materiels/view.ctp
... ... @@ -34,6 +34,10 @@ $PROFILE_SUPERADMIN = $PROFILE_SUPERADMIN;
34 34 $allProfiles = $allProfiles;
35 35  
36 36 // - Materiel status:
  37 +$entity = $entity;
  38 +$materiel = $entity; //@deprecated
  39 +//debug($entity);
  40 +
37 41 $idGmNa = $idGmNa;
38 42 $idGtNa = $idGtNa;
39 43 $IS_CREATED = $IS_CREATED;
... ... @@ -176,6 +180,7 @@ $CAN_COPY = $IS_CREATED and ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_
176 180 $CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN_OR_MORE;
177 181 */
178 182  
  183 +
179 184 ?>
180 185  
181 186  
... ... @@ -588,30 +593,35 @@ if ($role == 'Super Administrateur') {
588 593 <!-- INFORMATIONS -->
589 594  
590 595  
  596 +
  597 +
591 598 <!-- PARTIE ADMIN -->
592 599  
593 600 <?php
594   -if ($USER_IS_ADMIN_OR_MORE) {
595   - // if (in_array($role, ['Administration','Administration Plus','Super Administrateur'])) {
596   - echo '<h3 id="t_informations_admin" style="cursor: pointer;">';
597   - echo '<i class="icon-chevron-down" style="font-size: 14px;" id="i_informations_admin"></i>';
598   - echo '<span style="text-decoration: underline;"> Informations administratives</span>';
599   - echo '</h3>';
600   - echo '<div id="informations_admin" style="margin-bottom: 20px;">';
601   - echo '<table>';
602   - echo '<tr><th style="width: 250px;"></th><th></th></tr>';
603   - echo '<tr><td><strong>' . __('CentreFinancier/EOTP') . ' </strong></td><td>' . h($materiel->eotp) . '</td></tr>';
604   - echo '<tr><td><strong>' . __('N° commande') . ' </strong></td><td>' . h($materiel->numero_commande) . '</td></tr>';
605   - echo '<tr><td><strong>' . __('Code comptable') . ' </strong></td><td>' . h($materiel->code_comptable) . '</td></tr>';
606   - echo '<tr><td><strong>' . __('N. Inventaire Organisme') . ' </strong></td><td>' . h($materiel->numero_inventaire_organisme) . '</td></tr>';
607   - echo '<tr><td><strong>' . __('N. inventaire (ancien)') . ' </strong></td><td>' . h($materiel->numero_inventaire_old) . '</td></tr>';
608   - echo '</table>';
609   - echo '</div>';
610   -}
  601 + if ($USER_IS_ADMIN_OR_MORE) {
  602 + // if (in_array($role, ['Administration','Administration Plus','Super Administrateur'])) {
  603 + echo '<h3 id="t_informations_admin" style="cursor: pointer;">';
  604 + echo '<i class="icon-chevron-down" style="font-size: 14px;" id="i_informations_admin"></i>';
  605 + echo '<span style="text-decoration: underline;"> Informations administratives</span>';
  606 + echo '</h3>';
  607 + echo '<div id="informations_admin" style="margin-bottom: 20px;">';
  608 + echo '<table>';
  609 + echo '<tr><th style="width: 250px;"></th><th></th></tr>';
  610 + echo '<tr><td><strong>' . __('CentreFinancier/EOTP') . ' </strong></td><td>' . h($materiel->eotp) . '</td></tr>';
  611 + echo '<tr><td><strong>' . __('N° commande') . ' </strong></td><td>' . h($materiel->numero_commande) . '</td></tr>';
  612 + echo '<tr><td><strong>' . __('Code comptable') . ' </strong></td><td>' . h($materiel->code_comptable) . '</td></tr>';
  613 + echo '<tr><td><strong>' . __('N. Inventaire Organisme') . ' </strong></td><td>' . h($materiel->numero_inventaire_organisme) . '</td></tr>';
  614 + echo '<tr><td><strong>' . __('N. inventaire (ancien)') . ' </strong></td><td>' . h($materiel->numero_inventaire_old) . '</td></tr>';
  615 + echo '</table>';
  616 + echo '</div>';
  617 + }
  618 +
  619 +
  620 + $bStyle = 'margin:0';
  621 + ?>
  622 +
611 623  
612 624  
613   -$bStyle = 'margin:0';
614   -?>
615 625  
616 626 <!-- SUIVIS -->
617 627  
... ... @@ -619,79 +629,108 @@ $bStyle = &#39;margin:0&#39;;
619 629 <i class="icon-chevron-down" style="font-size: 14px;" id="i_suivis"></i>
620 630 <span style="text-decoration: underline;">Suivi(s) du matériel (<?=count($materiel->suivis)?>)</span>
621 631 </h3>
  632 +
622 633 <div id="suivis" style="margin-bottom: 20px;">
623   - <?php if (! empty($materiel->suivis)) { ?>
624   - <table>
625   - <tr>
626   - <th class="actions"><?=__('')?></th>
627   - <th><?=__('N°')?></th>
628   - <th><?=__('Type')?></th>
629   - <th><?=__('Intitulé')?></th>
630   - <th><?=__('Date début / Fréquence')?></th>
631   - <th><?=__('Date fin / Répétition')?></th>
632   - <th><?=__('Statut')?></th>
633   - </tr>
634   - <?php foreach ($materiel->suivis as $suivi) :?>
635   - <tr>
636   - <td class="actions" style="padding: 6px 0; text-align: left;">
637   - <?php
638   - //if ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER) {
639   - /*
640   - if ($USER_IS_ADMIN_OR_MORE
641   - || $USER_IS_CREATOR_OR_OWNER
642   - || ($USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL)) {
643   - */
644   - if ($CAN_MANAGE_SUIVIS) {
645   - // Edit Suivis
646   - $echoActionButton($this->Html, 'icon-pencil', $bStyle, '', 'Suivis', 'edit', $suivi->id);
647   - /*
648   - echo $this->Html->link(__('<i class="icon-pencil"></i>'), [
649   - 'controller' => 'Suivis',
650   - 'action' => 'edit',
651   - $suivi->id
652   - ], [
653   - 'escape' => false,
654   - 'style' => 'margin:0'
655   - ]);
656   - */
657   - // Delete Suivis
658   - //TODO: postLink ??? kesako ?
659   - //$echoActionButton($this->Html, 'icon-trash', $bStyle, '', 'Suivis', 'delete', $suivi->id, [], "", "");
660   - echo $this->Form->postLink(__('<i class="icon-trash"></i>'), [
661   - 'controller' => 'Suivis',
662   - 'action' => 'delete',
663   - $suivi->id
664   - ], [
665   - 'escape' => false,
666   - 'style' => 'margin:0',
667   - 'confirm' => __('Êtes-vous sur de vouloir annuler ce suivi #{0} ?', $suivi->id)
668   - ]);
669   - }
670   - ?>
671   - </td>
672   - <td><?=$this->Html->link('Suivi ' . $suivi->id, ['controller' => 'suivis','action' => 'view',$suivi->id])?></td>
673   - <td><?=$typeSuivis->find()->where(['id =' => h($suivi->type_suivi_id)])->first()['nom'];?></td>
674   - <td><?=h($suivi->intitule)?></td>
675   -
676   - <?php if ($typeSuivis->find()->where(['id =' => h($suivi->type_suivi_id)])->first()['nom'] == "Panne" ) {?>
677   - <td><?=h($suivi->date_controle)?></td>
678   - <td><?=h($suivi->date_prochain_controle)?></td>
679   - <?php } else { ?>
680   - <td><?=h($suivi->frequence)?></td>
681   - <td><?=h($suivi->type_frequence)?></td>
682   - <?php } ?>
683   - <td><?=h($suivi->statut)?></td>
684   - </tr>
685   - <?php endforeach;?>
686   -
687   - </table>
688   - <?php
689   - } else {
690   - echo 'Aucun suivi pour ce matériel.';
691   - }
692   - ?>
693   - </div>
694   - <!-- FIN SUIVIS -->
  634 +
  635 + <?php
  636 + if (empty($materiel->suivis))
  637 + echo 'Aucun suivi pour ce matériel.';
  638 +
  639 + else {
  640 + ?>
  641 + <table>
  642 +
  643 + <tr>
  644 + <th class="actions"><?=__('')?></th>
  645 + <!--
  646 + <th><=__('N°')?></th>
  647 + -->
  648 + <th><?=__('Intitulé')?></th>
  649 + <th><?=__('Type')?></th>
  650 + <th><?=__('Date début / Fréquence')?></th>
  651 + <th><?=__('Date fin / Répétition')?></th>
  652 + <th><?=__('Statut')?></th>
  653 + </tr>
  654 +
  655 + <!-- Affichage de chaque ligne de suivi -->
  656 + <?php foreach ($materiel->suivis as $suivi) :?>
  657 +
  658 + <tr>
  659 +
  660 + <td class="actions" style="padding: 6px 0; text-align: left;">
  661 + <?php
  662 + //if ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER || $USER_IS_RESPONSABLE_AND_SAME_GROUP || $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER) {
  663 + /*
  664 + if ($USER_IS_ADMIN_OR_MORE
  665 + || $USER_IS_CREATOR_OR_OWNER
  666 + || ($USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL)) {
  667 + */
  668 + if ($CAN_MANAGE_SUIVIS) {
  669 + // Edit Suivis
  670 + $echoActionButton($this->Html, 'icon-pencil', $bStyle, '', 'Suivis', 'edit', $suivi->id);
  671 + /*
  672 + echo $this->Html->link(__('<i class="icon-pencil"></i>'), [
  673 + 'controller' => 'Suivis',
  674 + 'action' => 'edit',
  675 + $suivi->id
  676 + ], [
  677 + 'escape' => false,
  678 + 'style' => 'margin:0'
  679 + ]);
  680 + */
  681 + // Delete Suivis
  682 + //TODO: postLink ??? kesako ?
  683 + //$echoActionButton($this->Html, 'icon-trash', $bStyle, '', 'Suivis', 'delete', $suivi->id, [], "", "");
  684 + echo $this->Form->postLink(__('<i class="icon-trash"></i>'), [
  685 + 'controller' => 'Suivis',
  686 + 'action' => 'delete',
  687 + $suivi->id
  688 + ], [
  689 + 'escape' => false,
  690 + 'style' => 'margin:0',
  691 + 'confirm' => __('Êtes-vous sur de vouloir annuler ce suivi #{0} ?', $suivi->id)
  692 + ]);
  693 + }
  694 + ?>
  695 + </td>
  696 + <!--
  697 + <td><=$this->Html->link('Suivi ' . $suivi->id, ['controller' => 'suivis','action' => 'view',$suivi->id])?></td>
  698 + <td><=h($suivi->intitule)?></td>
  699 + -->
  700 + <td><?=$this->Html->link(h($suivi->intitule).' (suivi '. $suivi->id.')', ['controller' => 'suivis','action' => 'view',$suivi->id])?></td>
  701 +
  702 + <!--
  703 + <td><=$typeSuivis->find()->where(['id =' => h($suivi->type_suivi_id)])->first()['nom'];?></td>
  704 + -->
  705 + <td><?=$suivi->type_suivi->nom?></td>
  706 +
  707 + <!-- TODO: Faire qqch de plus propre ici : ne pas faire de requete sql dans le vue mais dans le controleur -->
  708 + <!--
  709 + <php if ($typeSuivis->find()->where(['id =' => h($suivi->type_suivi_id)])->first()['nom'] == "Panne" ) {?>
  710 + <php if ( $typeSuivis->find()->where(['id =' => h($suivi->type_suivi_id)])->first()['is_regular'] ) {?>
  711 + -->
  712 + <?php //debug($suivi); ?>
  713 + <?php //if ( $typeSuivisAll[$suivi->type_suivi_id]['is_regular'] ) {?>
  714 + <?php if ( $suivi->type_suivi->is_regular ) {?>
  715 + <td><?=h($suivi->frequence)?></td>
  716 + <td><?=h($suivi->type_frequence)?></td>
  717 + <?php } else { ?>
  718 + <td><?=h($suivi->date_controle)?></td>
  719 + <td><?=h($suivi->date_prochain_controle)?></td>
  720 + <?php } ?>
  721 +
  722 + <td><?=h($suivi->statut)?></td>
  723 +
  724 + </tr>
  725 +
  726 + <?php endforeach;?>
  727 +
  728 + </table>
  729 + <?php
  730 + } // (IF) il y a des suivis
  731 + ?>
  732 +
  733 + </div> <!-- FIN SUIVIS -->
695 734  
696 735  
697 736 <!-- EMPRUNTS -->
... ...
src/Template/Suivis/add_edit.ctp
... ... @@ -62,6 +62,8 @@ $typeSuivis = $typeSuivis;
62 62  
63 63 $typeSuivisAll = $typeSuivisAll;
64 64 //debug($typeSuivisAll);
  65 +//foreach($typeSuivisAll as $k=>$v) { debug("$k : "); debug($v); }
  66 +
65 67 //debug($typeSuivisAll[1]);
66 68 //debug($typeSuivisAll[5]);
67 69 //foreach($typeSuivisAll as $k=>$v) debug("$k : ".(int)($v+0));
... ... @@ -205,8 +207,8 @@ else {
205 207 // EDIT
206 208 else {
207 209 //if ( in_array($suivi->type_suivi->nom, ['Réparation','Autre']) ) {
208   - //if ( $typeSuivisAll[$suivi->type_suivi_id]['is_regular'] ) {
209   - if ( $typeSuivisAll[$suivi->type_suivi_id] ) {
  210 + //if ( $typeSuivisAll[$suivi->type_suivi_id] ) {
  211 + if ( $typeSuivisAll[$suivi->type_suivi_id]['is_regular'] ) {
210 212 $style_dates = $style_hide;
211 213 $style_periodicity = $style_show;
212 214 }
... ... @@ -267,7 +269,7 @@ else {
267 269 echo $this->Form->control('date_prochain_controle', [
268 270 'type' => 'text',
269 271 'id' => 'date_fin',
270   - 'label' => 'Date estimee de fin',
  272 + 'label' => 'Date estimée de fin',
271 273 'class' => 'datepicker',
272 274 'placeholder' => 'Cliquez pour sélectionner une date'
273 275 ]);
... ... @@ -513,16 +515,27 @@ $(document).ready(function () {
513 515  
514 516 console.log("Doc. chargé");
515 517  
516   - var typesSuiviAll = <?php echo json_encode($typeSuivisAll); ?>;
  518 + // (EP) Une fois pour toutes, on récupère la liste des types de suivi
  519 + // conversion php => javascript
  520 + var typeSuivisAll = <?php echo json_encode($typeSuivisAll); ?>;
517 521  
518 522  
519 523 // (EDIT only)
520 524 // (metro)
521   - var type_suivi_t = $("#type-suivi-id :selected").text();
  525 + var type_suivi = $("#type-suivi-id :selected").text();
522 526 var ismetro = "<?=$materiel['metrologie']?>";
523 527  
  528 + // EDIT only
524 529 /*
525   - // 1 - Afficher la section PÉRIODICITÉ ou DATE selon le type suivi choisi
  530 + * Vérification date début > date fin dans le cas d'une panne
  531 + */
  532 + $("#date_deb").bind("change", function (event) {check_dates();} );
  533 + $("#date_fin").bind("change", function (event) {check_dates();} );
  534 + // FIN changement date
  535 +
  536 +
  537 + /*
  538 + // 1 - Afficher la section PERIODICITE ou DATE selon le type suivi choisi
526 539 if (type_suivi != "Choisir le type de suivi") {
527 540 //if (type_suivi == "Panne")
528 541 if (type_suivi == "Réparation" || type_suivi == "Etalonnage") {
... ... @@ -534,7 +547,9 @@ $(document).ready(function () {
534 547 }
535 548 */
536 549 // 2 - (metro) Afficher ou non la section MÉTROLOGIE
537   - if (type_suivi_t == "Vérification métrologique") {
  550 + // TODO: (EP nouvelle proposition à tester)
  551 + //if (typeSuivisAll[type_suivi_id]['is_metro'])
  552 + if (type_suivi == "Vérification métrologique") {
538 553 $("#metro").show();
539 554 $("#nommesure").attr('required',true);
540 555 $("#symbole").attr('required',true);
... ... @@ -557,26 +572,6 @@ $(document).ready(function () {
557 572 $("#typedemesure").hide();
558 573 $("#typedemesure").attr('required',false);
559 574 }
560   -
561   -
562   - // EDIT only
563   - /*
564   - * Vérification date début > date fin dans le cas d'une panne
565   - */
566   - function check_dates() {
567   - d1 = toDate($("#date_deb")[0].value); /* Date de la prise en charge de la panne */
568   - d2 = toDate($("#date_fin")[0].value); /* Date estimee de fin de la panne */
569   - if($("#date_fin")[0].value != undefined){
570   - if(d1 > d2) {
571   - alert("Les dates ne correspondent pas, la date de début de prise en charge doit être antérieure à la date de fin.");
572   - event.preventDefault();
573   - }
574   - }
575   - }
576   - $("#date_deb").bind("change", function (event) {check_dates();} );
577   - $("#date_fin").bind("change", function (event) {check_dates();} );
578   - // FIN changement date
579   -
580 575  
581 576 // ADD only
582 577 // (metro)
... ... @@ -609,7 +604,8 @@ $(document).ready(function () {
609 604 if( type_suivi != "Choisir le type de suivi" ) {
610 605 console.log("coucou");
611 606 console.log(type_suivi_id);
612   - if (typesSuiviAll[type_suivi_id]) {
  607 + //if (typeSuivisAll[type_suivi_id])
  608 + if (typeSuivisAll[type_suivi_id]['is_regular']) {
613 609 //document.getElementById('frequence').innerHTML = "";
614 610 $("#dates").hide();
615 611 $("#frequence").show();
... ... @@ -624,6 +620,8 @@ $(document).ready(function () {
624 620 }
625 621  
626 622 // (metro)
  623 + // TODO: (EP nouvelle proposition à tester)
  624 + //if (typeSuivisAll[type_suivi_id]['is_metro'])
627 625 if (type_suivi== "Vérification métrologique") {
628 626 document.getElementById('typedemesure').innerHTML ="<div class=\"input select required\"><label for=\"typemesure\">Type de mesure</label><select name=\"typemesure\" onchange=\"typedemesure()\" id=\"typemesure\"><option value=\"1\">Direct</option><option value=\"2\">Indirect</option></select></div>";
629 627 $('#listes').show();
... ... @@ -673,7 +671,24 @@ $(document).ready(function () {
673 671  
674 672  
675 673  
  674 +/*
  675 + * *************************
  676 + * ******* FONCTIONS *******
  677 + * *************************
  678 + */
676 679  
  680 +// EDIT only
  681 +// Vérification date début > date fin dans le cas d'une panne
  682 +function check_dates() {
  683 + d1 = toDate($("#date_deb")[0].value); /* Date de la prise en charge de la panne */
  684 + d2 = toDate($("#date_fin")[0].value); /* Date estimee de fin de la panne */
  685 + if($("#date_fin")[0].value != undefined){
  686 + if(d1 > d2) {
  687 + alert("Les dates ne correspondent pas, la date de début de prise en charge doit être antérieure à la date de fin.");
  688 + event.preventDefault();
  689 + }
  690 + }
  691 +}
677 692  
678 693 // (metro) ADD only
679 694 function typedemesure() {
... ...
src/Template/Suivis/index.ctp
  1 +<?php
  2 +
  3 +// Variables définies par le controleur :
  4 +$suivis = $suivis;
  5 +//debug($suivis);
  6 +// ...
  7 +
  8 +?>
1 9  
2 10 <div class="suivis index col-lg-12 col-md-12 col-sm-12">
3   -<?php echo '<h2><i class="icon-list"></i> Liste des suivis ('.$nbSuivis.')</h2>'; ?>
  11 +
  12 + <?php echo '<h2><i class="icon-list"></i> Liste des suivis ('.$nbSuivis.')</h2>'; ?>
  13 +
4 14 <table style="border-collapse: separate; border-spacing: 0;">
  15 +
  16 + <!-- Titres du tableau -->
5 17 <thead>
6 18 <tr>
7 19 <th class="actions"><?= __('') ?></th>
8   - <th><?= $this->Paginator->sort('id', 'N°') ?></th>
9   - <th><?= $this->Paginator->sort('materiel_id', 'Matériel') ?></th>
10   - <th><?= $this->Paginator->sort('numero_laboratoire', 'N° interne (labo)') ?></th>
  20 + <!--
  21 + <th><= $this->Paginator->sort('id', 'N°') ?></th>
  22 + -->
11 23 <th><?= $this->Paginator->sort('intitule', "Intitulé") ?></th>
12   - <th><?= $this->Paginator->sort('date_controle', 'Date debut / Frequence') ?></th>
13   - <th><?= $this->Paginator->sort('date_prochain_controle', 'Date fin / Repetition') ?></th>
14   - <th><?= $this->Paginator->sort('type_suivi_id', "Type d'intervention") ?></th>
  24 + <th><?= $this->Paginator->sort('materiel_id', 'Matériel') ?></th>
  25 + <!--
  26 + <th><= $this->Paginator->sort('numero_laboratoire', 'N° interne (labo)') ?></th>
  27 + -->
  28 + <th><?= $this->Paginator->sort('type_suivi_id', "Type") ?></th>
  29 + <th><?= $this->Paginator->sort('date_controle', 'Date déb. / Fréq.') ?></th>
  30 + <th><?= $this->Paginator->sort('date_prochain_controle', 'Date fin / Cycle') ?></th>
15 31 <th><?= $this->Paginator->sort('statut', "Statut") ?></th>
16   -
17 32 </tr>
18 33 </thead>
  34 +
  35 + <!-- Data (les suivis) -->
19 36 <tbody>
20 37 <?php foreach ($suivis as $suivi): ?>
21   - <tr>
22   - <td class="actions" style="padding: 6px 0; text-align: left;">
23   - <?php
24   -
25   -if (($role == 'Utilisateur' && in_array($username, [
26   - $suivi->nom_createur
27   - ])) || ($role == 'Responsable' && in_array($username, [
28   - $suivi->nom_createur
29   - ]))
30   - || (in_array($role, [
31   - 'Administration',
32   - 'Administration Plus',
33   - 'Super Administrateur'
34   - ])) || ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $suivi->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $suivi->groupes_thematique_id == $priviledgedUser->groupe_thematique_id)))) {
35   - ?>
36   - <?= $this->Html->link(__('<i class="icon-pencil"></i>'), ['action' => 'edit', $suivi->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]) ?>
37   - <?= $this->Form->postLink(__('<i class="icon-trash"></i>'), ['action' => 'delete', $suivi->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer ce suivi ?')]) ?>
38   - <?php } ?>
39   - </td>
40   - <td class="smallText"><?php echo $this->Html->link('Suivi '.$this->Number->format($suivi->id), ['action' => 'view', $suivi->id])?></td>
41   - <td class="smallText"><?= $suivi->has('materiel') ? $this->Html->link($suivi->materiel->designation, ['controller' => 'Materiels', 'action' => 'view', $suivi->materiel->id]) : '' ?></td>
42   - <td class="smallText"><?= $suivi->has('materiel') ? h($suivi->materiel->numero_laboratoire) : '' ?></td>
43   - <td class="smallText"><?= h($suivi->intitule) ?></td>
44   -
45   -
46   - <?php if ($suivi->type_suivi_id == 2 ) {?>
47   - <td><?=h($suivi->date_controle)?></td>
48   - <td><?=h($suivi->date_prochain_controle)?></td>
49   - <?php } else { ?>
50   - <td><?=h($suivi->frequence)?></td>
51   - <td><?=h($suivi->type_frequence)?></td>
52   - <?php } ?>
53   -
54   - <td class="smallText"><?= $suivi->has('type_suivi') ? h($suivi->type_suivi->nom) : '' ?></td>
55   - <td class="smallText"><?= h($suivi->statut) ?></td>
  38 + <tr>
  39 + <!-- BOUTONS Edit et Delete -->
  40 + <td class="actions" style="padding: 6px 0; text-align: left;">
  41 + <?php
  42 + $CAN_EDIT_DELETE = (
  43 + ($role == 'Utilisateur' && in_array($username, [$suivi->nom_createur]))
  44 + ||
  45 + ($role == 'Responsable' && in_array($username, [$suivi->nom_createur]))
  46 + ||
  47 + (
  48 + in_array($role, ['Administration','Administration Plus','Super Administrateur']))
  49 + ||
  50 + ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $suivi->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $suivi->groupes_thematique_id == $priviledgedUser->groupe_thematique_id))
  51 + )
  52 + );
  53 + if ($CAN_EDIT_DELETE) {
  54 + echo $this->Html->link(__('<i class="icon-pencil"></i>'), ['action' => 'edit', $suivi->id], ['title' => 'Editer', 'style' => 'margin: 0 2px', 'escape' => false ]);
  55 + echo $this->Form->postLink(__('<i class="icon-trash"></i>'), ['action' => 'delete', $suivi->id], ['title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer ce suivi ?')]);
  56 + }
  57 + ?>
  58 + </td>
  59 +
  60 + <!-- DATA -->
  61 +
  62 + <!-- OLD
  63 + - n° suivi
  64 + <td class="smallText"><php echo $this->Html->link('Suivi '.$this->Number->format($suivi->id), ['action' => 'view', $suivi->id])?></td>
  65 + - Intitulé
  66 + <td class="smallText"><= h($suivi->intitule) ?></td>
  67 + -->
56 68  
  69 + <!-- Intitulé (lien vers suivi) -->
  70 + <td class="smallText"><?= $this->Html->link(h($suivi->intitule).' (suivi '.$this->Number->format($suivi->id).')', ['action' => 'view', $suivi->id]) ?></td>
57 71  
58   - </tr>
  72 + <!-- Matériel concerné -->
  73 + <td class="smallText"><?= $suivi->has('materiel') ? $this->Html->link($suivi->materiel->designation, ['controller' => 'Materiels', 'action' => 'view', $suivi->materiel->id]) : '' ?></td>
  74 +
  75 + <!-- N° inventaire
  76 + <td class="smallText"><?= $suivi->has('materiel') ? h($suivi->materiel->numero_laboratoire) : '' ?></td>
  77 + -->
  78 +
  79 + <td class="smallText"><?= $suivi->has('type_suivi') ? h($suivi->type_suivi->nom) : '' ?></td>
  80 +
  81 + <!--
  82 + <php if ($suivi->type_suivi_id == 2 ) {?>
  83 + -->
  84 + <?php //debug($suivi->type_suivi_id); ?>
  85 + <?php //if ( $typeSuivisAll[$suivi->type_suivi_id] ) {?>
  86 + <?php if ($suivi->type_suivi->is_regular) {?>
  87 + <td><?=h($suivi->frequence)?></td>
  88 + <td><?=h($suivi->type_frequence)?></td>
  89 + <?php } else { ?>
  90 + <td><?=h($suivi->date_controle)?></td>
  91 + <td><?=h($suivi->date_prochain_controle)?></td>
  92 + <?php } ?>
  93 +
  94 + <td class="smallText"><?= h($suivi->statut) ?></td>
  95 +
  96 +
  97 + </tr>
59 98 <?php endforeach; ?>
60 99 </tbody>
  100 +
61 101 </table>
62 102  
63 103 <?php echo $this->element('pagination'); ?>
... ...
src/Template/Suivis/view.ctp
1 1 <?php
2 2 // Variables passées à cette vue par le controleur
3 3 $suivi = $suivi;
4   -$CAN_EDIT_DELETE_LINK = $CAN_EDIT_DELETE_LINK;
  4 +$CAN_EDIT_DELETE = $CAN_EDIT_DELETE;
5 5 $typeDocuments = $typeDocuments;
6 6 $fiche = $fiche;
7 7 // from AppController::beforeFilter
... ... @@ -51,7 +51,7 @@ debug($username);
51 51 )
52 52 );
53 53 */
54   - if ($CAN_EDIT_DELETE_LINK) {
  54 + if ($CAN_EDIT_DELETE) {
55 55 echo $this->Html->link(__('<i class="icon-pencil"></i> Editer'), [
56 56 'action' => 'edit',
57 57 $suivi->id
... ... @@ -129,14 +129,19 @@ debug($username);
129 129 $printTableRow(__("Type d'intervention"), $suivi->has('type_suivi') ? h($suivi->type_suivi->nom) : '');
130 130  
131 131 // - Dates interv (si données)
132   - if ($suivi->type_suivi_id == "1") {
133   - $printTableRow(__('Date Derniere Intervention'), h($suivi->date_controle));
134   - $printTableRow(__('Date Prochaine Intervention'), h($suivi->date_prochain_controle), $style);
  132 + //if ($suivi->type_suivi_id == "1") {
  133 + if ($suivi->type_suivi->is_regular) {
  134 + //$printTableRow(__('Date Derniere Intervention'), h($suivi->date_controle));
  135 + //$printTableRow(__('Date Prochaine Intervention'), h($suivi->date_prochain_controle), $style);
135 136 $printTableRow(__('Fréquence'), h($suivi->frequence) . ' ' . h($suivi->type_frequence));
136 137 }
137 138 else {
  139 + $printTableRow(__('Date Début'), h($suivi->date_controle));
  140 + $printTableRow(__('Date Fin estimée'), h($suivi->date_prochain_controle), $style);
  141 + /*
138 142 $printTableRow(__('Date Début Prise en Charge'), h($suivi->date_controle));
139   - $printTableRow(__('Date Fin de Panne estimée'), h($suivi->date_prochain_controle), $style);
  143 + $printTableRow(__('Date Fin de Panne estimée'), h($suivi->date_prochain_controle), $style);
  144 + */
140 145 }
141 146  
142 147 // - Groupe thématique
... ... @@ -224,19 +229,34 @@ debug($username);
224 229 <?php
225 230 if (!empty($suivi->documents) || $suivi->type_suivi->nom == "Vérification métrologique") { ?>
226 231 <table>
  232 +
  233 + <!-- Titres colonnes -->
227 234 <tr>
228 235 <th class="actions"><?= __('') ?></th>
229   - <th><?= __('N°') ?></th>
  236 + <!-- (EP) inutile
  237 + <th><= __('N°') ?></th>
  238 + -->
230 239 <th><?= __('Liens/fichiers') ?></th>
231 240 </tr>
232   - <?php
  241 +
  242 + <!-- DATA -->
  243 +
  244 + <?php
  245 +
  246 + // 1 ligne pour la fiche metro
233 247 $i=1;
234 248 if ($configuration->metrologie) { ?>
235   - <td class="actions" style="padding: 6px 0; text-align: left;"></td>
236   - <td><?php echo $i; $i++; ?></td>
237   - <td><?= $this->Html->link('Lien 1: Fiche métrologique', ['controller' => 'Fichemetrologiques', 'action' => 'add', $suivi->id]) ?></td>
  249 + <tr>
  250 + <td class="actions" style="padding: 6px 0; text-align: left;"></td>
  251 + <!--
  252 + <td><php echo $i; $i++; ?></td>
  253 + -->
  254 + <td><?= $this->Html->link('Lien 1: Fiche métrologique', ['controller' => 'Fichemetrologiques', 'action' => 'add', $suivi->id]) ?></td>
  255 + </tr>
238 256 <?php
239 257 }
  258 +
  259 + // 1 ligne pour chaque doc lié
240 260 foreach ($suivi->documents as $documents): ?>
241 261 <tr>
242 262 <td class="actions" style="padding: 6px 0; text-align: left;">
... ... @@ -258,7 +278,9 @@ debug($username);
258 278 }
259 279 ?>
260 280 </td>
261   - <td><?= $i ?></td>
  281 + <!--
  282 + <td><= $i ?></td>
  283 + -->
262 284 <td><?= $this->Html->link($documents->nom, ['controller' => 'documents', 'action' => 'view', $documents->id]) ?></td>
263 285 <?php $i++; ?>
264 286 </tr>
... ...
src/Template/TypeSuivis/add.ctp
... ... @@ -14,7 +14,11 @@
14 14 echo $this->Form->control('nom');
15 15  
16 16 echo $this->Form->control('is_regular', [
17   - 'label' => 'Régulier'
  17 + 'label' => 'Suivi Régulier'
  18 + ]);
  19 +
  20 + echo $this->Form->control('is_metro', [
  21 + 'label' => 'Suivi lié à la Métrologie'
18 22 ]);
19 23  
20 24 ?>
... ...
src/Template/TypeSuivis/edit.ctp
... ... @@ -14,7 +14,11 @@
14 14 echo $this->Form->control('nom');
15 15  
16 16 echo $this->Form->control('is_regular', [
17   - 'label' => 'Régulier'
  17 + 'label' => 'Suivi Régulier'
  18 + ]);
  19 +
  20 + echo $this->Form->control('is_metro', [
  21 + 'label' => 'Suivi lié à la Métrologie'
18 22 ]);
19 23  
20 24 ?>
... ...
src/Template/TypeSuivis/index.ctp
... ... @@ -12,6 +12,7 @@
12 12 <th class="actions"><?= __('') ?></th>
13 13 <th><?= $this->Paginator->sort('nom', 'Nom') ?></th>
14 14 <th><?= $this->Paginator->sort('is_regular', 'Régulier ?') ?></th>
  15 + <th><?= $this->Paginator->sort('is_metro', 'Métrologie ?') ?></th>
15 16 </tr>
16 17 </thead>
17 18  
... ... @@ -33,8 +34,10 @@
33 34  
34 35 </td>
35 36  
  37 + <!-- data -->
36 38 <td class="smallText"><?= $this->Html->link($typeSuivi->nom, ['action' => 'view', $typeSuivi->id]) ?></td>
37 39 <td class="smallText"><?= $typeSuivi->is_regular?"Oui":"Non" ?></td>
  40 + <td class="smallText"><?= $typeSuivi->is_metro?"Oui":"Non" ?></td>
38 41  
39 42 </tr>
40 43 <?php endforeach; ?>
... ...
src/Template/TypeSuivis/view.ctp
... ... @@ -46,7 +46,10 @@
46 46 $displayElement(__('Nom'), h($typeSuivi->nom));
47 47  
48 48 // - Régulier ?
49   - $displayElement(__('Régulier ?'), h($typeSuivi->is_regular)?"Oui":"Non");
  49 + $displayElement(__('Suivi Régulier ?'), h($typeSuivi->is_regular)?"Oui":"Non");
  50 +
  51 + // - Métrologie ?
  52 + $displayElement(__('Suivi lié à la Métrologie ?'), h($typeSuivi->is_metro)?"Oui":"Non");
50 53  
51 54 ?>
52 55  
... ...