";
$this->expl_form=$this->get_form_retour_tpl($question_form);
$this->add_alert_sound_list('information');
return;
}else{
// En retour de document, si pas en prêt, on n'effectue plus aucun traitement (transfert, résa...)
$expl_no_checkout=0;
$query = "select * from pret where pret_idexpl=".$this->expl_id;
$res = pmb_mysql_query($query);
if (!pmb_mysql_num_rows($res) && $categ != "ret_todo" && !$piege_resa && !$action_piege){
$this->add_alert_sound_list('critique');
$expl_no_checkout=1;
}else{
if($pmb_transferts_actif == "1") {
$trans = new transfert();
$trans->est_retournable($this->expl_id);
$this->expl->expl_location_origine=$trans->location_origine;
} else {
$this->expl->expl_location_origine=$this->expl->expl_location;
}
}
$question_form = '';
if (!$expl_no_checkout && $this->expl->expl_location != $deflt_docs_location && !$piege_resa && $deflt_docs_location) {
// l'exemplaire n'appartient pas à cette localisation
if ($pmb_transferts_actif=="1" && (!isset($action_piege) || $action_piege == '')) {
// transfert actif et pas de forcage effectué
if (transfert::is_retour_exemplaire_loc_origine($this->expl_id)) {
$action_piege=0; // l'action par défaut résoud le pb
//est ce qu'on peut force le retour en local
}elseif ($transferts_retour_origine=="1" && $transferts_retour_origine_force=="0") {
//pas de forcage possible, on interdit le retour
$question_form="
";
$this->add_alert_sound_list('critique');
$this->piege=2;
}elseif($transferts_retour_action_autorise_autre == 1){
//formulaire de Quoi faire?
$question_form = $this->get_display_question('transferts_retour_action_autorise_autre');
$this->piege=1;
}else{
$action_piege=0;
$this->add_alert_sound_list('information');
}/*
}else{
$action_piege=1;
$alert_sound_list[]="information";
} */
}elseif (!$pmb_transferts_actif) {
if(!$pmb_hide_retdoc_loc_error) {
// pas de message et le retour se fait
} elseif($pmb_hide_retdoc_loc_error==1){
// Message et pas de retour
$this->expl_form="
";
} elseif($this->flag_resa_autre_site){
//Gen retour sur autre site....
// Pour l'instant on retourne au site d'origine
$param = $trans->retour_exemplaire_genere_transfert_retour($this->expl_id);
$this->message_transfert= "
";
}else {
// pas de résa on genère un retour au site d'origine
$param = $trans->retour_exemplaire_genere_transfert_retour($this->expl_id);
$this->message_transfert= "
";
}
$rqt = "UPDATE exemplaires SET expl_location=".$deflt_docs_location." WHERE expl_id=".$this->expl_id;
pmb_mysql_query( $rqt );
break;
case '3':// A traiter plus tard
if($this->expl->pret_idempr) $this->message_del_pret=$this->del_pret($source_device);
$this->piege=1;
break;
case '4':// retour sur le site d'origne, il faut nettoyer
$param = $trans->retour_exemplaire_loc_origine($this->expl_id);
if($this->expl->pret_idempr) $this->message_del_pret=$this->del_pret($source_device);
$this->calcul_resa();
break;
case '2'://issu d'une autre localisation: changer la loc, effacer les transfert
//$trans->retour_exemplaire_supprime_transfert( $this->expl_id, $param );
//change la localisation d'origine
$param = $trans->retour_exemplaire_change_localisation($this->expl_id);
$rqt = "update transferts_source SET trans_source_numloc=".$deflt_docs_location." where trans_source_numexpl=".$this->expl_id;
pmb_mysql_query( $rqt );
// modif de la section, si demandée
if($expl_section && ($expl_section != $this->expl->expl_section)){
$rqt = "UPDATE exemplaires SET expl_section=$expl_section, transfert_section_origine=$expl_section WHERE expl_id=" . $this->expl_id;
pmb_mysql_query( $rqt );
}
//
$rqt = "UPDATE exemplaires SET transfert_location_origine =".$deflt_docs_location." WHERE expl_id=" . $this->expl_id;
pmb_mysql_query( $rqt );
// pas de break; on fait le reste du traitement par défaut
default:
if($this->expl->pret_idempr) $this->message_del_pret=$this->del_pret($source_device);
$resa_id=$this->calcul_resa();
if ($this->flag_resa_is_affecte){
$this->message_resa=$this->get_display_information('resa_is_affecte');
}
if($this->flag_resa_ici) {
}elseif($this->flag_resa_origine) {
if($trans->est_retournable($this->expl_id)) {
$num_trans = $trans->retour_exemplaire_genere_transfert_retour_origine($this->expl_id);// netoyer les transferts intermédiaires
if($num_trans){
$this->message_transfert = "
";
$this->add_alert_sound_list('information');
}
} else {
// A ranger
}
} elseif($this->flag_resa_autre_site){
// si résa autre site à déja une demande de transfert, ou transfert
$req="select * from transferts, transferts_demande where num_transfert=id_transfert and resa_trans='$resa_id' and etat_transfert=0";
$r = pmb_mysql_query($req);
if (!pmb_mysql_num_rows($r)) {
$trans->memo_origine($this->expl_id);
$rqt = "UPDATE exemplaires SET expl_location=".$deflt_docs_location." WHERE expl_id=".$this->expl_id;
pmb_mysql_query( $rqt );
// cloture des transferts précédant pour ne pas qu'il se retrouve à la fois en envoi et en retour sur le site
$rqt = "update transferts,transferts_demande, exemplaires set etat_transfert=1
WHERE id_transfert=num_transfert and num_expl=expl_id and etat_transfert=0 AND expl_cb='".$this->expl_cb."' " ;
pmb_mysql_query( $rqt );
//Gen transfert sur site de la résa....
$param = $trans->transfert_pour_resa($this->expl_cb,$this->resa_loc_trans,$resa_id);
// récupération localisation exemplaire
$query = "SELECT location_libelle FROM docs_location WHERE idlocation=".$this->resa_loc_trans." LIMIT 1";
$result = pmb_mysql_query($query);
$info_loc=pmb_mysql_fetch_object($result);
if ($transferts_validation_actif) {
$message_to_display = str_replace("!!site_dest!!",$info_loc->location_libelle,$msg["transferts_circ_transfert_pour_resa"]);
if ($transferts_resa_etat_transfert == "1") {
//Modification du lien vers les envois
$message_to_display = str_replace("&sub=valid","&sub=envoi" ,$message_to_display);
}
$this->message_transfert= "
";
}
}
}else {
// Reste ici, ou genération d'un transfert
if($transferts_retour_action_defaut == 2) {
$num_trans = $trans->retour_exemplaire_genere_transfert_retour_origine($this->expl_id);
if($num_trans) {
$this->message_transfert = "
".$msg["transferts_circ_menu_titre"].":
";
if ($transferts_retour_etat_transfert) {
//Envoi direct
$this->message_transfert .= str_replace("!!source_location!!", $trans->location_libelle_origine,$msg["transferts_circ_retour_a_retourner_direct"]);
} else {
//Pas d'envoi direct
$this->message_transfert .= str_replace("!!source_location!!", $trans->location_libelle_origine,$msg["transferts_circ_retour_a_retourner"]);
}
$this->message_transfert .= "
";
$this->add_alert_sound_list('information');
}
}
}
$rqt = "UPDATE exemplaires SET expl_location=".$deflt_docs_location." WHERE expl_id=".$this->expl_id;
pmb_mysql_query( $rqt );
//vérifions s'il y a des réservations prévisionnelles sur ce document..
if ($pmb_resa_planning) {
$this->calcul_resa_planning();
if ($this->flag_resa_planning_is_affecte) {
$this->message_resa_planning = $this->get_display_information('resa_planning_is_affecte');
}
}
break;
}
}
if(!$expl_no_checkout && !$pmb_transferts_actif){
if($this->expl->pret_idempr) $this->message_del_pret=$this->del_pret($source_device);
$this->calcul_resa();
if ($this->flag_resa_is_affecte){
$this->message_resa = $this->get_display_information('resa_is_affecte');
}
if ($pmb_resa_planning) {
$this->calcul_resa_planning();
if ($this->flag_resa_planning_is_affecte) {
$this->message_resa_planning = $this->get_display_information('resa_planning_is_affecte');
}
}
}
if(!$expl_no_checkout && !$this->piege) {
if($this->flag_resa_ici && !$piege_resa) {
$this->question_resa = $this->get_display_question('resa_ici');
$this->piege_resa=1;
}elseif($this->flag_resa_ici && $piege_resa==1) {
alert_empr_resa($this->affecte_resa());
$this->message_resa = $this->get_display_information('resa_is_affecte');
} elseif($this->flag_resa_ici) {
$this->piege_resa=1;
}
}
if(!$expl_no_checkout && $this->piege || ($this->piege_resa && $piege_resa !=1)) {
// il y a des pieges, on marque comme exemplaire à problème dans la localisation qui fait le retour
$sql = "UPDATE exemplaires set expl_retloc='".$deflt_docs_location."' where expl_cb='".addslashes($this->expl_cb)."' limit 1";
} else {
// pas de pièges, ou pièges résolus, on démarque
$sql = "UPDATE exemplaires set expl_retloc=0 where expl_cb='".addslashes($this->expl_cb)."' limit 1";
}
pmb_mysql_query($sql);
if($this->expl->pret_idempr) $this->empr = new emprunteur($this->expl->pret_idempr, "", FALSE, 2);
if( $pmb_rfid_activate && $pmb_rfid_serveur_url ) {
$this->cb_tmpl = str_replace("//antivol_test//", "if(0)", $this->cb_tmpl);
}
if ($this->flag_rendu && $pmb_play_pret_sound) {
$this->add_alert_sound_list('information');
}
// Permettre de refaire le prêt suite à une tentative de prêt alors que l'exemplaire n'était pas rendu
global $id_empr_to_do_pret;
if(!($this->question_resa || $this->message_resa || $this->message_resa_planning || $this->message_transfert) && $id_empr_to_do_pret) {
$script_do_pret="
";
$this->message_resa = $script_do_pret;
}
}
// si la loc à été modifier:
if($pmb_transferts_actif ){
// pour mettre les données modifiées à jour
$this->fetch_data();
}
if($this->flag_rendu) {
$this->message_retour = $retour_ok_tpl;
} elseif($categ!="ret_todo" && !$piege_resa && !$this->piege) {
$this->message_retour = $retour_intouvable_tpl;
}
$this->expl_form=$this->get_form_retour_tpl($question_form);
}
public function get_liste_section(){
//on genere la liste des sections
$rqt = "SELECT idsection, section_libelle FROM docs_section ORDER BY section_libelle";
$res_section = pmb_mysql_query($rqt);
$liste_section = "";
return $liste_section;
}
public function calcul_resa() {
global $pmb_utiliser_calendrier;
global $deflt2docs_location,$pmb_transferts_actif,$transferts_choix_lieu_opac,$transferts_site_fixe;
global $pmb_location_reservation;
global $transferts_retour_action_resa;
// chercher si ce document a déjà validé une réservation
$rqt = "SELECT id_resa FROM resa WHERE resa_cb='".addslashes($this->expl_cb)."' ";
$res = pmb_mysql_query($rqt) ;
if (pmb_mysql_num_rows($res)) {
$obj_resa=pmb_mysql_fetch_object($res);
$this->flag_resa_is_affecte=1;
$this->id_resa=$obj_resa->id_resa;
return $obj_resa->id_resa;
}
// chercher s'il s'agit d'une notice ou d'un bulletin
$rqt = "SELECT expl_notice, expl_bulletin, expl_location FROM exemplaires WHERE expl_cb='".addslashes($this->expl_cb)."' ";
$res = pmb_mysql_query($rqt) ;
$nb=pmb_mysql_num_rows($res) ;
if (!$nb) return 0 ;
$obj=pmb_mysql_fetch_object($res) ;
$clause_trans = '';
if($pmb_transferts_actif) {
$clause_trans= " and id_resa not in (select resa_trans from transferts,transferts_demande where num_transfert=id_transfert and etat_transfert=0 and etat_demande<3) ";
}
if($pmb_location_reservation) {
$sql_loc_resa=" and resa_idempr=id_empr and empr_location=resa_emprloc and resa_loc='".$obj->expl_location."' ";
$sql_loc_resa_from=", resa_loc, empr";
} else {
$sql_loc_resa="";
$sql_loc_resa_from="";
}
// chercher le premier (par ordre de rang, donc de date de début de résa, non validé
$rqt = "SELECT id_resa, resa_idempr,resa_loc_retrait
FROM resa $sql_loc_resa_from
WHERE resa_idnotice='".$obj->expl_notice."'
AND resa_idbulletin='".$obj->expl_bulletin."'
AND resa_cb=''
AND resa_date_fin='0000-00-00'
$clause_trans
$sql_loc_resa
ORDER BY resa_date ";
$res = pmb_mysql_query($rqt) ;
if (!pmb_mysql_num_rows($res)) return 0 ; // aucune résa
$obj_resa=pmb_mysql_fetch_object($res) ;
$this->flag_resa=1;
// a verifier si cela ne dépend pas plus de la localisation des réservation
if($pmb_transferts_actif) {
$res_trans = 0;
switch ($transferts_choix_lieu_opac) {
case "1":
//retrait de la resa sur lieu choisi par le lecteur
$res_trans = $obj_resa->resa_loc_retrait;
break;
case "2":
//retrait de la resa sur lieu fixé
$res_trans = $transferts_site_fixe;
break;
case "3":
//retrait de la resa sur lieu exemplaire
$res_trans = $deflt2docs_location;
break;
default:
//retrait de la resa sur lieu lecteur
//on recupere la localisation de l'emprunteur
$rqt = "SELECT empr_location,empr_prenom, empr_nom, empr_cb FROM resa INNER JOIN empr ON resa_idempr = id_empr WHERE id_resa='".$obj_resa->id_resa."'";
$res = pmb_mysql_query($rqt);
$res_trans = pmb_mysql_result($res,0) ;
break;
}
if($res_trans==$deflt2docs_location) {
// l'exemplaire peut être retiré ici
$this->flag_resa_ici=1;
$this->id_resa_to_validate=$obj_resa->id_resa;
}elseif ($this->expl->transfert_location_origine == $res_trans) {
// la résa est retirable sur le site d'origine
$this->flag_resa_origine=1;
}else {
// résa sur autre site que l'origine et qu'ici
if(!$this->trans_aut){ // Si statut pas tranférable
$this->flag_resa=0;
return 0 ;
}
if($transferts_retour_action_resa)
$this->flag_resa_autre_site=1;
else $this->flag_resa_autre_site=0;
}
$this->resa_loc_trans=$res_trans;
}else {
$this->id_resa_to_validate=$obj_resa->id_resa;
$this->flag_resa_ici=1;
}
if($this->id_resa_to_validate) {
// calcul de la date de fin de la résa (utile pour affecte_resa())
$resa_nb_days = reservation::get_time($obj_resa->resa_idempr,$obj->expl_notice,$obj->expl_bulletin) ;
$rqt_date = "select date_add(sysdate(), INTERVAL '".$resa_nb_days."' DAY) as date_fin ";
$resultatdate = pmb_mysql_query($rqt_date);
$res = pmb_mysql_fetch_object($resultatdate) ;
$this->resa_date_fin = $res->date_fin ;
if ($pmb_utiliser_calendrier) {
$rqt_date = "select date_ouverture from ouvertures where ouvert=1 and num_location=$deflt2docs_location and to_days(date_ouverture)>=to_days('".$this->resa_date_fin."') order by date_ouverture ";
$resultatdate=pmb_mysql_query($rqt_date);
$res=@pmb_mysql_fetch_object($resultatdate) ;
if ($res->date_ouverture) $this->resa_date_fin=$res->date_ouverture ;
}
}
return $obj_resa->id_resa;
}
public function affecte_resa () {
global $deflt2docs_location;
if(!$this->id_resa_to_validate)return 0;
// mettre resa_cb à jour pour cette resa
$rqt = "update resa set resa_cb='".addslashes($this->expl_cb)."', resa_date_debut=sysdate() , resa_date_fin='".$this->resa_date_fin."', resa_loc_retrait='$deflt2docs_location' where id_resa='".$this->id_resa_to_validate."' ";
pmb_mysql_query($rqt) or die(pmb_mysql_error()." $rqt");
$this->id_resa=$this->id_resa_to_validate;
$this->id_resa_to_validate=0;
return $this->id_resa;
}
public function calcul_resa_planning() {
global $pmb_location_resa_planning;
$ids_resa_planning = array();
// chercher si ce document a des réservations plannifiées
$q = "select resa_idempr as empr, id_resa, concat(ifnull(concat(empr_nom,' '),''),empr_prenom) as nom_prenom ";
$q.= "from resa_planning left join empr on resa_idempr=id_empr ";
$q.= "where resa_idnotice = '".$this->expl->expl_notice."' ";
if ($pmb_location_resa_planning) $q.= "and empr_location='".$this->expl->expl_location."' ";
$q.= "and resa_date_fin >= curdate() ";
$q.= "and resa_remaining_qty > 0 ";
$q.= "order by resa_date_debut ";
$r = pmb_mysql_query($q);
// On compte les réservations planifiées sur ce document à des dates ultérieures
$nb_resa = pmb_mysql_num_rows($r);
if ($nb_resa > 0) {
$this->flag_resa_planning_is_affecte=1;
while ($obj_resa = pmb_mysql_fetch_object($r)) {
$ids_resa_planning[]=$obj_resa->id_resa;
}
$this->ids_resa_planning = $ids_resa_planning;
}
$this->flag_resa_planning=1;
return $ids_resa_planning;
}
public function del_pret($source_device = '', &$info_retour = array()) {
global $msg,$pmb_blocage_retard,$pmb_blocage_delai,$pmb_blocage_coef,$pmb_blocage_max,$pmb_gestion_financiere,$pmb_gestion_amende;
global $selfservice_retour_retard_msg, $selfservice_retour_blocage_msg, $selfservice_retour_amende_msg;
global $alertsound_list;
$info_retour['nb_jours_retard'] = 0;
if(!$this->expl->pret_idempr) return '';
$message = '';
//choix du mode de calcul
$loc_calendar = 0;
global $pmb_utiliser_calendrier, $pmb_utiliser_calendrier_location;
if (($pmb_utiliser_calendrier==1) && $pmb_utiliser_calendrier_location) {
$loc_calendar = $this->expl->expl_location;
}
// calcul du retard éventuel
$rqt_date = "select ((TO_DAYS(CURDATE()) - TO_DAYS('".$this->expl->pret_retour."'))) as retard ";
$resultatdate=pmb_mysql_query($rqt_date);
$resdate=pmb_mysql_fetch_object($resultatdate);
$retard = $resdate->retard;
if($retard > 0) {
//Calcul du vrai nombre de jours
$date_debut=explode("-",$this->expl->pret_retour);
$ndays=calendar::get_open_days($date_debut[2],$date_debut[1],$date_debut[0],date("d"),date("m"),date("Y"),$loc_calendar);
if ($ndays>0) {
$retard = (int)$ndays;
$message.= "
".$msg[369]." : ".$retard." ".$msg[370]."
";
$alertsound_list[]="critique";
$this->message_retard=$selfservice_retour_retard_msg." ".$msg[369]." : ".$retard." ".$msg[370];
$info_retour['nb_jours_retard'] = $ndays;
}
}
//Calcul du blocage
if ($pmb_blocage_retard) {
$date_debut=explode("-",$this->expl->pret_retour);
$ndays=calendar::get_open_days($date_debut[2],$date_debut[1],$date_debut[0],date("d"),date("m"),date("Y"),$loc_calendar);
if ($ndays>$pmb_blocage_delai) {
$ndays=$ndays*$pmb_blocage_coef;
if (($ndays>$pmb_blocage_max)&&($pmb_blocage_max!=0)) {
if ($pmb_blocage_max!=-1) {
$ndays=$pmb_blocage_max;
}
}
} else $ndays=0;
if ($ndays>0) {
//Le lecteur est-il déjà bloqué ?
$date_fin_blocage_empr = pmb_mysql_result(pmb_mysql_query("select date_fin_blocage from empr where id_empr='".$this->expl->pret_idempr."'"),0,0);
//Calcul de la date de fin
if ($pmb_blocage_max!=-1) {
$date_fin=calendar::add_days(date("d"),date("m"),date("Y"),$ndays,$loc_calendar);
} else {
$date_fin=calendar::add_days(date("d"),date("m"),date("Y"),0,$loc_calendar);
}
if ($date_fin > $date_fin_blocage_empr) {
//Mise à jour
pmb_mysql_query("update empr set date_fin_blocage='".$date_fin."' where id_empr='".$this->expl->pret_idempr."'");
$message.= "
";
$alertsound_list[]="critique";
$this->message_blocage=sprintf($selfservice_retour_blocage_msg,formatdate($date_fin_blocage_empr));
}
}
}
//Vérification des amendes
if (($pmb_gestion_financiere) && ($pmb_gestion_amende)) {
$amende=new amende($this->expl->pret_idempr);
$amende_t=$amende->get_amende($this->expl_id);
//Si il y a une amende, je la débite
if ($amende_t["valeur"]) {
$message.= pmb_bidi("
", "", $this->cb_tmpl );
$this->cb_tmpl = str_replace ( "!!message!!", $message, $this->cb_tmpl );
}
public function do_retour_selfservice($source_device = '', &$info = array()){
global $deflt_docs_location,$pmb_transferts_actif, $pmb_lecteurs_localises;
global $transferts_retour_origine,$transferts_retour_origine_force;
global $selfservice_loc_autre_todo,$selfservice_resa_ici_todo,$selfservice_resa_loc_todo;
global $selfservice_loc_autre_todo_msg,$selfservice_resa_ici_todo_msg,$selfservice_resa_loc_todo_msg;
if(!isset($loc_prolongation)) $loc_prolongation = 0;
if(!$this->expl_id) {
// l'exemplaire est inconnu
$this->status=-1;
return false;
}
if ($pmb_transferts_actif=="1") {
$trans = new transfert();
// transfert actif
if (transfert::is_retour_exemplaire_loc_origine($this->expl_id)) {
// retour sur le site d'origne, il faut nettoyer
$trans->retour_exemplaire_loc_origine($this->expl_id);
$this->expl->expl_location = $deflt_docs_location;
}
if ($this->expl->expl_location != $deflt_docs_location ) {
// l'exemplaire n'appartient pas à cette localisation
if ($transferts_retour_origine=="1" && $transferts_retour_origine_force=="0") {
//pas de forcage possible, on interdit le retour
$non_retournable=1;
}else {
// Quoi faire?
switch($selfservice_loc_autre_todo) {
case '4':// Refuser le retour
$non_retournable=1;
break;
case '1':// Accepter et Générer un transfert
$trans->retour_exemplaire_genere_transfert_retour($this->expl_id);
$non_reservable=1;
break;
case '2':// Accepter et changer la localisation
$trans->retour_exemplaire_change_localisation($this->expl_id);
break;
case '3':// Accepter sans changer la localisation
break;
default:// Accepter et sera traiter plus tard
$non_reservable=1;
$plus_tard=1;
break;
}
}
$this->message_loc= $selfservice_loc_autre_todo_msg;
if(!$non_retournable) {
if($this->expl->pret_idempr) $this->message_del_pret=$this->del_pret($source_device, $info);
if(!$non_reservable) {
$resa_id=$this->calcul_resa();
if ($this->flag_resa_is_affecte) {
// Déjà affecté: il aurai du ne pas etre en prêt
$this->message_resa= $selfservice_resa_ici_todo_msg;
}elseif($this->flag_resa_ici) {
switch($selfservice_resa_ici_todo) {
case '1':// Valider la rservation
alert_empr_resa($this->affecte_resa(),0, 1);
break;
default:// A traiter plus tard
$plus_tard=1;
break;
}
$this->message_resa=$selfservice_resa_ici_todo_msg;
}elseif($this->flag_resa_autre_site){
switch($selfservice_resa_loc_todo) {
case '1':// Valider la rservation
//Gen transfert sur site de la résa....
$trans->transfert_pour_resa($this->expl_cb,$this->resa_loc_trans,$resa_id);
break;
default:// A traiter plus tard
$plus_tard=1;
break;
}
$this->message_resa=$selfservice_resa_loc_todo_msg;
} else {
// pas de résa à gérer
}
}
}
}else {
// c'est la bonne localisation ( et transfert actif)
if($this->expl->pret_idempr) $this->message_del_pret=$this->del_pret($source_device, $info);
$this->calcul_resa();
if ($this->flag_resa_is_affecte) {
// Déjà affecté: il aurai du ne pas etre en prêt
$this->message_resa= $selfservice_resa_ici_todo_msg;
}elseif($this->flag_resa_ici) {
switch($selfservice_resa_ici_todo) {
case '1':// Valider la rservation
alert_empr_resa($this->affecte_resa(),0, 1);
break;
default:// A traiter plus tard
$plus_tard=1;
break;
}
$this->message_resa=$selfservice_resa_ici_todo_msg;
}elseif($this->flag_resa_autre_site){
switch($selfservice_resa_loc_todo) {
case '1':// Valider la rservation
//Gen transfert sur site de la résa....
$trans->transfert_pour_resa($this->expl_cb,$this->resa_loc_trans,$resa_id);
break;
default:// A traiter plus tard
$plus_tard=1;
break;
}
$this->message_resa=$selfservice_resa_loc_todo_msg;
} else {
// pas de résa à gérer
}
//Fin bonne localisation
}
//Fin transfert actif
}else {
// transfert inactif $pmb_lecteurs_localises
if ($pmb_lecteurs_localises && ($this->expl->expl_location != $deflt_docs_location) ) {
//ce n'est pas la bonne localisation
switch($selfservice_loc_autre_todo) {
case '4':// Refuser le retour
$non_retournable=1;
break;
case '3':// Accepter sans changer la localisation
break;
default:// Accepter et sera traiter plus tard
$non_reservable=1;
$plus_tard=1;
break;
}
$this->message_loc= $selfservice_loc_autre_todo_msg;
if(!$non_retournable) {
if(!$non_reservable) {
$this->calcul_resa();
if($this->flag_resa_ici || $this->flag_resa_is_affecte) {
if($selfservice_resa_ici_todo==4){
$this->message_resa=$selfservice_resa_ici_todo_msg;
$non_retournable=1;
}
}
elseif($this->flag_resa_autre_site){
if($selfservice_resa_loc_todo==4){
$this->message_resa=$selfservice_resa_loc_todo_msg;
$non_retournable=1;
}
}
if($non_retournable){
$this->status=-1;
return false;
}
if($this->expl->pret_idempr) $this->message_del_pret=$this->del_pret($source_device, $info);
if ($this->flag_resa_is_affecte){
$this->message_resa= $selfservice_resa_ici_todo_msg;
}elseif($this->flag_resa_ici) {
switch($selfservice_resa_ici_todo) {
case '1':// Valider la rservation
alert_empr_resa($this->affecte_resa(),0, 1);
break;
default:// A traiter plus tard
$plus_tard=1;
break;
}
$this->message_resa=$selfservice_resa_ici_todo_msg;
}
// Le transfert retour gère ceci? elseif($this->flag_resa_origine){}
elseif($this->flag_resa_autre_site){
switch($selfservice_resa_loc_todo) {
case '1':// Valider la rservation
alert_empr_resa($this->affecte_resa(),0, 1);
break;
default:// A traiter plus tard
$plus_tard=1;
break;
}
$this->message_resa=$selfservice_resa_loc_todo_msg;
}
}else{
if($this->expl->pret_idempr) $this->message_del_pret=$this->del_pret($source_device, $info);
}
}
}else {
// c'est une bonne localisation ou lecteur non localisé:
$this->calcul_resa();
if($this->flag_resa_ici || $this->flag_resa_is_affecte) {
$this->message_resa=$selfservice_resa_ici_todo_msg;
if($selfservice_resa_ici_todo==4){
$non_retournable=1;
}
}
elseif($this->flag_resa_autre_site){
$this->message_resa=$selfservice_resa_loc_todo_msg;
if($selfservice_resa_loc_todo==4){
$non_retournable=1;
}
}
if($non_retournable){
$this->status=-1;
return false;
}
if($this->expl->pret_idempr) $this->message_del_pret=$this->del_pret($source_device, $info);
// $this->calcul_resa();
if ($this->flag_resa_is_affecte){
$this->message_resa= $selfservice_resa_ici_todo_msg;
}elseif($this->flag_resa_ici) {
switch($selfservice_resa_ici_todo) {
case '1':// Valider la rservation
alert_empr_resa($this->affecte_resa(),0, 1);
break;
default:// A traiter plus tard
$plus_tard=1;
break;
}
$this->message_resa=$selfservice_resa_ici_todo_msg;
}
elseif($this->flag_resa_autre_site){
switch($selfservice_resa_loc_todo) {
case '1':// Valider la rservation
alert_empr_resa($this->affecte_resa(),0, 1);
break;
default:// A traiter plus tard
$plus_tard=1;
break;
}
$this->message_resa=$selfservice_resa_loc_todo_msg;
} else {
// pas de résa à gérer
}
// fin bonne loc
}
// fin transfert inactif
}
if($non_retournable){
$this->status=-1;
return false;
}
if($plus_tard) {
// il y a des pieges, on marque comme exemplaire à problème dans la localisation qui fait le retour
$sql = "UPDATE exemplaires set expl_retloc='".$deflt_docs_location."' where expl_cb='".addslashes($this->expl_cb)."' limit 1";
} else {
// pas de pièges, ou pièges résolus, on démarque
$sql = "UPDATE exemplaires set expl_retloc=0 where expl_cb='".addslashes($this->expl_cb)."' limit 1";
}
pmb_mysql_query($sql);
return true;
}
public function do_pnb_retour(){
$infos = [];
$message = $this->del_pret('pnb',$infos);
return ['message'=> $message, 'infos'=> $infos];
}
//class end
}
?>