link( __(" $title"), [ 'controller' => $controller, 'action' => $action, $id, $mat, $photo ], [ 'title' => $tip, 'escape' => false, 'onclick' => 'return true;', 'style' => 'margin-right: 10px' ] ); } */ //$PDF_ENGINE = "FPDF"; //$PDF_ENGINE = "DOMPDF"; // EP // Set some useful global variables for this view /* * EP => moved to Controller * // 1) Materiel settings * * const CREATED = 1; * const VALIDATED = 2; * const TOBEARCHIVED = 3; * const ARCHIVED = 4; * $allStatus = [ * 'CREATED' => CREATED, * 'VALIDATED' => VALIDATED, * 'TOBEARCHIVED' => TOBEARCHIVED, * 'ARCHIVED' => ARCHIVED, * ]; * $IS_CREATED = ( $materiel->status == 'CREATED' ); * $IS_VALIDATED = ( $materiel->status == 'VALIDATED' ); * $IS_TOBEARCHIVED = ( $materiel->status == 'TOBEARCHIVED' ); * $IS_ARCHIVED = ( $materiel->status == 'ARCHIVED' ); * $status = $allStatus[$materiel->status]; * * // 2) User settings * const PROFILE_USER = 1; * const PROFILE_RESPONSABLE = 2; * const PROFILE_ADMIN = 3; * const PROFILE_ADMINPLUS = 4; * const PROFILE_SUPERADMIN = 5; * $allProfiles = [ * 'Utilisateur' => PROFILE_USER, * 'Responsable' => PROFILE_RESPONSABLE, * 'Administration' => PROFILE_ADMIN, * 'Administration Plus' => PROFILE_ADMINPLUS, * 'Super Administrateur' => PROFILE_SUPERADMIN * ]; * * $profile = $allProfiles["$role"]; * // echo $profile; * * $USER_IS_UTILISATEUR = ($profile == $PROFILE_USER); * $USER_IS_RESPONSABLE = ($profile == $PROFILE_RESPONSABLE); * $USER_IS_ADMIN = ($profile == $PROFILE_ADMIN); * $USER_IS_ADMINPLUS = ($profile == $PROFILE_ADMINPLUS); * $USER_IS_SUPERADMIN = ($profile == $PROFILE_SUPERADMIN); * * $USER_IS_ADMIN_OR_MORE = $profile >= $PROFILE_ADMIN; */ // $dateProchainControleVerif = function($t) { // $time = Time::now(); // On récupère la date et l'heure actuelles // $today = new DateTime((new date("$time->year-$time->month-$time->day"))->format('Y-m-d')); // $time1 = new time($t); // $dateTime1 = new DateTime((new date("$time1->year-$time1->month-$time1->day"))->format('y-m-d')); // $interval = ($today->diff($dateTime1)); // $strInterval = $interval->format('%a'); // return (int) $strInterval; // }; // debug("user=".$priviledgedUser); // debug("user name = ".$username); /* $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER = $USER_IS_UTILISATEUR && in_array($username, [ $materiel->nom_createur, $materiel->nom_responsable ]); $USER_IS_RESPONSABLE_AND_CREATOR_OR_OWNER = $USER_IS_RESPONSABLE && in_array($username, [ $materiel->nom_createur, $materiel->nom_responsable ]); $USER_IS_RESPONSABLE_AND_SAME_GROUP = $USER_IS_RESPONSABLE && ((isset($priviledgedUser->groupes_metier_id) && $priviledgedUser->groupes_metier_id != $idGmNa && $materiel->groupes_metier_id == $priviledgedUser->groupes_metier_id) || (isset($priviledgedUser->groupe_thematique_id) && $priviledgedUser->groupe_thematique_id != $idGtNa && $materiel->groupes_thematique_id == $priviledgedUser->groupe_thematique_id)); */ // TODO: to be set by controller /* $CAN_EDIT = $IS_CREATED && ($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); $CAN_ATTACH_A_DOC = $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; $CAN_COPY = $IS_CREATED and ($USER_IS_ADMIN_OR_MORE || $USER_IS_UTILISATEUR_AND_CREATOR_OR_OWNER); $CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN_OR_MORE; */ ?>

status) == 'ARCHIVED') echo ' '; if ($IS_ARCHIVED) echo ' '; $panne = h($materiel->hors_service) ? ' (HORS SERVICE)' : ''; ?> designation) . $panne?> numero_laboratoire)?>


documents as $document) { // et si le document est la photo liée, on l'affiche, pour cela if($document->photo) { //on récupère le doc $photo = $document; //on reconstitue le nom a partir des paramètres (idmat_nom_id.extension) $nomPhoto = $photo->materiel_id . "_" . $photo->nom . "_" . $photo->id . "." .$photo->type_doc; //Et si la photo n'est pas vide on l'affiche if(!empty($photo)) { echo $this->Html->image('photos/'.$nomPhoto, [ //si il y a une erreur sur le nom affiche le texte alternatif 'alt' => 'Photo du matériel', 'style' => 'max-width: 300px; text-align: center;' ]); } } } // QRCODE (Url) //debug($this->request->env('HTTP_REFERER')); // 'http://labinvent.test/materiels' //debug($this->request); //$proto = $this->request->env('REQUEST_SCHEME'); $proto = $this->request->env('HTTP_REFERER'); $proto = substr($proto, 0,strpos($proto,'://')); $qrCodeUrl = $proto.'://' . $this->request->env('SERVER_NAME') . $this->request->env('REQUEST_URI'); $this->request->getSession()->write("qrUrl", $qrCodeUrl); $this->requestAction('/QrCodes/creer/'); echo $this->Html->image('qrcodes/' . $this->request->getSession() ->read("filename"), [ 'alt' => 'QrCode : ' . $materiel->numero_laboratoire, 'style' => 'float: right' ]); ?>

Html, 'icon-pencil', $bStyle, ' Editer ce matériel', 'materiels', 'edit', $materiel->id); // BOUTONS "NOUVEAU SUIVI" et "NOUVEL EMPRUNT" // if ($materiel->status == 'VALIDATED') { if ($IS_VALIDATED) { $echoActionButton($this->Html, 'icon-plus', $bStyle, ' Nouv. Suivi', 'suivis', 'add', $materiel->id, [], 'Faire un nouveau suivi de ce matériel'); /* echo $this->Html->link(' Nouv. Suivi', [ 'controller' => 'suivis', 'action' => 'add', $materiel->id ], [ 'title' => 'Faire un nouveau suivi de ce matériel', 'style' => 'margin-right: 10px', 'escape' => false ]); // End link */ $echoActionButton($this->Html, 'icon-plus', $bStyle, ' Nouv. Emprunt', 'emprunts', 'add', $materiel->id, [], 'Faire un nouvel emprunt de ce matériel'); } // BOUTONS "Lier un Doc" et "Remplacer/Lier photo" if ($CAN_ATTACH_A_DOC) { $echoActionButton($this->Html, 'icon-file', $bStyle, ' Lier un Doc.', 'documents', 'add', $materiel->id, ['mat'], 'Attacher un Doc. à ce matériel'); // BOUTON "photo" if ($materiel->photo_id != null) $echoActionButton($this->Html, 'icon-file', $bStyle, ' Remplacer la photo.', 'documents', 'add', $materiel->id, ['mat', 'photo'], 'Remplacer la photo de ce matériel'); else $echoActionButton($this->Html, 'icon-file', $bStyle, ' Lier une photo.', 'documents', 'add', $materiel->id, ['mat', 'photo'], 'Attacher une photo à ce matériel'); } // BOUTONS Doc admission et sortie (admin+) if ($USER_IS_ADMIN_OR_MORE) { // Doc admission (admin only) if ($IS_CREATED || $IS_VALIDATED) { if ($PDF_ENGINE == "FPDF") { // FPDF $action = 'admission'; $data = $materiel->numero_laboratoire; } else { // DOMPDF $action = 'admission_pdf'; $data = $materiel->numero_laboratoire . ".pdf"; } // if (($materiel->status == 'VALIDATED') || ($materiel->status == 'CREATED')) { $echoActionButton($this->Html, 'icon-file', $bStyle, ' Doc. admission', 'documents', $action, $data, [], "Voir le document d'admission"); } // Doc sortie (admin only) else if ($IS_ARCHIVED || $IS_TOBEARCHIVED) { if ($PDF_ENGINE == "FPDF") { // FPDF $action = 'sortie'; $data = $materiel->numero_laboratoire; } else { // DOMPDF $action = 'sortie_pdf'; $data = $materiel->numero_laboratoire . ".pdf"; } // else if (($materiel->status == 'ARCHIVED') || ($materiel->status == 'TOBEARCHIVED')) { $echoActionButton($this->Html, 'icon-file', $bStyle, ' Doc. sortie', 'documents', $action, $data, [], "Voir le document de sortie"); } } // Doc admission et sortie // --- (2) BOUTONS 2nd row --- echo "
"; // (EP) Change bouton style pour que la 2ème ligne de boutons ne chevauche pas la 1ère // En pratique, il suffit que un seul bouton de cette ligne aie ce style (pas nécessaire pour les autres) // Mais bon, c'est difficile de savoir lequel sera toujours présent... // Donc, on applique ce style à TOUS les boutons de cette 2e ligne $bStyle2 = $bStyle.'; margin-top:10px; display:inline-block'; $bStyle2Red = $bStyle2 . '; color:red'; // BOUTON de changement de statut : Valider, Invalider, Demander archivage, ou Archiver if ($USER_IS_ADMIN_OR_MORE || ($USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP)) { // CREATED if ($IS_CREATED) // Bouton VALIDER $echoActionButton($this->Html, 'icon-ok-sign', $bStyle2Red, ' Valider', '', 'statusValidated', $materiel->id, [], "Valider ce matériel"); // VALIDATED or more else { // Bouton Invalider $echoActionButton($this->Html, 'icon-remove-sign', $bStyle2Red, ' Invalider', '', 'statusCreated', $materiel->id, [], "dé-valider le matériel (le repasser au statut Créé, il faudra le re-valider ensuite)" ); // Bouton TBA if ($IS_VALIDATED) $echoActionButton($this->Html, 'icon-ok-sign', $bStyle2Red, ' Demander sortie', '', 'statusToBeArchived', $materiel->id, [], "Demander la sortie de l'inventaire" ); // Bouton ARCHIVER //if ($IS_TOBEARCHIVED && $role!='Responsable') $echoActionButton( if ($IS_TOBEARCHIVED && $USER_IS_ADMIN_OR_MORE) $echoActionButton( $this->Html, 'icon-ok-sign', $bStyle2Red, ' Sortie inventaire', '', 'statusArchived', $materiel->id, [], "Sortir définitivement de l'inventaire", "Êtes-vous sur de bien vouloir archiver $materiel->designation ?" ); } } // BOUTON Copier (seulement pour les materiels qui sont CREATED et pour les ADMINet+ ou USER owner) if ($CAN_COPY) $echoActionButton($this->Html, 'icon-plus', $bStyle2, ' Copier ce matériel', '', 'add', $materiel->id, [], "Copier ce matériel"); // BOUTON ETIQUETTE (si imprimante disponible) if ($CAN_PRINT_LABEL) { // - Bouton "Imprimer sur un ruban" $echoActionButton($this->Html, 'icon-print', $bStyle, ' Impr. étiquette', '', 'printLabelRuban', h($materiel->id), [], "Imprimer sur un ruban"); // - Bouton "Etiquette posée" $echoActionButton( $this->Html, 'icon-file', $bStyle, $materiel->etiquette ? " Etiquette NON collée" : " Etiquette collée", 'materiels', $materiel->etiquette ? 'setLabelIsNotPlaced' : 'setLabelIsPlaced', h($materiel->id), ['view'], $materiel->etiquette ? "En cliquant sur ce bouton, vous déclarez que l'étiquette n'a PAS été posée sur le matériel" : "En cliquant sur ce bouton, vous certifiez que l'étiquette a bien été posée sur le matériel" ); //'style' => 'margin-left: 0px; margin-right: 10px', } // BOUTON "Voir fiche matériel" $bStyleGreen = $bStyle.'; background: green; color: white'; echo "
"; echo "
"; // echo '
'; if ($PDF_ENGINE == "FPDF") { // FPDF $action = 'ficheMateriel'; $data = $materiel->numero_laboratoire; } else { // DOMPDF $action = 'fiche_materiel_pdf'; $data = $materiel->numero_laboratoire.'.pdf'; } $echoActionButton($this->Html, 'icon-file', $bStyleGreen, ' Fiche PDF du matériel', 'documents', $action, $data, [], "Voir la fiche du materiel" ); // FIN DIV BOUTONS ?>

Informations

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 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'); } $style = ''; if (isset($dateFin) && $today >= $dateFin) $style = 'style="color: #FF0000"'; $type = ""; if (h($materiel->materiel_administratif) == 1 && h($materiel->materiel_technique) == 1) $type = 'Administratif et technique'; else if (h($materiel->materiel_administratif) == 1) $type = 'Administratif'; else if (h($materiel->materiel_technique) == 1) $type = 'Technique'; //echo ''; // La variable-fonction $displayElement est définie dans le fichier src/Controller/AppController.php //On va utiliser $displayElement pour l'affichage de tout les champs pour mettre une norme en place $displayElement(__('Nom du materiel'),$materiel->designation); $displayElement(__('Description'),$materiel->description); $displayElement(__('Materiel inventorié'), $type); $displayElement(__('Organisme'), $materiel->has('organisme') ? h($materiel->organisme->nom) : ''); $displayElement(__('Domaine'), $materiel->has('sur_category') ? h($materiel->sur_category->nom) : ''); $displayElement(__('Catégorie'), $materiel->has('category') ? h($materiel->category->nom) : ''); $displayElement(__('Sous-Catégorie'), $materiel->has('sous_category') ? h($materiel->sous_category->nom) : ''); if (h($materiel->etiquette) == 0) $etiq = "Non"; else $etiq = "Oui"; $displayElement(__('Etiquette posée'), $etiq); $displayElement(__('N° de série'), $materiel->numero_serie); $displayElement(__($configuration->nom_groupe_thematique), $materiel->has('groupes_thematique') ? $this->Html->link($materiel->groupes_thematique->nom, [ 'controller' => 'GroupesThematiques', 'action' => 'view', $materiel->groupes_thematique->id ]) : ''); $displayElement(__($configuration->nom_groupe_metier), $materiel->has('groupes_metier') ? $this->Html->link($materiel->groupes_metier->nom, [ 'controller' => 'GroupesMetiers', 'action' => 'view', $materiel->groupes_metier->id ]) : ''); if ($configuration->metrologie == 1) { if (h($materiel->metrologie) == 0) $metro = "Non"; else $metro = "Oui"; $displayElement(__('Métrologie'), $metro); } $displayElement(__('Date d\'achat'), h($materiel->date_acquisition)); $displayElement(__('Date de reception'), h($materiel->date_reception)); if (! empty(h($materiel->duree_garntie))) { $displayElement(__('Duree garantie'), h($materiel->duree_garantie) . ' ' . h($materiel->unite_duree_garantie)); } $displayElement(__('Date fin de garantie'), h($materiel->date_fin_garantie), $style); $displayElement(__('Statut'), h($materiel->status)); if ($materiel->status == 'ARCHIVED') { $displayElement(__('Date d\'archivage'), h($materiel->date_archivage)); } $displayElement(__('Prix (HT)'), h($materiel->prix_ht) . ' €'); $displayElement(__('Fournisseur'), $materiel->has('fournisseur') ? $materiel->fournisseur->nom : ''); $displayElement(__('Lieu de stockage'), $materiel->has('site') ? h($materiel->site->nom) : ''); $displayElement(__('Détail lieu de stockage'), h($materiel->lieu_detail)); $displayElement(__('Nom de l\'utilisateur'), $this->Html->link(h($materiel->nom_responsable), 'mailto:' . h($materiel->email_responsable))); $displayElement(__('N. interne (labo)'), h($materiel->numero_laboratoire)); $gestionnaire = TableRegistry::get('Users')->find()->where([ 'id =' => $materiel->gestionnaire_id ]); $displayElement(__('Nom du gestionnaire de référence'), h($gestionnaire->first()['nom'])); if ($role == 'Super Administrateur') { $displayElement(__('Date création'), h($materiel->created)); $displayElement(__('Nom du créateur'), h($materiel->nom_createur)); $displayElement(__('Date modification'), h($materiel->modified)); $displayElement(__('Nom du modificateur'), h($materiel->nom_modificateur)); } ?>
' . __('Description') . ' ' . nl2br($materiel->description) . '
'; echo ''; echo ' Informations administratives'; echo ''; echo '
'; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo '
' . __('CentreFinancier/EOTP') . ' ' . h($materiel->eotp) . '
' . __('N° commande') . ' ' . h($materiel->numero_commande) . '
' . __('Code comptable') . ' ' . h($materiel->code_comptable) . '
' . __('N. Inventaire Organisme') . ' ' . h($materiel->numero_inventaire_organisme) . '
' . __('N. inventaire (ancien)') . ' ' . h($materiel->numero_inventaire_old) . '
'; echo '
'; } $bStyle = 'margin:0'; ?>

Suivi(s) du matériel (suivis)?>)

suivis)) { ?> suivis as $suivi) :?> find()->where(['id =' => h($suivi->type_suivi_id)])->first()['nom'] == "Panne" ) {?>
Html, 'icon-pencil', $bStyle, '', 'Suivis', 'edit', $suivi->id); /* echo $this->Html->link(__(''), [ 'controller' => 'Suivis', 'action' => 'edit', $suivi->id ], [ 'escape' => false, 'style' => 'margin:0' ]); */ // Delete Suivis //TODO: postLink ??? kesako ? //$echoActionButton($this->Html, 'icon-trash', $bStyle, '', 'Suivis', 'delete', $suivi->id, [], "", ""); echo $this->Form->postLink(__(''), [ 'controller' => 'Suivis', 'action' => 'delete', $suivi->id ], [ 'escape' => false, 'style' => 'margin:0', 'confirm' => __('Êtes-vous sur de vouloir annuler ce suivi #{0} ?', $suivi->id) ]); } ?> Html->link('Suivi ' . $suivi->id, ['controller' => 'suivis','action' => 'view',$suivi->id])?> find()->where(['id =' => h($suivi->type_suivi_id)])->first()['nom'];?> intitule)?> date_controle)?> date_prochain_controle)?> frequence)?> type_frequence)?> statut)?>

Emprunt(s) du matériel (emprunts)?>)

emprunts)) { ?> emprunts as $emprunt) : $type = 'Externe'; $lieu = $emprunt['laboratoire']; if ($emprunt['emprunt_interne'] == 1) { $type = 'Interne'; $lieu = $sites->find() ->where([ 'id =' => h($emprunt->site_id) ]) ->first()['nom'] . '-' . h($emprunt->e_lieu_detail); } ?>
Html, 'icon-pencil', $bStyle, '', 'Emprunts', 'edit', $emprunt->id); /* echo $this->Html->link(__(''), [ 'controller' => 'Emprunts', 'action' => 'edit', $emprunt->id ], [ 'escape' => false, 'style' => 'margin:0' ]); */ // Delete Emprunt echo $this->Form->postLink(__(''), [ 'controller' => 'Emprunts', 'action' => 'delete', $emprunt->id ], [ 'escape' => false, 'style' => 'margin:0', 'confirm' => __('Êtes-vous sur de vouloir annuler cet emprunt #{0}?', $emprunt->id) ]); } ?> Html->link('Emprunt ' . $emprunt->id, ['controller' => 'emprunts','action' => 'view',$emprunt->id])?> nom_emprunteur)?> date_emprunt)?> date_retour_emprunt)?>
documents); ?>

Fichier(s) lié(s) au matériel ()

documents as $document) : $p = ($document->photo) ? 'Oui' : ''; $type = $typeDocuments->find() ->where([ 'id =' => h($document->type_document_id) ]) ->first()['nom']; ?>
photo) { // TODO: $echoActionButton() echo $this->Html->link(__(''), '/webroot/img/photos/' . $document->materiel_id .'_' . $document->nom.'_'. $document->id . '.' . $document->type_doc, [ 'title' => 'Télécharger', 'style' => 'margin:0', 'escape' => false ]); } else { echo $this->Html->link(__(''), '/webroot/files/' . $document->materiel_id .'_' . $document->nom.'_'. $document->id . '.' . $document->type_doc, [ 'title' => 'Télécharger', 'style' => 'margin:0', 'escape' => false ]); } //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) { if ($CAN_MANAGE_FILES) { // Edit doc $echoActionButton($this->Html, 'icon-pencil', $bStyle, '', 'Documents', 'edit', $document->id); /* echo $this->Html->link(__(''), [ 'controller' => 'Documents', 'action' => 'edit', $document->id ], [ 'escape' => false, 'style' => 'margin:0' ]); */ // Delete doc echo $this->Form->postLink(__(''), [ 'controller' => 'Documents', 'action' => 'delete', $document->id ], [ 'escape' => false, 'style' => 'margin:0', 'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $document->id) ]); // Envoyer devis par mail (envoyer des mails avec les documents en pj) echo $this->Form->postLink(__(''), [ 'controller' => 'Documents', 'action' => __('mailDevis' ,$document->id), $document->id ], [ 'escape' => false, 'style' => 'margin:0', 'confirm' => __(' Voulez vous envoyer le document par mail ? ') ]); } ?> Html->link($document->nom, ['controller' => 'documents','action' => 'view',$document->id])?>
element('menu')?> element('menu_view', [ 'pluralHumanName' => 'Matériels', 'singularHumanName' => 'Matériel', 'lien' => $materiel->id ])?>