";
$affichage = emprunteur::get_display_card($id_empr, $erreur_affichage);
} else { // else if !confirm
// il y a eu confirmation du prêt
if ($statut -> flag == $confirm) {
// ajout du prêt
// si transfert activé, faire le néçessaire en cas de forçage
if($pmb_transferts_actif) {
$transfert = new transfert();
$statut_trans=$transfert->check_pret($cb_doc,1);
}
if ($statut -> flag & HAS_RESA_GOOD) {
// archivage resa
$rqt_arch = "UPDATE resa_archive, resa SET resarc_pretee = 1 WHERE id_resa = '".$statut->id_resa."' AND resa_arc = resarc_id ";
pmb_mysql_query($rqt_arch);
$rqt_arch = "select resarc_id from resa_archive, resa WHERE id_resa = '".$statut->id_resa."' AND resa_arc = resarc_id ";
$resarc_res=pmb_mysql_query($rqt_arch);
$resarc = pmb_mysql_fetch_object($resarc_res);
$resarc_id = $resarc->resarc_id;
// suppression de la resa pour ce lecteur
del_resa($id_empr, $statut -> idnotice, $statut -> idbulletin, $statut -> expl_cb);
}
if ($statut -> flag & HAS_RESA_FALSE) {
// dévalider la resa correspondante
if ($statut->resa_cb == $statut->expl_cb) {
// la résa prioritaire avait déjà un CB identique : il suffit de la dévalider
$rqt_invalide_resa = "update resa set resa_date_debut='0000-00-00', resa_date_fin='0000-00-00', resa_cb='' where id_resa = '".$statut->id_resa."' " ;
pmb_mysql_query($rqt_invalide_resa) ;
} // sinon rien à faire, la résa était validée avec autre chose, elle le reste
// archivage resa
$rqt_arch = "UPDATE resa_archive, resa SET resarc_pretee = 2 WHERE id_resa = '".$statut->id_resa."' AND resa_arc = resarc_id ";
pmb_mysql_query($rqt_arch);
$rqt_arch = "select resarc_id from resa_archive, resa WHERE id_resa = '".$statut->id_resa."' AND resa_arc = resarc_id ";
$resarc_res=pmb_mysql_query($rqt_arch);
$resarc = pmb_mysql_fetch_object($resarc_res);
$resarc_id = $resarc->resarc_id;
del_resa($id_empr, $statut -> idnotice, $statut -> idbulletin, $statut -> expl_cb);
}
del_resa($id_empr, $statut -> idnotice, $statut -> idbulletin, $statut -> expl_cb);
add_pret($id_empr, $id_expl, $cb_doc, $resarc_id, $short_loan);
$information_loan_trust_management_not_blocking = '';
if (isset($loan_trust_management_not_blocking) && $loan_trust_management_not_blocking) {
$information_loan_trust_management_not_blocking = "" . get_loan_trust_message($statut->notice_id, $statut->bulletin_id) . ' ';
}
$information_group = "";
if($pmb_pret_groupement){
if($id_group=groupexpls::get_group_expl($cb_doc)){
// ce document appartient à un groupe
$is_doc_group=1;
$groupexpl=new groupexpl($id_group);
$information_text.= $groupexpl->get_confirm_form($cb_doc);
$information_group= $groupexpl->get_confirm_form($cb_doc);
// $statut->flag+=IS_GROUP; client ne veut pas de comfirmation
}
}
$erreur_affichage = $information_loan_trust_management_not_blocking . $information_group."
";
if ($statut->expl_comment) $erreur_affichage.= "
".$statut->expl_comment."
";
$empr = new emprunteur($id_empr, $erreur_affichage, FALSE, 1);
$affichage = $empr -> fiche;
// prise en compte du param d'envoi de ticket de prêt électronique
if ($empr_electronic_loan_ticket && $param_popup_ticket) {
electronic_ticket($id_empr, $cb_doc);
}
// prise en compte du param popup_ticket
if ($param_popup_ticket == 1) {
if(!$pmb_printer_ticket_url) {
print "";
} else {
$affichage.="";
}
}
} else {
$erreur_affichage = pret::get_display_info($titre_prete, $msg[384]);
$erreur_affichage .= pret::get_display_custom_fields($id_empr,$id_expl);
$affichage = emprunteur::get_display_card($id_empr, $erreur_affichage);
} // fin else if ($statut -> flag == $confirm)
} // fin if else !confirm
} else {
if ($statut -> flag & ALREADY_LOANED || $statut -> flag & ALREADY_BORROWED) {
if ($statut -> flag & ALREADY_LOANED) {
$erreur_affichage = pret::get_display_error($titre_prete, $msg[386]);
}
if ($statut -> flag & ALREADY_BORROWED) {
// Proposer de faire le retour et de refaire le prêt
$pret_already_borrowed_action='';
if($pmb_pret_already_borrowed) {
$pret_already_borrowed_action="
";
}
$erreur_affichage = "
$titre_prete : $msg[387]
".$pret_already_borrowed_action."
";
pret::add_alert_sound_list('critique');
}
$affichage = emprunteur::get_display_card($id_empr, $erreur_affichage);
} else {
if ($statut -> flag && ($statut -> flag & HAS_RESA_GOOD)) {
// archivage resa
$rqt_arch = "UPDATE resa_archive, resa SET resarc_pretee = 1 WHERE id_resa = '".$statut->id_resa."' AND resa_arc = resarc_id ";
pmb_mysql_query($rqt_arch);
$rqt_arch = "select resarc_id from resa_archive, resa WHERE id_resa = '".$statut->id_resa."' AND resa_arc = resarc_id ";
$resarc_res=pmb_mysql_query($rqt_arch);
$resarc = pmb_mysql_fetch_object($resarc_res);
$resarc_id = $resarc->resarc_id;
// suppression de la resa pour ce lecteur
del_resa($id_empr, $statut -> idnotice, $statut -> idbulletin, $statut -> expl_cb);
} else {
$resarc_id = 0;
}
// ajout du prêt
del_resa($id_empr, $statut -> idnotice, $statut -> idbulletin, $statut -> expl_cb);
add_pret($id_empr, $id_expl, $cb_doc,$resarc_id,$short_loan);
// mise à jour de l'affichage
$information_loan_trust_management_not_blocking = '';
if (isset($loan_trust_management_not_blocking) && $loan_trust_management_not_blocking) {
$information_loan_trust_management_not_blocking = "" . get_loan_trust_message($statut->notice_id, $statut->bulletin_id) . ' ';
}
$information_group = "";
if($pmb_pret_groupement){
if($id_group=groupexpls::get_group_expl($cb_doc)){
// ce document appartient à un groupe
$is_doc_group=1;
$groupexpl=new groupexpl($id_group);
$information_text.= $groupexpl->get_confirm_form($cb_doc);
$information_group= $groupexpl->get_confirm_form($cb_doc);
// $statut->flag+=IS_GROUP; client ne veut pas de comfirmation
}
}
// ajout du bouton d'annulation violente
$erreur_affichage = $information_loan_trust_management_not_blocking . $information_group."
";
}
}
$affichage.= emprunteur::get_display_card($id, $erreur_affichage);
}
} else {
include ('./circ/empr/empr_list.inc.php');
}
} /* fin if else ajouté par ER pour fonction annulation */
}
//Comme dans $affichage on met la fiche de l'emprunteur ($affichage = $empr -> fiche) à aucun moment !!voir_sugg!! ne peut être encore présent
if(SESSrights & ACQUISITION_AUTH){
$ori = ($id_empr ? $id_empr : $id);
$req = "select count(id_suggestion) as nb, sugg_location from suggestions, suggestions_origine where num_suggestion=id_suggestion and origine='".$ori."' and type_origine='1' ";
$res=pmb_mysql_query($req);
$btn_sug = "";
if($res && pmb_mysql_num_rows($res)){
$sug = pmb_mysql_fetch_object($res);
if($sug->nb){
$btn_sug = "sugg_location."' \" />";
}
}
$affichage = str_replace('!!voir_sugg!!',$btn_sug,$affichage);
}else{
$affichage = str_replace('!!voir_sugg!!',"",$affichage);
}
//print $erreur_affichage ;
print pmb_bidi($affichage);
function get_loan_trust_message($notice_id, $bulletin_id) {
global $pmb_loan_trust_management, $msg;
if ($notice_id || $bulletin_id) {
if ($notice_id) {
$qd = "select count(*) from exemplaires join docs_statut on idstatut=expl_statut and pret_flag=1 where expl_notice=".$notice_id;
} else if ($bulletin_id) {
$qd = "select count(*) from exemplaires join docs_statut on idstatut=expl_statut and pret_flag=1 where expl_bulletin=".$bulletin_id;
}
$rd = pmb_mysql_query($qd);
if (pmb_mysql_num_rows($rd)) {
$nd = pmb_mysql_result($rd,0,0);
$param = explode(',', $pmb_loan_trust_management);
$loan_trust_management = $param[0];
if($nd == 1) {
return sprintf(" ".$msg['loan_trust_warning_only'],$loan_trust_management);
} else {
return sprintf(" ".$msg['loan_trust_warning'],$loan_trust_management, $nd);
}
}
}
return '';
}
// <------------- check_quota --------------->
//Vérifie les quotas de prêt si activés
function check_quota($id_empr, $id_expl) {
global $msg;
global $pmb_quotas_avances, $pmb_short_loan_management, $short_loan;
$error = array();
if ($pmb_quotas_avances) {
//Initialisation des quotas pour nombre de documents prêtables
if ($pmb_short_loan_management && $short_loan) {
$qt = new quota("SHORT_LOAN_NMBR_QUOTA");
} else {
$qt = new quota("LEND_NMBR_QUOTA");
}//Tableau de passage des paramètres
$struct=array();
$struct["READER"] = $id_empr;
$struct["EXPL"] = $id_expl;
$struct["NOTI"] = exemplaire::get_expl_notice_from_id($id_expl);
$struct["BULL"] = exemplaire::get_expl_bulletin_from_id($id_expl);
//Test du quota pour l'exemplaire et l'emprunteur
if ($qt -> check_quota($struct)) {
//Si erreur, récupération du message et peut-on forcer ou non ?
$error["MESSAGE"] = $qt -> error_message;
$error["FORCE"] = $qt -> force;
} else
$error = array();
}
return $error;
}
// ajoute le prêt en table
function add_pret($id_empr, $id_expl, $cb_doc,$resarc_id=0,$short_loan=0) {
global $msg;
global $pmb_quotas_avances, $pmb_utiliser_calendrier;
global $pmb_gestion_financiere,$pmb_gestion_tarif_prets;
global $include_path,$lang;
global $deflt2docs_location ;
global $pmb_pret_date_retour_adhesion_depassee;
global $pmb_short_loan_management;
global $pmb_transferts_actif;
global $pmb_resa_planning;
$resarc_id+=0;
/* on prépare la date de début*/
$pret_date = today();
$duree_pret=0;
// calcul de la duree du pret si la date de fin est definie par les previsions
if($resarc_id && $pmb_resa_planning==1) {
$q = 'select datediff(resarc_fin,"'.$pret_date.'") from resa_archive where resarc_id ='.$resarc_id.' and resarc_resa_planning_id_resa!=0 limit 1';
$r = pmb_mysql_query($q);
if(pmb_mysql_num_rows($r)) {
$duree_pret = pmb_mysql_result($r,0,0);
}
}
if(!$duree_pret) {
/* on cherche la durée du prêt */
if ($pmb_short_loan_management && $short_loan) {
if($pmb_quotas_avances) {
//Initialisation de la classe
$qt=new quota("SHORT_LOAN_TIME_QUOTA");
$struct=array();
$struct["READER"]=$id_empr;
$struct["EXPL"]=$id_expl;
$struct["NOTI"] = exemplaire::get_expl_notice_from_id($id_expl);
$struct["BULL"] = exemplaire::get_expl_bulletin_from_id($id_expl);
$duree_pret=$qt->get_quota_value($struct);
if ($duree_pret==-1) $duree_pret=0;
} else {
$query = "SELECT short_loan_duration as duree_pret";
$query.= " FROM exemplaires, docs_type";
$query.= " WHERE expl_id='".$id_expl;
$query.= "' and idtyp_doc=expl_typdoc LIMIT 1";
$result = @ pmb_mysql_query($query) or die("can't SELECT exemplaires ".$query);
$expl_properties = pmb_mysql_fetch_object($result);
$duree_pret = $expl_properties -> duree_pret;
}
} else {
if($pmb_quotas_avances) {
//Initialisation de la classe
$qt=new quota("LEND_TIME_QUOTA");
$struct=array();
$struct["READER"]=$id_empr;
$struct["EXPL"]=$id_expl;
$struct["NOTI"] = exemplaire::get_expl_notice_from_id($id_expl);
$struct["BULL"] = exemplaire::get_expl_bulletin_from_id($id_expl);
$duree_pret=$qt->get_quota_value($struct);
if ($duree_pret==-1) $duree_pret=0;
} else {
$query = "SELECT duree_pret";
$query.= " FROM exemplaires, docs_type";
$query.= " WHERE expl_id='".$id_expl;
$query.= "' and idtyp_doc=expl_typdoc LIMIT 1";
$result = @ pmb_mysql_query($query) or die("can't SELECT exemplaires ".$query);
$expl_properties = pmb_mysql_fetch_object($result);
$duree_pret = $expl_properties -> duree_pret;
}
}
}
// calculer la date de retour prévue, tenir compte de la date de fin d'adhésion
if (!$duree_pret) {
$duree_pret='0' ;
}
if($pmb_pret_date_retour_adhesion_depassee) {
$rqt_date = "select empr_date_expiration,if(empr_date_expiration>date_add('".$pret_date."', INTERVAL '$duree_pret' DAY),0,1) as pret_depasse_adhes, date_add('".$pret_date."', INTERVAL '$duree_pret' DAY) as date_retour from empr where id_empr='".$id_empr."'";
} else {
$rqt_date = "select empr_date_expiration,if(empr_date_expiration>date_add('".$pret_date."', INTERVAL '$duree_pret' DAY),0,1) as pret_depasse_adhes, if(empr_date_expiration>date_add('".$pret_date."', INTERVAL '$duree_pret' DAY),date_add('".$pret_date."', INTERVAL '$duree_pret' DAY),empr_date_expiration) as date_retour from empr where id_empr='".$id_empr."'";
}
$resultatdate = pmb_mysql_query($rqt_date) or die(pmb_mysql_error()."
$rqt_date
");
$res = pmb_mysql_fetch_object($resultatdate) ;
$date_retour = $res->date_retour ;
$pret_depasse_adhes = $res->pret_depasse_adhes ;
$empr_date_expiration= $res->empr_date_expiration;
if ($pmb_utiliser_calendrier) {
if (($pret_depasse_adhes==0) || $pmb_pret_date_retour_adhesion_depassee) {
$rqt_date = "select date_ouverture from ouvertures where ouvert=1 and to_days(date_ouverture)>=to_days('$date_retour') and num_location=$deflt2docs_location order by date_ouverture ";
$resultatdate=pmb_mysql_query($rqt_date);
if(pmb_mysql_num_rows($resultatdate)) {
$res = pmb_mysql_fetch_object($resultatdate) ;
if ($res->date_ouverture) $date_retour=$res->date_ouverture ;
}
} else {
$rqt_date = "select date_ouverture from ouvertures where date_ouverture>=sysdate() and ouvert=1 and to_days(date_ouverture)<=to_days('$date_retour') and num_location=$deflt2docs_location order by date_ouverture DESC";
$resultatdate=pmb_mysql_query($rqt_date);
if(pmb_mysql_num_rows($resultatdate)) {
$res = pmb_mysql_fetch_object($resultatdate) ;
if ($res->date_ouverture) $date_retour=$res->date_ouverture ;
}
}
// Si la date_retour, calculée ci-dessus d'après le calendrier, dépasse l'adhésion, alors que c'est interdit,
// la date de retour doit etre le dernier jour ouvert
if(!$pmb_pret_date_retour_adhesion_depassee){
$rqt_date = "SELECT DATEDIFF('$empr_date_expiration','$date_retour')as diff";
$resultatdate=pmb_mysql_query($rqt_date);
$res=@pmb_mysql_fetch_object($resultatdate) ;
if ($res->diff<0) {
$rqt_date = "select date_ouverture from ouvertures where date_ouverture>=sysdate() and ouvert=1 and to_days(date_ouverture)<=to_days('$empr_date_expiration') and num_location=$deflt2docs_location order by date_ouverture DESC";
$resultatdate=pmb_mysql_query($rqt_date);
$res=@pmb_mysql_fetch_object($resultatdate) ;
if ($res->date_ouverture) $date_retour=$res->date_ouverture ;
}
}
}
// insérer le prêt
$query = "INSERT INTO pret SET ";
$query.= "pret_idempr = '".$id_empr."', ";
$query.= "pret_idexpl = '".$id_expl."', ";
$query.= "pret_date = sysdate(), ";
$query.= "pret_retour = '$date_retour', ";
$query.= "retour_initial = '$date_retour', ";
$query.= "short_loan_flag = ".(($pmb_short_loan_management && $short_loan)?"'1'":"'0'");
pmb_mysql_query($query) or die(pmb_mysql_error()." can't INSERT into pret".$query);
// insérer la trace en stat, récupérer l'id et le mettre dans la table des prêts pour la maj ultérieure
$stat_avant_pret = pret_construit_infos_stat ($id_expl) ;
$stat_avant_pret->source_device = 'gestion_standard';
$stat_id = stat_stuff ($stat_avant_pret) ;
$query = "update pret SET pret_arc_id='$stat_id' where ";
$query.= "pret_idempr = '".$id_empr."' and ";
$query.= "pret_idexpl = '".$id_expl."' ";
pmb_mysql_query($query) or die("can't update pret for stats ".$query);
audit::insert_creation (AUDIT_PRET, $stat_id) ;
//enregistrer les champs perso pret
$p_perso=new pret_parametres_perso("pret");
$p_perso->rec_fields_perso($stat_id);
if($resarc_id){
$rqt_arch = "UPDATE resa_archive SET resarc_arcpretid = $stat_id WHERE resarc_id = '".$resarc_id."' ";
pmb_mysql_query($rqt_arch);
}
$query = "update exemplaires SET ";
$query.= "last_loan_date = sysdate() ";
$query.= "where expl_id= '".$id_expl."' ";
pmb_mysql_query($query) or die("can't update last_loan_date in exemplaires : ".$query);
$query = "update exemplaires SET ";
$query.= "expl_retloc=0 ";
$query.= "where expl_id= '".$id_expl."' ";
pmb_mysql_query($query) or die("can't update expl_retloc in exemplaires : ".$query);
$query = "update empr SET ";
$query.= "last_loan_date = sysdate() ";
$query.= "where id_empr= '".$id_empr."' ";
pmb_mysql_query($query) or die("can't update last_loan_date in empr : ".$query);
$query = "delete from resa_ranger ";
$query .= "where resa_cb='".$cb_doc."'";
pmb_mysql_query($query) or die("can't delete cb_doc in resa_ranger : ".$query);
//Débit du compte lecteur si nécessaire
if (($pmb_gestion_financiere)&&($pmb_gestion_tarif_prets)) {
$tarif_pret=0;
switch ($pmb_gestion_tarif_prets) {
case 1:
//Gestion simple
$query = "SELECT tarif_pret";
$query.= " FROM exemplaires, docs_type";
$query.= " WHERE expl_id='".$id_expl;
$query.= "' and idtyp_doc=expl_typdoc LIMIT 1";
$result = @ pmb_mysql_query($query) or die("can't SELECT exemplaires ".$query);
$expl_tarif = pmb_mysql_fetch_object($result);
$tarif_pret = $expl_tarif -> tarif_pret;
break;
case 2:
//Gestion avancée
$qt_tarif=new quota("COST_LEND_QUOTA","$include_path/quotas/own/$lang/finances.xml");
$struct=array();
$struct["READER"]=$id_empr;
$struct["EXPL"]=$id_expl;
$struct["NOTI"] = exemplaire::get_expl_notice_from_id($id_expl);
$struct["BULL"] = exemplaire::get_expl_bulletin_from_id($id_expl);
$tarif_pret=$qt_tarif->get_quota_value($struct);
if ($tarif_pret==-1) $tarif_pret=0;
break;
}
$tarif_pret=$tarif_pret*1;
if ($tarif_pret) {
$compte_id=comptes::get_compte_id_from_empr($id_empr,3);
if ($compte_id) {
$cpte=new comptes($compte_id);
$explaire = new exemplaire('',$id_expl);
if($explaire->id_notice == 0 && $explaire->id_bulletin){
//C'est un exemplaire de bulletin
$bulletin = new bulletinage_display($explaire->id_bulletin);
$titre = strip_tags($bulletin->display);
} elseif($explaire->id_notice) {
$notice = new mono_display($explaire->id_notice);
$titre = strip_tags($notice->header);
}
$libelle_expl = (strlen($titre)>15)?$explaire->cb." ".$titre:$explaire->cb." ".$titre;
$cpte->record_transaction("",abs($tarif_pret),-1,sprintf($msg["finance_pret_expl"],$libelle_expl),0);
}
}
}
if ($pmb_transferts_actif){
// si transferts validé (en attente d'envoi), il faut restaurer le statut
global $PMBuserid;
$rqt = "SELECT id_transfert FROM transferts,transferts_demande
where
num_transfert=id_transfert and
etat_demande=1 and num_expl =$id_expl and etat_transfert=0 and sens_transfert=0";
$res = pmb_mysql_query( $rqt );
if (pmb_mysql_num_rows($res)){
$obj = pmb_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 = pmb_mysql_query($rqt);
$obj_data = pmb_mysql_fetch_object($res);
//on met à jour
$rqt = "UPDATE exemplaires SET expl_statut=".$obj_data->statut_origine." WHERE expl_id=".$obj_data->num_expl;
pmb_mysql_query( $rqt );
}
// cloture les demandes de transfert pour résa, refusée ou pas
// afin de générer les transfert en automatique dans le circuit classique des résa
$req=" update transferts,transferts_demande
set etat_transfert=1 ,
motif=CONCAT(motif,'. Cloture, car parti en pret (gestion $PMBuserid, $id_empr)')
where
num_transfert=id_transfert and
(etat_demande=4 or etat_demande=0 or etat_demande=1)and
etat_demande != 3 and etat_demande!=2 and etat_demande!=5 and
num_expl =$id_expl and etat_transfert=0 and sens_transfert=0
";
pmb_mysql_query($req);
}
// invalidation des résas avec ce code-barre, au cas où
// $query = "update resa SET resa_cb='' where resa_cb='".$cb_doc."' ";
// $result = @ pmb_mysql_query($query) or die("can't update resa ".$query);
/**
* Publication d'un évenement à l'enregistrement du prêt en base (pièges passés et prêt validé (quotas etc..) )
*/
$evt_handler = events_handler::get_instance();
$event = new event_loan("loan", "add_loan");
$event->set_id_loan($stat_id);
$event->set_id_empr($id_empr);
$evt_handler->send($event);
}
// efface une résa pour un emprunteur donné et réaffecte le cb éventuellement
function del_resa($id_empr, $id_notice, $id_bulletin, $cb_encours_de_pret) {
if (!$id_empr || (!$id_notice && !$id_bulletin))
return FALSE;
$id_notice += 0;
$id_bulletin += 0;
$rqt = "select resa_cb, id_resa, resa_planning_id_resa from resa where resa_idnotice='".$id_notice."' and resa_idbulletin='".$id_bulletin."' and resa_idempr='".$id_empr."' ";
$res = pmb_mysql_query($rqt);
if(pmb_mysql_num_rows($res)) {
$obj = pmb_mysql_fetch_object($res);
$cb_recup = $obj->resa_cb;
$id_resa = $obj->id_resa;
// suppression resa
$rqt = "delete from resa where id_resa='".$id_resa."' ";
pmb_mysql_query($rqt);
// suppression de la prévision associée à la resa
resa_planning::delete($obj->resa_planning_id_resa);
// réaffectation du doc éventuellement
if ($cb_recup != $cb_encours_de_pret) {
// les cb sont différents
if (!verif_cb_utilise($cb_recup)) {
// le cb qui était affecté à la résa qu'on vient de supprimer n'est pas utilisé
// on va affecter le cb_récupéré à une resa non validée
$res_affectation = affecte_cb($cb_recup) ;
if (!$res_affectation && $cb_recup) {
// 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."') ";
pmb_mysql_query($rqt);
}
}
}
}
// si on delete une resa à partir d'un prêt, on invalide la résa qui était validée avec le cb, mais on ne change pas les dates, ça sera fait par affect_cb
$rqt_invalide_resa = "update resa set resa_cb='' where resa_cb='".$cb_encours_de_pret."' " ;
pmb_mysql_query($rqt_invalide_resa) ;
// Au cas où il reste des résa invalidées par resa_cb, on leur colle les dates comme il faut...
$rqt_invalide_resa = "update resa set resa_date_debut='0000-00-00', resa_date_fin='0000-00-00' where resa_cb='' " ;
pmb_mysql_query($rqt_invalide_resa) ;
return TRUE;
}