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 2017-07-24 11:33:56

ildut
Member
Registered: 2017-07-18
Posts: 2

reservation

Bonjour a tous,

Je suis nouveau sur GLPI, tout d'abord merci pour cette outille il est formidable!

Dans mon labo, nous avons comme projet d'utiliser GLPI pour gérer un parc instrumental, grâce au plugin Generic object management.
Nous gérons également des réservation d'instrument, mais la façon de gérer des instruments sous GLPI n'est pas tout a fait adapté a nos besoins. Le plugin "réservation" non plus, mais je part de cette base que je vais modifier pour l'adapter a notre besoin.

L'emprunt de nos instruments est payant dans certains cas, je souhaite donc pouvoir ajouter un champ déroulant dans le formulaire de réservation afin de lier une réservation a un budget(un peut comme pour les projet, j'ai d’ailleurs fouiller dans le code du formulaire de projet pour essayer de trouver comment faire), voila donc comment je m'y suis prit pour le moment :

Création d'une table dans la bdd "glpi_plugin_reservationcost" qui ressemblera fortement a celle "projectcost"

J'ai également trouver comment ajouter le champ déroulant "budget" au formulaire

echo "<tr class='tab_bg_1'><td>".__('Budget')."</td>";
      echo "<td>";
      Budget::dropdown(array('value' => $this->fields["budgets_id"]));
      echo "</td></tr>";

Je n'arrive cependant pas a trouver quand et comment on récupère la valeur qui a été mise dans ce champ, pour remplir la bdd...cela fait un petit moment que je cherche, si une bonne ame pouvais m'expliquer la méthode ou me montrer un exemple pour je comprenne?(cela ne fait pas très longtemps que je me suis remis au php...)

merci d'avance,

Ildut

Offline

#2 2017-07-25 10:58:11

ildut
Member
Registered: 2017-07-18
Posts: 2

Re: reservation

Re bonjour,

Bon je me suis rendu compte que j'étais aller un peut vite en besogne, j'ai donc une autre question qui trouvera peut être plus facilement une réponse :

Dans le mesure ou je ne veut pas modifier directement les fichiers du cœur de GLPI, j'ai copier le fichier reservation.form.php dans le dossier /front du plugin, afin de pouvoir modifier le formulaire a loisir sans toucher au coeur de GLPI. cependant cela ne fonctionne pas, j'ai fait plusieur test a grand coup de echo dans le code pour voir ou ca déconait, et il me semble avoir trouver, mais je ne comprend pas pouquoi, il semblerais que le code n'arrive pas a utiliser la fonction add().

Voila le code

else if (isset($_POST["add"])) {
   $all_ok              = true;
   $reservationitems_id = 0;
   if (empty($_POST['users_id'])) {
      $_POST['users_id'] = Session::getLoginUserID();
   }
   Toolbox::manageBeginAndEndPlanDates($_POST['resa']);
   $dates_to_add = array();
   list($begin_year,$begin_month,$begin_day) = explode("-",$_POST['resa']["begin"]);
   if (isset($_POST['resa']["end"])) {
      // Compute dates to add.
      $dates_to_add[$_POST['resa']["begin"]] = $_POST['resa']["end"];

      if (isset($_POST['periodicity']) && is_array($_POST['periodicity'])
          && isset($_POST['periodicity']['type']) && !empty($_POST['periodicity']['type'])) {
         // Compute others dates to add.
         $dates_to_add += Reservation::computePeriodicities($_POST['resa']["begin"],
                                                            $_POST['resa']["end"],
                                                            $_POST['periodicity']);
															
		 
      }
   }
   // Sort dates
   ksort($dates_to_add);
   if (count($dates_to_add)
       && count($_POST['items'])
       && isset($_POST['users_id'])) {
		   

      foreach ($_POST['items'] as $reservationitems_id) {
         $input                        = array();
         $input['reservationitems_id'] = $reservationitems_id;
         $input['comment']             = $_POST['comment'];
		 echo $input['reservationitems_id'];

         if (count($dates_to_add)) {
            $input['group'] = $rr->getUniqueGroupFor($reservationitems_id);
			//echo $input['group']."<br>";
         }
         foreach ($dates_to_add as $begin => $end) {
			
            $input['begin']    = $begin;
            $input['end']      = $end;
            $input['users_id'] = $_POST['users_id'];

            if (Session::haveRight("reservation", UPDATE)
                || (Session::getLoginUserID() === $input["users_id"])) {
					
               unset($rr->fields["id"]);
			   
               if ($newID = $rr->add($input)) {  // ici la condition n'est pas rempli, car le $rr->add($input) ne semble pas fonctioner
				  //echo "toto";
                  Event::log($newID, "reservation", 4, "inventory",
                           sprintf(__('%1$s adds the reservation %2$s for item %3$s'),
                                   $_SESSION["glpiname"], $newID, $reservationitems_id));
					
               } else {
				  //echo "toto";
                  $all_ok = false;
               }
            }
         }
      }
   } else {
	  //echo "toto";
      $all_ok = false;
   }
   if ($all_ok) {
	   echo "toto";
      $toadd = "";
      // Only one reservation : move to correct month
      if (count($_POST['items']) == 1) {
         $toadd  = "?reservationitems_id=$reservationitems_id";
         $toadd .= "&mois_courant=".intval($begin_month);
         $toadd .= "&annee_courante=".intval($begin_year);

      }
	  
      Html::redirect($CFG_GLPI["root_doc"] . "/front/reservation.php$toadd");  

   }

}

Le bug semble se trouver au niveau de la ligne :

if ($newID = $rr->add($input)) {

....

}

La condition n'est pas remplis, mais je n'arrive pas a comprendre pourquoi...j'ai comme l'impression que le code n'arrive pas a accéder corectement au coeur de GLPI ou quelque chose comme ca, pourtant ca fonctione très bien pour d'autre fonction du coeur...

EDIT : après verification, la fonction add() fonctionne, mais elle renvois false...

si quelqu'un a une idée...

merci d'avance,

Ildut

Last edited by ildut (2017-07-25 11:20:45)

Offline

Board footer

Powered by FluxBB