".$msg["resa_resa_titre_add"].""; if ($delete && ($id_notice || $id_bulletin)) { // *** Traitement de la suppression d'une résa affectée $recup_id_resa = "select id_resa, resa_cb FROM resa WHERE resa_idempr=".$_SESSION["id_empr_session"]; if ($id_notice) $recup_id_resa .= " AND resa_idnotice = $id_notice"; else $recup_id_resa .= " AND resa_idbulletin = $id_bulletin"; $resrecup_id_resa = mysql_query($recup_id_resa, $dbh); $obj_recupidresa = mysql_fetch_object($resrecup_id_resa) ; $suppr_id_resa = $obj_recupidresa->id_resa ; // récup éventuelle du cb $cb_recup = $obj_recupidresa->resa_cb ; // archivage resa $rqt_arch = "UPDATE resa_archive, resa SET resarc_anulee = 1 WHERE id_resa = '".$suppr_id_resa."' AND resa_arc = resarc_id "; mysql_query($rqt_arch, $dbh); // suppression $rqt = "delete from resa where id_resa='".$suppr_id_resa."' "; $res = mysql_query ($rqt, $dbh) ; $nb_resa_suppr = mysql_affected_rows() ; if($pmb_transferts_actif){ /* // si transferts validé (en attente d'envoi), il faut restaurer le statut $rqt = "SELECT id_transfert FROM transferts,transferts_demande where num_transfert=id_transfert and etat_demande=1 and resa_trans='".$suppr_id_resa."' and etat_transfert=0"; $res = mysql_query ( $rqt ); if (mysql_num_rows($res)){ $obj = mysql_fetch_object($res); $idTrans=$obj->id_transfert; //Récupération des informations d'origine $rqt = "SELECT statut_origine, num_expl FROM transferts INNER JOIN transferts_demande ON id_transfert=num_transfert WHERE id_transfert=".$idTrans." AND sens_transfert=0"; $res = mysql_query($rqt); $obj_data = mysql_fetch_object($res); //on met à jour $rqt = "UPDATE exemplaires SET expl_statut=".$obj_data->statut_origine." WHERE expl_id=".$obj_data->num_expl; mysql_query ( $rqt ); } */ // si demande de transfert, transferts validé (donc pas parti), on cloture $req=" select expl_location, expl_cb from transferts,transferts_demande, exemplaires where num_transfert=id_transfert and etat_demande=0 and num_expl=expl_id and resa_trans='".$suppr_id_resa."' "; $res = mysql_query ( $req ); if (mysql_num_rows($res)){ $obj = mysql_fetch_object($res); // dans à traité pour effectuer le transfert $sql = "UPDATE exemplaires set expl_retloc='".$obj->expl_location."' where expl_cb='".$obj->expl_cb."' limit 1"; mysql_query($sql); } $req=" update transferts,transferts_demande set etat_transfert=1, motif=CONCAT(motif,'. Cloture, car reservation supprimee (opac)') where num_transfert=id_transfert and resa_trans='".$suppr_id_resa."' and etat_demande=0 "; mysql_query($req, $dbh); } // réaffectation du doc éventuellement if ($cb_recup) { if (!affecte_cb ($cb_recup)) { if($pmb_transferts_actif){ $rqt = "SELECT expl_location FROM transferts, transferts_demande, exemplaires WHERE id_transfert=num_transfert and num_expl=expl_id and expl_cb='".$cb_recup."' AND etat_transfert=0" ; $res = mysql_query ( $rqt ); if (mysql_num_rows($res)){ $obj_expl=mysql_fetch_object($res); // Document à traiter au lieu de à ranger, car transfert en cours? $sql = "UPDATE exemplaires set expl_retloc='".$obj_expl->expl_location."' where expl_cb='".$cb_recup."' limit 1"; mysql_query($sql); $pas_ranger=1; } } if(!$pas_ranger){ // cb non réaffecté, il faut transférer les infos de la résa dans la table des docs à ranger $rqt = "insert into resa_ranger (resa_cb) values ('".$cb_recup."') "; $res = mysql_query ($rqt, $dbh) ; } alert_mail_users_pmb($id_notice, $id_bulletin, $_SESSION["id_empr_session"], 1) ; } else alert_mail_users_pmb($id_notice, $id_bulletin, $_SESSION["id_empr_session"], 2) ; } else alert_mail_users_pmb($id_notice, $id_bulletin, $_SESSION["id_empr_session"], 1) ; if ($id_notice) { $opac_notices_depliable = 0 ; $opac_notices_format = 8 ; $ouvrage_resa = aff_notice($id_notice) ; } else { $ouvrage_resa = bulletin_affichage_reduit($id_bulletin) ; } if ($nb_resa_suppr) print "".$msg["resa_cleared"]."
"; print pmb_bidi($ouvrage_resa."
") ; } elseif (!$opac_resa_planning && ($id_notice || $id_bulletin)) { // ce n'est pas une suppression de résa et c'est une résa 'classique' if (($pmb_transferts_actif=="1")&&($transferts_choix_lieu_opac=="1")&&($idloc=="")) { //les transferts sont actifs, avec un choix du lieu de retrait et pas de choix encore fait //=> on affiche les localisations if($pmb_location_reservation) { $loc_req="SELECT idlocation, location_libelle FROM docs_location WHERE location_visible_opac=1 and idlocation in (select resa_loc from resa_loc where resa_emprloc=$empr_location) ORDER BY location_libelle "; $req_loc_list = "SELECT expl_location FROM exemplaires, docs_statut WHERE expl_notice='".$id_notice."' and expl_statut=idstatut and transfert_flag=1 and statut_allow_resa=1 AND expl_bulletin='".$id_bulletin."' and expl_location in (select resa_loc from resa_loc where resa_emprloc=$empr_location)"; } else { $loc_req="SELECT idlocation, location_libelle FROM docs_location WHERE location_visible_opac=1 ORDER BY location_libelle"; $req_loc_list = "SELECT expl_location FROM exemplaires, docs_statut WHERE expl_notice='".$id_notice."' and expl_statut=idstatut and transfert_flag=1 and statut_allow_resa=1 AND expl_bulletin='".$id_bulletin."' "; } $loc_list=array(); $flag_transferable=0; $res_loc_list = mysql_query($req_loc_list); if(mysql_num_rows($res_loc_list)){ while ($r = mysql_fetch_object($res_loc_list)){ $loc_list[]=$r->expl_location; // au moins un expl transférable $flag_transferable=1; } } $res = mysql_query($loc_req);$tmpHtml = "
"; $tmpHtml .= $msg["reservation_selection_localisation"]."


"; echo $tmpHtml; } else { // test au cas où tentative de passer une résa hors URL de résa autorisée... $requete_resa = "SELECT count(1) FROM resa WHERE resa_idnotice='$id_notice' and resa_idbulletin='$id_bulletin'"; $nb_resa_encours = mysql_result(mysql_query($requete_resa,$dbh), 0, 0) ; if ($opac_max_resa && $nb_resa_encours>=$opac_max_resa) { $id_notice = 0; $id_bulletin = 0 ; } if ($id_notice || $id_bulletin) { // c'est une pose de résa if ($id_notice) { $opac_notices_depliable = 0 ; $liens_opac = array() ; $ouvrage_resa = aff_notice($id_notice, 1) ; } else { $ouvrage_resa = bulletin_affichage_reduit($id_bulletin,1) ; } $message_resa = "" ; $resa_check = check_statut($id_notice, $id_bulletin) ; $already = allready_loaned($id_notice, $id_bulletin, $_SESSION["id_empr_session"]) ; if ($resa_check==1 && !$already) { // document sélectionné -> création de la réservation $res_resa_OK = check_quota_resa ($_SESSION["id_empr_session"], $id_notice, $id_bulletin) ; if ($res_resa_OK['ERROR']) { $message_resa = $msg["resa_failed"]." : ".$res_resa_OK['MESSAGE'] ; } else { $requete2 = "SELECT COUNT(1) FROM resa WHERE resa_idempr=".$_SESSION["id_empr_session"]." AND resa_idnotice='".$id_notice."' and resa_idbulletin='".$id_bulletin."' "; $result2 = @mysql_query($requete2, $dbh); $nb = mysql_result($result2,0,0); if ($nb) { // on ne peut pas réserver deux fois un même ouvrage $message_resa = $msg["resa_doc_deja_reserve"]." "; } else { $has_expl=1; if($pmb_location_reservation) { $rqt = "SELECT expl_id FROM exemplaires WHERE expl_notice='".$id_notice."' AND expl_bulletin='".$id_bulletin."' and expl_location in (select resa_loc from resa_loc where resa_emprloc=$empr_location)"; $res_expl = mysql_query ($rqt, $dbh); $has_expl=0; if (mysql_num_rows($res_expl)) { while(($obj_expl=mysql_fetch_object($res_expl))) { if(reservation::check_expl_reservable($obj_expl->expl_id)) { // cette localisation possède un exemplaire pouvant répondre à sa demande de réservation $has_expl=1; } } } } if($has_expl) { if (($pmb_transferts_actif=="1")&&($transferts_choix_lieu_opac=="1")) { //les transferts sont activés et un lieu a été choisi $requete3 = "INSERT INTO resa (resa_idempr, resa_idnotice, resa_idbulletin, resa_date, resa_loc_retrait) "; $requete3 .= "VALUES ('".$_SESSION["id_empr_session"]."','$id_notice','$id_bulletin', SYSDATE(), $idloc)"; } else { $requete3 = "INSERT INTO resa (resa_idempr, resa_idnotice, resa_idbulletin, resa_date) "; $requete3 .= "VALUES ('".$_SESSION["id_empr_session"]."','$id_notice','$id_bulletin', SYSDATE())"; } $result3 = @mysql_query($requete3, $dbh); $message_resa = $msg["added_resa"]; alert_mail_users_pmb($id_notice, $id_bulletin, $_SESSION["id_empr_session"]) ; } else { $message_resa=$msg["resa_doc_no_reservable"] ; } } $id_resa_ajoutee = mysql_insert_id($dbh) ; if ($id_resa_ajoutee) { // Archivage de la résa: info lecteur et notice et nombre d'exemplaire $rqt = "SELECT * FROM empr WHERE id_empr=".$_SESSION["id_empr_session"]; $empr = mysql_fetch_object(mysql_query($rqt)); if($id_notice) { $query = "SELECT count(*) FROM exemplaires where expl_notice='$id_notice'"; }elseif($id_bulletin) { $query = "SELECT count(*) FROM exemplaires where expl_bulletin='$id_bulletin'"; } $nb_expl = mysql_result(mysql_query($query),0); $query = "INSERT INTO resa_archive SET resarc_id_empr = '".$_SESSION["id_empr_session"]."', resarc_idnotice = '".$id_notice."', resarc_idbulletin = '".$id_bulletin."', resarc_date = SYSDATE(), resarc_loc_retrait = '0', resarc_from_opac= '1', resarc_empr_cp ='".addslashes($empr->empr_cp)."', resarc_empr_ville = '".addslashes($empr->empr_ville)."', resarc_empr_prof = '".addslashes($empr->empr_prof)."', resarc_empr_year = '".$empr->empr_year."', resarc_empr_categ = '".$empr->empr_categ."', resarc_empr_codestat = '".$empr->empr_codestat ."', resarc_empr_sexe = '".$empr->empr_sexe."', resarc_empr_location = '".$empr->empr_location."', resarc_expl_nb = '$nb_expl' "; mysql_query($query, $dbh); $stat_id = mysql_insert_id($dbh); // Lier achive et résa pour suivre l'évolution de la résa $query = "update resa SET resa_arc='$stat_id' where id_resa='".$id_resa_ajoutee."'"; mysql_query($query, $dbh); $rqt_recup_ajout = "SELECT resa_idempr, resa_idnotice, resa_idbulletin, resa_date_fin, resa_cb, IF(resa_date_fin>sysdate() or resa_date_fin='0000-00-00',0,1) as perimee, date_format(resa_date_fin, '".$msg["format_date_sql"]."') as aff_date_fin FROM resa WHERE id_resa='".$id_resa_ajoutee."' " ; $res_recup_ajout = mysql_query($rqt_recup_ajout, $dbh); $resa_ajoutee = mysql_fetch_object($res_recup_ajout) ; $rang = recupere_rang($resa_ajoutee->resa_idempr, $resa_ajoutee->resa_idnotice, $resa_ajoutee->resa_idbulletin) ; if($msg["resa_rank"]) $message_resa.= " - ".sprintf($msg["resa_rank"],$rang)."
" ; else $message_resa.= "
"; if (!$resa_ajoutee->perimee) { if ($resa_ajoutee->resa_cb) $message_resa .= " ".sprintf($msg["expl_reserved_til"],$resa_ajoutee->aff_date_fin)." " ; } else $message_resa .= " ".$msg["resa_overtime"]." " ; } // fin if ($id_resa_ajoutee) } // fin else (if $res_resa_OK['ERROR']) print pmb_bidi("".$message_resa."
".$ouvrage_resa ); } else { // else if checkstatut if ($already) print pmb_bidi("".$already."
".$ouvrage_resa) ; else print pmb_bidi("".$message_resa."
".$ouvrage_resa) ; } // fin else if checkstatut } // fin if($id_notice || $id_bulletin) } } if (!$popup_resa) { // récupération des résas de l'emprunteur print "

".$msg["empr_bt_show_resa"]."

"; $requete3 = "SELECT id_resa, resa_idempr, resa_idnotice, resa_idbulletin, resa_date, resa_date_fin, resa_cb, IF(resa_date_fin>=sysdate() or resa_date_fin='0000-00-00',0,1) as perimee, date_format(resa_date_fin, '".$msg["format_date_sql"]."') as aff_date_fin FROM resa WHERE resa_idempr=".$_SESSION["id_empr_session"]; $result3 = @mysql_query($requete3, $dbh); $tableau_resa=""; if(mysql_numrows($result3) && ($msg["resa_liste_titre"] || $msg["resa_liste_rank"] || $msg["resa_liste_del"])) $tableau_resa.=""; while ($resa = mysql_fetch_array($result3)) { $message_null_resa=""; $id_resa = $resa['id_resa']; $resa_idempr = $resa['resa_idempr']; $resa_idnotice = $resa['resa_idnotice']; $resa_idbulletin = $resa['resa_idbulletin']; $resa_date = $resa['resa_date']; if ($resa_idnotice) { // affiche la notice correspondant à la réservation $requete = "SELECT * FROM notices WHERE notice_id='$resa_idnotice' "; $res = @mysql_query($requete, $dbh); $obj=mysql_fetch_object($res); $notice = new notice($obj); $titre= pmb_bidi($notice->print_resume(1,$css)); $link_del= pmb_bidi("".$msg['resa_effacer_resa'].""); } else { // c'est un bulletin donc j'affiche le nom de périodique et le nom du bulletin (date ou n°) $requete = "SELECT bulletin_id, bulletin_numero, bulletin_notice, mention_date, date_date, date_format(date_date, '".$msg["format_date_sql"]."') as aff_date_date FROM bulletins WHERE bulletin_id='$resa_idbulletin'"; $res = mysql_query($requete, $dbh); $obj = mysql_fetch_object($res) ; $notice3 = new notice($obj->bulletin_notice); $titre=pmb_bidi($notice3->print_resume(1,$css)); // affichage de la mention de date utile : mention_date si existe, sinon date_date if ($obj->mention_date) $titre.= pmb_bidi("(".$obj->mention_date.")\n"); elseif ($obj->date_date) $titre.= pmb_bidi("(".$obj->aff_date_date.")\n"); $link_del="".$msg['resa_effacer_resa'].""; } $rang = recupere_rang($resa_idempr, $resa_idnotice, $resa_idbulletin) ; $rank_texte=sprintf($msg[rank],$rang) ; if (!$resa['perimee']) { if ($resa['resa_cb']) $rank_texte.= " ".sprintf($msg["expl_reserved_til"],$resa['aff_date_fin'])." " ; else $rank_texte.= " ".$msg["resa_attente_validation"]; } else $rank_texte.= " ".$msg["resa_overtime"]; if ($parity++ % 2) $pair_impair = "even"; else $pair_impair = "odd"; $tableau_resa.=""; } $tableau_resa.="
".$msg["resa_liste_titre"]."".$msg["resa_liste_rank"]."".$msg["resa_liste_del"]."
$titre$rank_texte$link_del
"; print "$tableau_resa

".$msg["empr_resa_how_to"]."
"; } } // fin if $opac_resa /* fonction complexe à rediscuter : cas possibles : - doc en consultation sur place uniquement - doc mixed : exemplaire(s) en consultation sur place et exemplaire(s) en circulation - doc en circulation ET disponible La solution retenue : fetcher tous les exemplaires attachés à la notice et définir des flags de situation */