source: pmb4.1/trunk/fuentes/pmb/circ/pret_func.inc.php @ 478

Last change on this file since 478 was 478, checked in by mabarracus, 4 years ago

copy trusty code 4.1

  • Property svn:executable set to *
File size: 36.4 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: pret_func.inc.php,v 1.54 2013-05-02 15:50:56 dgoron Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) die("no access");
8
9require_once("$class_path/emprunteur.class.php");
10require_once("$class_path/serial_display.class.php");
11require_once("$class_path/comptes.class.php");
12require_once("$class_path/amende.class.php");
13require_once("$class_path/calendar.class.php");
14require_once("$class_path/audit.class.php");
15require_once("$class_path/transfert.class.php");
16
17// effectue les opérations de retour et mise en stat
18function do_retour($stuff,$confirmed=1) {
19
20        global $dbh;
21        global $msg;
22        global $alert_sound_list,$pmb_play_pret_sound;
23        global $pmb_gestion_amende,$pmb_gestion_financiere,$pmb_blocage_retard, $pmb_blocage_max, $pmb_blocage_delai, $pmb_blocage_coef;
24        global $deflt_docs_location;
25        $erreur_affichage='';
26        if(!is_object($stuff))
27                die("erreur dans le module ./circ/retour.inc [do_retour()]. Contactez l'admin");
28
29        // récupération localisation exemplaire
30        $query = "SELECT t.tdoc_libelle as type_doc";
31        $query .= ", l.location_libelle as location";
32        $query .= ", s.section_libelle as section";
33        $query .= " FROM docs_type t";
34        $query .= ", docs_location l";
35        $query .= ", docs_section s";
36        $query .= " WHERE t.idtyp_doc=".$stuff->expl_typdoc;
37        $query .= " AND l.idlocation=".$stuff->expl_location;
38        $query .= " AND s.idsection=".$stuff->expl_section;
39        $query .= " LIMIT 1";
40
41        $result = mysql_query($query, $dbh);
42        $info_doc = mysql_fetch_object($result);
43       
44
45        print pmb_bidi("<br /><form><div class='row'><div class='left'><strong>".$stuff->libelle."</strong></div>");
46
47        // flag confirm retour
48        if (!$confirmed and $stuff->pret_idempr) {
49                print "
50                        <div class='right'>
51                        <input type='button' class='bouton'
52                                        name='confirm_ret' value='".$msg['retour_confirm']."'
53                                        onClick=\"document.location='./circ.php?categ=retour&cb_expl=".$stuff->expl_cb."'\">
54                        </div>";
55        } elseif ($stuff->pret_idempr) {
56                        print "
57                                <div class='right'>
58                                        <font color='RED'><b>$msg[retour_ok]</b></font>
59                                </div>";       
60        }
61        print "</div>";
62       
63        print pmb_bidi("<br /><b>".$stuff->expl_cb."</b> ".$info_doc->type_doc);
64        print pmb_bidi('.&nbsp;'.$info_doc->location);
65        print pmb_bidi('.&nbsp;'.$info_doc->section);
66        print pmb_bidi('.&nbsp;'.$stuff->expl_cote);
67        print "&nbsp;&nbsp;<input class='bouton' type='button' value=\"".$msg[375]."\" onClick=\"document.location='circ.php?categ=visu_ex&form_cb_expl=".$stuff->expl_cb."';\" />";
68        print "</form>";
69
70        //Champs personalisés
71        $p_perso=new parametres_perso("expl");
72        $perso_aff = "" ;
73        if (!$p_perso->no_special_fields) {
74                $perso_=$p_perso->show_fields($stuff->expl_id);
75                for ($i=0; $i<count($perso_["FIELDS"]); $i++) {
76                        $p=$perso_["FIELDS"][$i];
77                        if ($p["AFF"]) $perso_aff .="<br />".$p["TITRE"]." ".$p["AFF"];
78                }
79        }
80        if ($perso_aff) print "<div class='row'>".$perso_aff."</div>" ;
81
82
83$script_magnetique="
84<script language='javascript' type='text/javascript'>
85var requete = null;
86
87function creerRequette(){
88        if(window.XMLHttpRequest) // Firefox
89                requete = new XMLHttpRequest();
90        else if(window.ActiveXObject) // Internet Explorer
91                requete = new ActiveXObject('Microsoft.XMLHTTP');
92        else { // XMLHttpRequest non supporté par le navigateur
93                alert('Votre navigateur ne supporte pas les objets XMLHTTPRequest...');
94        return;
95        }
96}
97
98function magnetise(commande){
99        creerRequette();
100        if(netscape.security.PrivilegeManager)netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');       
101        requete.open('GET', 'http://localhost:30000/?send_value='+commande+'&command=Send', false);
102        requete.send(null);
103        if(requete.readyState != 4) alert('Requête antivol non effectuée !');
104}
105
106";
107        global $pmb_antivol;
108        if($pmb_antivol>0) {
109                if($stuff->type_antivol ==1)// c'est un support non magnétique (livre, revue...)
110                        print "$script_magnetique"."magnetise('RRR');</script>";
111                if($stuff->type_antivol ==2)//c'est un support magnétique (cassette)   
112                        print "$script_magnetique"."magnetise('SSS');</script>";
113        }
114       
115        //si le retour se passe sur un site différent de ce lui de l'exemplaire
116        global $pmb_transferts_actif;
117        $transfert_mauvais_site = false;
118       
119        if ($stuff->expl_location != $deflt_docs_location) {
120                $alert_sound_list[]="critique";
121               
122                $html_erreur_site = "<hr /><div class='erreur'>";
123               
124                //on agit pour faire l'action par defaut
125                //et que c'est un retour d'emprunt
126                if (($pmb_transferts_actif)&&($stuff->pret_idempr)) {
127                        global $transferts_retour_action_defaut;
128                        global $transferts_retour_action_autorise_autre;
129
130                        $trans = new transfert();
131                       
132                        //pour afficher le site de l'exemplaire
133                        $rqtSite = "SELECT location_libelle FROM docs_location WHERE idlocation=".$stuff->expl_location;
134                        $resSite = mysql_result(mysql_query($rqtSite),0);
135                       
136                        //si on propose une autre action
137                        if ($transferts_retour_action_autorise_autre=="1") {                   
138                                $texte_change_loc = str_replace("!!lbl_site!!", $resSite,$msg["transferts_circ_retour_lbl_change_localisation"]);
139                        }       
140                        $texte_change_loc = str_replace("!!liste_sections!!","<select onchange='enregLoc(this)'>!!liste!!</select>", $texte_change_loc);
141                       
142                        //on genere la liste des sections
143                        $rqt = "SELECT idsection, section_libelle FROM docs_section ORDER BY section_libelle";
144                        $res_section = mysql_query($rqt);
145                        $liste_section = "";
146                        while($value = mysql_fetch_object($res_section)) {
147                                $liste_section .= "<option value='".$value->idsection ."'";
148                                if ($value->idsection==$stuff->expl_section) {
149                                        $liste_section .= " selected";
150                                        $expl_section_libelle=$value->section_libelle;
151                                }       
152                                $liste_section .= ">" . $value->section_libelle . "</option>";
153                        }                                               
154
155                        $texte_change_loc = addslashes(str_replace("!!liste!!", $liste_section, $texte_change_loc));
156                       
157                        $html_erreur_site .=  "
158<form name='actionTrans'>
159<input type='hidden' name='typeTrans' value='" . $transferts_retour_action_defaut . "'>
160<input type='hidden' name='explTrans' value='" . $stuff->expl_id . "'>
161<script language='javascript'>
162msg_inf_loc = '" . $texte_change_loc . "';
163msg_bt_loc = '" . str_replace("'","\'",$msg["transferts_circ_retour_bt_retour_mauvaise_localisation"]) . "';
164msg_inf_trans = '" . str_replace("'","\'",str_replace("!!lbl_site!!", $resSite,$msg["transferts_circ_retour_lbl_transfert"])) . "';
165msg_bt_trans = '" . str_replace("'","\'",$msg["transferts_circ_retour_bt_changement_localisation"]) . "';
166
167function changeAction() {
168
169        var actionTrans = new http_request();
170        var url= './ajax.php?module=circ&categ=transferts&idexpl=' + document.actionTrans.explTrans.value + '&action=';
171                               
172        switch (document.actionTrans.typeTrans.value) {
173                case '0':
174                        //il y a eu un changement localisation
175                        //on propose un transfert
176                        if (confirm('" . addslashes($msg["transferts_circ_retour_confirm_gen_transfert"]) . "')) {
177
178                                url = url + 'gen_transfert&param=' + document.actionTrans.paramTrans.value ;
179                       
180                                if (actionTrans.request(url)) {
181                                        // Il y a une erreur. Afficher le message retourné
182                                        alert ( '" . addslashes($msg["540"]) . " : ' + actionTrans.get_text() );                       
183                                } else {
184                                        //tout c'est bien passe
185                                       
186                                        //on recupere les infos
187                                        document.actionTrans.typeTrans.value = '1';
188                                        document.actionTrans.paramTrans.value = actionTrans.get_text();
189                                       
190                                        //on change les textes
191                                        document.actionTrans.btActionTrans.value = msg_bt_trans;
192                                        document.getElementById('libInfoTransfert').innerHTML = msg_inf_trans;
193                                       
194                                }
195                       
196                        }//if confirm
197                       
198                       
199                        break;
200       
201                case '1':
202                        //il y a eu un transfert
203                        //on propose un changement de localisation
204                        if (confirm('" . addslashes($msg["transferts_circ_retour_confirm_change_loc"]) . "')) {
205
206                                url = url + 'change_loc&param=' + document.actionTrans.paramTrans.value ;
207                       
208                                if (actionTrans.request(url)) {
209                                        // Il y a une erreur. Afficher le message retourné
210                                        alert ( '" . addslashes($msg["540"]) . " : ' + actionTrans.get_text() );                       
211                                } else {
212                                        //tout c'est bien passe
213                                       
214                                        //on recupere les infos
215                                        document.actionTrans.typeTrans.value = '0';
216                                        document.actionTrans.paramTrans.value = actionTrans.get_text();
217                                       
218                                        //on change les textes
219                                        document.actionTrans.btActionTrans.value = msg_bt_loc;
220                                        document.getElementById('libInfoTransfert').innerHTML = msg_inf_loc;
221                                       
222                                }
223                       
224                        } //if confirm
225                        break;
226        } //switch
227               
228}
229
230function enregLoc(obj) {
231        val = obj.options[obj.selectedIndex].value;
232       
233        var actionTrans = new http_request();
234        var url= './ajax.php?module=circ&categ=transferts&idexpl=' + document.actionTrans.explTrans.value + '&action=change_section&param='+val;
235       
236        if (actionTrans.request(url)) {
237                // Il y a une erreur. Afficher le message retourné
238                alert ( '" . addslashes($msg["540"]) . " : ' + actionTrans.get_text() );                       
239        }
240}
241</script>";
242                        if ($stuff->resa_idempr) {
243                        // le doc en retour peut servir à valider une résa suivante
244                                if (!verif_cb_utilise ($stuff->expl_cb)) {
245                                        $affect = affecte_cb ($stuff->expl_cb) ;
246                                }
247                        }
248                        if(!$affect) {
249                                switch($transferts_retour_action_defaut) {
250                                        case "0":
251                                                //change la localisation d'origine
252                                                $param = $trans->retour_exemplaire_change_localisation($stuff->expl_id);
253                                                //le message a l'ecran
254                                                $html_erreur_site .= "<div id='libInfoTransfert'>" . str_replace("!!lbl_site!!", $resSite,$msg["transferts_circ_retour_lbl_change_localisation"]) . "</div>";
255                                                if ($transferts_retour_action_autorise_autre=="1") {
256                                                        //on propose de générer le transfert
257                                                        $html_erreur_site .= "&nbsp;<input class='bouton' name='btActionTrans' type='button' value=\"".$msg["transferts_circ_retour_bt_retour_mauvaise_localisation"]."\" ".
258                                                                        " onclick=\"changeAction();\"".
259                                                                        ">";
260                                                }
261                                                break;
262               
263                                        case "1":
264                                                //genere le transfert automatique de l'exemplaire
265                                                $param = $trans->retour_exemplaire_genere_transfert_retour($stuff->expl_id);
266                                                //le message a l'ecran
267                                                $html_erreur_site .= "<div id='libInfoTransfert'>" . $msg["transferts_circ_retour_lbl_transfert"] . "</div>";
268                                                if ($transferts_retour_action_autorise_autre=="1") {
269                                                        //on propose de changer la localisation
270                                                        $html_erreur_site .= "&nbsp;<input class='bouton' name='btActionTrans' type='button' value=\"".$msg["transferts_circ_retour_bt_changement_localisation"]."\" ".
271                                                                        " onclick=\"changeAction();\"".
272                                                                        ">";
273                                                }
274                                                break;
275               
276                                } //switch
277                        }
278                        if ($transferts_retour_action_autorise_autre=="1")
279                                $html_erreur_site .=  "<input type='hidden' name='paramTrans' value='" . $param . "'></form>";
280                               
281                        $html_erreur_site = str_replace("!!lbl_site!!", $resSite, $html_erreur_site);
282                        $html_erreur_site = str_replace("!!liste_sections!!", $expl_section_libelle, $html_erreur_site);
283                        $transfert_mauvais_site = true;
284                       
285                } else { //if (($pmb_transferts_actif)&&($stuff->pret_idempr))
286                        //le message à l'écran
287                        $html_erreur_site .= $msg[expl_retour_bad_location];
288                }
289               
290                $html_erreur_site .= "</div>";
291                print pmb_bidi($html_erreur_site);
292        // fin de if ($stuff->expl_location != $deflt_docs_location)
293        }               
294        if ($stuff->expl_note) {
295                $alert_sound_list[]="critique";
296                print pmb_bidi("<hr /><div class='erreur'>${msg[377]} :</div><div class='message_important'>".$stuff->expl_note."</div>");
297                } elseif($pmb_play_pret_sound) $alert_sound_list[]="information";
298
299        // zone du dernier emrunteur
300        if ($stuff->expl_lastempr) {
301                $dernier_empr = "<hr /><div class='row'>$msg[expl_prev_empr] ";
302                $link = "<a href='./circ.php?categ=pret&form_cb=".rawurlencode($stuff->lastempr_cb)."'>";
303                $dernier_empr .= $link.$stuff->lastempr_prenom.' '.$stuff->lastempr_nom.' ('.$stuff->lastempr_cb.')</a>';
304                $dernier_empr .= "</div><hr />";
305                }
306
307        if ($stuff->pret_idempr) {
308               
309                // l'exemplaire était effectivement emprunté
310                // calcul du retard éventuel
311                $rqt_date = "select ((TO_DAYS(CURDATE()) - TO_DAYS('$stuff->pret_retour'))) as retard ";
312                $resultatdate=mysql_query($rqt_date);
313                $resdate=mysql_fetch_object($resultatdate);
314                $retard = $resdate->retard;
315                if($retard > 0) {
316                        //Calcul du vrai nombre de jours
317                        $date_debut=explode("-",$stuff->pret_retour);
318                        $ndays=calendar::get_open_days($date_debut[2],$date_debut[1],$date_debut[0],date("d"),date("m"),date("Y"));
319                        if ($ndays>0) {
320                                $retard = (int)$ndays;
321                                print "<br /><div class='erreur'>".$msg[369]."&nbsp;: ".$retard." ".$msg[370]."</div>";
322                                $alert_sound_list[]="critique";
323                        }
324                }
325                //Calcul du blocage
326                if ($pmb_blocage_retard) {
327                        $date_debut=explode("-",$stuff->pret_retour);
328                        $ndays=calendar::get_open_days($date_debut[2],$date_debut[1],$date_debut[0],date("d"),date("m"),date("Y"));
329                        if ($ndays>$pmb_blocage_delai) {
330                                $ndays=$ndays*$pmb_blocage_coef;
331                                if (($ndays>$pmb_blocage_max)&&($pmb_blocage_max!=0)) {
332                                        $ndays=$pmb_blocage_max;
333                                }
334                        } else $ndays=0;
335                        if ($ndays>0) {
336                                //Le lecteur est-il déjà bloqué ?
337                                $date_fin_blocage_empr = mysql_result(mysql_query("select date_fin_blocage from empr where id_empr='".$stuff->pret_idempr."'"),0,0);
338                                //Calcul de la date de fin
339                                $date_fin=calendar::add_days(date("d"),date("m"),date("Y"),$ndays);
340                                if ($date_fin > $date_fin_blocage_empr) {
341                                        //Mise à jour
342                                        mysql_query("update empr set date_fin_blocage='".$date_fin."' where id_empr='".$stuff->pret_idempr."'");
343                                        print "<br /><div class='erreur'>".sprintf($msg["blocage_retard_pret"],formatdate($date_fin))."</div>";
344                                        $alertsound_list[]="critique";
345                                } else {
346                                        print "<br /><div class='erreur'>".sprintf($msg["blocage_already_retard_pret"],formatdate($date_fin_blocage_empr))."</div>";
347                                        $alertsound_list[]="critique";
348                                }
349                        }
350                }
351               
352                //Vérification des amendes
353                if (($pmb_gestion_financiere) && ($pmb_gestion_amende)) {
354                        $amende=new amende($stuff->pret_idempr);
355                        $amende_t=$amende->get_amende($stuff->pret_idexpl);
356                        //Si il y a une amende, je la débite
357                        if ($amende_t["valeur"]) {
358                                print pmb_bidi("<br /><div class='erreur'>".$msg["finance_retour_amende"]."&nbsp;: ".comptes::format($amende_t["valeur"]));
359                                $alert_sound_list[]="critique";
360                                $compte_id=comptes::get_compte_id_from_empr($stuff->pret_idempr,2);
361                                if ($compte_id) {
362                                        $cpte=new comptes($compte_id);
363                                        if ($cpte->id_compte) {
364                                                $cpte->record_transaction("",$amende_t["valeur"],-1,sprintf($msg["finance_retour_amende_expl"],$stuff->pret_idexpl),0);
365                                                print " ".$msg["finance_retour_amende_recorded"];
366                                                }
367                                        }
368                                print "</div>";
369                                }
370                        }
371               
372                // zone du dernier emrunteur
373                print pmb_bidi($dernier_empr) ;
374
375                // code de suppression prêt et la mise en table de stat
376                if ($confirmed){
377                        if (del_pret($stuff)) {
378                                if (!maj_stat_pret($stuff)) {
379                                        // impossible de maj en table stat
380                                        print "<div class='erreur'>${msg[371]}</div>";
381                                }
382                        } else {
383                                // impossible de supprimer en table pret
384                                print "<div class='erreur'>${msg[372]}</div>";
385                        }
386                        // traitement de l'éventuelle réservation
387                        if ($stuff->resa_idempr) {
388                                // le doc en retour peut servir à valider une résa suivante
389                                if (!verif_cb_utilise ($stuff->expl_cb) || $affect) {
390                                        if(!$affect)$affect = affecte_cb ($stuff->expl_cb) ;
391                                       
392                                        // affichage message de réservation
393                                        if ($affect) {
394                                                $trans_en_cours = false;
395                                                $msg_trans = "";
396                                                if (($pmb_transferts_actif=="1")&&(!$transfert_mauvais_site)) {
397                                                        //si le transfert est actif et qu'un transfert n'est pas deja fait
398                                                        $res_transfert = resa_transfert($affect,$stuff->expl_cb);
399                                                        if ($res_transfert!=0) {
400                                                                $rqt = "SELECT location_libelle FROM docs_location WHERE idlocation=".$res_transfert;
401                                                                $lib_loc = mysql_result(mysql_query($rqt),0);                   
402                                                                $msg_trans =  "<strong>".str_replace("!!site_dest!!",$lib_loc,$msg["transferts_circ_resa_validation_alerte"])."</strong><br />";
403                                                                $trans_en_cours = true;
404                                                        }       
405                                                }
406                                                $query = "select distinct "; 
407                                                $query .= "empr_prenom, empr_nom, empr_cb "; 
408                                                $query .= "from (((resa LEFT JOIN notices AS notices_m ON resa_idnotice = notices_m.notice_id ) LEFT JOIN bulletins ON resa_idbulletin = bulletins.bulletin_id) LEFT JOIN notices AS notices_s ON bulletin_notice = notices_s.notice_id), empr ";
409                                                $query .= "where id_resa in (".$affect.") and resa_idempr=id_empr";
410                                                $result = mysql_query($query, $dbh);           
411                                                $empr=@mysql_fetch_object($result);
412                                               
413                                                print pmb_bidi("<div class='message_important'>$msg[352]</div>
414                                                        <div class='row'>$msg_trans
415                                                        ${msg[373]}
416                                                        <strong><a href='./circ.php?categ=pret&form_cb=".rawurlencode($empr->empr_cb)."'>".$empr->empr_prenom."&nbsp;".$empr->empr_nom."</a></strong>
417                                                        &nbsp;($empr->empr_cb )
418                                                        </div>");
419                                                $alert_sound_list[]="critique" ;
420                                                if (!$trans_en_cours)
421                                                        alert_empr_resa($affect) ;                                             
422                                        } // fin if affect
423                                } // fin if !verif_cb_utilise
424                        } // fin if resa
425                }// fin confirmed
426                $empr = new emprunteur($stuff->pret_idempr, $erreur_affichage, FALSE, 2);
427                print pmb_bidi($empr -> fiche_affichage);
428               
429        } else {
430                print "<div class='erreur'>${msg[605]}</div>";
431                $alert_sound_list[]="critique";
432                }
433// show_report($stuff); // this stands for debugging
434}
435
436// mise en table stat des infos du prêt
437function stat_stuff ($stuff) {
438        global $dbh, $empr_archivage_prets, $empr_archivage_prets_purge; 
439
440        if(!is_object($stuff)) die ("Pb in ./circ/pret_func.inc.php [stat_stuff()].");
441        $query = "insert into pret_archive set ";
442        $query .= "arc_debut='".$stuff->pret_date."', ";
443        $query .= "arc_fin='".$stuff->pret_retour."', ";
444        if ($empr_archivage_prets) $query .= "arc_id_empr='".addslashes($stuff->id_empr)                ."', ";
445        $query .= "arc_empr_cp='".                      addslashes($stuff->empr_cp)             ."', ";
446        $query .= "arc_empr_ville='".           addslashes($stuff->empr_ville)  ."', ";
447        $query .= "arc_empr_prof='".            addslashes($stuff->empr_prof)   ."', ";
448        $query .= "arc_empr_year='".            addslashes($stuff->empr_year)   ."', ";
449        $query .= "arc_empr_categ='".           $stuff->empr_categ                      ."', ";
450        $query .= "arc_empr_codestat='".        $stuff->empr_codestat                   ."', ";
451        $query .= "arc_empr_sexe='".            $stuff->empr_sexe                       ."', ";
452        $query .= "arc_empr_statut='".          $stuff->empr_statut                     ."', ";
453        $query .= "arc_empr_location='".        $stuff->empr_location           ."', ";
454        $query .= "arc_type_abt='".                     $stuff->type_abt                        ."', ";
455        $query .= "arc_expl_typdoc='".          $stuff->expl_typdoc                     ."', ";
456        $query .= "arc_expl_id='".                      $stuff->expl_id                                 ."', ";
457        $query .= "arc_expl_notice='".          $stuff->expl_notice                     ."', ";
458        $query .= "arc_expl_bulletin='".        $stuff->expl_bulletin                   ."', ";
459        $query .= "arc_expl_cote='".            addslashes($stuff->expl_cote)   ."', ";
460        $query .= "arc_expl_statut='".          $stuff->expl_statut                     ."', ";
461        $query .= "arc_expl_location='".        $stuff->expl_location                   ."', ";
462        $query .= "arc_expl_section='".         $stuff->expl_section                    ."', ";
463        $query .= "arc_expl_codestat='".        $stuff->expl_codestat                   ."', ";
464        $query .= "arc_expl_owner='".           $stuff->expl_owner                      ."', "; 
465        $query .= "arc_groupe='".                       addslashes($stuff->groupes)."', ";
466        $query .= "arc_niveau_relance='".       $stuff->niveau_relance                          ."', ";
467        $query .= "arc_date_relance='".         $stuff->date_relance                            ."', ";
468        $query .= "arc_printed='".                      $stuff->printed                                 ."', ";
469        $query .= "arc_cpt_prolongation='".     $stuff->cpt_prolongation                ."', ";
470        $query .= "arc_short_loan_flag='".      $stuff->short_loan_flag                 ."' ";
471
472        $res = mysql_query($query, $dbh);
473        $id_arc_insere = mysql_insert_id() ;
474        // purge des vieux trucs
475        if ($empr_archivage_prets_purge) {
476                //on ne purge qu'une fois par session et par jour
477                if (!isset($_SESSION["last_empr_archivage_prets_purge_day"]) || ($_SESSION["last_empr_archivage_prets_purge_day"] != date("m.d.y"))) {
478                        mysql_query("update pret_archive set arc_id_empr=0 where arc_id_empr!=0 and date_add(arc_fin, interval $empr_archivage_prets_purge day) < sysdate()") or die(mysql_error()."<br />"."update pret_archive set arc_id_empr=0 where arc_id_empr!=0 and date_add(arc_fin, interval $empr_archivage_prets_purge day) < sysdate()");
479                        $_SESSION["last_empr_archivage_prets_purge_day"] = date("m.d.y");
480                }
481        }
482
483        return $id_arc_insere ;
484        }
485
486// mise à jour des stat des infos du prêt
487function maj_stat_pret ($stuff) {
488        global $dbh, $empr_archivage_prets, $empr_archivage_prets_purge; 
489
490        if(!is_object($stuff)) die ("Pb in ./circ/pret_func.inc.php [maj_stat_pret()].");
491
492        $query = "update pret_archive set ";
493        $query .= "arc_debut='".$stuff->pret_date."', ";
494        $query .= "arc_fin=now(), ";
495        if ($empr_archivage_prets) $query .= "arc_id_empr='".addslashes($stuff->id_empr)."', ";
496        $query .= "arc_empr_cp='".                      addslashes($stuff->empr_cp)             ."', ";
497        $query .= "arc_empr_ville='".           addslashes($stuff->empr_ville)  ."', ";
498        $query .= "arc_empr_prof='".            addslashes($stuff->empr_prof)   ."', ";
499        $query .= "arc_empr_year='".            addslashes($stuff->empr_year)   ."', ";
500        $query .= "arc_empr_categ='".           $stuff->empr_categ                      ."', ";
501        $query .= "arc_empr_codestat='".        $stuff->empr_codestat                   ."', ";
502        $query .= "arc_empr_sexe='".            $stuff->empr_sexe                       ."', ";
503        $query .= "arc_empr_statut='".          $stuff->empr_statut                     ."', ";
504        $query .= "arc_empr_location='".        $stuff->empr_location                   ."', ";
505        $query .= "arc_type_abt='".                     $stuff->type_abt                        ."', ";
506        $query .= "arc_expl_typdoc='".          $stuff->expl_typdoc                     ."', ";
507        $query .= "arc_expl_id='".                      $stuff->expl_id                                 ."', ";
508        $query .= "arc_expl_notice='".          $stuff->expl_notice                     ."', ";
509        $query .= "arc_expl_bulletin='".        $stuff->expl_bulletin                   ."', ";
510        $query .= "arc_expl_cote='".            addslashes($stuff->expl_cote)   ."', ";
511        $query .= "arc_expl_statut='".          $stuff->expl_statut                     ."', ";
512        $query .= "arc_expl_location='".        $stuff->expl_location                   ."', ";
513        $query .= "arc_expl_section='".         $stuff->expl_section                    ."', ";
514        $query .= "arc_expl_codestat='".        $stuff->expl_codestat                   ."', ";
515        $query .= "arc_expl_owner='".           $stuff->expl_owner                      ."', ";         
516        $query .= "arc_niveau_relance='".       $stuff->niveau_relance                          ."', ";
517        $query .= "arc_date_relance='".         $stuff->date_relance                            ."', ";
518        $query .= "arc_printed='".                      $stuff->printed                                 ."', ";
519        $query .= "arc_cpt_prolongation='".     $stuff->cpt_prolongation                ."', "; 
520        $query .= "arc_short_loan_flag='".      $stuff->short_loan_flag                 ."' ";
521        $query .= " where arc_id='".$stuff->pret_arc_id."' ";
522        $res = mysql_query($query, $dbh);
523
524        audit::insert_modif (AUDIT_PRET, $stuff->pret_arc_id) ;
525
526        // purge des vieux trucs
527        if ($empr_archivage_prets_purge) {
528                //on ne purge qu'une fois par session et par jour
529                if (!isset($_SESSION["last_empr_archivage_prets_purge_day"]) || ($_SESSION["last_empr_archivage_prets_purge_day"] != date("m.d.y"))) {
530                        mysql_query("update pret_archive set arc_id_empr=0 where arc_id_empr!=0 and date_add(arc_fin, interval $empr_archivage_prets_purge day) < sysdate()") or die(mysql_error()."<br />"."update pret_archive set arc_id_empr=0 where arc_id_empr!=0 and date_add(arc_fin, interval $empr_archivage_prets_purge day) < sysdate()");
531                        $_SESSION["last_empr_archivage_prets_purge_day"] = date("m.d.y");
532                }
533        }
534       
535        return $res ;
536        }
537
538// suppression du prêt (table prêt)
539function del_pret($stuff) {
540        global $dbh; 
541
542        //return 1 ; // debug mode ;-)
543        if(!is_object($stuff))
544                die("serious application error occured in ./circ/retour.inc [del_pret()]. Please contact developpment team");
545        $query = "delete from pret where pret_idexpl=".$stuff->expl_id;
546        if (!mysql_query($query, $dbh)) return 0 ;
547       
548        $query = "update empr set last_loan_date=sysdate() where id_empr='".$stuff->pret_idempr."' ";
549        @mysql_query($query, $dbh);
550       
551        $query = "update exemplaires set expl_lastempr='".$stuff->pret_idempr."', last_loan_date=sysdate() where expl_id='".$stuff->expl_id."' ";
552        if (!mysql_query($query, $dbh)) return 0 ;
553                else return 1 ;
554        }
555
556// teste l'existence de l'exemplaire et le cas échéant,
557// retourne les infos exemplaire sous forme d'objet
558function check_barcode($cb) {
559
560        global $dbh;
561        $expl->expl_cb = $cb ;
562        $query = "select * from exemplaires where expl_cb='$cb' ";
563        $result = mysql_query($query, $dbh);
564        $expl = mysql_fetch_object($result);
565        if(!$expl->expl_id) {
566                // exemplaire inconnu
567                return FALSE;
568        } else {
569                // récupération des infos exemplaires
570                if ($expl->expl_notice) {
571                        $notice = new mono_display($expl->expl_notice, 0);
572                        $expl->libelle = $notice->header;
573                        } else {
574                                $bulletin = new bulletinage_display($expl->expl_bulletin);
575                                $expl->libelle = $bulletin->display ;
576                                }
577                if ($expl->expl_lastempr) {
578                        // récupération des infos emprunteur
579                        $query_last_empr = "select empr_cb, empr_nom, empr_prenom from empr where id_empr='".$expl->expl_lastempr."' ";
580                        $result_last_empr = mysql_query($query_last_empr, $dbh);
581                        if(mysql_num_rows($result_last_empr)) {
582                                $last_empr = mysql_fetch_object($result_last_empr);
583                                $expl->lastempr_cb = $last_empr->empr_cb;
584                                $expl->lastempr_nom = $last_empr->empr_nom;
585                                $expl->lastempr_prenom = $last_empr->empr_prenom;
586                                }
587                        }
588        }
589        return $expl;
590}
591
592function pret_construit_infos_stat ($id_expl) {
593               
594        global $dbh;
595       
596        $query = "select * from exemplaires where expl_id='$id_expl' ";
597        $result = mysql_query($query, $dbh);
598        $stuff = mysql_fetch_object($result);
599        if(!$stuff->expl_id) {
600                // exemplaire inconnu
601                return FALSE;
602                }
603        $stuff = check_pret($stuff);
604        $stuff = check_resa($stuff);
605        return $stuff ;
606        }
607
608function insert_in_stat($stuf) {
609        }
610
611// envoi d'un mail de ticket de prêt
612// reçoit : id_empr et éventuellement cb_doc
613function electronic_ticket($id_empr, $cb_doc="") {
614        global $dbh, $msg, $charset ;
615        global $PMBusernom;
616        global $PMBuserprenom;
617        global $PMBuseremail,$PMBuseremailbcc;
618       
619        $headers  = "MIME-Version: 1.0\n";
620        $headers .= "Content-type: text/html; charset=".$charset."\n";
621       
622        // info site
623        global $biblio_name, $biblio_logo, $biblio_adr1, $biblio_adr2, $biblio_cp, $biblio_town, $biblio_state, $biblio_country, $biblio_phone, $biblio_email, $biblio_website, $biblio_commentaire ;
624        global $empr_electronic_loan_ticket_obj, $empr_electronic_loan_ticket_msg ;
625        $empr_electronic_loan_ticket_obj = str_replace("!!biblio_name!!", $biblio_name, $empr_electronic_loan_ticket_obj) ;
626        $empr_electronic_loan_ticket_obj = str_replace("!!date!!", formatdate(today()), $empr_electronic_loan_ticket_obj) ;
627
628        $empr_electronic_loan_ticket_msg = str_replace("!!biblio_name!!", $biblio_name, $empr_electronic_loan_ticket_msg) ;
629        $empr_electronic_loan_ticket_msg = str_replace("!!date!!", formatdate(today()), $empr_electronic_loan_ticket_msg) ;
630        $empr_electronic_loan_ticket_msg = str_replace("!!biblio_website!!", $biblio_website, $empr_electronic_loan_ticket_msg) ;
631        $empr_electronic_loan_ticket_msg = str_replace("!!biblio_phone!!", $biblio_phone, $empr_electronic_loan_ticket_msg) ;
632        $empr_electronic_loan_ticket_msg = str_replace("!!biblio_adr1!!", $biblio_adr1, $empr_electronic_loan_ticket_msg) ;
633        $empr_electronic_loan_ticket_msg = str_replace("!!biblio_adr2!!", $biblio_adr2, $empr_electronic_loan_ticket_msg) ;
634        $empr_electronic_loan_ticket_msg = str_replace("!!biblio_cp!!", $biblio_cp, $empr_electronic_loan_ticket_msg) ;
635        $empr_electronic_loan_ticket_msg = str_replace("!!biblio_town!!", $biblio_town, $empr_electronic_loan_ticket_msg) ;
636        $empr_electronic_loan_ticket_msg = str_replace("!!biblio_email!!", $biblio_email, $empr_electronic_loan_ticket_msg) ;
637        $empr_electronic_loan_ticket_msg = str_replace("!!biblio_commentaire!!", $biblio_commentaire, $empr_electronic_loan_ticket_msg) ;
638       
639        $message_resas = "";
640        $message_prets = "";
641        if ($cb_doc == "") {
642                $rqt = "select expl_cb from pret, exemplaires where pret_idempr='".$id_empr."' and pret_idexpl=expl_id order by pret_date " ;
643                $req = mysql_query($rqt) or die($msg['err_sql'].'<br />'.$rqt.'<br />'.mysql_error()); 
644       
645                $message_prets = $msg["prets_en_cours"];
646                while ($data = mysql_fetch_array($req)) {
647                        $message_prets .= electronic_loan_ticket_expl_info ($data['expl_cb']);
648                }
649
650                // Impression des réservations en cours
651                $rqt = "select resa_idnotice, resa_idbulletin from resa where resa_idempr='".$id_empr."' " ;
652                $req = mysql_query($rqt) or die($msg['err_sql'].'<br />'.$rqt.'<br />'.mysql_error()); 
653                if (mysql_num_rows($req) > 0) {
654                        $message_resas = $msg["documents_reserves"];
655                        while ($data = mysql_fetch_array($req)) {
656                                $message_resas .= electronic_loan_ticket_not_bull_info_resa ($id_empr, $data['resa_idnotice'],$data['resa_idbulletin']);
657                        }
658                } // fin if résas       
659
660        } else {
661                $message_prets = $msg["prets_en_cours"];
662                $message_prets .= electronic_loan_ticket_expl_info ($cb_doc);
663        }
664
665        $empr_electronic_loan_ticket_msg = str_replace("!!all_reservations!!", $message_resas, $empr_electronic_loan_ticket_msg) ;
666        $empr_electronic_loan_ticket_msg = str_replace("!!all_loans!!", $message_prets, $empr_electronic_loan_ticket_msg) ;
667       
668        $requete = "select id_empr, empr_mail, empr_nom, empr_prenom from empr where id_empr='$id_empr' ";
669        $res = mysql_query($requete, $dbh);
670        $empr=mysql_fetch_object($res);
671       
672        //remplacement nom et prenom
673        $empr_electronic_loan_ticket_msg=str_replace("!!empr_name!!", $empr->empr_nom,$empr_electronic_loan_ticket_msg); 
674        $empr_electronic_loan_ticket_msg=str_replace("!!empr_first_name!!", $empr->empr_prenom,$empr_electronic_loan_ticket_msg);
675       
676        if ($empr->empr_mail) {
677                // function mailpmb($to_nom="", $to_mail, $obj="", $corps="", $from_name="", $from_mail, $headers, $copie_CC="", $copie_BCC="", $faire_nl2br=0, $pieces_jointes=array()) {
678                $res_envoi=@mailpmb($empr->empr_prenom." ".$empr->empr_nom, $empr->empr_mail,$empr_electronic_loan_ticket_obj,$empr_electronic_loan_ticket_msg, $PMBuserprenom." ".$PMBusernom, $PMBuseremail, $headers, "", $PMBuseremailbcc, 1, "");
679        }
680}
681
682function electronic_loan_ticket_expl_info($cb_doc) {
683        global $msg, $dbh ;
684       
685        $requete = "SELECT notices_m.notice_id as m_id, notices_s.notice_id as s_id, expl_cb, expl_cote, pret_date, pret_retour, tdoc_libelle, section_libelle, location_libelle, trim(concat(ifnull(notices_m.tit1,''),ifnull(notices_s.tit1,''),' ',ifnull(bulletin_numero,''), if (mention_date, concat(' (',mention_date,')') ,''))) as tit, ";
686        $requete.= " date_format(pret_date, '".$msg["format_date"]."') as aff_pret_date, ";
687        $requete.= " date_format(pret_retour, '".$msg["format_date"]."') as aff_pret_retour, "; 
688        $requete.= " IF(pret_retour>sysdate(),0,1) as retard, notices_m.tparent_id, notices_m.tnvol " ; 
689        $requete.= " FROM (((exemplaires LEFT JOIN notices AS notices_m ON expl_notice = notices_m.notice_id ) LEFT JOIN bulletins ON expl_bulletin = bulletins.bulletin_id) LEFT JOIN notices AS notices_s ON bulletin_notice = notices_s.notice_id), docs_type, docs_section, docs_location, pret ";
690        $requete.= " WHERE expl_cb='".addslashes($cb_doc)."' and expl_typdoc = idtyp_doc and expl_section = idsection and expl_location = idlocation and pret_idexpl = expl_id  ";
691
692        $res = mysql_query($requete, $dbh) or die ("<br />".mysql_error());
693        $expl = mysql_fetch_object($res);
694       
695        $responsabilites = get_notice_authors(($expl->m_id+$expl->s_id)) ;
696        $as = array_search ("0", $responsabilites["responsabilites"]) ;
697        if ($as!== FALSE && $as!== NULL) {
698                $auteur_0 = $responsabilites["auteurs"][$as] ;
699                $auteur = new auteur($auteur_0["id"]);
700                $header_aut .= $auteur->isbd_entry;
701                } else {
702                        $aut1_libelle=array();
703                        $as = array_keys ($responsabilites["responsabilites"], "1" ) ;
704                        for ($i = 0 ; $i < count($as) ; $i++) {
705                                $indice = $as[$i] ;
706                                $auteur_1 = $responsabilites["auteurs"][$indice] ;
707                                $auteur = new auteur($auteur_1["id"]);
708                                $aut1_libelle[]= $auteur->isbd_entry;
709                                }
710                       
711                        $header_aut .= implode (", ",$aut1_libelle) ;
712                        }
713        $header_aut ? $auteur=" / ".$header_aut : $auteur="";
714       
715        // récupération du titre de série
716        if ($expl->tparent_id && $expl->m_id) {
717                $parent = new serie($expl->tparent_id);
718                $tit_serie = $parent->name;
719                if($expl->tnvol)
720                        $tit_serie .= ', '.$expl->tnvol;
721                }
722        if($tit_serie) {
723                $expl->tit = $tit_serie.'. '.$expl->tit;
724                }
725
726        $ret = "<ul><li><b>".$expl->tit." (".$expl->tdoc_libelle.")</b> ".$auteur."<blockquote>" ;
727        $ret .= $msg['fpdf_date_pret']." ".$expl->aff_pret_date ;
728        $ret .= "&nbsp;<em><font color=red>".$msg['fpdf_retour_prevu']." ".$expl->aff_pret_retour."</font></em>";
729        $ret .= "<br /><i>".$expl->location_libelle.": ".$expl->section_libelle.": ".$expl->expl_cote." (".$expl->expl_cb.")</i></blockquote></li></ul>";
730        return $ret ;
731
732        } /* fin electronic_loan_ticket_expl_info */
733
734function electronic_loan_ticket_not_bull_info_resa ($id_empr, $notice, $bulletin) {
735        global $msg, $dbh;
736       
737        $dates_resa_sql = "date_format(resa_date, '".$msg["format_date"]."') as date_pose_resa, IF(resa_date_fin>sysdate() or resa_date_fin='0000-00-00',0,1) as perimee, if(resa_date_debut='0000-00-00', '', date_format(resa_date_debut, '".$msg["format_date"]."')) as aff_resa_date_debut, if(resa_date_fin='0000-00-00', '', date_format(resa_date_fin, '".$msg["format_date"]."')) as aff_resa_date_fin " ;
738        if ($notice) {
739                $requete = "SELECT resa_cb, notice_id, resa_date, resa_idempr, tit1 as tit, ".$dates_resa_sql;
740                $requete.= "FROM notices, resa ";
741                $requete.= "WHERE notice_id='".$notice."' and resa_idnotice=notice_id order by resa_date ";
742                } else {
743                        $requete = "SELECT resa_cb, notice_id, resa_date, resa_idempr, trim(concat(tit1,' ',ifnull(bulletin_numero,''), if (mention_date, concat(' (',mention_date,')') ,''))) as tit, ".$dates_resa_sql;
744                        $requete.= "FROM bulletins, resa, notices ";
745                        $requete.= "WHERE resa_idbulletin='$bulletin' and resa_idbulletin = bulletins.bulletin_id and bulletin_notice = notice_id order by resa_date ";
746                        }
747        $res = mysql_query($requete, $dbh) or die ("<br />".mysql_error());
748        $nb_resa = mysql_num_rows($res) ;
749       
750        for ($j=0 ; $j<$nb_resa ; $j++ ) {
751                $resa = mysql_fetch_object($res);
752                if ($resa->resa_idempr == $id_empr) {
753                        $responsabilites = get_notice_authors($resa->notice_id) ;
754                        $as = array_search ("0", $responsabilites["responsabilites"]) ;
755                        if ($as!== FALSE && $as!== NULL) {
756                                $auteur_0 = $responsabilites["auteurs"][$as] ;
757                                $auteur = new auteur($auteur_0["id"]);
758                                $header_aut .= $auteur->isbd_entry;
759                                } else {
760                                        $aut1_libelle=array();
761                                        $as = array_keys ($responsabilites["responsabilites"], "1" ) ;
762                                        for ($i = 0 ; $i < count($as) ; $i++) {
763                                                $indice = $as[$i] ;
764                                                $auteur_1 = $responsabilites["auteurs"][$indice] ;
765                                                $auteur = new auteur($auteur_1["id"]);
766                                                $aut1_libelle[]= $auteur->isbd_entry;
767                                                }
768                                       
769                                        $header_aut .= implode (", ",$aut1_libelle) ;
770                                        }
771                        $header_aut ? $auteur=" / ".$header_aut : $auteur="";
772                       
773                        $ret .= "<ul><li><b>".$resa->tit."</b> ".$auteur."<blockquote>" ;
774                        if ($resa->aff_resa_date_debut) {
775                                $tmpmsg_res = $msg['fpdf_reserve_du']." ".$resa->aff_resa_date_debut." ".$msg['fpdf_adherent_au']." ".$resa->aff_resa_date_fin;
776                                $requete_expl = "SELECT expl_cb, tdoc_libelle, section_libelle, location_libelle " ; 
777                                $requete_expl.= " FROM exemplaires, docs_type, docs_section, docs_location ";
778                                $requete_expl.= " WHERE expl_cb='".addslashes($resa->resa_cb)."' and expl_typdoc = idtyp_doc and expl_section = idsection and expl_location = idlocation ";
779                                $res_expl = mysql_query($requete_expl, $dbh) or die ("<br />".mysql_error());
780                                $expl = mysql_fetch_object($res_expl);
781                                $tmpmsg_res .= "<br /><em>".$expl->location_libelle."</em>: ".$expl->section_libelle;
782                                } else {
783                                        $tmpmsg_res = $msg['fpdf_attente_valid']." / ".$msg['fpdf_rang']." ".($j+1)." : ".$msg['fpdf_reserv_enreg']." ".$resa->date_pose_resa ;
784                                        }
785                        $ret .= $tmpmsg_res;
786                        $ret .= "</blockquote></li></ul><br />";
787                        }
788                } // fin for
789        return $ret ;
790        } /* fin electronic_loan_ticket_not_bull_info_resa */
791
792
793function show_report($stuff) {
794
795        // à utiliser pour le débogage
796
797        print '<br />expl_id = '.$stuff->expl_id;
798        print '<br />expl_cb = '.$stuff->expl_cb;
799        print '<br />expl_notice = '.$stuff->expl_notice;
800        print '<br />expl_bulletin = '.$stuff->expl_bulletin;
801        print '<br />expl_typdoc = '.$stuff->expl_typdoc;
802        print '<br />expl_section = '.$stuff->expl_section;
803        print '<br />expl_cote = '.$stuff->expl_cote;
804        print '<br />expl_statut = '.$stuff->expl_statut;
805        print '<br />expl_location = '.$stuff->expl_location;
806        print '<br />expl_codestat = '.$stuff->expl_codestat;
807        print '<br />expl_note = '.$stuff->expl_note;
808        print '<br />expl_comment = '.$stuff->expl_comment;
809        print '<br />expl_prix = '.$stuff->expl_prix;
810        print '<br />libelle = '.$stuff->libelle;
811        print '<br />pret_idempr = '.$stuff->pret_idempr;
812        print '<br />pret_idexpl = '.$stuff->pret_idexpl;
813        print '<br />pret_date = '.$stuff->pret_date;
814        print '<br />pret_retour = '.$stuff->pret_retour;
815        print '<br />empr_cb = '.$stuff->empr_cb;
816        print '<br />empr_nom = '.$stuff->empr_nom;
817        print '<br />empr_prenom = '.$stuff->empr_prenom;
818        print '<br />id_empr = '.$stuff->id_empr;
819        print '<br />id_resa = '.$stuff->id_resa;
820        print '<br />resa_idempr = '.$stuff->resa_idempr;
821        print '<br />resa_idnotice = '.$stuff->resa_idnotice;
822        print '<br />resa_idbulletin = '.$stuff->resa_idbulletin;
823        print '<br />resa_date = '.$stuff->resa_date;
824        print '<br />cb_reservataire = '.$stuff->cb_reservataire;
825        print '<br />nom_reservataire = '.$stuff->nom_reservataire;
826        print '<br />prenom_reservataire = '.$stuff->prenom_reservataire;
827        print '<br />id_reservataire = '.$stuff->id_reservataire;
828        }
Note: See TracBrowser for help on using the repository browser.