function get_relance($id_empr) { global $dbh, $charset, $msg, $pmb_gestion_financiere, $pmb_gestion_amende; global $pmb_lecteurs_localises; // liste des relances if ($pmb_gestion_financiere && $pmb_gestion_amende) { $amende = new amende($id_empr); $level = $amende->get_max_level(); $niveau_min = $level["level_min"]; $id_expl = $level["level_min_id_expl"]; $total_amende = $amende->get_total_amendes(); } $niveau_suppose = $level["level_normal"]; $cpt_id = comptes::get_compte_id_from_empr($id_empr, 2); $cpt = new comptes($cpt_id); $frais_relance = $cpt->summarize_transactions("", "", 0, $realisee = -1); if ($frais_relance < 0) { $frais_relance = -$frais_relance; } else { $frais_relance = 0; } $empr = new emprunteur($id_empr, '', FALSE, 0); //Groupes if (count($empr->groupes)) { $lib_groupes = strip_tags(implode(" / ", $empr->groupes)); } else { $lib_groupes = ""; } $info_empr = "\n\t<td>" . $empr->cb . "</td>\n\t<td>" . $empr->nom . "</td>\n\t<td>" . $empr->prenom . "</td>\n\t<td>" . $empr->adr1 . "</td>\n\t<td>" . $empr->adr2 . "</td>\n\t<td>" . $empr->cp . "</td>\n\t<td>" . $empr->ville . "</td>\n\t<td>" . $empr->mail . "</td>\n\t<td>" . $empr->tel1 . "</td>\n\t<td>" . $empr->tel2 . "</td>\n\t" . ($pmb_lecteurs_localises ? "<td>" . $empr->empr_location_l . "</td>" : "") . "\n\t<td>" . $empr->cat_l . "</td>\n\t<td>" . $empr->cstat_l . "</td>\n\t<td>" . $empr->empr_statut_libelle . "</td>\n\t<td>" . $lib_groupes . "</td>\n\t<td>" . $niveau_suppose . "</td>\n\t<td>" . $total_amende . "</td>\n\t<td>" . $frais_relance . "</td>\n\t"; $reqexpl = "select pret_idexpl as expl from pret where pret_retour<CURDATE() and pret_idempr={$id_empr}"; $resexple = pmb_mysql_query($reqexpl, $dbh); while ($liste = pmb_mysql_fetch_object($resexple)) { $dates_resa_sql = " date_format(pret_date, '" . $msg["format_date"] . "') as aff_pret_date, date_format(pret_retour, '" . $msg["format_date"] . "') as aff_pret_retour "; $requete = "SELECT notices_m.notice_id as m_id, notices_s.notice_id as s_id, pret_idempr, expl_id, expl_cb,expl_cote, pret_date, pret_retour,\n\t\tniveau_relance,\n\t\tdate_relance,\n\t\tprinted,\t\t\n\t\ttdoc_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, " . $dates_resa_sql . ", "; $requete .= " notices_m.tparent_id, notices_m.tnvol "; $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 "; $requete .= " WHERE expl_id='" . $liste->expl . "' and expl_typdoc = idtyp_doc and expl_section = idsection and expl_location = idlocation and pret_idexpl = expl_id "; $res_det_expl = pmb_mysql_query($requete); $expl = pmb_mysql_fetch_object($res_det_expl); $amd = $amende->get_amende($liste->expl); $reqlog = "select sum(log.log_printed) as printed, sum(log.log_mail) as mail\n\t\t\tfrom log_retard as log, log_expl_retard as expl where log.idempr={$id_empr} and log.niveau_reel='" . $expl->niveau_relance . "'\n\t\t \tand expl.num_log_retard=log.id_log and expl_id='" . $liste->expl . "' "; $reslog = pmb_mysql_query($reqlog); if ($log = pmb_mysql_fetch_object($reslog)) { $printed = $log->printed; $mail = $log->mail; } else { $printed = 0; $mail = 0; } $info .= "\n\t\t<tr>\n\t\t\t{$info_empr}\n\t\t\t<td>" . htmlentities($expl->tit, ENT_QUOTES, $charset) . "</td>\n\t\t\t<td>" . htmlentities($expl->expl_cb, ENT_QUOTES, $charset) . "</td>\n\t\t\t<td>" . format_date($expl->pret_date) . "</td>\n\t\t\t<td>" . format_date($expl->pret_retour) . "</td>\n\t\t\t<td>" . $expl->niveau_relance . "</td>\n\t\t\t<td>" . format_date($expl->date_relance) . "</td>\n\t\t\t<td>" . htmlentities($mail, ENT_QUOTES, $charset) . "</td>\n\t\t\t<td>" . htmlentities($printed, ENT_QUOTES, $charset) . "</td>\n\t\t\t<td>" . htmlentities($amd["valeur"], ENT_QUOTES, $charset) . "</td>\n\t\t</tr>\n\t\t"; } return $info; }
function do_retour($stuff, $confirmed = 1) { global $dbh; global $msg; global $alert_sound_list, $pmb_play_pret_sound; global $pmb_gestion_amende, $pmb_gestion_financiere, $pmb_blocage_retard, $pmb_blocage_max, $pmb_blocage_delai, $pmb_blocage_coef; global $deflt_docs_location; $erreur_affichage = ''; if (!is_object($stuff)) { die("erreur dans le module ./circ/retour.inc [do_retour()]. Contactez l'admin"); } // récupération localisation exemplaire $query = "SELECT t.tdoc_libelle as type_doc"; $query .= ", l.location_libelle as location"; $query .= ", s.section_libelle as section"; $query .= " FROM docs_type t"; $query .= ", docs_location l"; $query .= ", docs_section s"; $query .= " WHERE t.idtyp_doc=" . $stuff->expl_typdoc; $query .= " AND l.idlocation=" . $stuff->expl_location; $query .= " AND s.idsection=" . $stuff->expl_section; $query .= " LIMIT 1"; $result = mysql_query($query, $dbh); $info_doc = mysql_fetch_object($result); print pmb_bidi("<br /><form><div class='row'><div class='left'><strong>" . $stuff->libelle . "</strong></div>"); // flag confirm retour if (!$confirmed and $stuff->pret_idempr) { print "\n\t\t\t<div class='right'>\n\t\t\t<input type='button' class='bouton' \n\t\t\t\t\tname='confirm_ret' value='" . $msg['retour_confirm'] . "'\n\t\t\t\t\tonClick=\"document.location='./circ.php?categ=retour&cb_expl=" . $stuff->expl_cb . "'\">\n\t\t\t</div>"; } elseif ($stuff->pret_idempr) { print "\n\t\t\t\t<div class='right'>\n\t\t\t\t\t<font color='RED'><b>{$msg['retour_ok']}</b></font>\n\t\t\t\t</div>"; } print "</div>"; print pmb_bidi("<br /><b>" . $stuff->expl_cb . "</b> " . $info_doc->type_doc); print pmb_bidi('. ' . $info_doc->location); print pmb_bidi('. ' . $info_doc->section); print pmb_bidi('. ' . $stuff->expl_cote); print " <input class='bouton' type='button' value=\"" . $msg[375] . "\" onClick=\"document.location='circ.php?categ=visu_ex&form_cb_expl=" . $stuff->expl_cb . "';\" />"; print "</form>"; //Champs personalisés $p_perso = new parametres_perso("expl"); $perso_aff = ""; if (!$p_perso->no_special_fields) { $perso_ = $p_perso->show_fields($stuff->expl_id); for ($i = 0; $i < count($perso_["FIELDS"]); $i++) { $p = $perso_["FIELDS"][$i]; if ($p["AFF"]) { $perso_aff .= "<br />" . $p["TITRE"] . " " . $p["AFF"]; } } } if ($perso_aff) { print "<div class='row'>" . $perso_aff . "</div>"; } $script_magnetique = "\n<script language='javascript' type='text/javascript'>\nvar requete = null;\n\nfunction creerRequette(){\n\tif(window.XMLHttpRequest) // Firefox\n\t\trequete = new XMLHttpRequest();\n\telse if(window.ActiveXObject) // Internet Explorer\n \t\trequete = new ActiveXObject('Microsoft.XMLHTTP');\n\telse { // XMLHttpRequest non supporté par le navigateur\n \t\talert('Votre navigateur ne supporte pas les objets XMLHTTPRequest...');\n \treturn;\n\t}\n}\n\nfunction magnetise(commande){\n\tcreerRequette();\n\tif(netscape.security.PrivilegeManager)netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');\t\n\trequete.open('GET', 'http://localhost:30000/?send_value='+commande+'&command=Send', false);\n\trequete.send(null);\n\tif(requete.readyState != 4) alert('Requête antivol non effectuée !');\n}\n\n"; global $pmb_antivol; if ($pmb_antivol > 0) { if ($stuff->type_antivol == 1) { // c'est un support non magnétique (livre, revue...) print "{$script_magnetique}" . "magnetise('RRR');</script>"; } if ($stuff->type_antivol == 2) { //c'est un support magnétique (cassette) print "{$script_magnetique}" . "magnetise('SSS');</script>"; } } //si le retour se passe sur un site différent de ce lui de l'exemplaire global $pmb_transferts_actif; $transfert_mauvais_site = false; if ($stuff->expl_location != $deflt_docs_location) { $alert_sound_list[] = "critique"; $html_erreur_site = "<hr /><div class='erreur'>"; //on agit pour faire l'action par defaut //et que c'est un retour d'emprunt if ($pmb_transferts_actif && $stuff->pret_idempr) { global $transferts_retour_action_defaut; global $transferts_retour_action_autorise_autre; $trans = new transfert(); //pour afficher le site de l'exemplaire $rqtSite = "SELECT location_libelle FROM docs_location WHERE idlocation=" . $stuff->expl_location; $resSite = mysql_result(mysql_query($rqtSite), 0); //si on propose une autre action if ($transferts_retour_action_autorise_autre == "1") { $texte_change_loc = str_replace("!!lbl_site!!", $resSite, $msg["transferts_circ_retour_lbl_change_localisation"]); } $texte_change_loc = str_replace("!!liste_sections!!", "<select onchange='enregLoc(this)'>!!liste!!</select>", $texte_change_loc); //on genere la liste des sections $rqt = "SELECT idsection, section_libelle FROM docs_section ORDER BY section_libelle"; $res_section = mysql_query($rqt); $liste_section = ""; while ($value = mysql_fetch_object($res_section)) { $liste_section .= "<option value='" . $value->idsection . "'"; if ($value->idsection == $stuff->expl_section) { $liste_section .= " selected"; $expl_section_libelle = $value->section_libelle; } $liste_section .= ">" . $value->section_libelle . "</option>"; } $texte_change_loc = addslashes(str_replace("!!liste!!", $liste_section, $texte_change_loc)); $html_erreur_site .= "\n<form name='actionTrans'>\n<input type='hidden' name='typeTrans' value='" . $transferts_retour_action_defaut . "'>\n<input type='hidden' name='explTrans' value='" . $stuff->expl_id . "'>\n<script language='javascript'>\nmsg_inf_loc = '" . $texte_change_loc . "';\nmsg_bt_loc = '" . str_replace("'", "\\'", $msg["transferts_circ_retour_bt_retour_mauvaise_localisation"]) . "';\nmsg_inf_trans = '" . str_replace("'", "\\'", str_replace("!!lbl_site!!", $resSite, $msg["transferts_circ_retour_lbl_transfert"])) . "';\nmsg_bt_trans = '" . str_replace("'", "\\'", $msg["transferts_circ_retour_bt_changement_localisation"]) . "';\n\nfunction changeAction() {\n\n\tvar actionTrans = new http_request();\n\tvar url= './ajax.php?module=circ&categ=transferts&idexpl=' + document.actionTrans.explTrans.value + '&action=';\n\t\t\t\t\n\tswitch (document.actionTrans.typeTrans.value) {\n\t\tcase '0':\n\t\t\t//il y a eu un changement localisation\n\t\t\t//on propose un transfert\n\t\t\tif (confirm('" . addslashes($msg["transferts_circ_retour_confirm_gen_transfert"]) . "')) {\n\n\t\t\t\turl = url + 'gen_transfert¶m=' + document.actionTrans.paramTrans.value ;\n\t\t\t\n\t\t\t\tif (actionTrans.request(url)) {\n\t\t\t\t\t// Il y a une erreur. Afficher le message retourné\n\t\t\t\t\talert ( '" . addslashes($msg["540"]) . " : ' + actionTrans.get_text() );\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\t//tout c'est bien passe\n\t\t\t\t\t\n\t\t\t\t\t//on recupere les infos\n\t\t\t\t\tdocument.actionTrans.typeTrans.value = '1';\n\t\t\t\t\tdocument.actionTrans.paramTrans.value = actionTrans.get_text();\n\t\t\t\t\t\n\t\t\t\t\t//on change les textes\n\t\t\t\t\tdocument.actionTrans.btActionTrans.value = msg_bt_trans;\n\t\t\t\t\tdocument.getElementById('libInfoTransfert').innerHTML = msg_inf_trans; \n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\n\t\t\t}//if confirm\n\t\t\t\n\t\t\t\n\t\t\tbreak;\n\t\n\t\tcase '1':\n\t\t\t//il y a eu un transfert\n\t\t\t//on propose un changement de localisation\n\t\t\tif (confirm('" . addslashes($msg["transferts_circ_retour_confirm_change_loc"]) . "')) {\n\n\t\t\t\turl = url + 'change_loc¶m=' + document.actionTrans.paramTrans.value ;\n\t\t\t\n\t\t\t\tif (actionTrans.request(url)) {\n\t\t\t\t\t// Il y a une erreur. Afficher le message retourné\n\t\t\t\t\talert ( '" . addslashes($msg["540"]) . " : ' + actionTrans.get_text() );\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\t//tout c'est bien passe\n\t\t\t\t\t\n\t\t\t\t\t//on recupere les infos\n\t\t\t\t\tdocument.actionTrans.typeTrans.value = '0';\n\t\t\t\t\tdocument.actionTrans.paramTrans.value = actionTrans.get_text();\n\t\t\t\t\t\n\t\t\t\t\t//on change les textes\n\t\t\t\t\tdocument.actionTrans.btActionTrans.value = msg_bt_loc;\n\t\t\t\t\tdocument.getElementById('libInfoTransfert').innerHTML = msg_inf_loc; \n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\n\t\t\t} //if confirm\n\t\t\tbreak;\n\t} //switch\n\t\t\n}\n\nfunction enregLoc(obj) {\n\tval = obj.options[obj.selectedIndex].value;\n\t\n\tvar actionTrans = new http_request();\n\tvar url= './ajax.php?module=circ&categ=transferts&idexpl=' + document.actionTrans.explTrans.value + '&action=change_section¶m='+val;\n\t\n\tif (actionTrans.request(url)) {\n\t\t// Il y a une erreur. Afficher le message retourné\n\t\talert ( '" . addslashes($msg["540"]) . " : ' + actionTrans.get_text() );\t\t\t\n\t}\n}\n</script>"; if ($stuff->resa_idempr) { // le doc en retour peut servir à valider une résa suivante if (!verif_cb_utilise($stuff->expl_cb)) { $affect = affecte_cb($stuff->expl_cb); } } if (!$affect) { switch ($transferts_retour_action_defaut) { case "0": //change la localisation d'origine $param = $trans->retour_exemplaire_change_localisation($stuff->expl_id); //le message a l'ecran $html_erreur_site .= "<div id='libInfoTransfert'>" . str_replace("!!lbl_site!!", $resSite, $msg["transferts_circ_retour_lbl_change_localisation"]) . "</div>"; if ($transferts_retour_action_autorise_autre == "1") { //on propose de générer le transfert $html_erreur_site .= " <input class='bouton' name='btActionTrans' type='button' value=\"" . $msg["transferts_circ_retour_bt_retour_mauvaise_localisation"] . "\" " . " onclick=\"changeAction();\"" . ">"; } break; case "1": //genere le transfert automatique de l'exemplaire $param = $trans->retour_exemplaire_genere_transfert_retour($stuff->expl_id); //le message a l'ecran $html_erreur_site .= "<div id='libInfoTransfert'>" . $msg["transferts_circ_retour_lbl_transfert"] . "</div>"; if ($transferts_retour_action_autorise_autre == "1") { //on propose de changer la localisation $html_erreur_site .= " <input class='bouton' name='btActionTrans' type='button' value=\"" . $msg["transferts_circ_retour_bt_changement_localisation"] . "\" " . " onclick=\"changeAction();\"" . ">"; } break; } //switch } if ($transferts_retour_action_autorise_autre == "1") { $html_erreur_site .= "<input type='hidden' name='paramTrans' value='" . $param . "'></form>"; } $html_erreur_site = str_replace("!!lbl_site!!", $resSite, $html_erreur_site); $html_erreur_site = str_replace("!!liste_sections!!", $expl_section_libelle, $html_erreur_site); $transfert_mauvais_site = true; } else { //if (($pmb_transferts_actif)&&($stuff->pret_idempr)) //le message à l'écran $html_erreur_site .= $msg[expl_retour_bad_location]; } $html_erreur_site .= "</div>"; print pmb_bidi($html_erreur_site); // fin de if ($stuff->expl_location != $deflt_docs_location) } if ($stuff->expl_note) { $alert_sound_list[] = "critique"; print pmb_bidi("<hr /><div class='erreur'>{$msg[377]} :</div><div class='message_important'>" . $stuff->expl_note . "</div>"); } elseif ($pmb_play_pret_sound) { $alert_sound_list[] = "information"; } // zone du dernier emrunteur if ($stuff->expl_lastempr) { $dernier_empr = "<hr /><div class='row'>{$msg['expl_prev_empr']} "; $link = "<a href='./circ.php?categ=pret&form_cb=" . rawurlencode($stuff->lastempr_cb) . "'>"; $dernier_empr .= $link . $stuff->lastempr_prenom . ' ' . $stuff->lastempr_nom . ' (' . $stuff->lastempr_cb . ')</a>'; $dernier_empr .= "</div><hr />"; } if ($stuff->pret_idempr) { // l'exemplaire était effectivement emprunté // calcul du retard éventuel $rqt_date = "select ((TO_DAYS(CURDATE()) - TO_DAYS('{$stuff->pret_retour}'))) as retard "; $resultatdate = mysql_query($rqt_date); $resdate = mysql_fetch_object($resultatdate); $retard = $resdate->retard; if ($retard > 0) { //Calcul du vrai nombre de jours $date_debut = explode("-", $stuff->pret_retour); $ndays = calendar::get_open_days($date_debut[2], $date_debut[1], $date_debut[0], date("d"), date("m"), date("Y")); if ($ndays > 0) { $retard = (int) $ndays; print "<br /><div class='erreur'>" . $msg[369] . " : " . $retard . " " . $msg[370] . "</div>"; $alert_sound_list[] = "critique"; } } //Calcul du blocage if ($pmb_blocage_retard) { $date_debut = explode("-", $stuff->pret_retour); $ndays = calendar::get_open_days($date_debut[2], $date_debut[1], $date_debut[0], date("d"), date("m"), date("Y")); if ($ndays > $pmb_blocage_delai) { $ndays = $ndays * $pmb_blocage_coef; if ($ndays > $pmb_blocage_max && $pmb_blocage_max != 0) { $ndays = $pmb_blocage_max; } } else { $ndays = 0; } if ($ndays > 0) { //Le lecteur est-il déjà bloqué ? $date_fin_blocage_empr = mysql_result(mysql_query("select date_fin_blocage from empr where id_empr='" . $stuff->pret_idempr . "'"), 0, 0); //Calcul de la date de fin $date_fin = calendar::add_days(date("d"), date("m"), date("Y"), $ndays); if ($date_fin > $date_fin_blocage_empr) { //Mise à jour mysql_query("update empr set date_fin_blocage='" . $date_fin . "' where id_empr='" . $stuff->pret_idempr . "'"); print "<br /><div class='erreur'>" . sprintf($msg["blocage_retard_pret"], formatdate($date_fin)) . "</div>"; $alertsound_list[] = "critique"; } else { print "<br /><div class='erreur'>" . sprintf($msg["blocage_already_retard_pret"], formatdate($date_fin_blocage_empr)) . "</div>"; $alertsound_list[] = "critique"; } } } //Vérification des amendes if ($pmb_gestion_financiere && $pmb_gestion_amende) { $amende = new amende($stuff->pret_idempr); $amende_t = $amende->get_amende($stuff->pret_idexpl); //Si il y a une amende, je la débite if ($amende_t["valeur"]) { print pmb_bidi("<br /><div class='erreur'>" . $msg["finance_retour_amende"] . " : " . comptes::format($amende_t["valeur"])); $alert_sound_list[] = "critique"; $compte_id = comptes::get_compte_id_from_empr($stuff->pret_idempr, 2); if ($compte_id) { $cpte = new comptes($compte_id); if ($cpte->id_compte) { $cpte->record_transaction("", $amende_t["valeur"], -1, sprintf($msg["finance_retour_amende_expl"], $stuff->pret_idexpl), 0); print " " . $msg["finance_retour_amende_recorded"]; } } print "</div>"; } } // zone du dernier emrunteur print pmb_bidi($dernier_empr); // code de suppression prêt et la mise en table de stat if ($confirmed) { if (del_pret($stuff)) { if (!maj_stat_pret($stuff)) { // impossible de maj en table stat print "<div class='erreur'>{$msg[371]}</div>"; } } else { // impossible de supprimer en table pret print "<div class='erreur'>{$msg[372]}</div>"; } // traitement de l'éventuelle réservation if ($stuff->resa_idempr) { // le doc en retour peut servir à valider une résa suivante if (!verif_cb_utilise($stuff->expl_cb) || $affect) { if (!$affect) { $affect = affecte_cb($stuff->expl_cb); } // affichage message de réservation if ($affect) { $trans_en_cours = false; $msg_trans = ""; if ($pmb_transferts_actif == "1" && !$transfert_mauvais_site) { //si le transfert est actif et qu'un transfert n'est pas deja fait $res_transfert = resa_transfert($affect, $stuff->expl_cb); if ($res_transfert != 0) { $rqt = "SELECT location_libelle FROM docs_location WHERE idlocation=" . $res_transfert; $lib_loc = mysql_result(mysql_query($rqt), 0); $msg_trans = "<strong>" . str_replace("!!site_dest!!", $lib_loc, $msg["transferts_circ_resa_validation_alerte"]) . "</strong><br />"; $trans_en_cours = true; } } $query = "select distinct "; $query .= "empr_prenom, empr_nom, empr_cb "; $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 "; $query .= "where id_resa in (" . $affect . ") and resa_idempr=id_empr"; $result = mysql_query($query, $dbh); $empr = @mysql_fetch_object($result); print pmb_bidi("<div class='message_important'>{$msg['352']}</div>\n\t\t\t\t\t\t\t<div class='row'>{$msg_trans}\n\t\t\t\t\t\t\t{$msg[373]}\n\t\t\t\t\t\t\t<strong><a href='./circ.php?categ=pret&form_cb=" . rawurlencode($empr->empr_cb) . "'>" . $empr->empr_prenom . " " . $empr->empr_nom . "</a></strong>\n\t\t\t\t\t\t\t ({$empr->empr_cb} )\n\t\t\t\t\t\t\t</div>"); $alert_sound_list[] = "critique"; if (!$trans_en_cours) { alert_empr_resa($affect); } } // fin if affect } // fin if !verif_cb_utilise } // fin if resa } // fin confirmed $empr = new emprunteur($stuff->pret_idempr, $erreur_affichage, FALSE, 2); print pmb_bidi($empr->fiche_affichage); } else { print "<div class='erreur'>{$msg[605]}</div>"; $alert_sound_list[] = "critique"; } // show_report($stuff); // this stands for debugging }
function do_retour_doc() { global $dbh; global $msg; global $pmb_gestion_amende, $pmb_gestion_financiere, $pmb_blocage_retard, $pmb_blocage_max, $pmb_blocage_delai, $pmb_blocage_coef; // récupération localisation exemplaire $query = "select t.tdoc_libelle as type_doc"; $query .= ", l.location_libelle as location"; $query .= ", s.section_libelle as section"; $query .= " from docs_type t"; $query .= ", docs_location l"; $query .= ", docs_section s"; $query .= " where t.idtyp_doc=" . $this->expl_typdoc; $query .= " and l.idlocation=" . $this->expl_location; $query .= " and s.idsection=" . $this->expl_section; $query .= " limit 1"; $result = pmb_mysql_query($query, $dbh); $info_doc = pmb_mysql_fetch_object($result); $this->type_doc = $info_doc->type_doc; if ($this->nbparts > 1) { $this->type_doc .= " (" . $this->nbparts . ")"; } $this->location = $info_doc->location; $this->section = $info_doc->section; if ($this->expl_note) { $this->error_message = $msg[377]; } if ($this->pret_idempr) { // calcul du retard éventuel $rqt_date = "select ((TO_DAYS(CURDATE()) - TO_DAYS('{$this->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->pret_retour); $ndays = calendar::get_open_days($date_debut[2], $date_debut[1], $date_debut[0], date("d"), date("m"), date("Y")); if ($ndays > 0) { $retard = (int) $ndays; $this->error_message = $msg[369] . " : " . $retard . " " . $msg[370]; } else { $this->error_message = $msg["calendrier_active_aucun_retard"]; } } //Calcul du blocage if ($pmb_blocage_retard) { $date_debut = explode("-", $this->pret_retour); $ndays = calendar::get_open_days($date_debut[2], $date_debut[1], $date_debut[0], date("d"), date("m"), date("Y")); if ($ndays > $pmb_blocage_delai) { $ndays = $ndays * $pmb_blocage_coef; if ($ndays > $pmb_blocage_max && $pmb_blocage_max != 0) { $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->pret_idempr . "'"), 0, 0); //Calcul de la date de fin $date_fin = calendar::add_days(date("d"), date("m"), date("Y"), $ndays); if ($date_fin > $date_fin_blocage_empr) { //Mise à jour pmb_mysql_query("update empr set date_fin_blocage='" . $date_fin . "' where id_empr='" . $this->pret_idempr . "'"); $this->error_message = sprintf($msg["blocage_retard_pret"], formatdate($date_fin)); } else { $this->error_message = sprintf($msg["blocage_already_retard_pret"], formatdate($date_fin_blocage_empr)); } } } //Vérification des amendes if ($pmb_gestion_financiere && $pmb_gestion_amende) { $amende = new amende($this->pret_idempr); $amende_t = $amende->get_amende($this->pret_idexpl); //Si il y a une amende, je la débite if ($amende_t["valeur"]) { $this->error_message = $msg["finance_retour_amende"] . " : " . comptes::format($amende_t["valeur"]); $compte_id = comptes::get_compte_id_from_empr($this->pret_idempr, 2); if ($compte_id) { $cpte = new comptes($compte_id); if ($cpte->id_compte) { $cpte->record_transaction("", $amende_t["valeur"], -1, sprintf($msg["finance_retour_amende_expl"], $this->pret_idexpl), 0); $this->error_message .= " " . $msg["finance_retour_amende_recorded"]; } } } } // Suppression prêt et la mise en table de stat $query = "delete from pret where pret_idexpl = '" . $this->pret_idexpl . "' "; $result = pmb_mysql_query($query, $dbh); if ($result) { $this->retour_message = $msg["retour_ok"]; if (!$this->maj_stat_pret()) { // impossible de maj en table stat $this->error_message = $msg[371]; } } else { // impossible de supprimer en table pret $this->error_message = $msg[372]; } // traitement de l'éventuelle réservation if ($this->resa_idempr) { // le doc en retour peut servir à valider une résa suivante if (!verif_cb_utilise($this->cb_expl)) { $affect = affecte_cb($this->cb_expl); // affichage message de réservation if ($affect) { $this->error_message = $msg["rfid_retour_document_reserve_message"]; $this->url_reservation = "./circ.php?categ=pret&form_cb=" . rawurlencode($this->cb_reservataire); } // fin if affect } // fin if !verif_cb_utilise } // fin if resa } else { $this->error_message = $msg[605]; } }
function filter_loc_expl($liste_ids, $champ, $selected = "", $sort = false) { global $dbh, $charset; global $all_level; $ret = ""; if ($selected && is_array($selected) && !(count($selected) == 1 && $selected[0] == -1)) { if (is_array($all_level) && count($all_level)) { //Je repart des bons lecteurs $liste_ids = array_keys($all_level); } $requete = "SELECT pret_idempr FROM pret JOIN exemplaires ON pret_idexpl=expl_id JOIN docs_location ON expl_location=idlocation WHERE location_libelle IN ('" . implode("','", $selected) . "') "; if (count($liste_ids)) { $requete .= "AND pret_idempr IN (" . implode(",", $liste_ids) . ")"; } $requete .= " GROUP BY pret_idempr"; $res = pmb_mysql_query($requete, $dbh); if ($res && pmb_mysql_num_rows($res)) { $new_all_level = array(0); while ($empr = pmb_mysql_fetch_object($res)) { if ($all_level[$empr->pret_idempr]) { $new_all_level[$empr->pret_idempr] = $all_level[$empr->pret_idempr]; } else { $amende = new amende($empr->pret_idempr); $new_all_level[$empr->pret_idempr] = $amende->get_max_level(); } } $all_level = $new_all_level; } else { $all_level = array(0); } } if (!is_array($selected)) { $selected = array(); } $requete = "SELECT idlocation, location_libelle FROM docs_location GROUP BY location_libelle ORDER BY location_libelle"; $res = pmb_mysql_query($requete, $dbh); if ($res && pmb_mysql_num_rows($res)) { while ($ligne = pmb_mysql_fetch_object($res)) { $ret .= "<option value='" . htmlentities($ligne->location_libelle, ENT_QUOTES, $charset) . "'"; if (in_array($ligne->location_libelle, $selected)) { $ret .= " selected"; } $ret .= ">" . htmlentities($ligne->location_libelle, ENT_QUOTES, $charset) . "</option>"; } } return $ret; }
function fetch_data() { global $dbh; global $msg; global $charset; global $val_list_empr; global $pmb_gestion_financiere, $pmb_gestion_abonnement, $pmb_gestion_tarif_prets, $pmb_gestion_amende; global $deflt_docs_location; if (!$this->id_empr || !$dbh) { return FALSE; } $requete = "SELECT e.*, c.libelle AS code1, s.libelle AS code2, es.statut_libelle AS empr_statut_libelle, allow_loan, allow_book, allow_opac, allow_dsi, allow_dsi_priv, allow_sugg, allow_prol, d.location_libelle as localisation, date_format(empr_date_adhesion, '" . $msg["format_date"] . "') as aff_empr_date_adhesion, date_format(empr_date_expiration, '" . $msg["format_date"] . "') as aff_empr_date_expiration FROM empr e left join docs_location as d on e.empr_location=d.idlocation, empr_categ c, empr_codestat s, empr_statut es "; $requete .= " WHERE e.id_empr='" . $this->id_empr . "' "; $requete .= " AND c.id_categ_empr=e.empr_categ"; $requete .= " AND s.idcode=e.empr_codestat"; $requete .= " AND es.idstatut=e.empr_statut"; $requete .= " LIMIT 1"; $result = pmb_mysql_query($requete, $dbh) or die(pmb_mysql_error() . " " . $requete); if (!pmb_mysql_num_rows($result)) { return FALSE; } $empr = pmb_mysql_fetch_object($result); // affectation des propriétés $this->empr_cb = $empr->empr_cb; // code barre emprunteur $this->empr_nom = $empr->empr_nom; // nom emprunteur $this->empr_prenom = $empr->empr_prenom; // prénom mprunteur $this->empr_adr1 = $empr->empr_adr1; // adresse ligne 1 $this->empr_adr2 = $empr->empr_adr2; // adresse ligne 2 $this->empr_cp = $empr->empr_cp; // code postal $this->empr_ville = $empr->empr_ville; // ville $this->empr_pays = $empr->empr_pays; // ville $this->empr_mail = $empr->empr_mail; // adresse email $this->empr_tel1 = $empr->empr_tel1; // téléphone 1 $this->empr_tel2 = $empr->empr_tel2; // téléphone 2 $this->empr_prof = $empr->empr_prof; // profession $this->empr_year = $empr->empr_year; // année de naissance $this->empr_categ = $empr->empr_categ; // catégorie emprunteur $this->empr_codestat = $empr->empr_codestat; // code statistique $this->empr_creation = $empr->empr_creation; // date de création $this->empr_modif = $empr->empr_modif; // date de modification $this->empr_sexe = $empr->empr_sexe; // sexe de l'emprunteur $this->empr_login = $empr->empr_login; // login pour services OPAC $this->empr_password = $empr->empr_password; // mot de passe OPAC $this->empr_ldap = $empr->empr_ldap; $this->type_abt = $empr->type_abt; // type d'abonnement $this->empr_location = $empr->empr_location; // localisation $this->empr_location_l = $empr->localisation; // localisation $this->date_fin_blocage = $empr->date_fin_blocage; // Date de fin de blocage de l'emprunteur $this->empr_statut = $empr->empr_statut; $this->empr_statut_l = $empr->empr_statut_libelle; $this->total_loans = $empr->total_loans; $this->date_adhesion = $empr->empr_date_adhesion; // début adhésion $this->date_expiration = $empr->empr_date_expiration; // fin adhésion $this->aff_date_adhesion = $empr->aff_empr_date_adhesion; // début adhésion $this->aff_date_expiration = $empr->aff_empr_date_expiration; // fin adhésion $this->empr_msg = $empr->empr_msg; // message emprunteur $this->cat_l = $empr->code1; // libellé catégorie emprunteur $this->cstat_l = $empr->code2; // libellé code statistique. voir ce bug avec Eric $this->allow_loan = $empr->allow_loan; $this->allow_book = $empr->allow_book; $this->allow_opac = $empr->allow_opac; $this->allow_dsi = $empr->allow_dsi; $this->allow_dsi_priv = $empr->allow_dsi_priv; $this->allow_sugg = $empr->allow_sugg; $this->allow_prol = $empr->allow_prol; global $selector_prop_ajout_caddie_empr, $empr_show_caddie; if ($empr_show_caddie) { $this->img_ajout_empr_caddie = "<img src='./images/basket_empr.gif' align='middle' alt='basket' title=\"{$msg[400]}\" onClick=\"openPopUp('./cart.php?object_type=EMPR&item=" . $this->id . "', 'cart', 600, 700, -2, -2, '{$selector_prop_ajout_caddie_empr}')\">"; } else { $this->img_ajout_empr_caddie = ""; } $this->lien_nom_prenom = "<a href='./circ.php?categ=pret&form_cb=" . rawurlencode($this->cb) . "'>{$this->nom}, {$this->prenom}</a>"; $date_blocage = array(); $date_blocage = explode("-", $this->date_fin_blocage); if (mktime(0, 0, 0, $date_blocage[1], $date_blocage[2], $date_blocage[0]) > time()) { $this->blocage_active = true; } //Groupes $requete = "select id_groupe, libelle_groupe from groupe, empr_groupe where empr_id='" . $this->id . "' and id_groupe=groupe_id"; $result = pmb_mysql_query($requete); if (pmb_mysql_num_rows($result)) { while ($grp_temp = pmb_mysql_fetch_object($result)) { $this->groupes[] = "<a href='./circ.php?categ=groups&action=showgroup&groupID=" . $grp_temp->id_groupe . "'>" . htmlentities($grp_temp->libelle_groupe, ENT_QUOTES, $charset) . "</a>"; } } else { $this->groupes = array(); } //Paramètres perso //Liste des champs $p_perso = new parametres_perso("empr"); $perso_ = $p_perso->show_fields($this->id_empr); $perso = ""; $class = "colonne3"; $c = 0; if (count($perso_["FIELDS"])) { for ($i = 0; $i < count($perso_["FIELDS"]); $i++) { $p = $perso_["FIELDS"][$i]; $perso .= "<div class='{$class}'>"; $perso .= "<div class='row'>" . $p["TITRE"]; $perso .= $p["AFF"] . "</div>"; $perso .= "</div>"; if ($c == 0) { $c = 1; } else { if ($c == 1) { $class = "colonne_suite"; $c = 2; } else { if ($c == 2) { $class = "colonne3"; $c = 0; } } } } $reste = 2 - $c; if ($c != 0) { for ($i = 0; $i < $reste; $i++) { $perso .= "<div class='colonne3'> </div>"; $c++; } $perso .= "<div class='colonne_suite'> </div>"; } } $this->perso = $perso; //Comptes si gestion financiere if ($pmb_gestion_financiere) { $compte = ""; $n_c = 0; $neg = "<span class='erreur'>%s</span>"; $pos = "%s"; $compte .= "<div class='row'><hr /></div><div class='row'>"; if ($pmb_gestion_abonnement) { $cpt_id = comptes::get_compte_id_from_empr($this->id, 1); $cpt = new comptes($cpt_id); $solde = $cpt->update_solde(); $novalid = $cpt->summarize_transactions("", "", 0, 0); if ($cpt_id) { $compte .= "<div class='colonne3'><div><strong><a href='./circ.php?categ=pret&sub=compte&id=" . $this->id . "&typ_compte=1'>" . $msg["finance_solde_abt"] . "</a></strong> " . comptes::format($solde) . "</div>"; if ($novalid) { $compte .= "<div>" . $msg["finance_not_validated"] . " : " . comptes::format($novalid) . "</div>"; } $compte .= "</div>"; } $n_c++; } if ($pmb_gestion_tarif_prets) { $cpt_id = comptes::get_compte_id_from_empr($this->id, 3); $cpt = new comptes($cpt_id); $solde = $cpt->update_solde(); $novalid = $cpt->summarize_transactions("", "", 0, 0); if ($cpt_id) { $compte .= "<div class='colonne3'><div><strong><a href='./circ.php?categ=pret&sub=compte&id=" . $this->id . "&typ_compte=3'>" . $msg["finance_solde_pret"] . "</a></strong> " . comptes::format($solde) . "</div>"; if ($novalid) { $compte .= "<div>" . $msg["finance_not_validated"] . " : " . comptes::format($novalid) . "</div>"; } $compte .= "</div>"; } $n_c++; } if ($pmb_gestion_amende) { $cpt_id = comptes::get_compte_id_from_empr($this->id, 2); $cpt = new comptes($cpt_id); $solde = $cpt->update_solde(); $novalid = $cpt->summarize_transactions("", "", 0, 0); if ($cpt_id) { //Calcul des amendes $amende = new amende($this->id); $total_amende = $amende->get_total_amendes(); $compte .= "<div class='colonne3'><div><strong><a href='./circ.php?categ=pret&sub=compte&id=" . $this->id . "&typ_compte=2'>" . $msg["finance_solde_amende"] . "</a></strong> " . comptes::format($solde) . "</div>"; if ($novalid) { $compte .= "<div>" . $msg["finance_not_validated"] . " : " . comptes::format($novalid) . "</div>"; } if ($total_amende) { $compte .= "<div> " . $msg["finance_pret_amende_en_cours"] . " : " . comptes::format($total_amende) . "</div>"; } $compte .= "</div>"; } $n_c++; } if ($n_c < 2) { for ($i = $n_c; $i < 3; $i++) { $compte .= "<div class='colonne3'> </div>"; } } $compte .= "</div><div class='row'></div>"; } $this->compte = $compte; }
function buildPdfLoansDelayReaders($t_empr, $f_loc = 0, $niveau_relance = 0) { global $ourPDF, $fpdf, $pdflettreretard_1largeur_page, $pdflettreretard_1hauteur_page, $pdflettreretard_1format_page; global $pmb_lecteurs_localises, $deflt2docs_location, $pdflettreretard_impression_tri; global $empr_sms_activation, $empr_sms_msg_retard; global $mailretard_priorite_email, $pmb_gestion_financiere, $pmb_gestion_amende; $largeur_page = $pdflettreretard_1largeur_page; $hauteur_page = $pdflettreretard_1hauteur_page; $taille_doc = array($largeur_page, $hauteur_page); $format_page = $pdflettreretard_1format_page; $ourPDF = new $fpdf($format_page, 'mm', $taille_doc); $ourPDF->Open(); $restrict_localisation = ""; if ($t_empr) { $restrict_localisation = " id_empr in (" . implode(",", $t_empr) . ") and "; } if ($pmb_lecteurs_localises) { if (!$f_loc) { $f_loc = $deflt2docs_location; } } else { $f_loc = $deflt2docs_location; } $this->infos_biblio($f_loc); // parametre listant les champs de la table empr pour effectuer le tri d'impression des lettres if ($pdflettreretard_impression_tri) { $order_by = " ORDER BY {$pdflettreretard_impression_tri}"; } else { $order_by = ""; } $rqt = "select id_empr, concat(empr_nom,' ',empr_prenom) as empr_name, empr_cb, empr_mail, empr_tel1, empr_sms, count(pret_idexpl) as empr_nb, {$pdflettreretard_impression_tri} from empr, pret, exemplaires where {$restrict_localisation} pret_retour<curdate() and pret_idempr=id_empr and pret_idexpl=expl_id group by id_empr {$order_by}"; $req = pmb_mysql_query($rqt); while ($r = pmb_mysql_fetch_object($req)) { if ($pmb_gestion_financiere && $pmb_gestion_amende) { $amende = new amende($r->id_empr); $level = $amende->get_max_level(); $niveau_min = $level["level_min"]; $printed = $level["printed"]; if ($printed == 2) { $printed = 0; } pmb_mysql_query("update pret set printed=1 where printed=2 and pret_idempr=" . $r->id_empr); $not_mail = true; if ($mailretard_priorite_email == 1 && $r->empr_mail && $niveau_min < 3) { $not_mail = false; } if (($print_all || !$printed) && $niveau_min && $not_mail) { $niveau_relance = $niveau_min; $this->get_texts($niveau_relance); lettre_retard_par_lecteur($r->id_empr); $ourPDF->SetMargins($marge_page_gauche, $marge_page_gauche); } } else { if (!$niveau_relance) { $niveau_relance = 1; } $this->get_texts($niveau_relance); lettre_retard_par_lecteur($r->id_empr); $ourPDF->SetMargins($marge_page_gauche, $marge_page_gauche); } if ($r->empr_tel1 && $r->empr_sms && $empr_sms_msg_retard) { $res_envoi_sms = send_sms(0, $niveau_relance, $r->empr_tel1, $empr_sms_msg_retard); } } // fin while return $ourPDF; }
} if ($empr_location_id != 0) { $restrict_localisation = " empr_location='{$empr_location_id}' AND "; } } // parametre listant les champs de la table empr pour effectuer le tri d'impression des lettres if ($pdflettreretard_impression_tri) { $order_by = " ORDER BY {$pdflettreretard_impression_tri}"; } else { $order_by = ""; } $rqt = "select id_empr, concat(empr_nom,' ',empr_prenom) as empr_name, empr_cb, empr_mail, empr_tel1, empr_sms, count(pret_idexpl) as empr_nb, {$pdflettreretard_impression_tri} from empr, pret, exemplaires where {$restrict_localisation} pret_retour<curdate() and pret_idempr=id_empr and pret_idexpl=expl_id group by id_empr {$order_by}"; $req = mysql_query($rqt) or die('Erreur SQL !<br />' . $rqt . '<br />' . mysql_error()); while ($r = mysql_fetch_object($req)) { if ($pmb_gestion_financiere && $pmb_gestion_amende) { $amende = new amende($r->id_empr); $level = $amende->get_max_level(); $niveau_min = $level["level_min"]; $printed = $level["printed"]; if ($printed == 2 || $mailretard_priorite_email == 2 && $niveau_min < 3) { $printed = 0; } mysql_query("update pret set printed=1 where printed=2 and pret_idempr=" . $r->id_empr); if (($print_all || !$printed) && $niveau_min) { $niveau = $niveau_min; get_texts($niveau); lettre_retard_par_lecteur($r->id_empr); $ourPDF->SetMargins($marge_page_gauche, $marge_page_gauche); } } else { if (!$niveau) {
function del_pret() { global $dbh; 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; if (!$this->expl->pret_idempr) { return ''; } // 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")); if ($ndays > 0) { $retard = (int) $ndays; $message .= "<br /><div class='erreur'>" . $msg[369] . " : " . $retard . " " . $msg[370] . "</div>"; $alertsound_list[] = "critique"; $this->message_retard = $selfservice_retour_retard_msg . " " . $msg[369] . " : " . $retard . " " . $msg[370]; } } //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")); if ($ndays > $pmb_blocage_delai) { $ndays = $ndays * $pmb_blocage_coef; if ($ndays > $pmb_blocage_max && $pmb_blocage_max != 0) { $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 $date_fin = calendar::add_days(date("d"), date("m"), date("Y"), $ndays); 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 .= "<br /><div class='erreur'>" . sprintf($msg["blocage_retard_pret"], formatdate($date_fin)) . "</div>"; $alertsound_list[] = "critique"; $this->message_blocage = sprintf($selfservice_retour_blocage_msg, formatdate($date_fin)); } else { $message .= "<br /><div class='erreur'>" . sprintf($msg["blocage_already_retard_pret"], formatdate($date_fin_blocage_empr)) . "</div>"; $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("<br /><div class='erreur'>" . $msg["finance_retour_amende"] . " : " . comptes::format($amende_t["valeur"])); $this->message_amende = $selfservice_retour_amende_msg . " : " . comptes::format($amende_t["valeur"]); $alertsound_list[] = "critique"; $compte_id = comptes::get_compte_id_from_empr($this->expl->pret_idempr, 2); if ($compte_id) { $cpte = new comptes($compte_id); if ($cpte->id_compte) { $cpte->record_transaction("", $amende_t["valeur"], -1, sprintf($msg["finance_retour_amende_expl"], $this->expl_id), 0); $message .= " " . $msg["finance_retour_amende_recorded"]; } } $message .= "</div>"; $req = "delete from cache_amendes where id_empr=" . $this->expl->pret_idempr; pmb_mysql_query($req); } } $query = "delete from pret where pret_idexpl=" . $this->expl_id; if (!pmb_mysql_query($query, $dbh)) { return ''; } $query = "update empr set last_loan_date=sysdate() where id_empr='" . $this->expl->pret_idempr . "' "; @pmb_mysql_query($query, $dbh); $query = "update exemplaires set expl_lastempr='" . $this->expl->pret_idempr . "', last_loan_date=sysdate() where expl_id='" . $this->expl->expl_id . "' "; if (!pmb_mysql_query($query, $dbh)) { return ''; } $this->maj_stat_pret(); $this->empr = new emprunteur($this->expl->pret_idempr, $erreur_affichage, FALSE, 2); $this->expl->pret_idempr = 0; $this->flag_rendu = 1; return $message; }
function do_tablo_relance() { global $msg, $dbh; $tableau = ""; $amende = new amende($this->id); $level = $amende->get_max_level(); $niveau = $level["level"]; $niveau_min = $level["level_min"]; $niveau_normal = $level["level_normal"]; $printed = $level["printed"]; $date_relance = $level["level_min_date_relance"]; $list_dates[$date_relance] = format_date($date_relance); if ($niveau_min || $niveau_normal) { $requete = "select count(pret_idexpl) as empr_nb from empr, pret, exemplaires where \n\t\t\tpret_retour < CURDATE() and pret_idempr=id_empr and pret_idexpl=expl_id and id_empr='" . $this->id . "'"; $res = mysql_query($requete, $dbh); $empr = mysql_fetch_object($res); $tableau = "<table width='100%' >"; // $tableau .= "<tr><th>".$msg["relance_nb_retard"]."</th><th>".$msg["relance_dernier_niveau"]."</th><th>".$msg["relance_date_derniere"]."</th><th>".$msg["relance_imprime"]."</th><th>".$msg["relance_niveau_suppose"]."</th></tr>"; $tableau .= "<tr>\n\t\t\t<td>" . $msg["relance_nb_retard"] . ": {$empr->empr_nb}</td>\n\t\t\t<td>" . $msg["relance_dernier_niveau"] . ": {$niveau_min}</td>\n\t\t\t<td>" . $msg["relance_date_derniere"] . ": " . $list_dates[$date_relance] . "</td>\n\t\t\t<td>" . $msg["relance_imprime"] . ": " . ($printed ? "" . $msg[40] . "" : "" . $msg[39] . "") . "</td>\n\t\t\t<td>" . $msg["relance_niveau_suppose"] . ": {$niveau_normal}</td>\n\t\t\t</tr>"; $tableau .= "</table>"; } return $tableau; }
function expl_retard($cb_doc, $niveau = 0, $id_empr = 0) { global $msg, $dbh, $charset; global $pmb_gestion_financiere, $pmb_gestion_amende; $valeur = 0; $dates_resa_sql = " date_format(pret_date, '" . $msg["format_date"] . "') as aff_pret_date, date_format(pret_retour, '" . $msg["format_date"] . "') as aff_pret_retour "; $requete = "SELECT notices_m.notice_id as m_id, notices_s.notice_id as s_id, pret_idempr, expl_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, " . $dates_resa_sql . ", "; $requete .= " notices_m.tparent_id, notices_m.tnvol "; $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 "; $requete .= " WHERE expl_cb='" . $cb_doc . "' and expl_typdoc = idtyp_doc and expl_section = idsection and expl_location = idlocation and pret_idexpl = expl_id "; $res = mysql_query($requete, $dbh) or die(mysql_error() . " {$requete}"); $expl = mysql_fetch_object($res); // récupération du titre de série if ($expl->tparent_id && $expl->m_id) { $parent = new serie($expl->tparent_id); $tit_serie = $parent->name; if ($expl->tnvol) { $tit_serie .= ', ' . $expl->tnvol; } } if ($tit_serie) { $expl->tit = $tit_serie . '. ' . $expl->tit; } $libelle = $expl->tdoc_libelle; $responsabilites = get_notice_authors($expl->m_id); //print_r($responsabilites); $as = array_keys($responsabilites["responsabilites"], "0"); for ($i = 0; $i < count($as); $i++) { $indice = $as[$i]; $auteur_1 = $responsabilites["auteurs"][$indice]; $auteur = new auteur($auteur_1["id"]); $aut1_libelle[] = $auteur->isbd_entry; } if ($aut1_libelle) { $auteurs_liste = implode("; ", $aut1_libelle); if ($auteurs_liste) { $libelle .= ' / ' . $auteurs_liste; } } $libelle = $expl->tit . " (" . $libelle . ")"; $this->expl_info .= " \t<expl>\n"; $this->expl_info .= "\t\t<label>" . htmlspecialchars($libelle, ENT_QUOTES, $charset) . "</label>\n"; $this->expl_info .= "\t\t<loan_date>" . htmlspecialchars($expl->aff_pret_date, ENT_QUOTES, $charset) . "</loan_date>\n"; $this->expl_info .= "\t\t<return_date>" . htmlspecialchars($expl->aff_pret_retour, ENT_QUOTES, $charset) . "</return_date>\n"; $this->expl_info .= "\t\t<location>" . htmlspecialchars($expl->location_libelle, ENT_QUOTES, $charset) . "</location>\n"; $this->expl_info .= "\t\t<section>" . htmlspecialchars($expl->section_libelle, ENT_QUOTES, $charset) . "</section>\n"; $this->expl_info .= "\t\t<expl_cb>" . htmlspecialchars($expl->expl_cb, ENT_QUOTES, $charset) . "</expl_cb>\n"; $this->expl_info .= "\t\t<expl_cote>" . htmlspecialchars($expl->expl_cote, ENT_QUOTES, $charset) . "</expl_cote>\n"; $this->expl_info .= "\t\t<tdoc_label>" . htmlspecialchars($expl->tdoc_libelle, ENT_QUOTES, $charset) . "</tdoc_label>\n"; if ($pmb_gestion_financiere && $pmb_gestion_amende) { $amende = new amende($expl->pret_idempr); $amd = $amende->get_amende($expl->expl_id); if ($amd["valeur"]) { $this->expl_info .= "\t\t<expl_fee>" . htmlspecialchars(comptes::format_simple($amd["valeur"]), ENT_QUOTES, $charset) . "</expl_fee>\n"; $valeur = $amd["valeur"]; } } if ($niveau) { $this->expl_info .= "\t\t<expl_niveau>3</expl_niveau>\n"; } if ($id_empr) { $req_empr = "select empr_nom as nom, empr_prenom as prenom from empr where id_empr={$id_empr}"; $res = mysql_query($req_empr, $dbh); $empr = mysql_fetch_object($res); $this->expl_info .= "<empr_surname>" . htmlspecialchars($empr->nom, ENT_QUOTES, $charset) . "</empr_surname>"; $this->expl_info .= "<empr_name>" . htmlspecialchars($empr->prenom, ENT_QUOTES, $charset) . "</empr_name>"; } $this->expl_info .= " \t</expl>\n"; return $valeur; }
function expl_retard($cb_doc, $x, $y, $largeur, $retrait, $link) { global $ourPDF; global $msg; global $pmb_gestion_financiere, $pmb_gestion_amende; global $pmb_pdf_font; $valeur = 0; $dates_resa_sql = " date_format(pret_date, '" . $msg["format_date"] . "') as aff_pret_date, date_format(pret_retour, '" . $msg["format_date"] . "') as aff_pret_retour "; $requete = "SELECT notices_m.notice_id as m_id, notices_s.notice_id as s_id, pret_idempr, expl_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, " . $dates_resa_sql . ", "; $requete .= " notices_m.tparent_id, notices_m.tnvol "; $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 "; $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 "; $res = mysql_query($requete, $link) or die(mysql_error() . " {$requete}"); $expl = mysql_fetch_object($res); // récupération du titre de série if ($expl->tparent_id && $expl->m_id) { $parent = new serie($expl->tparent_id); $tit_serie = $parent->name; if ($expl->tnvol) { $tit_serie .= ', ' . $expl->tnvol; } } if ($tit_serie) { $expl->tit = $tit_serie . '. ' . $expl->tit; } $libelle = $expl->tdoc_libelle; $responsabilites = get_notice_authors($expl->m_id); //print_r($responsabilites); $as = array_keys($responsabilites["responsabilites"], "0"); for ($i = 0; $i < count($as); $i++) { $indice = $as[$i]; $auteur_1 = $responsabilites["auteurs"][$indice]; $auteur = new auteur($auteur_1["id"]); $aut1_libelle[] = $auteur->isbd_entry; } if ($aut1_libelle) { $auteurs_liste = implode("; ", $aut1_libelle); if ($auteurs_liste) { $libelle .= ' / ' . $auteurs_liste; } } $libelle = $expl->tit . " (" . $libelle . ")"; //substr($libelle,0,50); $ourPDF->SetXY($x, $y); $ourPDF->setFont($pmb_pdf_font, 'BU', 10); while ($ourPDF->GetStringWidth($libelle) > 178) { $libelle = substr($libelle, 0, count($libelle) - 2); } //print $ourPDF->GetStringWidth($libelle); $ourPDF->multiCell($largeur, 8, $libelle, 0, 'L', 0); $ourPDF->SetXY($x + $retrait, $y + 4); $ourPDF->setFont($pmb_pdf_font, '', 10); $ourPDF->multiCell($largeur - $retrait, 8, $msg['fpdf_date_pret'] . " " . $expl->aff_pret_date, 0, 'L', 0); if (ceil($ourPDF->GetStringWidth($msg['fpdf_date_pret'] . " " . $expl->aff_pret_date)) > 52) { $w_string = ceil($ourPDF->GetStringWidth($msg['fpdf_date_pret'] . " " . $expl->aff_pret_date)); } else { $w_string = 52; } $ourPDF->SetXY($x + $retrait + $w_string, $y + 4); $ourPDF->setFont($pmb_pdf_font, 'B', 10); $ourPDF->multiCell($largeur - $retrait - 52, 8, $msg['fpdf_retour_prevu'] . " " . $expl->aff_pret_retour, 0, 'L', 0); $ourPDF->SetXY($x + $retrait, $y + 8); $ourPDF->setFont($pmb_pdf_font, 'I', 8); $ourPDF->multiCell($largeur - $retrait, 8, strip_tags($expl->location_libelle . ": " . $expl->section_libelle . ", " . $expl->expl_cote . " (" . $expl->expl_cb . ")"), 0, 'L', 0); if ($pmb_gestion_financiere && $pmb_gestion_amende) { $amende = new amende($expl->pret_idempr); $amd = $amende->get_amende($expl->expl_id); if ($amd["valeur"]) { $ourPDF->SetXY($x + $retrait + 120, $y + 8); $ourPDF->multiCell($largeur - $retrait - 120, 8, sprintf($msg["relance_lettre_retard_amende"], comptes::format_simple($amd["valeur"])), 0, 'R', 0); $valeur = $amd["valeur"]; } } return $valeur; }