<div class="index col-lg-5 col-md-7 col-sm-9"> <h2> <i class="icon-search"></i> Recherche de matériel </h2> <?php /* (EP) Variables exportées par MaterielsController pour cette vue (à compléter) $s_numero_laboratoire => mais n'est plus utilisé car on préfère la recherche plein texte ... */ use Cake\I18n\Date; use Cake\I18n\Time; $r = isset($_results); if ($r) { echo '<div class="actions" style="margin-bottom: 20px; width: 100%; float: none; padding: 10px 0;">'; echo $this->Html->link('<i class="icon-file"></i> Exporter la liste', [ 'controller' => 'Materiels', 'action' => 'export', 'search' ], [ 'title' => 'Editer le résultat de la recherche', 'style' => 'margin-right: 15px', 'escape' => false ]); echo '</div>'; } ?> <h3 id="t_filter" class='toggle' style="cursor: pointer;"> <i class=<?php if ($r) echo '"icon-chevron-up"'; echo '"icon-chevron-down"'; ?> style="font-size: 14px;" id="i_filter"></i> <span style="text-decoration: underline;">Filtres</span> </h3> <div id="filter" <?php if ($r) echo 'style="display: none;"'; ?>> <?php if (isset($_results)) $selected = []; else $selected = [ 'selected' => '' ]; // FORMULAIRE DE RECHERCHE echo $this->Form->create(); // -------Bouton recherche Haut--------- //echo $this->Form->submit('Rechercher', [ 'style' => 'width: 20%' ]); // CHAMP DE RECHERCHE GENERIQUE echo $this->Form->control('s_all', [ 'label' => 'TOUS LES CHAMPS' ]); echo "<br/>OU BIEN, seulement quelques champs spécifiques :<br/><br/>"; // Designation echo $this->Form->control('s_designation', [ 'label' => 'Désignation' ]); // Matériel administratif et/ou technique $typeOptions = []; echo $this->Form->control('s_matostype', [ 'label' => 'Type', 'empty' => 'Tous', 'options' => [ 'A' => 'Administratif', 'T' => 'Technique', 'AT' => 'Administratif et Technique', 'AO' => 'Administratif seulement', 'TO' => 'Technique seulement' ], ]); // DOMAINE echo $this->Form->control('s_sur_categorie_id', [ 'label' => 'Domaine', 'empty' => 'Tous', $selected, 'options' => $s_sur_categories, 'style' => 'width: 200px' ]); // CATEGORIES // by default, ALL categs $categs = $s_categories; // if a domaine is selected, reduce the categories list to this domaine if ($this->request->getData('s_sur_categorie_id') !== null && $this->request->getData('s_sur_categorie_id') != '') { $categs = $categs->where([ 'sur_categorie_id =' => $this->request->getData('s_sur_categorie_id') ]); } echo $this->Form->control('s_categorie_id', [ 'label' => 'Catégorie', 'empty' => 'Toutes', 'style' => 'width: 200px', 'options' => $categs ]); // SOUS-CATEGORIES // by default, list is empty $souscategs = []; // if a categ is selected, update sous-categs list for this categ (only) if ($this->request->getData('s_categorie_id') !== null && ($this->request->getData('s_categorie_id') != '')) { $souscategs = $s_sous_categories; $souscategs = $souscategs->where([ 'categorie_id' => $this->request->getData('s_categorie_id') ]); } echo $this->Form->control('s_sous_categorie_id', [ 'label' => 'Sous-catégorie', 'empty' => 'Toutes', 'style' => 'width: 200px', 'options' => $souscategs ]); $options = [ 'CREATED' => 'Créé', 'VALIDATED' => 'Validé', 'TOBEARCHIVED' => 'À archiver' ]; if (in_array($role, [ 'Administration', 'Administration Plus', 'Super Administrateur' ])) { $options['ARCHIVED'] = 'Archivé'; } // STATUT echo $this->Form->control('s_status', [ 'label' => 'Statut', 'empty' => 'Tous', $selected, 'options' => $options, 'style' => 'width: 200px' ]); // Groupe metier et thematique echo $this->Form->control('s_groupes_metier_id', [ 'label' => $configuration->nom_groupe_metier, 'empty' => 'Tous', $selected, 'options' => $s_groupes_metiers, 'style' => 'width: 200px' ]); echo $this->Form->control('s_groupes_thematique_id', [ 'label' => $configuration->nom_groupe_thematique, 'empty' => 'Tous', $selected, 'options' => $s_groupes_thematiques, 'style' => 'width: 200px' ]); // Autres champs echo $this->Form->control('s_numero_commande', [ 'label' => 'N° BC' ]); echo $this->Form->control('s_numero_laboratoire', [ 'label' => 'N° interne (labo)', 'empty' => 'Tous', 'style' => 'width: 200px', //'options' => $s_numero_laboratoire ]); $orgas = $s_organismes; echo $this->Form->control('s_organisme_id', [ 'label' => 'Organisme', 'empty' => 'Toutes', 'style' => 'width: 200px', 'options' => $orgas ]); echo $this->Form->control('s_fournisseur_id', [ 'label' => 'Fournisseur', 'empty' => 'Tous', 'style' => 'width: 200px', 'options' => $s_fournisseurs ]); $salle = $s_salles; echo $this->Form->control('s_salle', [ 'label' => 'Détail lieu de stockage', 'empty' => 'Toutes', 'style' => 'width: 200px', 'options' => $salle ]); echo $this->Form->control('s_nom_responsable', [ 'label' => 'Nom du propriétaire', 'empty' => 'Toutes', 'options' => $s_nomresp ]); echo $this->Form->control('s_numero_inventaire_organisme', [ 'label' => 'N° inventaire organisme' ]); echo $this->Form->control('s_numero_inventaire_old', [ 'label' => 'N° inventaire (ancien)' ]); if (in_array($role, [ 'Responsable', 'Administration', 'Administration Plus', 'Super Administrateur' ])) { // Date acquisition echo "<u>DATE d'achat:</u>"; echo $this->Form->control('s_date_acquisition', [ 'placeholder' => 'Cliquez pour selectionner une date', 'label' => '- Date exacte', 'class' => 'datepicker' ]); echo $this->Form->control('s_periode_acquisition1', [ 'placeholder' => 'Cliquez pour selectionner une date', 'label' => '- Date Début', 'class' => 'datepicker' ]); echo $this->Form->control('s_periode_acquisition2', [ 'placeholder' => 'Cliquez pour selectionner une date', 'label' => '- Date Fin', 'class' => 'datepicker' ]); echo "<u>MONTANT :</u>"; echo $this->Form->control('s_prix_ht', [ 'label' => '- Montant exact' ]); echo $this->Form->control('s_prix_ht_sup', [ 'label' => '- Montant sup. ou égal à' ]); echo $this->Form->control('s_prix_ht_inf', [ 'label' => '- Montant inf. ou égal à' ]); } /* // CHAMP DE RECHERCHE GENERIQUE echo $this->Form->control('s_all', [ 'label' => 'TOUS LES CHAMPS' ]); */ // -------Bouton recherche Bas--------- //echo $this->Form->submit('Rechercher', [ 'style' => 'width: 20%']); echo $this->Form->button('Rechercher', ['class'=>'btn btn-outline-success', 'type'=>'submit', 'style' => 'margin: 0px;']); echo '<br/><br/><br/>'; ?> </div> <!-- RESULT DISPLAY --> <h3 id="t_result" class='toggle' style="cursor: pointer;"> <i class=<?php if ($r) echo '"icon-chevron-down"'; echo '"icon-chevron-up"'; ?> style="font-size: 14px;" id="i_result"></i> <span style="text-decoration: underline;">Résultats <?php if ($r) echo '('.sizeof($_results).')'; ?></span> </h3> <div id="result" <?php if (!$r) echo 'style="display: none;"'; ?>> <?php if (isset($_results) && sizeof($_results) != 0) { $this->request->getSession()->write("resultTri", $_results); ?> <table style="border-collapse: separate; border-spacing: 0;"> <thead> <tr> <th class="actions"><?= __('') ?></th> <th><?= $this->Paginator->sort('designation','Désignation') ?></th> <th><?= $this->Paginator->sort('numero_laboratoire', 'N° interne (labo)') ?></th> <th><?= $this->Paginator->sort('hors_service', 'HS') ?></th> <th><?= $this->Paginator->sort('categorie_id', 'Catégorie') ?></th> <th><?= $this->Paginator->sort('nom_responsable', $configuration->nom_responsable) ?></th> <th><?= $this->Paginator->sort('status', 'Statut') ?></th> <th><?= $this->Paginator->sort('date_acquisition', 'Date') ?></th> <th><?= $this->Paginator->sort('prix_ht', 'Prix (HT)') ?></th> <th><?= $this->Paginator->sort('fournisseur', 'Fournisseur') ?></th> <th><?= $this->Paginator->sort('lieu_detail', 'Salle') ?></th> </tr> </thead> <tbody> <!-- Affichage des lignes de données --> <?php // Pour changer la couleur de la date de garantie si elle est passée - Ajout par Thibault Ajas le 02/05/2017 $time = Time::now(); // On récupère la date et l'heure actuelles $today = new date("$time->year-$time->month-$time->day"); // On extrait la date pour la vérification de fin de garantie $today = $today->format('Ymd'); // On formatte la date initialement en 31-12-2000 en un format qui pourra etre comparé : 20001231 foreach ($_results as $materiel) : if ($materiel->date_fin_garantie !== NULL) { $timeFin = new time($materiel->date_fin_garantie); $dateFin = new date("$timeFin->year-$timeFin->month-$timeFin->day"); $dateFin = $dateFin->format('Ymd'); } if (isset($materiel->date_fin_garantie)) $styleLien = ($today >= $dateFin) ? 'style="color: #FF0000"' : ''; else $styleLien = ''; ?> <tr> <td class="actions" style="padding: 6px 0; text-align: left;"> <?php /* * ACTION 'edit' */ if (in_array($materiel->status, [ 'CREATED', 'VALIDATED' ])) { if (($role == 'Utilisateur' && (in_array($username, [ $materiel->nom_createur, $materiel->nom_responsable ]))) || (in_array($role, [ 'Administration', 'Administration Plus', 'Super Administrateur' ])) || ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $priviledgedUser->groupes_thematique_id)))) { echo $this->Html->link('<i class="icon-pencil"></i>', [ 'action' => 'edit', $materiel->id ], [ 'title' => 'Éditer', 'style' => 'margin: 0 2px', 'escape' => false ]); } } else { if (in_array($role, [ 'Administration Plus', 'Super Administrateur' ])) { echo $this->Html->link('<i class="icon-pencil"></i>', [ 'action' => 'edit', $materiel->id ], [ 'title' => 'Éditer', 'style' => 'margin: 0 2px', 'escape' => false ]); } } if (in_array($role, [ 'Administration', 'Administration Plus', 'Super Administrateur' ]) || ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $priviledgedUser->groupes_thematique_id)))) { if (h($materiel->status) == 'CREATED') { echo $this->Html->link('<i class="icon-ok-sign"></i>', [ 'action' => 'statusValidated', $materiel->id ], [ 'title' => 'Valider', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => 'Êtes-vous sur de vouloir valider ' . $materiel->designation . ' ?' ]); } else if (h($materiel->status) == 'VALIDATED') { echo $this->Html->link('<i class="icon-inbox"></i>', [ 'action' => 'statusTobearchived', $materiel->id ], [ 'title' => 'Demander la sortie de l\'inventaire', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => 'Êtes-vous sur de vouloir faire une demande d\'archive ' . $materiel->designation . ' ?' ]); } else if (h($materiel->status) == 'TOBEARCHIVED' && $role != 'Responsable' && $role != 'Super Administrateur') { echo $this->Html->link('<i class="icon-inbox"></i>', [ 'action' => 'statusArchived', $materiel->id ], [ 'title' => 'Sortir de l\'inventaire', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => 'Êtes-vous sur de vouloir archivé ' . $materiel->designation . ' ?' ]); } } /* * ACTION 'delete' */ // Seul un materiel CREATED peut être supprimer if ($materiel->status == 'CREATED') { if (($role != 'Utilisateur' && $role != 'Responsable') || in_array($username, [ $materiel->nom_createur, $materiel->nom_responsable ]) || ($role == 'Responsable' && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupes_thematique_id) && $priviledgedUser->groupes_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $priviledgedUser->groupes_thematique_id)))) { echo $this->Html->link(__('<i class="icon-trash"></i>'), [ 'action' => 'delete', $materiel->id ], [ 'title' => 'Supprimer', 'style' => 'margin: 0 2px', 'escape' => false, 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $materiel->designation) ]); } } /* * echo '</td>'; * * echo '<td class="smallText">'; * echo $this->Html->link ( h($materiel->designation), [ * 'action' => 'view', * $materiel->id * ], ['title' => 'Détails']); * echo '</td>'; * echo '<td class="smallText">'; * echo $materiel->numero_laboratoire; * echo '</td>'; * * echo '<td class="smallText">'; * echo ($materiel->hors_service) ? 'HS' : ''; * echo'</td>'; * * $cat = $categories->find()->where(['id =' => $materiel->categorie_id])->first(); * echo '<td class="smallText">'; * echo $this->Html->link ( $cat['nom'], [ * 'controller' => 'categories', * 'action' => 'view', * $cat['id'] * ]); * echo '</td>'; * echo '<td class="smallText">'; * echo $materiel->nom_responsable; * echo '</td>'; * echo '<td class="smallText">'; * echo $materiel->status; * echo '</td>'; * echo '<td class="smallText">'; * echo $materiel->date_acquisition; * echo '</td>'; * echo '<td class="smallText">'; * echo $materiel->fournisseur; * echo '</td>'; * echo '<td class="smallText">'; * echo $materiel->lieu_detail; * echo '</td>'; */ // Le code au-dessous est presque le même code mais en plus joli et plus compact //debug($materiel); ?> </td> <td class="smallText"><?= $materiel->has('designation') ? $this->Html->link($materiel->designation, ['controller' => 'Materiels', 'action' => 'view', $materiel->id]) : '' ?></td> <td class="smallText"><?= h($materiel->numero_laboratoire) ?></td> <td class="smallText" style="color: red"><strong><?= ($materiel->hors_service) ? 'HS' : '' ?></strong></td> <td class="smallText"><?= $materiel->has('category') ? h($materiel->category->nom) : '' ?></td> <?php //echo '<td class="smallText">'. ($materiel->has('organisme') ? h($materiel->organisme->nom) : '') .'</td>' ?> <?php //echo '<td class="smallText">'. ($materiel->has('numero_inventaire_organisme') ? h($materiel->organisme->nom) : '') .'</td>' ?> <td class="smallText"><?= h($materiel->nom_responsable) ?></td> <?php echo '<td class="smallText">'. ($materiel->has('status') ? h($materiel->status) : '') .'</td>'; echo '<td class="smallText">'. ($materiel->has('date_acquisition') ? h($materiel->date_acquisition) : '') .'</td>'; echo '<td class="smallText">'. ($materiel->has('prix_ht') ? number_format(h($materiel->prix_ht),2,'.',',').'€' : '') .'</td>'; //echo '<td class="smallText">'. ($materiel->has('prix_ht') ? sprintf("%09.2f", h($materiel->prix_ht)).'€' : '') .'</td>'; //echo '<td class="smallText">'. ($materiel->has('prix_ht') ? money_format('%.2n', h($materiel->prix_ht)) : '') .'</td>'; //echo '<td class="smallText">'. ($materiel->has('prix_ht') ? money_format('%= (#6.2n', h($materiel->prix_ht)).'€' : '') .'</td>'; ?> <td class="smallText"><?= $materiel->has('fournisseur') ? h($materiel->fournisseur->nom) : ''?></td> <td class="smallText"><?= $materiel->has('lieu_detail') ? h($materiel->lieu_detail) : ''?></td> <tr> <?php endforeach; ?> </tbody> </table> <?php } else { echo 'Aucun résultats pour cette recherche.'; } ?> </div> <?php echo $this->Form->end(); ?> </div> <!-- <div class="actions"> <php echo $this->element('menu') ?> </div> --> <?php /** * GESTION DES EVENEMENTS SUR LES DOMAINES/CATEGORIES/SOUS-CATEGORIES (avec javascript Jquery) * * Phase initialisation (1ère ouverture de la page) : * - domaine ==> value = TOUS * - categ ==> value = TOUTES * - scateg ==> value = Aucune * * Event domaine change : * - si select <> "Tous" ==> categ value = from domaine (select="Toutes") * - si select = "Tous" ==> categ value = TOUTES (select="Toutes") * - dans tous les cas, vider scateg (select="Toutes") * * Event categ change : * - si select <> "Toutes" ==> domaine select = from categ, et scateg values = from categ (select="Toutes") * - si select = "Toutes" ==> vider scateg (select="Toutes") * * Event scateg change : RIEN A FAIRE */ ?> <script type="text/javascript"> /** * Event DOMAINE change * * Sur sélection d'un DOMAINE ==> update CATEGORIES + empty SOUS-CATEGORIES * * Dans le détail : * - si select <> "Tous" ==> categ value = from domaine (select="Toutes") * - si select = "Tous" ==> categ value = TOUTES (select="Toutes") * - dans les 2 cas, vider scateg (select="Toutes") * */ $(document).ready(function () { $("#s-sur-categorie-id").bind("change", function (event) { var domaineId=$("#s-sur-categorie-id :selected").val(); if (domaineId=="") updateSelectOptionsFromAnother("#s-categorie-id", "#s-sur-categorie-id", "Categories/getAll", "Toutes"); else updateSelectOptionsFromAnother("#s-categorie-id", "#s-sur-categorie-id", "Categories/getBySurCategorie", "Toutes"); emptySelectOptions("#s-sous-categorie-id","Toutes"); return false; }); }); /** * Event CATEGORIE change * - si select <> "Toutes" ==> domaine select = from categ, et scateg values = from categ (select="Toutes") * - si select = "Toutes" ==> empty scateg (select="Toutes") */ $(document).ready(function () { $("#s-categorie-id").bind("change", function (event) { var categId=$("#s-categorie-id :selected").val(); var categLabel=$("#s-categorie-id :selected").text(); if (categId=="") emptySelectOptions("#s-sous-categorie-id","Toutes"); else { // 1) update sous-categories from selected categorie updateSelectOptionsFromAnother("#s-sous-categorie-id", "#s-categorie-id", "SousCategories/getByCategorie", "Toutes"); // 2) select new domaine = the selected categorie one updateSelectOptionsFromAnother("#s-sur-categorie-id", "#s-categorie-id", "SurCategories/getFromCategorie", ""); } return false; }); }); </script>