diff --git a/CHANGES.txt b/CHANGES.txt index f42ac14..d9075ea 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -119,8 +119,9 @@ Outre ces changements, voici d'autres changements importants : ------- -01/10/2020 v4.103.22-3.7.9 (EP) - - (i) Ajout règles validation pour responsabilités attribuées à un User +01/10/2020 v4.103.23-3.7.9 (EP) + - (i) Ajout règles validation pour responsabilités attribuées à un User + - (b) Bugfix "Lignes par page" sur liste matériels => marchait pas pour "150" ------- 30/09/2020 v4.103.21-3.7.9 (EP) diff --git a/README.md b/README.md index fad48ba..afa16f2 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ Logiciel testé et validé sur les configurations suivantes : -------------------------------------------------------------------------------------------- Date: 01/10/2020 -Version: 4.103.22-3.7.9 +Version: 4.103.23-3.7.9 HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes) diff --git a/src/Controller/MaterielsController.php b/src/Controller/MaterielsController.php index 1ec049d..afd10cf 100755 --- a/src/Controller/MaterielsController.php +++ b/src/Controller/MaterielsController.php @@ -3361,7 +3361,7 @@ class MaterielsController extends AppController { $CAS = 0; - // CAS 1 - EXPORT SELECTED materiels only + // CAS 1 - EXPORT uniquement les materiels selectionnés (cochés) if ($this->request->getData('export') !== null) { $CAS = 1; $this->myDebug("IN EXPORT"); @@ -3421,9 +3421,76 @@ class MaterielsController extends AppController { //$this->myDebug($materiels); //} - // CAS 2 - EXPORT ALL materiels - } else if ($this->request->getData('exportAll') !== null) { + // CAS 2 - EXPORT liste courante + } else if ($this->request->getData('exportCurrent') !== null) { + $CAS = 2; + $this->myDebug("IN exportCurrent"); + $what = $this->request->getData('what'); + debug($what); + + $selectedMateriels = []; + $i = 0; + //$data = $this->request->getData(); + $data = $this->request->getData(); + debug($data);exit; + foreach ($data as $val) { + if ($val == 1) { + $selectedMateriels[$i] = key($data); + $i ++; + } + next($data); + } + + $this->myDebug($selectedMateriels); + /* + // Si la liste de materiels cochés est vide, ne rien faire + if (empty($selectedMateriels)) { + if ($what != '' && $what != 'search') return $this->redirect(['action' => 'index', $what]); + else if ($what == 'search') return $this->redirect('javascript:window.history.go(-3)'); + else return $this->redirect(['action' => 'index']); + } + */ + + //if (sizeof($selectedMateriels) > 0) { + if (! empty($selectedMateriels)) { + /* + $materiels = $this->Materiels->find('all') + ->where(['Materiels.id' => $selectedMateriels[0]]) + ->contain($contain); + for ($j = 0; $j < sizeof($selectedMateriels); $j ++) { + $materiels->orWhere([ + 'Materiels.id' => $selectedMateriels[$j] + ]); + } + */ + //$materielsTable = TableRegistry::getTableLocator()->get('Materiels'); + //$materiels = $materielsTable->find() + $materiels = $this->Materiels->find() + ->contain($contain) + ->where(['Materiels.id' => $selectedMateriels[0]]); + for ($j = 0; $j < sizeof($selectedMateriels); $j ++) + $materiels->orWhere( ['Materiels.id' => $selectedMateriels[$j]] ); + $materiels->order($order); + /* + $materiels = $this->Materiels->find() + ->contain($contain) + ->where([ + //'OR' => [['id' => 2], ['id' => 10]], + 'OR' => [$selectedMateriels], + ]); + */ + } + //$this->myDebug($materiels); + //} + + + + + + // CAS 3 - EXPORT TOUS les matériels de la BD + } else if ($this->request->getData('exportAll') !== null) { + $CAS = 3; $this->myDebug("IN EXPORT ALL"); // Exporte seulement les materiels du statut coché @@ -3464,9 +3531,10 @@ class MaterielsController extends AppController { $this->myDebug("what is " . $what); $this->myDebug("statut is " . $status); - // CAS 3 - Export du résultat de Recherche + + // CAS 4 - Export du résultat de Recherche (find) } else if (isset($this->request->getAttribute('params')['pass'][0])) { - $CAS = 3; + $CAS = 4; $this->myDebug("RECHERCHE"); $what = $this->request->getAttribute('params')['pass'][0]; @@ -3474,9 +3542,9 @@ class MaterielsController extends AppController { $materiels = $this->request->getSession()->read("result"); } - // CAS 4 (???) - Tous les matériels (sauf ARCHIVED) + // CAS 5 (???) - Tous les matériels (sauf ARCHIVED) } else { - $CAS = 4; + $CAS = 5; $this->myDebug("OTHER CASE 4"); /* $materiels = $this->Materiels->find('all', [ @@ -3497,7 +3565,8 @@ class MaterielsController extends AppController { if (empty($materiels)) { if ($what != '' && $what != 'search') return $this->redirect(['action' => 'index', $what]); else if ($what == 'search') return $this->redirect('javascript:window.history.go(-3)'); - else return $this->redirect(['action' => 'index']); + //else return $this->redirect(['action' => 'index']); + return $this->redirect(['action' => 'index']); } /* @@ -3509,7 +3578,7 @@ class MaterielsController extends AppController { // NOW, CREATE THE CSV file from $materiels - if ($CAS == 3) + if ($CAS == 4) // Tableau de materiels, chaque materiel étant un objet query $this->myDebug("Nb matos = " . count($materiels)); else @@ -3523,23 +3592,6 @@ class MaterielsController extends AppController { //$this->myDebug($materiels, true); //$this->myDebug($materiels); - ini_set('max_execution_time', 600); - - $filename = 'export_' . date("Y-m-d") . '.csv'; - $csv_file = fopen('php://output', 'w'); - - $this->response->header([ - - // CRAL: - //'Content-Type: text/csv' - 'Content-Type: application/csv', - - //CRAL: - //"Content-disposition: attachment; filename=Demande_bureaux_" . date("Ymd").".csv"); - 'Content-Disposition: attachment; filename="' . $filename . '"' - ]); - - $this->response->sendHeaders(); $configuration = $this->confLabinvent; $nomgroupemetier = $configuration->nom_groupe_metier; $nomgroupethematique = $configuration->nom_groupe_thematique; @@ -3554,38 +3606,53 @@ class MaterielsController extends AppController { $nomgroupethematique = preg_replace('#&([A-za-z])(?:acute|cedil|caron|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $nomgroupethematique); $nomgroupethematique = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $nomgroupethematique); // pour les ligatures e.g. 'œ' $nomgroupethematique = preg_replace('#&[^;]+;#', '', $nomgroupethematique); - + // supprime les autres caractères - $header_row = [ //"id", + $header_row = [ "Désignation", - "Sur-categorie", - "Categorie", - "Sous-categorie", - "Numero interne", + "Sur-catégorie", + "Catégorie", + "Sous-catégorie", + "Numéro interne", "Description", "Organisme", "Mat. administratif", "Mat. technique", "Statut", "Date d'acquisition", - "Date de reception", + "Date de réception", "Fournisseur", "Prix HT", "EOTP", - "Numero de commande", + "Numéro de commande", "Code comptable", - "Numero de serie", + "Numéro de série", $nomgroupethematique, $nomgroupemetier, - "Numero inventaire organisme", - "Ancien Numero inventaire", + "Numéro inventaire organisme", + "Ancien Numéro inventaire", "Site stockage", "Gestionnaire", "Nom responsable", "Email responsable" ]; + ini_set('max_execution_time', 600); + + $filename = 'export_' . date("Y-m-d") . '.csv'; + $csv_file = fopen('php://output', 'w'); + + $this->response->header([ + // CRAL: + //'Content-Type: text/csv' + 'Content-Type: application/csv', + //CRAL: + //"Content-disposition: attachment; filename=Demande_bureaux_" . date("Ymd").".csv"); + 'Content-Disposition: attachment; filename="' . $filename . '"' + ]); + $this->response->sendHeaders(); + // 1) Write HEADER row fputcsv($csv_file, $header_row, ';'); diff --git a/src/Template/Materiels/find.ctp b/src/Template/Materiels/find.ctp index 481a2e0..5056247 100644 --- a/src/Template/Materiels/find.ctp +++ b/src/Template/Materiels/find.ctp @@ -1,22 +1,24 @@ - -