<?php
/*
Copyright (C) 2003 Loc Dayot - Mairie de Pierrefitte (93)
EPNadmin - Version 0.7
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
http://epnadmin.pierrefitte93.fr/
*/
// TODO : Modifier la fonction sessions.inc.php/nbmaxparticipants()
// Modifier table_horaires.php/ligne 130-140
/* Principes de l'emprunt :
Tous les emprunts sont dans la table pret_materiel.
Demande d'emprunt (operation=4) :
1. saisie de la raison de la demande (operation=4)
2. prparation de la demande d'emprunt avec etat=prpar (operation=42)
3. validation (envoi de courriel) (operation=44)
Accord/refus du pret (operation=?) :
1. Visualisation / rception de courriel
2. Modification de la slection
3. Accord ou dsaccord
4. validation (envoi de courriel)
Retour de matriel
1. Retouver l'emprunt
2. Valider le retour de tout ou de chaque matriel
Relance
1. Retouver les emprunts en retards
2. Envoi de courriel
- liste des emprunts
- dtail d'un emprunt
- dtail des matriels
*/
require_once("header.inc.php");
if (!defined("FCT_PRETS"))
{
echo $fctnonactive;
exit;
}
require_once("constantes.inc.php"); // dfinition des constantes
//require_once("fonctions.inc.php"); // concernant des fonctions transversales inclassables
require_once("mysql.inc.php"); // concernant mysql
//require_once("sessions.inc.php"); // concernant les sessions et initiations
//require_once("usagers.inc.php"); // concernant la gestion des usagers
//require_once("reservations.inc.php"); // concernant les rservations des postes en accs individuel par des usagers
//require_once("tableaux.inc.php"); // Concernant l'affichage transpos d'un tableau
require_once("siteweb.inc.php"); // concernant les pages perso des usagers et les sites web des structures
require_once("dateheure.inc.php"); // concernant la manipulation des heures et des dates, formulaire, conversion...
require_once("structures.inc.php"); // concernant les structures
//require_once("initiations.inc.php"); // concernant les initiations et les thmes
//require_once("parcours.inc.php"); // concernant les parcours des usagers et leur positionnement
$ptitr=$sprettitre;
$titr = $sprettitrecomplet;
define("COULEUR", COULEUR_PRETS);
$datemaj="6 juillet 2003";
require("entete.inc.php");
function liste_emprunts($id_emprunteur=0, $id_preteur=0)
{
$req="SELECT DISTINCT prets.id AS id_pret FROM prets ";
$cond=" WHERE (0=0) ";
if ($id_emprunteur>0)
{
$req.=" LEFT JOIN prets_contenu ON id_pret=prets.id ";
$cond.=" AND prets.id_structure=$id_emprunteur ";
}
if ($id_preteur>0)
{
if ($id_emprunteur==0)
$req.=" LEFT JOIN prets_contenu ON id_pret=prets.id ";
$req.=" LEFT JOIN materiels ON materiels.id=prets_contenu.id_materiel
LEFT JOIN localisations ON localisations.id=materiels.id_localisation ";
$cond.=" AND localisations.id_structure=$id_preteur";
}
$req=$req.$cond." ORDER BY prets.date_retour_prevu";
$res=executeRequete($req);
echo "<table align=center border=1>
<tr><th>Emprunteur</th><th>Etat</th><th>Date de la demande<br>Date d'emprunt</th>
<th>Date de retour</th><th>Commentaire</th><th>Contenu</th></tr>\n";
while ($pret=fetch_object($res))
affiche_emprunt($pret->id_pret);
echo "</table>\n";
}
function affiche_emprunt($id_pret)
{
global $id_structure, $PHP_SELF;
$req="SELECT * FROM prets WHERE id=$id_pret";
$res = executeRequete($req);
$pret=fetch_object($res);
echo "<tr>\n";
echo "<td>";
echo structure($pret->id_structure);
echo "</td>\n";
echo "<td>";
echo $pret->etat;
echo "<form action=\"$PHP_SELF\" method=\"POST\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"operation\" value=\"9\">
<input type=\"hidden\" name=\"id_pret\" value=\"$id_pret\">
<input type=\"submit\" value=\"Dtails / Traitement du prt\">
</form>";
echo "</td>\n";
echo "<td>".datetodate($pret->date_demande)."<br>\n";
echo datetodate($pret->date_emprunt)."</td>\n";
echo "<td";
if ($pret->date_retour_effectif<="1")
if (date("Y-m-d", strtotime($pret->date_retour_prevu))<=date("Y-m-d", strtotime("now")))
echo " bgcolor=\"red\"";
else
echo " bgcolor=\"orange\"";
echo ">";
if ($pret->date_retour_effectif>"1")
echo datetodate($pret->date_retour_effectif);
else
echo "prvu le ".datetodate($pret->date_retour_prevu);
echo "</td>\n";
echo "<td>$pret->commentaires</td>\n";
echo "<td>";
echo recap_emprunt($id_pret);
echo "</td></tr>\n";
}
function recap_emprunt($id_pret)
{
$req1 = "SELECT COUNT(*) AS nb, type FROM prets_contenu
LEFT JOIN materiels ON id_materiel=materiels.id
WHERE id_pret=$id_pret AND id_materiel>0
GROUP BY type";
$res1=executeRequete($req1);
$sconf="";
while ($emprunt=fetch_object($res1))
$sconf.="$emprunt->nb : $emprunt->type<br />\n";
$req1 = "SELECT COUNT(*) AS nb, type FROM prets_contenu
LEFT JOIN logiciels ON id_logiciel=logiciels.id
WHERE id_pret=$id_pret AND id_logiciel>0
GROUP BY type";
$res1=executeRequete($req1);
while ($emprunt=fetch_object($res1))
$sconf.="$emprunt->nb : $emprunt->type<br />\n";
if (strchr(structures_emprunt($id_pret), ","))
$sconf.="<font color=\"red\">Attention, l'emprunt est prpar auprs de deux structures diffrentes</font>";
free_result($res1);
return $sconf;
}
// Renvoi la liste des structures qui sont demand le matriel
function structures_emprunt($id_pret)
{
$req="SELECT DISTINCT IFNULL(logiciels.id_structure,0)+IFNULL(localisations.id_structure,0) AS id_stru
FROM prets
LEFT JOIN prets_contenu ON prets.id=id_pret
LEFT JOIN materiels ON prets_contenu.id_materiel=materiels.id
LEFT JOIN localisations ON localisations.id=materiels.id_localisation
LEFT JOIN logiciels ON logiciels.id=prets_contenu.id_logiciel
WHERE prets.id=$id_pret";
$res=executeRequete($req);
$stru="";
while ($prepare=fetch_object($res))
{
if ($prepare->id_stru>0)
$stru .= ($stru=="" ? "" : ",").$prepare->id_stru;
}
free_result($res);
return $stru;
} // fct structures_emprunt
function affiche_details_emprunt($id_pret, $formulaire=TRUE)
{
global $id_structure, $PHP_SELF,
$stype,$sLocalisation,$sAppellation,$sCommentaire,$sActions;
$req="SELECT * FROM prets WHERE id=$id_pret";
$res = executeRequete($req);
$pret=fetch_object($res);
echo "<table border=1 align=center>";
echo "<tr><td>Emprunteur (demandeur) :</td>";
echo "<td>";
echo structure($pret->id_structure);
echo "</td></tr>\n";
echo "<tr><td>Etat : </td><td><b>$pret->etat</b></td></tr>\n";
echo "<tr><td>Date de la demande :</td><td>".datetodate($pret->date_demande)."</td></tr>\n";
echo "<tr><td>Date de l'emprunt :</td><td>".datetodate($pret->date_emprunt)."</td></tr>\n";
// Date de retour. Suivant que c'est dj retourn ou non...
echo "<tr><td";
if ($pret->date_retour_effectif<="1")
if (date("Y-m-d", strtotime($pret->date_retour_prevu))<=date("Y-m-d", strtotime("now")))
echo " bgcolor=\"red\"";
else
echo " bgcolor=\"orange\"";
echo ">Date de retour ";
if ($pret->date_retour_effectif>"1")
echo "effectif :</td><td>".
datetodate($pret->date_retour_effectif);
else
echo "prvu :</td><td>".datetodate($pret->date_retour_prevu);
echo "</td></tr>\n";
echo "<tr><td>Commentaire :</td><td>".nl2br($pret->commentaires)."</td></tr>\n";
//echo "</table>";
if ($formulaire)
{
echo "<tr><td align=center colspan=2>";
if ($id_structure==$pret->id_structure && PRETS_MOI>="w")
{ // le visiteur est l'emprunteur
if ($pret->etat=='prpar')
echo "<form action=\"$PHP_SELF\" method=\"POST\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"operation\" value=\"44\">
<input type=\"hidden\" name=\"id_pret\" value=\"$id_pret\">
<input type=\"submit\" value=\"En cours de prparation\">
</form>";
elseif ($pret->etat=='demand')
echo "<form action=\"$PHP_SELF\" method=\"POST\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"operation\" value=\"8\">
<input type=\"hidden\" name=\"id_pret\" value=\"$id_pret\">
<input type=\"submit\" value=\"Annuler la demande\">
</form>";
} // if $id_structure==emprunteur
elseif ($id_structure==structures_emprunt($id_pret))
{ // le visiteur est la structure qui prte
if ($pret->etat=="demand")
{
echo "<form action=\"$PHP_SELF\" method=\"POST\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"operation\" value=\"6\">
<input type=\"hidden\" name=\"id_pret\" value=\"$id_pret\">
<input type=\"submit\" value=\"Accorder le prt\">
</form> ";
echo "<form action=\"$PHP_SELF\" method=\"POST\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"operation\" value=\"7\">
<input type=\"hidden\" name=\"id_pret\" value=\"$id_pret\">
<input type=\"submit\" value=\"Refuser le prt\">
</form>";
}
elseif (($pret->etat=='prt') && ($pret->date_retour_effectif<="1"))
echo "<form action=\"$PHP_SELF\" method=\"POST\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"operation\" value=\"5\">
<input type=\"hidden\" name=\"id_pret\" value=\"$id_pret\">
<input type=\"submit\" value=\"Retour de prt\">
</form>";
} // if $id_structure==prteur ou sollicit
echo "</td></tr>";
} // if $formulaire
echo "</table>\n";
$req = "SELECT * FROM prets_contenu
LEFT JOIN materiels ON prets_contenu.id_materiel=materiels.id
WHERE id_pret=$id_pret
ORDER BY type";
$res=executeRequete($req);
// Ligne d'entte
echo "<table border=1 align=center>
<tr><th>$stype</th><th>$sLocalisation</th><th>$sAppellation</th>
<th>$sCommentaire</th><th>$sActions</th></tr>\n";
while ($contenu = fetch_object($res))
{
echo "<tr>\n";
if ($type!=$contenu->type)
{
echo "<th>$contenu->type</th>\n";
$type=$contenu->type;
}
else
echo "<td></td>\n";
echo "<td>".localisation($contenu->id_localisation)."</td>
<td><b>$contenu->materiel</b>
<a href=\"materiels.php?id_materiel=$contenu->id_materiel\" target=\"details\">$info</a>
($contenu->specificite)</td><td>$contenu->description</td>";
echo "<td>$contenu->etat</td>";
echo "</tr>\n";
}
echo "</table>\n";
}
// --------------------------------------------------------------------------- //
//debug("operation=$operation id_pret=$id_pret");
// Dbut de la page
if (PRETS<="~")
echo $pasledroit;
else
switch ($operation)
{
case 1 : // matriel emprunt (ou en demande) de ma structure
{
echo cadre_debut("Matriel prt d'autres structures");
if (!$id_stru || PRETS_AUTRES<"r")
$id_stru=$id_structure;
liste_emprunts(0, $id_stru);
echo "<form action=\"$PHP_SELF\" method=\"POST\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"operation\" value=\"4\">
<input type=\"hidden\" name=\"id_pret\" value=\"$id_pret\">
<input type=\"submit\" value=\"Nouvelle demande d'emprunt\">
</form>"; //'
echo cadre_fin();
break;
}
case 2 : // matriel emprunt par ma structure
{
echo cadre_debut("Matriel emprunt d'autres structures");
if (!$id_stru || PRETS_AUTRES<"r")
$id_stru=$id_structure;
liste_emprunts($id_stru, 0);
echo "<form action=\"$PHP_SELF\" method=\"POST\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"operation\" value=\"4\">
<input type=\"hidden\" name=\"id_pret\" value=\"$id_pret\">
<input type=\"submit\" value=\"Nouvelle demande d'emprunt\">
</form>\n"; //'
echo cadre_fin();
break;
}
case 3 : // tout le matriel emprunt
{
echo cadre_debut("Matriel prt d'autres structures");
if (! $id_stru) $id_stru=$id_structure;
liste_emprunts(0, 0);
echo cadre_fin();
break;
}
case 41 : // Enregistrement de l'expression de la demande
{
// Vrification des donnes
// Conversion des dates
if (!$date_demande)
$date_demande="$date_demandeannee-$date_demandemois-$date_demandejour";
if (!$date_emprunt)
$date_emprunt="$date_empruntannee-$date_empruntmois-$date_empruntjour";
if (!$date_retour_prevu)
$date_retour_prevu="$date_retour_prevuannee-$date_retour_prevumois-$date_retour_prevujour";
if (!$date_retour_effectif)
$date_retour_effectif="$date_retour_effectifannee-$date_retour_effectifmois-$date_retour_effectifjour";
// un insert ou un update faire
if ($id_pret)
{ // Il s'agit d'une modification
$reqi="UPDATE prets SET id_structure=\"$id_stru\",
date_demande=\"$date_demande\", date_emprunt=\"$date_emprunt\",
date_retour_prevu=\"$date_retour_prevu\", date_retour_effectif=\"$date_retour_effectif\",
etat=\"$etat\",
commentaires=\"$commentaires\"
WHERE id=\"$id_pret\" ";
}
else
{ // Il s'agit d'une cration ?
{ // Regarder s'il n'y a pas une demande en prparation
$req0="SELECT id FROM prets WHERE id_structure=$id_stru AND etat=\"prpar\"";
$res0=executeRequete($req0);
if (fetch_object($res0))
{
echo "<p>Une demande est en cours de prparation,
impossible d'effectuer une nouvelle demande.</p>\n";
break;
}
}
$reqi="INSERT INTO prets (id_structure, date_demande, date_emprunt, date_retour_prevu,
etat, commentaires) VALUES
(\"$id_stru\", \"$date_demande\", \"$date_emprunt\", \"$date_retour_prevu\",
\"$etat\", \"$commentaires\")";
}
$resi=executeRequete($reqi);
if (! $id_pret)
{ // Retrouver le dernier numro insr
$id_pret=insert_id();
}
} // pas de break, on continue en proposant des choix...
case 44 : // On vient de terminer la slection...
{
echo cadre_debut("Demande d'emprunt de matriel");
echo "<table align=center>";
// Faire le bilan des matriels en prparation d'emprunt
$sconf=recap_emprunt($id_pret);
if ($sconf!="")
{ // Il y a du matriel en prparation pour tre emprunt
$sconf=" <tr><td align=center colspan=2>$sconf</td></tr>";
echo $sconf;
}
echo "<tr><td align=right>
<form action=\"$PHP_SELF\" method=\"POST\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"operation\" value=\"42\">
<input type=\"hidden\" name=\"id_pret\" value=\"$id_pret\">";
if ($sconf=="")
echo "<input type=\"submit\" value=\"Slectionner le matriel demand\">";
else
echo "<input type=\"submit\" value=\"Modifier la slection du matriel demand\">";
echo "</form></td>";
echo "<td align=left>";
if ($sconf!="")
echo "<form action=\"$PHP_SELF\" method=\"POST\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"operation\" value=\"45\">
<input type=\"hidden\" name=\"id_pret\" value=\"$id_pret\">
<input type=\"submit\" value=\"Confirmer la demande d'emprunt par son envoi\">
</form>"; //'
echo "</td></tr>";
echo "<tr><td> </td></tr>\n";
echo "<tr><td align=right>";
// Modifier l'explication de la demande
echo "<form action=\"$PHP_SELF\" method=\"POST\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"operation\" value=\"4\">
<input type=\"hidden\" name=\"id_pret\" value=\"$id_pret\">
<input type=\"submit\" value=\"Modifier l'expression de la demande\">
</form></td>"; // '
// Supprimer compltementla demande
echo "<td align=left><form action=\"$PHP_SELF\" method=\"POST\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"operation\" value=\"46\">
<input type=\"hidden\" name=\"id_pret\" value=\"$id_pret\">
<input type=\"submit\" value=\"Supprimer la demande\">
</form>";
echo "</td></tr></table>\n";
echo cadre_fin();
break;
}
case 4 : // Expression de la demande d'emprunt
{
// Regarder les droits
if (PRETS_MOI<="r")
{
echo $pasledroit;
break;
}
if (PRETS_AUTRES<="r" || !$id_stru)
$id_stru=$id_structure;
if (! $id_pret)
{ // Regarder s'il n'y a pas une demande en prparation
$req0="SELECT id FROM prets WHERE id_structure=$id_stru AND etat=\"prpar\"";
$res0=executeRequete($req0);
if ($pret=fetch_object($res0))
{
echo "<p>Une demande est en cours de prparation, on la reprend.</p>\n";
$id_pret=$pret->id;
}
}
echo cadre_debut("Demande d'emprunt de matriel");
echo "<table border=1 align=center>\n";
echo " <form action=\"$PHP_SELF\" method=\"POST\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"operation\" value=\"41\">\n";
if ($id_pret)
{
$req="SELECT * FROM prets WHERE id=$id_pret";
$res=executeRequete($req);
$pret=fetch_object($res);
echo "<input type=\"hidden\" name=\"id_pret\" value=\"$id_pret\">\n";
}
echo "<tr><td>Emprunteur</td><td>";
if (! $pret->id_structure)
$pret->id_structure=$id_structure;
if (PRETS_AUTRES>="w")
echo choix_structure($pret->id_structure, "id_stru", "");
else
{
echo structure($pret->id_structure);
echo "<input type=\"hidden\" name=\"id_stru\" value=\"$pret->id_structure\">\n";
}
echo "</td></tr>
<tr><td>Date de la demande</td><td>";
if (! $pret->date_demande)
$pret->date_demande=date("Y-m-d");
echo datetodate($pret->date_demande);
echo "<input type=\"hidden\" name=\"date_demande\" value=\"$pret->date_demande\">\n";
echo "</td></tr>
<tr><td>Date souhaite de l'emprunt</td><td>";
if (! $pret->date_emprunt)
$pret->date_emprunt=date("Y-m-d", strtotime("+ 2 weeks"));
echo choixdate($pret->date_emprunt, "date_emprunt");
echo "</td></tr>
<tr><td>Date de retour prvu</td><td>";
if (! $pret->date_retour_prevu)
$pret->date_retour_prevu=date("Y-m-d", strtotime("+ 3 weeks"));
echo choixdate($pret->date_retour_prevu, "date_retour_prevu");
if (! $pret->etat)
$pret->etat="prpar";
echo "<input type=\"hidden\" name=\"etat\" value=\"$pret->etat\">\n";
echo "</td></tr>
<tr><td>Etat</td><td>$pret->etat</td></tr>
<tr><td>Raison de l'emprunt<br>Commentaires</td><td>
<textarea >".$pret->commentaires."</textarea></td></tr>\n";
echo "<tr><td colspan=2 align=center>
<input type=\"submit\" value=\"Confirmer\">
</td></tr>
</form>
</table>";
echo cadre_fin();
break;
}
case 43 : // Enregistrer le changement de slection de matriel en prparation d'emprunt.
if ($operation==43)
{
// Retrouver les valeurs dans le formulaire d'o l'on vient.
$variables=$_POST; // v 4.1.0., anciennement $HTTP_POST_VARS
while (list ($key, $val) = each ($variables))
{
//echo "$key => $val<br />\n";
// Deux noms de variables nous intressent.
// id? qui vaut ? et qui permet de savoir que le matriel tait dans le formulaire,
// ce qui permet de savoir les matriels qui ont t dlctionns.
// sl? qui vaut ? si slectionn
if (substr($key,0,2)=="id")
{ // tait dans le formulaire, on le retire de la slection en prparation
$reqs="DELETE FROM prets_contenu
WHERE id_pret=$id_pret AND id_materiel=$val";
$ress=executeRequete($reqs);
}
if (substr($key,0,2)=="sl")
{ // est slectionn, on l'ajoute la slection en prparation
$reqs="INSERT INTO prets_contenu (id_pret, id_materiel, etat)
VALUES ($id_pret, $val, 'prpar')";
$ress=executeRequete($reqs);
}
}
}
case 42 : // Faire une demande d'emprunt
{
echo cadre_debut($spretselectionpourdemande);
// Faire le bilan des matriels en prparation d'emprunt
$sconf=recap_emprunt($id_pret);
if ($sconf!="")
// Il y a du matriel en prparation pour tre emprunt
$sconf="<table border=1 align=center>
<tr><td>$sconf</td>
<td valign=middle align=center>
<form action=\"$PHP_SELF\" method=\"POST\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"operation\" value=\"44\">
<input type=\"hidden\" name=\"id_pret\" value=\"$id_pret\">
<input type=\"submit\" value=\"Terminer/confirmer la demande d'emprunt\">
</form>
</td></tr></table>"; //'
echo $sconf;
// Prsenter la liste des matriels disponibles
// Construction de la requete
$req = "SELECT *, materiels.id AS id, materiels.description AS description FROM materiels ";
$req.=" LEFT JOIN localisations ON localisations.id=id_localisation
LEFT JOIN structures ON structures.id=localisations.id_structure ";
$req.=" WHERE (pret_possible='oui') ";
if (PARC_AUTRES<"r")
$req.=" AND id_structure=\"$id_structure\" ";
if ($lieuv>"0" && $lieuv!="*")
$req.=" AND ((CONCAT(\"V\",structures.ville)=\"$lieuv\") OR
(CONCAT(\"S\",localisations.id_structure)=\"$lieuv\") OR
(CONCAT(\"L\",localisations.id)=\"$lieuv\")) ";
if ($type>"" && $type!="*")
$req.=" AND type=\"$type\"";
$req.=" ORDER BY type, id_localisation, materiel, localisations.description";
$res = executeRequete($req);
// Ligne d'entte
echo "<table border=1 align=center>
<tr><th>$stype";
echo "</th><th>$sLocalisation</th><th>$sAppellation</th><th>$sCommentaire</th><th>$sActions";
echo "</th></tr>\n\n";
// Ligne pour les critres de slection.
echo "<form action=\"$PHP_SELF\" method=\"POST\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"operation\" value=\"$operation\">
<input type=\"hidden\" name=\"id_pret\" value=\"$id_pret\">
<tr><td>";
echo " <select name=\"type\"><option value=\"*\">Tous</option>";
$reqtype="SELECT type FROM materiels WHERE pret_possible='oui' GROUP BY type ORDER BY type";
$restype=executeRequete($reqtype);
while ($enrtype=fetch_object($restype))
{
echo "<option value=\"$enrtype->type\"";
if ($enrtype->type==$type) echo " selected";
echo ">$enrtype->type</option>\n";
}
echo "</select>\n";
echo "</td><td>";
choix_lieu($lieuv, "lieuv");
echo "</td><td></td><td></td><td><input type=\"submit\" value=\"$srechercher\">";
echo "</td></tr>\n</form>\n";
// Dbut du formulaire de slection de matriel pour l'emprunt
echo "<form action=\"$PHP_SELF\" method=\"POST\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"operation\" value=\"43\">
<input type=\"hidden\" name=\"id_pret\" value=\"$id_pret\">\n";
$type="";
$nbitems=0;
while ($log = fetch_object($res))
{
echo "<tr>\n";
if ($type!=$log->type)
{
echo "<th>$log->type</th>\n";
$type=$log->type;
}
else
echo "<td></td>\n";
echo "<td>".localisation($log->id_localisation)."</td>
<td><b>$log->materiel</b>
<a href=\"materiels.php?id_materiel=$log->id\" target=\"details\">$info</a>
($log->specificite)</td>
<td>$log->description</td>
<td nowrap>";
// On regarde si c'est un matriel slectionn ou non.
$req1 = "SELECT * FROM prets_contenu
WHERE id_pret=$id_pret
AND id_materiel=$log->id";
$res1=executeRequete($req1);
if (fetch_object($res1))
{
echo "<input type=\"hidden\" name=\"id$log->id\" value=\"$log->id\">";
echo "<input type='checkbox' name='sl$log->id' value='$log->id' checked>";
$nbitems++;
}
else
echo "<input type='checkbox' name='sl$log->id' value='$log->id'>";
$nbitems++;
echo "</td></tr>\n";
}
echo "<tr><td colspan=4></td>
<td><input type=\"submit\" value=\"Confirmer la slection\"><br>
<input type=\"button\" value=\"Tout dslectionner\" onClick=\"deselect(this.form)\"><br>
<input type=\"reset\" value=\"Revenir l'tat initial\">
</td></tr>\n";
echo "</form>";
echo "</table>\n";
// Fonction en javascript permettant de dslectionner les cases coches prsentes sur l'cran.
echo "<script type=\"text/javascript\" language=\"javascript\">
<!--
function deselect(formulaire)
{
var i;
for (i=1; i<=$nbitems; i++)
if (formulaire.elements[i].checked == true)
formulaire.elements[i].checked = false;
}
// -->
</script>\n";
// On rappelle le tableau rcapitulatif de l'emprunt en prparation.
echo $sconf;
echo cadre_fin();
break;
}
case 45 : // Confirmation de la demande d'emprunt
{
// Lecture de la demande initiale
$reqpretinitial="SELECT * FROM prets WHERE id=$id_pret";
$respretinitial=executeRequete($reqpretinitial);
$pretinitial=fetch_object($respretinitial);
free_result($respretinitial);
// Regarder si la demande doit tre faite une ou plusieures structures
$apreteur=explode(",", structures_emprunt($id_pret));
$n=0;
while ($id_preteur = $apreteur[$n++])
{
// Attention, il peu y avoir plusieurs prteurs, on doit dissosier les demandes...
// C'est pas de la tarte.
// Ide : recopier la demande pour chaque structure prteuse,
// puis effacer la demande compositie initiale (celle qui tait en prparation)
$reqcopie="INSERT INTO prets (id_structure, date_demande, date_emprunt, date_retour_prevu, date_retour_effectif, etat, commentaires)
VALUES (\"$pretinitial->id_structure\", \"$pretinitial->date_demande\",
\"$pretinitial->date_emprunt\", \"$pretinitial->date_retour_prevu\",
\"$pretinitial->date_retour_effectif\", \"demand\", \"$pretinitial->commentaires\")";
$rescopie=executeRequete($reqcopie);
$id_copie=insert_id();
// Modifier chacun des enregistrements de prets_contenu pour lesquels $id_preteur est le prteur
// Pour le logiciel
// Apparemment, on ne peut pas faire de left join dans un update...
$reqcontenu1="SELECT id_logiciel FROM prets_contenu
LEFT JOIN logiciels ON logiciels.id=id_logiciel
WHERE (logiciels.id_structure=$id_preteur) AND (id_pret=$id_pret)";
$rescontenu1=executeRequete($reqcontenu1);
while ($contenu1=fetch_object($rescontenu1))
{
$reqcontenu="UPDATE prets_contenu
SET id_pret=$id_copie, etat=\"demand\"
WHERE (id_pret=$id_pret AND id_logiciel=$contenu1->id_logiciel)";
$rescontenu=executeRequete($reqcontenu);
}
free_result($rescontenu1);
// Pour le matriel
$reqcontenu1="SELECT id_materiel FROM prets_contenu
LEFT JOIN materiels ON materiels.id=id_materiel
LEFT JOIN localisations ON localisations.id=materiels.id_localisation
WHERE (localisations.id_structure=$id_preteur) AND (id_pret=$id_pret)";
$rescontenu1=executeRequete($reqcontenu1);
while ($contenu1=fetch_object($rescontenu1))
{
$reqcontenu="UPDATE prets_contenu
SET id_pret=$id_copie, etat=\"demand\"
WHERE (id_pret=$id_pret AND id_materiel=$contenu1->id_materiel)";
$rescontenu=executeRequete($reqcontenu);
}
free_result($rescontenu1);
}
// Dtruire le prt initial.
$reqdelete="DELETE FROM prets WHERE id=$id_pret";
$resdelete=executeRequete($reqdelete);
// Envoyer les courriels la structure qui demande et aux structures qui prte
/*
$apreteur=explode(",", structures_emprunt($id_pret));
$n=0;
while ($id_preteur = $apreteur[$n++])
{
}
*/
debug("ok, a s'est termin");
// Terminer.
break;
}
case 5 : // Retour de matriel
{
echo "<form action=\"$PHP_SELF\" method=\"POST\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"id_pret\" value=\"$id_pret\">
<input type=\"hidden\" name=\"operation\" value=\"51\">
<table align=center>
<tr><td align=center><h3>Traitement de la demande d'emprunt</h3></td></tr>
<tr><td align=center>Date de retour :";
$ret = date("Y-m-d", strtotime("now"));
choixdate($ret, "date_retour_effectif");
echo "</td></tr>\n";
$res=recherche("prets", "id", $id_pret);
$pret=fetch_object($res);
echo "<tr><td align=center>Commentaires<br />
<textarea name=\"commentaires\" cols=\"40\" rows=\"4\">$pret->commentaires</textarea>
</td></tr>\n";
echo "<tr><td align=center><input type=\"submit\" value=\"Enregistrer le retour de matriel\"></td></tr>\n";
echo "<tr><td align=center>";
affiche_details_emprunt($id_pret, FALSE);
echo "</td></tr>\n";
echo "</form>\n";
echo "</table>";
break;
}
case 51 : // Enregistrement d'un retour effectif
{
echo "<p>Le retour de matriel a bien t enregistr.</p>\n";
// Enregistrement dans la base du retour
$date_retour_effectif=$date_retour_effectifannee."-".
$date_retour_effectifmois."-".
$date_retour_effectifjour;
$req="UPDATE prets
SET date_retour_effectif=\"$date_retour_effectif\",
commentaires=\"$commentaires\"
WHERE id=$id_pret";
$res=executeRequete($req);
break;
}
case 6 : // Confirmation de prt
{
echo "<form action=\"$PHP_SELF\" method=\"POST\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"id_pret\" value=\"$id_pret\">
<input type=\"hidden\" name=\"operation\" value=\"61\">
<table align=center>
<tr><td align=center><h3>Traitement de la demande d'emprunt</h3></td></tr>
<tr><td align=center>Message ventuel l'emprunteur<br />
<textarea name=\"message\" cols=40 rows=5></textarea>
</td></tr>";
echo "<tr><td align=center><input type=\"submit\" value=\"Accorder la demande d'emprunt\"></td></tr>\n"; //'
echo "<tr><td align=center>";
affiche_details_emprunt($id_pret, FALSE);
echo "</td></tr>\n";
echo "</form>\n";
echo "</table>";
break;
}
case 61 : // Enregistrement effectif d'accord de prt
{
echo "<p>La demande de prt est accorde.</p>\n";
// Modifier les enregistrements dans prets et dans prets_contenu
$req="UPDATE prets SET etat='prt' WHERE id=$id_pret";
$res=executeRequete($req);
$req="UPDATE prets_contenu SET etat='prt' WHERE id_pret=$id_pret";
$res=executeRequete($req);
// Envoyer un courriel d'information de l'annulation
$res = recherche("prets", "id", $id_pret);
$pret = fetch_object($res);
$id_structure_proprietaire=structures_emprunt($id_pret);
$id_structure_emprunteur=$pret->id_structure;
$demandeur = structure($id_structure_emprunteur);
$proprietaire = structure($id_structure_proprietaire);
$corps = "";
$corps .= "Emprunteur : ".$demandeur."\n";
$corps .= "Propritaire : ".$proprietaire."\n";
$corps .= "Etat : $pret->etat\n";
if ($message)
$corps.="Message du propritaire : $message\n";
/*
$corps .= "Matriel : $pret->type\n";
if ($pret->materiel>"")
$corps .= $pret->materiel."\n"; */
$corps .= $pret->description."\n";
$corps .= "\n";
$corps .= "Date de la demande : ".datetodate($pret->date_demande)."\n";
$corps .= "Date d'emprunt : ".datetodate($pret->date_emprunt)."\n";
$corps .= "Date de retour prvu : ".datetodate($pret->date_retour_prevu)."\n";
$corps .= "\n";
$corps .= "Commentaires : $pret->commentaires\n";
$corps .= "\n".recap_emprunt($id_pret);
echo "<p><font size=\"-1\">".nl2br($corps)."</font></p>\n";
$ok = mail(courriel("structures", $id_structure_emprunteur).",".
courriel("structures", $id_structure_proprietaire),
"Prts : accord de la demande d'emprunt de matriel",
$corps,
"From: ".courriel("structures", $id_structure_proprietaire));
break;
}
case 7 : // Refus de prt
{
echo "<form action=\"$PHP_SELF\" method=\"POST\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"id_pret\" value=\"$id_pret\">
<input type=\"hidden\" name=\"operation\" value=\"71\">
<table align=center>
<tr><td align=center><h3>Traitement de la demande d'emprunt</h3></td></tr>
<tr><td align=center>Message ventuel l'emprunteur<br />
<textarea name=\"message\" cols=40 rows=5></textarea>
</td></tr>";
echo "<tr><td align=center><input type=\"submit\" value=\"Refuser la demande d'emprunt\"></td></tr>\n"; //'
echo "<tr><td align=center>";
affiche_details_emprunt($id_pret, FALSE);
echo "</td></tr>\n";
echo "</form>\n";
echo "</table>";
break;
}
case 71 : // Enregistrement d'un refus de pret
{
echo "<p>La demande de prt est refuse.</p>\n";
// Modifier les enregistrements dans prets et dans prets_contenu
$req="UPDATE prets SET etat='refus' WHERE id=$id_pret";
$res=executeRequete($req);
$req="UPDATE prets_contenu SET etat='refus' WHERE id_pret=$id_pret";
$res=executeRequete($req);
// Envoyer un courriel d'information de l'annulation
$res = recherche("prets", "id", $id_pret);
$pret = fetch_object($res);
$id_structure_proprietaire=structures_emprunt($id_pret);
$id_structure_emprunteur=$pret->id_structure;
$demandeur = structure($id_structure_emprunteur);
$proprietaire = structure($id_structure_proprietaire);
$corps = "";
$corps .= "Emprunteur : ".$demandeur."\n";
$corps .= "Propritaire : ".$proprietaire."\n";
$corps .= "Etat : $pret->etat\n";
if ($message)
$corps.="Message du propritaire : $message\n";
/*
$corps .= "Matriel : $pret->type\n";
if ($pret->materiel>"")
$corps .= $pret->materiel."\n"; */
$corps .= $pret->description."\n";
$corps .= "\n";
$corps .= "Date de la demande : ".datetodate($pret->date_demande)."\n";
$corps .= "Date d'emprunt : ".datetodate($pret->date_emprunt)."\n";
$corps .= "Date de retour prvu : ".datetodate($pret->date_retour_prevu)."\n";
$corps .= "\n";
$corps .= "Commentaires : $pret->commentaires\n";
$corps .= "\n".recap_emprunt($id_pret);
echo "<p><font size=\"-1\">".nl2br($corps)."</font></p>\n";
$ok = mail(courriel("structures", $id_structure_emprunteur).",".
courriel("structures", $id_structure_proprietaire),
"Prts : REFUS de la demande d'emprunt de matriel",
$corps,
"From: ".courriel("structures", $id_structure_proprietaire));
break;
}
case 8 : // Annuler ma demande d'emprunt (demande de confirmation)
{
echo "<form action=\"$PHP_SELF\" method=\"POST\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"id_pret\" value=\"$id_pret\">
<input type=\"hidden\" name=\"operation\" value=\"81\">
<table align=center>
<tr><td align=center><h3>Traitement de la demande d'emprunt.</h3></td></tr>
<tr><td align=center>Message ventuel au propritaire<br />
<textarea name=\"message\" cols=40 rows=5></textarea>
</td></tr>";
echo "<tr><td align=center><input type=\"submit\" value=\"Annuler la demande d'emprunt\"></td></tr>\n"; //'
echo "<tr><td align=center>";
affiche_details_emprunt($id_pret, FALSE);
echo "</td></tr>\n";
echo "</form>\n";
echo "</table>";
break;
}
case 81 : // Annuler vraiment la demande d'emprunt
{
echo "<p>La demande d'emprunt a t annule.</p>\n";
// Supprimer les enregistrements dans prets et dans prets_contenu
$req="DELETE FROM prets WHERE id=$id_pret";
$res=executeRequete($req);
$req="DELETE FROM prets_contenu WHERE id_pret=$id_pret";
$res=executeRequete($req);
// Envoyer un courriel d'information de l'annulation
$res = recherche("prets", "id", $id_pret);
$pret = fetch_object($res);
$id_structure_proprietaire=structures_emprunt($id_pret);
$id_structure_emprunteur=$pret->id_structure;
$demandeur = structure($id_structure_emprunteur);
$proprietaire = structure($id_structure_proprietaire);
$corps = "";
if ($message)
$corps.="Message de l'emprunteur : $message\n";
$corps .= "Emprunteur : ".$demandeur."\n";
$corps .= "Propritaire : ".$proprietaire."\n";
$corps .= "Etat : $pret->etat\n";
/*
$corps .= "Matriel : $pret->type\n";
if ($pret->materiel>"")
$corps .= $pret->materiel."\n"; */
$corps .= $pret->description."\n";
$corps .= "\n";
$corps .= "Date de la demande : ".datetodate($pret->date_demande)."\n";
$corps .= "Date d'emprunt : ".datetodate($pret->date_emprunt)."\n";
$corps .= "Date de retour prvu : ".datetodate($pret->date_retour_prevu)."\n";
$corps .= "\n";
$corps .= "Commentaires : $pret->commentaires\n";
$corps .= "\n".recap_emprunt($id_pret);
echo "<p><font size=\"-1\">".nl2br($corps)."</font></p>\n";
$ok = mail(courriel("structures", $id_structure_emprunteur).",".
courriel("structures", $id_structure_proprietaire),
"Prts : annulation de demande d'emprunt de matriel",
$corps,
"From: ".courriel("structures", $id_structure_emprunteur));
break;
}
case 9 : // Traiter une demande (le prteur traite la demande de l'emprunteur)
{
affiche_details_emprunt($id_pret, TRUE);
break;
}
default : //?
break;
} // switch
// Fin de la page
require("basdepage.inc.php");
echo "</body></html>";
require("footer.inc.php");
?>