You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2013-06-27 15:01:34

Bikarfioul
Member
Registered: 2009-12-01
Posts: 99

Bug rapport mreporting

Bonjour,

J'utilise le plugin mreporting qui me permet à chaque trimestre de justifier de ma raison d'être aux yeux de mon employeur.
2-3 bugs ce sont glissés dans le code, ce ne sont pas vraiment des bugs mais surtout des résultats éronnés.

Premier bug :
La fonction reportHbarTicketNumberByLocation de la class helpdesk, retourne le Nombre de ticket par lieu des demandeurs si vous avez un ticket qui été ouvert par un groupe et non une personne vous obtenez un résultat avec la notion aucun.

C'est certainement une mauvaise utilisation de GLPI mais le problème est quand même là ou alors la notion "aucun" n'est pas assez explicite et la remplacer par "aucun demandeur" serait plus appropriée.

Deuxieme bug :
La fonction reportSunburstTicketByCategories retourne un résultat éronné :

Une faute c'est glissé dans la requête SQL :

SELECT 
            glpi_tickets.itilcategories_id as id,
            glpi_itilcategories.name as name,
            glpi_itilcategories.itilcategories_id as parent,
            COUNT(glpi_tickets.id) as count
         FROM glpi_tickets
         LEFT JOIN glpi_itilcategories
            ON glpi_itilcategories.id = glpi_tickets.itilcategories_id
         WHERE {$this->sql_date}
            AND glpi_tickets.entities_id IN ({$this->where_entities})
            AND glpi_tickets.is_deleted = '0'
         GROUP BY glpi_itilcategories.id, glpi_tickets.status
         ORDER BY glpi_itilcategories.name

Avec glpi_tickets.status remplacé par glpi_itilcategories.name les résultat sont plus parlant.

SELECT 
            glpi_tickets.itilcategories_id as id,
            glpi_itilcategories.name as name,
            glpi_itilcategories.itilcategories_id as parent,
            COUNT(glpi_tickets.id) as count
         FROM glpi_tickets
         LEFT JOIN glpi_itilcategories
            ON glpi_itilcategories.id = glpi_tickets.itilcategories_id
         WHERE {$this->sql_date}
            AND glpi_tickets.entities_id IN ({$this->where_entities})
            AND glpi_tickets.is_deleted = '0'
         GROUP BY glpi_itilcategories.id, glpi_itilcategories.name
         ORDER BY glpi_itilcategories.name

Troisième bug : (qui n'en est pas un...)

Je n'ai pu expliquer la fonction reportGlineNbTicket qui fonctionne avec une grosse partie de son code commentée par mes soins.

function reportGlineNbTicket($area = false, $configs = array()) {
      global $DB, $LANG;

      $datas = array();
      $tmp_date = array();
      /*Must be defined*/
      if (count($configs) == 0) {
         $configs = PluginMreportingConfig::initConfigParams(__FUNCTION__, __CLASS__);
      }

      foreach ($configs as $k => $v) {
         $$k=$v;
      }
      /*End Must be defined*/

      //Init delay value
      $this->sql_date = PluginMreportingMisc::getSQLDate("glpi_tickets.date",$delay, $randname);

      //get dates used in this period
/*      $query_date = "SELECT
         DISTINCT
         DATE_FORMAT(`date`, '%y%m') AS month,
         DATE_FORMAT(`date`, '%b%y') AS month_l
      FROM `glpi_tickets`
      WHERE ".$this->sql_date."
      AND `glpi_tickets`.`entities_id` IN (".$this->where_entities.")
      AND `glpi_tickets`.`is_deleted` = '0'
      ORDER BY `date` ASC";
      $res_date = $DB->query($query_date);
      $dates = array();
      while ($data = $DB->fetch_assoc($res_date)) {
         $dates[$data['month']] = $data['month_l'];
      }
      foreach(array_values($dates) as $id) {
         $tmp_date[] = $id;
      }
*/
      $query = "SELECT DISTINCT
         DATE_FORMAT(date, '%y%m') as month,
         DATE_FORMAT(date, '%b%y') as month_l,
         status,
         COUNT(id) as nb
      FROM glpi_tickets
      WHERE ".$this->sql_date."
      AND glpi_tickets.entities_id IN (".$this->where_entities.")
      AND glpi_tickets.is_deleted = '0'
      GROUP BY month, status
      ORDER BY month, status";
      
      $res = $DB->query($query);
      while ($data = $DB->fetch_assoc($res)) {
         $status =Ticket::getStatus($data['status']);
         $datas['labels2'][$data['month_l']] = $data['month_l'];
         $datas['datas'][$status][$data['month_l']] = $data['nb'];
      }

      //merge missing datas (not defined status for a month)
      if (isset($datas['datas'])) {
         foreach($datas['datas'] as &$data) {
            $data = array_merge(array_fill_keys($tmp_date, 0), $data);
         }
      }

     return $datas;
   }

Je n'ai pas plus poussé l'investisgation car à l'origne seule la fonction reportSunburstTicketByCategories me posait problème.


GLPI 0.85.1 / Plugins Fusion : 085+1  / Agent : 2.3.14   < Serveur Centos 64 Bits>

Offline

Board footer

Powered by FluxBB