예제 #1
0
function resa_transfert($id_resa, $cb)
{
    global $transferts_choix_lieu_opac, $transferts_site_fixe;
    global $deflt_docs_location;
    $res_trans = 0;
    //pour la gestion des transferts
    $trans = new transfert();
    //les informations de l'exemplaire
    $rqt = "SELECT expl_location FROM exemplaires WHERE expl_cb='" . $cb . "'";
    $res = pmb_mysql_query($rqt);
    $expl_loc = pmb_mysql_result($res, 0);
    switch ($transferts_choix_lieu_opac) {
        case "1":
            //retrait de la resa sur lieu choisi par le lecteur
            $rqt = "SELECT resa_loc_retrait FROM resa WHERE id_resa='" . $id_resa . "'";
            $res = pmb_mysql_query($rqt);
            $loc_retrait = pmb_mysql_result($res, 0);
            if ($loc_retrait != $expl_loc) {
                //l'exemplaire n'est pas sur le bon site
                //on genere un transfert du site de l'exemplaire vers le site de retrait
                $trans->transfert_pour_resa($cb, $loc_retrait, $id_resa);
                $res_trans = $loc_retrait;
            }
            break;
        case "2":
            //retrait de la resa sur lieu fixé
            if ($transferts_site_fixe != $expl_loc) {
                //l'exemplaire n'est pas sur le bon site
                //on genere un transfert du site de l'exemplaire vers le site fixé
                $trans->transfert_pour_resa($cb, $transferts_site_fixe, $id_resa);
                $res_trans = $transferts_site_fixe;
            }
            break;
        case "3":
            //retrait de la resa sur lieu exemplaire
            //==>on fait rien !
            break;
        default:
            //retrait de la resa sur lieu lecteur
            //on recupere la localisation de l'emprunteur
            $rqt = "SELECT empr_location FROM resa INNER JOIN empr ON resa_idempr = id_empr WHERE id_resa=" . $id_resa;
            $res = pmb_mysql_query($rqt);
            $empr_location = pmb_mysql_result($res, 0);
            if ($empr_location != $expl_loc) {
                //l'exemplaire n'est pas sur le bon site
                //on genere un transfert du site de l'exemplaire vers le site du lecteur
                $trans->transfert_pour_resa($cb, $empr_location, $id_resa);
                $res_trans = $empr_location;
            }
            break;
    }
    return $res_trans;
}
예제 #2
0
function get_expl($expl, $show_in_reception = 0, $return_count = false)
{
    global $msg, $dbh, $charset;
    global $base_path, $class_path;
    global $cart_link_non;
    global $explr_invisible, $explr_visible_unmod, $explr_visible_mod, $pmb_droits_explr_localises;
    global $pmb_transferts_actif;
    global $pmb_expl_list_display_comments;
    global $pmb_sur_location_activate;
    global $pmb_expl_data;
    // attention, $bul est un array
    if (!sizeof($expl) || !is_array($expl)) {
        return $msg["bull_no_expl"];
    }
    $explr_tab_invis = explode(",", $explr_invisible);
    $explr_tab_unmod = explode(",", $explr_visible_unmod);
    $explr_tab_modif = explode(",", $explr_visible_mod);
    //	$th_sur_location="";
    //	if($pmb_sur_location_activate)$th_sur_location="<th>".$msg["sur_location_expl"]."</th>";
    //
    //	$result  = "<table border=\"0\" cellspacing=\"1\">";
    //	$result .= "<tr><th>".$msg[293]."</th><th>".$msg[4016]."</th>$th_sur_location<th>".$msg[4017]."</th><th>".$msg[4018]."</th><th>".$msg[4019]."</th><th>".$msg[4015]."</th><th></th>";
    //	while(list($cle, $valeur) = each($expl)) {
    //		$requete = "SELECT pret_idempr, ";
    //		$requete .= " date_format(pret_retour, '".$msg["format_date"]."') as aff_pret_retour ";
    //		$requete .= " FROM pret ";
    //		$requete .= " WHERE pret_idexpl='$valeur->expl_id' ";
    //		$result_prets = pmb_mysql_query($requete, $dbh) or die ("<br />".pmb_mysql_error()."<br />".$requete);
    //		if (pmb_mysql_num_rows($result_prets)) $expl_pret = pmb_mysql_fetch_object($result_prets) ;
    //		else $expl_pret="";
    //		$situation = "";
    //		// prêtable ou pas s'il est prêté, on affiche son état
    //		if (is_object($expl_pret) && $expl_pret->pret_idempr) {
    //			// exemplaire sorti
    //			$rqt_empr = "SELECT empr_nom, empr_prenom, id_empr, empr_cb FROM empr WHERE id_empr='$expl_pret->pret_idempr' ";
    //			$res_empr = pmb_mysql_query($rqt_empr, $dbh) ;
    //			$res_empr_obj = pmb_mysql_fetch_object($res_empr) ;
    //			$situation = "<strong>${msg[358]} ".$expl_pret->aff_pret_retour."</strong>";
    //			global $empr_show_caddie, $selector_prop_ajout_caddie_empr;
    //			if (!$show_in_reception && $empr_show_caddie && (SESSrights & CIRCULATION_AUTH)) {
    //				$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=".$expl->pret_idempr."', 'cart', 600, 700, -2, -2, '$selector_prop_ajout_caddie_empr')\">&nbsp;";
    //			} else {
    //				$img_ajout_empr_caddie="";
    //			}
    //			if (!$show_in_reception) {
    //				$situation .= "<br />$img_ajout_empr_caddie<a href='./circ.php?categ=pret&form_cb=".rawurlencode($res_empr_obj->empr_cb)."'>$res_empr_obj->empr_prenom $res_empr_obj->empr_nom</a>";
    //			} else {
    //				$situation .= "<br />$res_empr_obj->empr_prenom $res_empr_obj->empr_nom";
    //			}
    //		} else {
    //			// tester si réservé
    //			$result_resa = pmb_mysql_query("select 1 from resa where resa_cb='".addslashes($valeur->expl_cb)."' ", $dbh) or die ();
    //			$reserve = pmb_mysql_num_rows($result_resa);
    //			if ($reserve)
    //				$situation = "<strong>".$msg['expl_reserve']."</strong>"; // exemplaire réservé
    //			elseif ($valeur->pret_flag)
    //				$situation = "<strong>${msg[359]}</strong>"; // exemplaire disponible
    //			else
    //				$situation = "";
    //		}
    //
    //		if(!$show_in_reception && (SESSrights & CATALOGAGE_AUTH)){
    //			$selector_prop = "toolbar=no, dependent=yes, resizable=yes, scrollbars=yes";
    //			$cart_click_expl = "onClick=\"openPopUp('./cart.php?object_type=EXPL&item=!!item!!', 'cart', 600, 700, -2, -2, '$selector_prop')\"";
    //			$cart_link = "<img src='./images/basket_small_20x20.gif' align='center' alt='middle' title=\"${msg[400]}\" $cart_click_expl>";
    //			$ajout_expl_panier = str_replace('!!item!!', $valeur->expl_id, $cart_link) ;
    //		}else{
    //			$ajout_expl_panier ="";
    //		}
    //
    //		//si les transferts sont activés
    //		if (!$show_in_reception && $pmb_transferts_actif) {
    //			//si l'exemplaire n'est pas transferable on a une image vide
    //			$dispo_pour_transfert = transfert::est_transferable ( $valeur->expl_id );
    //			if (SESSrights & TRANSFERTS_AUTH && $dispo_pour_transfert)
    //				//l'icon de demande de transfert
    //				$ajout_expl_panier .= "<a href=\"#\" onClick=\"openPopUp('./catalog/transferts/transferts_popup.php?expl=" . $valeur->expl_id . "', 'cart', 600, 450, -2, -2, 'toolbar=no, dependent=yes, resizable=yes, scrollbars=yes');\">" . "<img src='./images/peb_in.png' align='center' border=0 alt=\"" . $msg ["transferts_alt_libelle_icon"] . "\" title=\"" . $msg ["transferts_alt_libelle_icon"] . "\"></a>";
    //			else
    //				$ajout_expl_panier .= "<img src='./images/spacer.gif' align='center' height=20 width=20>";
    //
    //		}
    //
    //		$as_invis = false;
    //		$as_unmod = false;
    //		$as_modif = true;
    //		global $flag_no_delete_bulletin;
    //		$flag_no_delete_bulletin=0;
    //		//visibilité des exemplaires
    //		if ($pmb_droits_explr_localises) {
    //			$as_invis = in_array($valeur->expl_location,$explr_tab_invis);
    //			$as_unmod = in_array($valeur->expl_location,$explr_tab_unmod);
    //			//$as_modif = in_array($valeur->expl_location,$explr_tab_modif);
    //
    //			if(!($as_modif=in_array  ($valeur->expl_location,$explr_tab_modif) )) $flag_no_delete_bulletin=1;
    //
    //		}
    //		if ($show_in_reception || $cart_link_non || !(SESSrights & CATALOGAGE_AUTH))
    //			$link =  htmlentities($valeur->expl_cb,ENT_QUOTES, $charset);
    //		else {
    //			if ($as_modif) {
    //				$link = "<a href=\"./catalog.php?categ=serials&sub=bulletinage&action=expl_form&bul_id=".$valeur->expl_bulletin."&expl_id=".$valeur->expl_id."\">".htmlentities($valeur->expl_cb,ENT_QUOTES, $charset)."</a>";
    //			} else {
    //				$link = htmlentities($valeur->expl_cb,ENT_QUOTES, $charset);
    //			}
    //		}
    //
    //		if ($situation) $situation="<br />".$situation;
    //		if(!$show_in_reception && SESSrights & CATALOGAGE_AUTH){
    //			$ajout_expl_panier.="<span id='EXPL_drag_".$valeur->expl_id."'  dragicon=\"$base_path/images/icone_drag_notice.png\" dragtext=\"".htmlentities($valeur->expl_cb,ENT_QUOTES, $charset)."\" draggable=\"yes\" dragtype=\"notice\" callback_before=\"show_carts\" callback_after=\"\" style=\"padding-left:7px\"><img src=\"".$base_path."/images/notice_drag.png\"/></span>";
    //		}
    //
    //		$line = "<tr>";
    //		if (($valeur->expl_note || $valeur->expl_comment) && $pmb_expl_list_display_comments) $line .= "<td rowspan='2'>$link</td>";
    //		else $line .= "<td>$link</td>";
    //		$line .= "<td>$valeur->expl_cote</td>";
    //		if($pmb_sur_location_activate) $line .= "<td>$valeur->sur_loc_libelle</td>";
    //		$line .= "<td>$valeur->location_libelle</td>";
    //		$line .= "<td>$valeur->section_libelle</td>";
    //		$line .= "<td>$valeur->statut_libelle.$situation</td>";
    //		$line .= "<td>$valeur->tdoc_libelle</td>";
    //		$line .= "<td>$ajout_expl_panier</td>";
    //		if (($valeur->expl_note || $valeur->expl_comment) && $pmb_expl_list_display_comments) {
    //			$notcom=array();
    //			$line .= "<tr><td colspan='6'>";
    //			if ($valeur->expl_note && ($pmb_expl_list_display_comments & 1)) $notcom[] .= "<span class='erreur'>$valeur->expl_note</span>";
    //			if ($valeur->expl_comment && ($pmb_expl_list_display_comments & 2)) $notcom[] .= "$valeur->expl_comment";
    //			$line .= implode("<br />",$notcom);
    //			$line .= "</tr>";
    //		}
    //		$result .= $line;
    //	} //while(list($cle, $valeur) = each($expl))
    //
    //	$result .= "</table>";
    //
    //maintenant
    //Liste des champs d'exemplaires
    if ($pmb_sur_location_activate) {
        $surloc_field = "surloc_libelle,";
    }
    if (!$pmb_expl_data) {
        $pmb_expl_data = "expl_cb,expl_cote," . $surloc_field . "location_libelle,section_libelle,statut_libelle,tdoc_libelle";
    }
    $colonnesarray = explode(",", $pmb_expl_data);
    if (!in_array("expl_cb", $colonnesarray)) {
        array_unshift($colonnesarray, "expl_cb");
    }
    $total_columns = count($colonnesarray);
    //Présence de champs personnalisés
    if (strstr($pmb_expl_data, "#")) {
        require_once $class_path . "/parametres_perso.class.php";
        $cp = new parametres_perso("expl");
    }
    if ($return_count) {
        return count($expl);
    }
    if (count($expl)) {
        $result .= "<table border=\"0\" cellspacing=\"1\">";
        //un premier tour pour aller chercher les libellés...
        for ($i = 0; $i < count($colonnesarray); $i++) {
            if (substr($colonnesarray[$i], 0, 1) == "#") {
                //champs personnalisés
                if (!$cp->no_special_fields) {
                    $id = substr($colonnesarray[$i], 1);
                    $entry .= "<th>" . htmlentities($cp->t_fields[$id][TITRE], ENT_QUOTES, $charset) . "</th>";
                }
            } else {
                eval("\$colencours=\$msg['expl_header_" . $colonnesarray[$i] . "'];");
                $entry .= "<th>" . htmlentities($colencours, ENT_QUOTES, $charset) . "</th>";
            }
        }
        $result .= "<tr>" . $entry . "<th>&nbsp;</th></tr>";
        foreach ($expl as $exemplaire) {
            $requete = "SELECT pret_idempr, ";
            $requete .= " date_format(pret_retour, '" . $msg["format_date"] . "') as aff_pret_retour ";
            $requete .= " FROM pret ";
            $requete .= " WHERE pret_idexpl='{$exemplaire->expl_id}' ";
            $result_prets = pmb_mysql_query($requete, $dbh) or die("<br />" . pmb_mysql_error() . "<br />" . $requete);
            if (pmb_mysql_num_rows($result_prets)) {
                $expl_pret = pmb_mysql_fetch_object($result_prets);
            } else {
                $expl_pret = "";
            }
            $situation = "";
            // prêtable ou pas s'il est prêté, on affiche son état
            if (is_object($expl_pret) && $expl_pret->pret_idempr) {
                // exemplaire sorti
                $rqt_empr = "SELECT empr_nom, empr_prenom, id_empr, empr_cb FROM empr WHERE id_empr='{$expl_pret->pret_idempr}' ";
                $res_empr = pmb_mysql_query($rqt_empr, $dbh);
                $res_empr_obj = pmb_mysql_fetch_object($res_empr);
                $situation = "<strong>{$msg[358]} " . $expl_pret->aff_pret_retour . "</strong>";
                global $empr_show_caddie, $selector_prop_ajout_caddie_empr;
                if (!$show_in_reception && $empr_show_caddie && SESSrights & CIRCULATION_AUTH) {
                    $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=" . $exemplaire->pret_idempr . "', 'cart', 600, 700, -2, -2, '{$selector_prop_ajout_caddie_empr}')\">&nbsp;";
                } else {
                    $img_ajout_empr_caddie = "";
                }
                if (!$show_in_reception) {
                    $situation .= "<br />{$img_ajout_empr_caddie}<a href='./circ.php?categ=pret&form_cb=" . rawurlencode($res_empr_obj->empr_cb) . "'>{$res_empr_obj->empr_prenom} {$res_empr_obj->empr_nom}</a>";
                } else {
                    $situation .= "<br />{$res_empr_obj->empr_prenom} {$res_empr_obj->empr_nom}";
                }
            } else {
                // tester si réservé
                $result_resa = pmb_mysql_query("select 1 from resa where resa_cb='" . addslashes($exemplaire->expl_cb) . "' ", $dbh) or die;
                $reserve = pmb_mysql_num_rows($result_resa);
                if ($reserve) {
                    $situation = "<strong>" . $msg['expl_reserve'] . "</strong>";
                    // exemplaire réservé
                } elseif ($exemplaire->pret_flag) {
                    $situation = "<strong>{$msg[359]}</strong>";
                    // exemplaire disponible
                } else {
                    $situation = "";
                }
            }
            if (!$show_in_reception && SESSrights & CATALOGAGE_AUTH) {
                $selector_prop = "toolbar=no, dependent=yes, resizable=yes, scrollbars=yes";
                $cart_click_expl = "onClick=\"openPopUp('./cart.php?object_type=EXPL&item=!!item!!', 'cart', 600, 700, -2, -2, '{$selector_prop}')\"";
                $cart_link = "<img src='./images/basket_small_20x20.gif' align='center' alt='middle' title=\"{$msg[400]}\" {$cart_click_expl}>";
                $ajout_expl_panier = str_replace('!!item!!', $exemplaire->expl_id, $cart_link);
            } else {
                $ajout_expl_panier = "";
            }
            //si les transferts sont activés
            if (!$show_in_reception && $pmb_transferts_actif) {
                //si l'exemplaire n'est pas transferable on a une image vide
                $dispo_pour_transfert = transfert::est_transferable($exemplaire->expl_id);
                if (SESSrights & TRANSFERTS_AUTH && $dispo_pour_transfert) {
                    //l'icon de demande de transfert
                    $ajout_expl_panier .= "<a href=\"#\" onClick=\"openPopUp('./catalog/transferts/transferts_popup.php?expl=" . $exemplaire->expl_id . "', 'cart', 600, 450, -2, -2, 'toolbar=no, dependent=yes, resizable=yes, scrollbars=yes');\">" . "<img src='./images/peb_in.png' align='center' border=0 alt=\"" . $msg["transferts_alt_libelle_icon"] . "\" title=\"" . $msg["transferts_alt_libelle_icon"] . "\"></a>";
                } else {
                    $ajout_expl_panier .= "<img src='./images/spacer.gif' align='center' height=20 width=20>";
                }
            }
            $as_invis = false;
            $as_unmod = false;
            $as_modif = true;
            global $flag_no_delete_bulletin;
            $flag_no_delete_bulletin = 0;
            //visibilité des exemplaires
            if ($pmb_droits_explr_localises) {
                $as_invis = in_array($exemplaire->expl_location, $explr_tab_invis);
                $as_unmod = in_array($exemplaire->expl_location, $explr_tab_unmod);
                //$as_modif = in_array($exemplaire->expl_location,$explr_tab_modif);
                if (!($as_modif = in_array($exemplaire->expl_location, $explr_tab_modif))) {
                    $flag_no_delete_bulletin = 1;
                }
            }
            if ($show_in_reception || $cart_link_non || !(SESSrights & CATALOGAGE_AUTH)) {
                $link = htmlentities($exemplaire->expl_cb, ENT_QUOTES, $charset);
            } else {
                if ($as_modif) {
                    $link = "<a href=\"./catalog.php?categ=serials&sub=bulletinage&action=expl_form&bul_id=" . $exemplaire->expl_bulletin . "&expl_id=" . $exemplaire->expl_id . "\">" . htmlentities($exemplaire->expl_cb, ENT_QUOTES, $charset) . "</a>";
                } else {
                    $link = htmlentities($exemplaire->expl_cb, ENT_QUOTES, $charset);
                }
            }
            if ($situation) {
                $situation = "<br />" . $situation;
            }
            if (!$show_in_reception && SESSrights & CATALOGAGE_AUTH) {
                $ajout_expl_panier .= "<span id='EXPL_drag_" . $exemplaire->expl_id . "'  dragicon=\"{$base_path}/images/icone_drag_notice.png\" dragtext=\"" . htmlentities($exemplaire->expl_cb, ENT_QUOTES, $charset) . "\" draggable=\"yes\" dragtype=\"notice\" callback_before=\"show_carts\" callback_after=\"\" style=\"padding-left:7px\"><img src=\"" . $base_path . "/images/notice_drag.png\"/></span>";
            }
            global $pmb_serialcirc_subst;
            if ($pmb_serialcirc_subst) {
                $ajout_expl_panier .= "<img src='./images/print.gif' alt='Imprimer...' title='Imprimer...' align='middle' border='0'\tstyle='padding-left:7px' \t\t\t\n\t\t\t\t\tonclick=\"openPopUp('./ajax.php?module=circ&categ=periocirc&sub=print_cote&expl_id=" . $exemplaire->expl_id . "', 'circulation', 600, 500, -2, -2, 'toolbar=no, dependent=yes, resizable=yes');\"\n\t\t\t\t>";
            }
            $line = "<tr>";
            for ($i = 0; $i < count($colonnesarray); $i++) {
                if ($i == 0 && ($exemplaire->expl_note || $exemplaire->expl_comment) && $pmb_expl_list_display_comments) {
                    $expl_rowspan = "rowspan='2'";
                } else {
                    $expl_rowspan = "";
                }
                $aff_column = "";
                if (substr($colonnesarray[$i], 0, 1) == "#") {
                    //champs personnalisés
                    $id = substr($colonnesarray[$i], 1);
                    $cp->get_values($exemplaire->expl_id);
                    if (!$cp->no_special_fields) {
                        $temp = $cp->get_formatted_output($cp->values[$id], $id);
                        if (!$temp) {
                            $temp = "&nbsp;";
                        }
                        $aff_column .= $temp;
                    }
                } else {
                    eval("\$colencours=\$exemplaire->" . $colonnesarray[$i] . ";");
                    if ($colonnesarray[$i] == "expl_cb") {
                        $aff_column = $link;
                    } else {
                        if ($colonnesarray[$i] == "expl_cote") {
                            $aff_column = "<strong>" . htmlentities($colencours, ENT_QUOTES, $charset) . "</strong>";
                        } else {
                            if ($colonnesarray[$i] == "surloc_libelle") {
                                $aff_column = htmlentities($exemplaire->sur_loc_libelle, ENT_QUOTES, $charset);
                            } else {
                                if ($colonnesarray[$i] == "statut_libelle") {
                                    $aff_column = htmlentities($colencours, ENT_QUOTES, $charset) . $situation;
                                } else {
                                    $aff_column = htmlentities($colencours, ENT_QUOTES, $charset);
                                }
                            }
                        }
                    }
                }
                $line .= "<td {$expl_rowspan}>" . $aff_column . "</td>";
            }
            $line .= "<td>{$ajout_expl_panier}</td>";
            $line .= "</tr>";
            if (($exemplaire->expl_note || $exemplaire->expl_comment) && $pmb_expl_list_display_comments) {
                $notcom = array();
                $line .= "<tr><td colspan='" . $total_columns . "'>";
                if ($exemplaire->expl_note && $pmb_expl_list_display_comments & 1) {
                    $notcom[] .= "<span class='erreur'>{$exemplaire->expl_note}</span>";
                }
                if ($exemplaire->expl_comment && $pmb_expl_list_display_comments & 2) {
                    $notcom[] .= "{$exemplaire->expl_comment}";
                }
                $line .= implode("<br />", $notcom);
                $line .= "</tr>";
            }
            $result .= $line;
        }
        $result .= "</table>";
    }
    return $result;
}
예제 #3
0
파일: pret.inc.php 프로젝트: hogsim/PMB
     $alert_sound_list[] = "question";
     $erreur_affichage .= "<input type='button' class='bouton' value='{$msg[76]}' onClick=\"document.location='./circ.php?categ=pret&id_empr={$id_empr}" . ($pmb_short_loan_management == 1 ? "&short_loan='+document.getElementById('short_loan').value;" : "'") . "\" />";
     $confirm = $statut->flag;
     $erreur_affichage .= "&nbsp;<input type='button' class='bouton' value='{$msg[389]}' onClick=\"document.location='./circ.php?categ=pret&id_empr={$id_empr}&cb_doc={$cb_doc}&expl_todo={$expl_todo}&confirm={$confirm}&quota={$quota}&pret_arc={$pret_arc}" . ($pmb_short_loan_management == 1 ? "&short_loan='+document.getElementById('short_loan').value;" : "'") . "\" />";
     $erreur_affichage .= "&nbsp;<input class='bouton' type='button' value=\"" . $msg[375] . "\" onClick=\"document.location='circ.php?categ=visu_ex&form_cb_expl=" . $cb_doc . "';\" />";
     $erreur_affichage .= "</div></div><br />";
     $empr = new emprunteur($id_empr, $erreur_affichage, FALSE, 1);
     $affichage = $empr->fiche;
 } else {
     // else if !confirm
     // il y a eu confirmation du prêt
     if ($statut->flag == $confirm) {
         // ajout du prêt
         // si transfert activé, faire le néçessaire en cas de forçage
         if ($pmb_transferts_actif) {
             $transfert = new transfert();
             $statut_trans = $transfert->check_pret($cb_doc, 1);
         }
         if ($statut->flag & HAS_RESA_GOOD) {
             // archivage resa
             $rqt_arch = "UPDATE resa_archive, resa SET resarc_pretee = 1 WHERE id_resa = '" . $statut->id_resa . "' AND resa_arc = resarc_id ";
             pmb_mysql_query($rqt_arch, $dbh);
             $rqt_arch = "select resarc_id from resa_archive, resa WHERE id_resa = '" . $statut->id_resa . "' AND resa_arc = resarc_id ";
             $resarc_res = pmb_mysql_query($rqt_arch, $dbh);
             $resarc = pmb_mysql_fetch_object($resarc_res);
             $resarc_id = $resarc->resarc_id;
             // suppression de la resa pour ce lecteur
             del_resa($id_empr, $statut->idnotice, $statut->idbulletin, $statut->expl_cb);
         }
         if ($statut->flag & HAS_RESA_FALSE) {
             // dévalider la resa correspondante
<?php

// +-------------------------------------------------+
// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
// +-------------------------------------------------+
// $Id: retour_change_loc.inc.php,v 1.1 2008-06-04 14:54:25 ohennequin Exp $
if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) {
    die("no access");
}
require_once $class_path . "/transfert.class.php";
$trans = new transfert();
//supprime le transfert
$trans->retour_exemplaire_supprime_transfert($idexpl, $param);
//change la localisation de l'exemplaire
$num = $trans->retour_exemplaire_change_localisation($idexpl);
ajax_http_send_response($num, "text/xml");
예제 #5
0
<?php

// +-------------------------------------------------+
// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
// +-------------------------------------------------+
// $Id: refuse.inc.php,v 1.8 2015-04-03 11:16:26 jpermanne Exp $
if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) {
    die("no access");
}
// Titre de la fenêtre
echo window_title($database_window_title . $msg[transferts_circ_menu_refuse] . $msg[1003] . $msg[1001]);
//creation de l'objet transfert
$obj_transfert = new transfert();
switch ($action) {
    case "aff_supp":
        //on affiche l'écran de validation de suppression
        echo "<h1>" . $msg[transferts_circ_menu_titre] . " > " . $msg[transferts_circ_menu_refuse] . "</h1>";
        echo affiche_liste_valide($transferts_refus_liste_valide, $transferts_refus_liste_valide_ligne, "SELECT num_notice, num_bulletin, " . "expl_cb as val_ex, lender_libelle, location_libelle as val_source, " . "transferts_demande.date_creation as val_date_creation, date_visualisee as val_date_refus," . "motif_refus as val_refusMotif, empr_cb as val_empr " . "FROM transferts " . "INNER JOIN transferts_demande ON id_transfert=num_transfert " . "INNER JOIN exemplaires ON num_expl=expl_id " . "INNER JOIN lenders ON idlender=expl_owner " . "INNER JOIN docs_location ON num_location_source=idlocation " . "LEFT JOIN resa ON resa_trans=id_resa " . "LEFT JOIN empr ON resa_idempr=id_empr " . "WHERE " . "id_transfert IN (!!liste_numeros!!) " . "AND etat_demande=4", "circ.php?categ=trans&sub=" . $sub);
        break;
    case "supp":
        //on supprime les transferts sélectionner
        $obj_transfert->cloture_transferts($liste_transfert);
        $action = "";
        break;
    case "aff_redem":
        $transferts_refus_redemande_global = "\n\t\t<br />\n\t\t<form name='form_circ_trans_redemande' class='form-circ' method='post' action='!!action_formulaire!!&action=redem'>\n\t\t<h3>" . $msg["transferts_circ_refus_relance"] . "</h3>\n\t\t<div class='form-contenu' >\n\t\t\t!!detail_notice!!\n\t\t\t<div class='row'>&nbsp;</div>\t\t\n\t\t\t<div class='row'>\n\t\t\t\t!!liste_sites!!\n\t\t\t</div>\n\t\t\t<div class='row'>&nbsp;</div>\t\t\n\t\t\t<div class='row'>\t\t\n\t\t\t\t<label class='etiquette'>" . $msg["transferts_circ_refus_relance_motif"] . "</label><br />\n\t\t\t\t<textarea name='motif' cols=40 rows=5></textarea>\n\t\t\t</div>\n\t\t\t<div class='row'>&nbsp;</div>\t\t\n\t\t\t<div class='row'>\t\t\n\t\t\t\t<label class='etiquette'>" . $msg["transferts_circ_refus_relance_retour"] . "</label>\n\t\t\t\t<input type='button' class='bouton' name='bt_date_retour' value='!!date_retour!!' onClick=\"var reg=new RegExp('(-)', 'g'); openPopUp('" . $base_path . "/select.php?what=calendrier&caller=form_circ_trans_redemande&date_caller='+form_circ_trans_redemande.date_retour.value.replace(reg,'')+'&param1=date_retour&param2=bt_date_retour&auto_submit=NO&date_anterieure=YES', 'date_adhesion', 250, 320, -2, -2, 'toolbar=no, dependent=yes, resizable=yes')\">\n\t\t\t\t<input type='hidden' name='date_retour' value='!!date_retour_mysql!!'>\n\t\t\t</div>\n\t\t</div>\n\t\t<input type='submit' class='bouton' name='" . $msg["89"] . "' value='" . $msg["89"] . "'>\n\t\t&nbsp;\n\t\t<input type='button' class='bouton' name='" . $msg["76"] . "' value='" . $msg["76"] . "' onclick='document.location=\"!!action_formulaire!!\"'>\n\t\t<input type='hidden' name='transid' value='!!trans_id!!'>\n\t\t</form>\n\t\t";
        //affiche l'ecran pour proposer de relancer une nouvelle demande de transfert
        echo "<h1>" . $msg[transferts_circ_menu_titre] . " > " . $msg[transferts_circ_menu_refuse] . "</h1>";
        //on recupere les id de l'exemplaire
        $idNotice = pmb_sql_value("SELECT num_notice FROM transferts WHERE id_transfert=" . $transid);
        $idBulletin = pmb_sql_value("SELECT num_bulletin FROM transferts WHERE id_transfert=" . $transid);
예제 #6
0
             admin_affiche_statuts_defaut();
             break;
         default:
             //on affiche le tableau
             admin_affiche_statuts_defaut();
             break;
     }
     break;
 case 'purge':
     //gere le statut par défaut de l'exemplaire lors de la réception
     $admin_layout = str_replace('!!menu_sous_rub!!', $msg["admin_tranferts_purge"], $admin_layout);
     print $admin_layout . "<br />";
     switch ($action) {
         case "purge":
             //on enregistre les modifications
             transfert::admin_purge_historique($date_purge);
             //le message de purge effectuée
             echo str_replace("!!date_purge!!", formatdate($date_purge), $msg["admin_transferts_message_purge"]);
             //puis on affiche l'ecran
             admin_affiche_purge();
             break;
         default:
             //on affiche l'ecran de purge
             admin_affiche_purge();
             break;
     }
     break;
 default:
     //affiche l'écran d'information par défaut
     $admin_layout = str_replace('!!menu_sous_rub!!', "", $admin_layout);
     print $admin_layout . "<br />";
예제 #7
0
<?php

// +-------------------------------------------------+
// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
// +-------------------------------------------------+
// $Id: reception.inc.php,v 1.11.6.1 2014-07-23 11:47:15 dgoron Exp $
if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) {
    die("no access");
}
require_once $class_path . "/resa.class.php";
// Titre de la fenêtre
print window_title($database_window_title . $msg[transferts_circ_menu_reception] . $msg[1003] . $msg[1001]);
//creation de l'objet transfert
$obj_transfert = new transfert();
switch ($action) {
    case "aff_recep":
        echo "<h1>" . $msg[transferts_circ_menu_titre] . " > " . $msg[transferts_circ_menu_reception] . "</h1>";
        $transferts_reception_liste_valide_reception = str_replace("!!liste_sections!!", do_liste_section(0), $transferts_reception_liste_valide_reception);
        $tmpString = affiche_liste_valide($transferts_reception_liste_valide_reception, $transferts_reception_liste_valide_reception_ligne, "SELECT num_notice, num_bulletin, id_transfert as val_id, " . "expl_cb as val_ex,lender_libelle, transferts.date_creation as val_date_creation, " . "date_visualisee as val_date_accepte, motif as val_motif, location_libelle as val_dest, " . "expl_section as val_section, empr_cb as val_empr " . "FROM transferts " . "INNER JOIN transferts_demande ON id_transfert=num_transfert " . "INNER JOIN exemplaires ON num_expl=expl_id " . "INNER JOIN lenders ON idlender=expl_owner " . "INNER JOIN docs_location ON num_location_dest=idlocation " . "LEFT JOIN resa ON resa_trans=id_resa " . "LEFT JOIN empr ON resa_idempr=id_empr " . "WHERE " . "id_transfert IN (!!liste_numeros!!) " . "AND etat_demande=2", "circ.php?categ=trans&sub=" . $sub);
        //on récupere l'id du statut par défaut du site de l'utilisateur
        $rqt = "SELECT transfert_statut_defaut FROM docs_location " . "INNER JOIN users ON idlocation=deflt_docs_location " . "WHERE userid=" . $PMBuserid;
        $res = mysql_query($rqt);
        $statut_defaut = mysql_result($res, 0);
        //on remplit le select avec la liste des statuts
        $tmpString = str_replace("!!liste_statuts!!", do_liste_statut($statut_defaut), $tmpString);
        echo $tmpString;
        break;
    case "recep":
        //on valide les receptions
        $obj_transfert->enregistre_reception($liste_transfert, $statut_reception, $section_reception, $info);
        $motif = $info[0]["motif"];
예제 #8
0
<?php

// +-------------------------------------------------+
// � 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
// +-------------------------------------------------+
// $Id: chg_date_retour.inc.php,v 1.1 2008-06-04 14:54:25 ohennequin Exp $
if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) {
    die("no access");
}
require_once $class_path . "/transfert.class.php";
transfert::change_date_retour($id, $dt);
ajax_http_send_response("1", "text/xml");
예제 #9
0
 function do_retour_selfservice()
 {
     global $deflt_docs_location, $pmb_transferts_actif, $pmb_lecteurs_localises;
     global $transferts_retour_origine, $transferts_retour_origine_force;
     global $selfservice_loc_autre_todo, $selfservice_resa_ici_todo, $selfservice_resa_loc_todo;
     global $selfservice_loc_autre_todo_msg, $selfservice_resa_ici_todo_msg, $selfservice_resa_loc_todo_msg;
     if (!$this->expl_id) {
         // l'exemplaire est inconnu
         $this->status = -1;
         return false;
     }
     if ($pmb_transferts_actif == "1") {
         $trans = new transfert();
         // transfert actif
         if (transfert::is_retour_exemplaire_loc_origine($this->expl_id)) {
             // retour sur le site d'origne, il faut nettoyer
             $trans->retour_exemplaire_loc_origine($this->expl_id);
             $this->expl->expl_location = $deflt_docs_location;
         }
         if ($this->expl->expl_location != $deflt_docs_location) {
             // l'exemplaire n'appartient pas à cette localisation
             if ($transferts_retour_origine == "1" && $transferts_retour_origine_force == "0") {
                 //pas de forcage possible, on interdit le retour
                 $non_retournable = 1;
             } else {
                 // Quoi faire?
                 switch ($selfservice_loc_autre_todo) {
                     case '4':
                         // Refuser le retour
                         $non_retournable = 1;
                         break;
                     case '1':
                         // Accepter et Générer un transfert
                         $trans->retour_exemplaire_genere_transfert_retour($this->expl_id);
                         $non_reservable = 1;
                         break;
                     case '2':
                         // Accepter et changer la localisation
                         $trans->retour_exemplaire_change_localisation($this->expl_id);
                         break;
                     case '3':
                         // Accepter sans changer la localisation
                         break;
                     default:
                         // Accepter et sera traiter plus tard
                         $non_reservable = 1;
                         $plus_tard = 1;
                         break;
                 }
             }
             $this->message_loc = $selfservice_loc_autre_todo_msg;
             if (!$non_retournable) {
                 if ($this->expl->pret_idempr) {
                     $this->message_del_pret = $this->del_pret();
                 }
                 if (!$non_reservable) {
                     $resa_id = $this->calcul_resa();
                     if ($this->flag_resa_is_affecte) {
                         // Déjà affecté: il aurai du ne pas etre en prêt
                         $this->message_resa = $selfservice_resa_ici_todo_msg;
                     } elseif ($this->flag_resa_ici) {
                         switch ($selfservice_resa_ici_todo) {
                             case '1':
                                 // Valider la rservation
                                 alert_empr_resa($this->affecte_resa(), 0, 1);
                                 break;
                             default:
                                 //	A traiter plus tard
                                 $plus_tard = 1;
                                 break;
                         }
                         $this->message_resa = $selfservice_resa_ici_todo_msg;
                     } elseif ($this->flag_resa_autre_site) {
                         switch ($selfservice_resa_loc_todo) {
                             case '1':
                                 // Valider la rservation
                                 //Gen transfert sur site de la résa....
                                 $trans->transfert_pour_resa($this->expl_cb, $this->resa_loc_trans, $resa_id);
                                 break;
                             default:
                                 //	A traiter plus tard
                                 $plus_tard = 1;
                                 break;
                         }
                         $this->message_resa = $selfservice_resa_loc_todo_msg;
                     } else {
                         // pas de résa à gérer
                     }
                 }
             }
         } else {
             // c'est la bonne localisation ( et transfert actif)
             if ($this->expl->pret_idempr) {
                 $this->message_del_pret = $this->del_pret();
             }
             $this->calcul_resa();
             if ($this->flag_resa_is_affecte) {
                 // Déjà affecté: il aurai du ne pas etre en prêt
                 $this->message_resa = $selfservice_resa_ici_todo_msg;
             } elseif ($this->flag_resa_ici) {
                 switch ($selfservice_resa_ici_todo) {
                     case '1':
                         // Valider la rservation
                         alert_empr_resa($this->affecte_resa(), 0, 1);
                         break;
                     default:
                         //	A traiter plus tard
                         $plus_tard = 1;
                         break;
                 }
                 $this->message_resa = $selfservice_resa_ici_todo_msg;
             } elseif ($this->flag_resa_autre_site) {
                 switch ($selfservice_resa_loc_todo) {
                     case '1':
                         // Valider la rservation
                         //Gen transfert sur site de la résa....
                         $trans->transfert_pour_resa($this->expl_cb, $this->resa_loc_trans, $resa_id);
                         break;
                     default:
                         //	A traiter plus tard
                         $plus_tard = 1;
                         break;
                 }
                 $this->message_resa = $selfservice_resa_loc_todo_msg;
             } else {
                 // pas de résa à gérer
             }
             //Fin bonne localisation
         }
         //Fin transfert actif
     } else {
         // transfert inactif $pmb_lecteurs_localises
         if ($pmb_lecteurs_localises && $this->expl->expl_location != $deflt_docs_location) {
             //ce n'est pas la bonne localisation
             switch ($selfservice_loc_autre_todo) {
                 case '4':
                     // Refuser le retour
                     $non_retournable = 1;
                     break;
                 case '3':
                     // Accepter sans changer la localisation
                     break;
                 default:
                     // Accepter et sera traiter plus tard
                     $non_reservable = 1;
                     $plus_tard = 1;
                     break;
             }
             $this->message_loc = $selfservice_loc_autre_todo_msg;
             if (!$non_retournable) {
                 if (!$non_reservable) {
                     $this->calcul_resa();
                     if ($this->flag_resa_ici || $this->flag_resa_is_affecte) {
                         if ($selfservice_resa_ici_todo == 4) {
                             $this->message_resa = $selfservice_resa_ici_todo_msg;
                             $non_retournable = 1;
                         }
                     } elseif ($this->flag_resa_autre_site) {
                         if ($selfservice_resa_loc_todo == 4) {
                             $this->message_resa = $selfservice_resa_loc_todo_msg;
                             $non_retournable = 1;
                         }
                     }
                     if ($non_retournable) {
                         $this->status = -1;
                         return false;
                     }
                     if ($this->expl->pret_idempr) {
                         $this->message_del_pret = $this->del_pret();
                     }
                     if ($this->flag_resa_is_affecte) {
                         $this->message_resa = $selfservice_resa_ici_todo_msg;
                     } elseif ($this->flag_resa_ici) {
                         switch ($selfservice_resa_ici_todo) {
                             case '1':
                                 // Valider la rservation
                                 alert_empr_resa($this->affecte_resa(), 0, 1);
                                 break;
                             default:
                                 //	A traiter plus tard
                                 $plus_tard = 1;
                                 break;
                         }
                         $this->message_resa = $selfservice_resa_ici_todo_msg;
                     } elseif ($this->flag_resa_autre_site) {
                         switch ($selfservice_resa_loc_todo) {
                             case '1':
                                 // Valider la rservation
                                 alert_empr_resa($this->affecte_resa(), 0, 1);
                                 break;
                             default:
                                 //	A traiter plus tard
                                 $plus_tard = 1;
                                 break;
                         }
                         $this->message_resa = $selfservice_resa_loc_todo_msg;
                     }
                 } else {
                     if ($this->expl->pret_idempr) {
                         $this->message_del_pret = $this->del_pret();
                     }
                 }
             }
         } else {
             // c'est une bonne localisation	ou lecteur non localisé:
             $this->calcul_resa();
             if ($this->flag_resa_ici || $this->flag_resa_is_affecte) {
                 $this->message_resa = $selfservice_resa_ici_todo_msg;
                 if ($selfservice_resa_ici_todo == 4) {
                     $non_retournable = 1;
                 }
             } elseif ($this->flag_resa_autre_site) {
                 $this->message_resa = $selfservice_resa_loc_todo_msg;
                 if ($selfservice_resa_loc_todo == 4) {
                     $non_retournable = 1;
                 }
             }
             if ($non_retournable) {
                 $this->status = -1;
                 return false;
             }
             if ($this->expl->pret_idempr) {
                 $this->message_del_pret = $this->del_pret();
             }
             //			$this->calcul_resa();
             if ($this->flag_resa_is_affecte) {
                 $this->message_resa = $selfservice_resa_ici_todo_msg;
             } elseif ($this->flag_resa_ici) {
                 switch ($selfservice_resa_ici_todo) {
                     case '1':
                         // Valider la rservation
                         alert_empr_resa($this->affecte_resa(), 0, 1);
                         break;
                     default:
                         //	A traiter plus tard
                         $plus_tard = 1;
                         break;
                 }
                 $this->message_resa = $selfservice_resa_ici_todo_msg;
             } elseif ($this->flag_resa_autre_site) {
                 switch ($selfservice_resa_loc_todo) {
                     case '1':
                         // Valider la rservation
                         alert_empr_resa($this->affecte_resa(), 0, 1);
                         break;
                     default:
                         //	A traiter plus tard
                         $plus_tard = 1;
                         break;
                 }
                 $this->message_resa = $selfservice_resa_loc_todo_msg;
             } else {
                 // pas de résa à gérer
             }
             // fin bonne loc
         }
         // fin transfert inactif
     }
     if ($non_retournable) {
         $this->status = -1;
         return false;
     }
     if ($plus_tard) {
         // il y a des pieges, on marque comme exemplaire à problème dans la localisation qui fait le retour
         $sql = "UPDATE exemplaires set expl_retloc='" . $deflt_docs_location . "' where expl_cb='" . addslashes($this->expl_cb) . "' limit 1";
     } else {
         // pas de pièges, ou pièges résolus, on démarque
         $sql = "UPDATE exemplaires set expl_retloc=0 where expl_cb='" . addslashes($this->expl_cb) . "' limit 1";
     }
     pmb_mysql_query($sql);
     return true;
 }
예제 #10
0
function check_group_transferability($group_id)
{
    $expl_ids = get_group_expls($group_id);
    $transferable = true;
    foreach ($expl_ids as $expl_id) {
        if (!transfert::est_transferable($expl_id)) {
            $transferable = false;
        }
    }
    return $transferable;
}
예제 #11
0
// +-------------------------------------------------+
// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
// +-------------------------------------------------+
// $Id: transferts_popup.php,v 1.4 2015-04-03 11:16:29 jpermanne Exp $
// d?finition du minimum n?c?ssaire
$base_path = "../..";
$base_auth = "TRANSFERTS_AUTH";
$base_title = "\$msg[6]";
require_once $base_path . "/includes/init.inc.php";
require_once $class_path . "/transfert.class.php";
if ($action == "enregistre") {
    //on enregistre la demande de transfert
    //on transforme la liste en tableau
    $tab_id = explode(",", $expl_ids);
    $trans = new transfert();
    //pour chaque exemplaire
    foreach ($tab_id as $id_expl) {
        //on genere les transferts
        $trans->creer_transfert_catalogue($id_expl, $dest_id, $date_retour, stripslashes($motif));
    }
    //le script pour fermer la popup
    echo $transferts_popup_enregistre_demande;
} else {
    //on affiche la confirmation de la demande
    $rqt = "SELECT expl_cb, expl_cote, location_libelle, section_libelle, tdoc_libelle, lender_libelle" . " FROM exemplaires" . " LEFT JOIN docs_location ON exemplaires.expl_location=docs_location.idlocation" . " LEFT JOIN docs_section ON exemplaires.expl_section=docs_section.idsection " . " LEFT JOIN docs_type ON exemplaires.expl_typdoc=docs_type.idtyp_doc  " . " LEFT JOIN lenders ON idlender=expl_owner " . " WHERE expl_id IN (" . $expl . ")";
    $res = pmb_mysql_query($rqt);
    $nb = 0;
    //le nombre de colonnes dans la requete pour remplacer les champs dans le template
    $nbCols = pmb_mysql_num_fields($res);
    while ($values = pmb_mysql_fetch_array($res)) {
예제 #12
0
<?php

// +-------------------------------------------------+
// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
// +-------------------------------------------------+
// $Id: envoi.inc.php,v 1.6 2012-08-20 08:06:32 ngantier Exp $
if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) {
    die("no access");
}
// Titre de la fenetre
echo window_title($database_window_title . $msg[transferts_circ_menu_envoi] . $msg[1003] . $msg[1001]);
//creation de l'objet transfert
$obj_transfert = new transfert();
switch ($action) {
    case "aff_env":
        echo "<h1>" . $msg[transferts_circ_menu_titre] . " > " . $msg[transferts_circ_menu_envoi] . "</h1>";
        echo affiche_liste_valide($transferts_envoi_liste_valide_envoi, $transferts_envoi_liste_valide_envoi_ligne, "SELECT num_notice, num_bulletin, " . "expl_cb as val_ex, lender_libelle, transferts.date_creation as val_date_creation, " . "date_visualisee as val_date_accepte, motif as val_motif, location_libelle as val_dest, empr_cb as val_empr " . "FROM transferts " . "INNER JOIN transferts_demande ON id_transfert=num_transfert " . "INNER JOIN exemplaires ON num_expl=expl_id " . "INNER JOIN lenders ON idlender=expl_owner " . "INNER JOIN docs_location ON num_location_dest=idlocation " . "LEFT JOIN resa ON resa_trans=id_resa " . "LEFT JOIN empr ON resa_idempr=id_empr " . "WHERE " . "id_transfert IN (!!liste_numeros!!) " . "AND etat_demande=1", "circ.php?categ=trans&sub=" . $sub);
        break;
    case "env":
        //on valide les envois
        $obj_transfert->enregistre_envoi($liste_transfert);
        //on affiche l'ecran principal
        $action = "";
        break;
    case "aff_refus":
        //on affiche l'écran de saisie du refus
        echo "<h1>" . $msg[transferts_circ_menu_titre] . " > " . $msg[transferts_circ_menu_envoi] . "</h1>";
        echo affiche_liste_valide($transferts_validation_liste_refus, $transferts_validation_liste_valide_ligne, "SELECT num_notice, num_bulletin, " . "expl_cb as val_ex, lender_libelle, transferts.date_creation as val_date_creation, " . "motif as val_motif, location_libelle as val_dest, empr_cb as val_empr  " . "FROM transferts " . "INNER JOIN transferts_demande ON id_transfert=num_transfert " . "INNER JOIN exemplaires ON num_expl=expl_id " . "INNER JOIN lenders ON idlender=expl_owner " . "INNER JOIN docs_location ON num_location_dest=idlocation " . "LEFT JOIN resa ON resa_trans=id_resa " . "LEFT JOIN empr ON resa_idempr=id_empr " . "WHERE " . "id_transfert IN (!!liste_numeros!!) " . "AND etat_demande=1", "circ.php?categ=trans&sub=" . $sub);
        break;
    case "refus":
        //on enregistre les refus
예제 #13
0
<?php

// +-------------------------------------------------+
// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
// +-------------------------------------------------+
// $Id: validation.inc.php,v 1.8 2013-04-18 14:59:07 mbertin Exp $
if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) {
    die("no access");
}
// Titre de la fenêtre
echo window_title($database_window_title . $msg[transferts_circ_menu_validation] . $msg[1003] . $msg[1001]);
//creation de l'objet transfert
$obj_transfert = new transfert();
switch ($action) {
    case "aff_val":
        //on affiche l'écran de validation
        echo "<h1>" . $msg[transferts_circ_menu_titre] . " > " . $msg[transferts_circ_menu_validation] . "</h1>";
        echo affiche_liste_valide($transferts_validation_liste_valide, $transferts_validation_liste_valide_ligne, "SELECT num_notice, num_bulletin, " . "expl_cb as val_ex, lender_libelle, transferts.date_creation as val_date_creation, " . "transferts.date_retour as val_date_retour, motif as val_motif, location_libelle as val_dest, empr_cb as val_empr " . "FROM transferts " . "INNER JOIN transferts_demande ON id_transfert=num_transfert " . "INNER JOIN exemplaires ON num_expl=expl_id " . "INNER JOIN lenders ON idlender=expl_owner " . "INNER JOIN docs_location ON num_location_dest=idlocation " . "LEFT JOIN resa ON resa_trans=id_resa " . "LEFT JOIN empr ON resa_idempr=id_empr " . "WHERE " . "id_transfert IN (!!liste_numeros!!) " . "AND etat_demande=0", "circ.php?categ=trans&sub=" . $sub);
        break;
    case "val":
        //on enregistre les validations des exemplaires sélectionnés
        $obj_transfert->enregistre_validation($liste_transfert);
        $action = "";
        break;
    case "aff_refus":
        //on affiche l'écran de saisie du refus
        echo "<h1>" . $msg[transferts_circ_menu_titre] . " > " . $msg[transferts_circ_menu_validation] . "</h1>";
        echo affiche_liste_valide($transferts_validation_liste_refus, $transferts_validation_liste_valide_ligne, "SELECT num_notice, num_bulletin, " . "expl_cb as val_ex, lender_libelle, transferts.date_creation as val_date_creation, " . "transferts.date_retour as val_date_retour, motif as val_motif, location_libelle as val_dest, empr_cb as val_empr " . "FROM transferts " . "INNER JOIN transferts_demande ON id_transfert=num_transfert " . "INNER JOIN exemplaires ON num_expl=expl_id " . "INNER JOIN lenders ON idlender=expl_owner " . "INNER JOIN docs_location ON num_location_dest=idlocation " . "LEFT JOIN resa ON resa_trans=id_resa " . "LEFT JOIN empr ON resa_idempr=id_empr " . "WHERE " . "id_transfert IN (!!liste_numeros!!) " . "AND etat_demande=0", "circ.php?categ=trans&sub=" . $sub);
        break;
    case "refus":
        //on enregistre les refus
예제 #14
0
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('.&nbsp;' . $info_doc->location);
    print pmb_bidi('.&nbsp;' . $info_doc->section);
    print pmb_bidi('.&nbsp;' . $stuff->expl_cote);
    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 . "';\" />";
    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&param=' + 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&param=' + 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&param='+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 .= "&nbsp;<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 .= "&nbsp;<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] . "&nbsp;: " . $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"] . "&nbsp;: " . 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 . "&nbsp;" . $empr->empr_nom . "</a></strong>\n\t\t\t\t\t\t\t&nbsp;({$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
}
<?php

// +-------------------------------------------------+
// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
// +-------------------------------------------------+
// $Id: retour_gen_transfert.inc.php,v 1.1 2008-06-04 14:54:25 ohennequin Exp $
if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) {
    die("no access");
}
require_once $class_path . "/transfert.class.php";
$trans = new transfert();
//annule changement de localisation
$trans->retour_exemplaire_restaure_localisation($idexpl, $param);
//genere le transfert
$num = $trans->retour_exemplaire_genere_transfert_retour($idexpl);
ajax_http_send_response($num, "text/xml");
예제 #16
0
 function show_expl_per_notice($no_notice, $link_expl = '', $expl_bulletin = 0)
 {
     global $msg, $dbh, $base_path, $class_path;
     global $explr_invisible, $explr_visible_unmod, $explr_visible_mod, $pmb_droits_explr_localises, $transferts_gestion_transferts;
     global $pmb_expl_list_display_comments;
     global $pmb_sur_location_activate;
     global $pmb_url_base, $pmb_expl_data, $charset;
     global $pmb_expl_display_location_without_expl;
     global $pmb_html_allow_expl_cote;
     // params :
     // $no_notice= id de la notice
     // $link_expl= lien associé à l'exemplaire avec !!expl_id!! et !!expl_cb!! à mettre à jour
     if (!$no_notice && !$expl_bulletin) {
         return;
     }
     $explr_tab_invis = explode(",", $explr_invisible);
     $explr_tab_unmod = explode(",", $explr_visible_unmod);
     $explr_tab_modif = explode(",", $explr_visible_mod);
     // récupération du nombre total d'exemplaires
     if ($expl_bulletin) {
         $requete = "SELECT COUNT(1) FROM exemplaires WHERE expl_bulletin='{$expl_bulletin}' ";
     } else {
         $requete = "SELECT COUNT(1) FROM exemplaires WHERE expl_notice='{$no_notice}' ";
     }
     $res = pmb_mysql_query($requete, $dbh);
     $nb_ex = pmb_mysql_result($res, 0, 0);
     if ($nb_ex) {
         // on récupère les données des exemplaires
         // visibilité des exemplaires:
         if ($pmb_droits_explr_localises && $explr_invisible) {
             $where_expl_localises = "and expl_location not in ({$explr_invisible})";
         } else {
             $where_expl_localises = "";
         }
         //Liste des champs d'exemplaires
         if ($pmb_sur_location_activate) {
             $surloc_field = "surloc_libelle,";
         }
         if (!$pmb_expl_data) {
             $pmb_expl_data = "expl_cb,expl_cote," . $surloc_field . "location_libelle,section_libelle,statut_libelle,tdoc_libelle";
         }
         $colonnesarray = explode(",", $pmb_expl_data);
         if (!in_array("expl_cb", $colonnesarray)) {
             array_unshift($colonnesarray, "expl_cb");
         }
         $total_columns = count($colonnesarray);
         //Présence de champs personnalisés
         if (strstr($pmb_expl_data, "#")) {
             require_once $class_path . "/parametres_perso.class.php";
             $cp = new parametres_perso("expl");
         }
         if ($expl_bulletin) {
             $where_expl_notice_expl_bulletin = " expl_bulletin='{$expl_bulletin}' ";
         } else {
             $where_expl_notice_expl_bulletin = " expl_notice='{$no_notice}' ";
         }
         $requete = "SELECT exemplaires.*, pret.*, docs_location.*, docs_section.*, docs_statut.*, docs_codestat.*, lenders.*, tdoc_libelle, ";
         if (in_array("surloc_libelle", $colonnesarray)) {
             $requete .= "sur_location.*, ";
         }
         $requete .= " date_format(pret_date, '" . $msg["format_date"] . "') as aff_pret_date, ";
         $requete .= " date_format(pret_retour, '" . $msg["format_date"] . "') as aff_pret_retour, ";
         $requete .= " IF(pret_retour>sysdate(),0,1) as retard ";
         $requete .= " FROM exemplaires LEFT JOIN pret ON exemplaires.expl_id=pret.pret_idexpl ";
         $requete .= " left join docs_location on exemplaires.expl_location=docs_location.idlocation ";
         if (in_array("surloc_libelle", $colonnesarray)) {
             $requete .= " left join sur_location on docs_location.surloc_num=sur_location.surloc_id ";
         }
         $requete .= " left join docs_section on exemplaires.expl_section=docs_section.idsection ";
         $requete .= " left join docs_statut on exemplaires.expl_statut=docs_statut.idstatut ";
         $requete .= " left join docs_codestat on exemplaires.expl_codestat=docs_codestat.idcode ";
         $requete .= " left join lenders on exemplaires.expl_owner=lenders.idlender ";
         $requete .= " left join docs_type on exemplaires.expl_typdoc=docs_type.idtyp_doc  ";
         $requete .= " WHERE {$where_expl_notice_expl_bulletin} {$where_expl_localises} ";
         if (in_array("surloc_libelle", $colonnesarray)) {
             $requete .= " order by surloc_libelle,location_libelle, section_libelle, expl_cote, expl_cb ";
         } else {
             $requete .= " order by location_libelle, section_libelle, expl_cote, expl_cb ";
         }
         $result = pmb_mysql_query($requete, $dbh) or die("<br />" . pmb_mysql_error() . "<br />" . $requete);
         $nbr_expl = pmb_mysql_num_rows($result);
         if ($nbr_expl) {
             while ($expl = pmb_mysql_fetch_object($result)) {
                 //visibilité des exemplaires
                 if ($pmb_droits_explr_localises) {
                     $as_invis = array_search($expl->idlocation, $explr_tab_invis);
                     $as_unmod = array_search($expl->idlocation, $explr_tab_unmod);
                     $as_modif = array_search($expl->idlocation, $explr_tab_modif);
                 } else {
                     $as_invis = false;
                     $as_unmod = false;
                     $as_modif = true;
                 }
                 if ($link_expl) {
                     if ($expl_bulletin) {
                         $tlink = "./catalog.php?categ=serials&sub=bulletinage&action=expl_form&bul_id=!!bull_id!!&expl_id=!!expl_id!!";
                         $tlink = str_replace('!!bull_id!!', $expl_bulletin, $tlink);
                         $tlink = str_replace('!!expl_id!!', $expl->expl_id, $tlink);
                         $tlink = str_replace('!!expl_cb!!', rawurlencode($expl->expl_cb), $tlink);
                     } else {
                         $tlink = str_replace('!!expl_id!!', $expl->expl_id, $link_expl);
                         $tlink = str_replace('!!expl_cb!!', rawurlencode($expl->expl_cb), $tlink);
                         $tlink = str_replace('!!notice_id!!', $expl->expl_notice, $tlink);
                     }
                 }
                 $expl_liste .= "<tr>";
                 for ($i = 0; $i < count($colonnesarray); $i++) {
                     if (!(substr($colonnesarray[$i], 0, 1) == "#")) {
                         eval("\$colencours=\$expl->" . $colonnesarray[$i] . ";");
                     }
                     if ($i == 0 && ($expl->expl_note || $expl->expl_comment) && $pmb_expl_list_display_comments) {
                         $expl_rowspan = "rowspan='2'";
                     } else {
                         $expl_rowspan = "";
                     }
                     $aff_column = "";
                     if (substr($colonnesarray[$i], 0, 1) == "#") {
                         //champs personnalisés
                         $id = substr($colonnesarray[$i], 1);
                         $cp->get_values($expl->expl_id);
                         if (!$cp->no_special_fields) {
                             $temp = $cp->get_formatted_output($cp->values[$id], $id);
                             if (!$temp) {
                                 $temp = "&nbsp;";
                             }
                             $aff_column .= $temp;
                         }
                     } else {
                         if ($colonnesarray[$i] == "expl_cb") {
                             if ($tlink && ($as_modif !== FALSE && $as_modif !== NULL)) {
                                 $aff_column .= "<a href='{$tlink}'>" . $colencours . "</a>";
                             } else {
                                 $aff_column .= $colencours;
                             }
                         } else {
                             if ($colonnesarray[$i] == "expl_cote") {
                                 if ($pmb_html_allow_expl_cote) {
                                     $aff_column .= "<strong>" . $colencours . "</strong>";
                                 } else {
                                     $aff_column .= "<strong>" . htmlentities($colencours, ENT_QUOTES, $charset) . "</strong>";
                                 }
                             } else {
                                 if ($colonnesarray[$i] == "statut_libelle") {
                                     if ($expl->pret_retour) {
                                         // exemplaire sorti
                                         $rqt_empr = "SELECT empr_nom, empr_prenom, id_empr, empr_cb FROM empr WHERE id_empr='{$expl->pret_idempr}' ";
                                         $res_empr = pmb_mysql_query($rqt_empr, $dbh);
                                         $res_empr_obj = pmb_mysql_fetch_object($res_empr);
                                         $situation = "<strong>{$msg[358]} " . $expl->aff_pret_retour . "</strong>";
                                         global $empr_show_caddie, $selector_prop_ajout_caddie_empr;
                                         if ($empr_show_caddie && SESSrights & CIRCULATION_AUTH) {
                                             $img_ajout_empr_caddie = "<img src='" . $base_path . "/images/basket_empr.gif' align='middle' alt='basket' title=\"{$msg[400]}\" onClick=\"openPopUp('" . $base_path . "/cart.php?object_type=EMPR&item=" . $expl->pret_idempr . "', 'cart', 600, 700, -2, -2, '{$selector_prop_ajout_caddie_empr}')\">&nbsp;";
                                         } else {
                                             $img_ajout_empr_caddie = "";
                                         }
                                         switch ($this->print_mode) {
                                             case '2':
                                                 $situation .= "<br />{$res_empr_obj->empr_prenom} {$res_empr_obj->empr_nom}";
                                                 break;
                                             default:
                                                 $situation .= "<br />{$img_ajout_empr_caddie}<a href='" . $base_path . "/circ.php?categ=pret&form_cb=" . rawurlencode($res_empr_obj->empr_cb) . "'>{$res_empr_obj->empr_prenom} {$res_empr_obj->empr_nom}</a>";
                                                 break;
                                         }
                                     } else {
                                         // tester si réservé
                                         $result_resa = pmb_mysql_query("select 1 from resa where resa_cb='" . addslashes($expl->expl_cb) . "' ", $dbh) or die("<br />" . pmb_mysql_error() . "<br />" . $requete);
                                         $reserve = pmb_mysql_num_rows($result_resa);
                                         // tester à ranger
                                         $result_aranger = pmb_mysql_query(" select 1 from resa_ranger where resa_cb='" . addslashes($expl->expl_cb) . "' ", $dbh) or die("<br />" . pmb_mysql_error() . "<br />" . $requete);
                                         $aranger = pmb_mysql_num_rows($result_aranger);
                                         if ($reserve) {
                                             $situation = "<strong>" . $msg['expl_reserve'] . "</strong>";
                                         } elseif ($expl->expl_retloc) {
                                             $situation = $msg['resa_menu_a_traiter'];
                                         } elseif ($aranger) {
                                             $situation = "<strong>" . $msg['resa_menu_a_ranger'] . "</strong>";
                                         } elseif ($expl->pret_flag) {
                                             $situation = "<strong>{$msg[359]}</strong>";
                                         } else {
                                             $situation = "";
                                         }
                                     }
                                     $aff_column .= htmlentities($colencours, ENT_QUOTES, $charset);
                                     if ($situation) {
                                         $aff_column .= "<br />{$situation}";
                                     }
                                 } else {
                                     $aff_column = htmlentities($colencours, ENT_QUOTES, $charset);
                                 }
                             }
                         }
                     }
                     $expl_liste .= "<td {$expl_rowspan}>" . $aff_column . "</td>";
                 }
                 if ($this->print_mode) {
                     $expl_liste .= "<td>&nbsp;</td>";
                 } else {
                     if (SESSrights & CATALOGAGE_AUTH) {
                         //le panier d'exemplaire
                         $cart_click = "onClick=\"openPopUp('" . $base_path . "/cart.php?object_type=EXPL&item=" . $expl->expl_id . "', 'cart', 600, 700, -2, -2, 'toolbar=no, dependent=yes, width=500, height=400, resizable=yes, scrollbars=yes')\"";
                         $cart_link = "<a href='#' {$cart_click}><img src='" . $base_path . "/images/basket_small_20x20.gif' align='center' alt='basket' title=\"{$msg[400]}\"></a>";
                         //l'icon pour le drag&drop de panier
                         $drag_link = "<span onMouseOver='if(init_drag) init_drag();' id='EXPL_drag_" . $expl->expl_id . "'  dragicon=\"" . $base_path . "/images/icone_drag_notice.png\" dragtext=\"" . htmlentities($expl->expl_cb, ENT_QUOTES, $charset) . "\" draggable=\"yes\" dragtype=\"notice\" callback_before=\"show_carts\" callback_after=\"\" style=\"padding-left:7px\"><img src=\"" . $base_path . "/images/notice_drag.png\"/></span>";
                     } else {
                         $cart_click = "";
                         $cart_link = "";
                         $drag_link = "";
                     }
                     //l'impression de la fiche exemplaire
                     $fiche_click = "onClick=\"openPopUp('" . $base_path . "/pdf.php?pdfdoc=fiche_catalographique&expl_id=" . $expl->expl_id . "', 'Fiche', 500, 400, -2, -2, 'toolbar=no, dependent=yes, resizable=yes, scrollbars=yes')\"";
                     $fiche_link = "<a href='#' {$fiche_click}><img src='" . $base_path . "/images/print.gif' align='center' alt='" . $msg['print_fiche_catalographique'] . "' title='" . $msg['print_fiche_catalographique'] . "'></a>";
                     global $pmb_transferts_actif;
                     //si les transferts sont activés
                     if ($pmb_transferts_actif) {
                         //si l'exemplaire n'est pas transferable on a une image vide
                         $transfer_link = "<img src='" . $base_path . "/images/spacer.gif' align='center' height=20 width=20>";
                         $dispo_pour_transfert = transfert::est_transferable($expl->expl_id);
                         if (SESSrights & TRANSFERTS_AUTH && $dispo_pour_transfert) {
                             //l'icon de demande de transfert
                             $transfer_link = "<a href=\"#\" onClick=\"openPopUp('" . $base_path . "/catalog/transferts/transferts_popup.php?expl=" . $expl->expl_id . "', 'cart', 600, 450, -2, -2, 'toolbar=no, dependent=yes, resizable=yes, scrollbars=yes');\"><img src='" . $base_path . "/images/peb_in.png' align='center' border=0 alt=\"" . $msg["transferts_alt_libelle_icon"] . "\" title=\"" . $msg["transferts_alt_libelle_icon"] . "\"></a>";
                         }
                     }
                     //on met tout dans la colonne
                     $expl_liste .= "<td>{$fiche_link} {$cart_link} {$transfer_link} {$drag_link}</td>";
                 }
                 $expl_liste .= "</tr>";
                 if (($expl->expl_note || $expl->expl_comment) && $pmb_expl_list_display_comments) {
                     $notcom = array();
                     $expl_liste .= "<tr><td colspan='" . $total_columns . "'>";
                     if ($expl->expl_note && $pmb_expl_list_display_comments & 1) {
                         $notcom[] .= "<span class='erreur'>{$expl->expl_note}</span>";
                     }
                     if ($expl->expl_comment && $pmb_expl_list_display_comments & 2) {
                         $notcom[] .= "{$expl->expl_comment}";
                     }
                     $expl_liste .= implode("<br />", $notcom);
                     $expl_liste .= "</tr>";
                 }
             }
             // fin while
         }
         // fin il y a des expl visibles
         if ($expl_liste) {
             $entry = "<table border='0' class='expl-list'><tr>";
             for ($i = 0; $i < count($colonnesarray); $i++) {
                 if (substr($colonnesarray[$i], 0, 1) == "#") {
                     //champs personnalisés
                     if (!$cp->no_special_fields) {
                         $id = substr($colonnesarray[$i], 1);
                         $entry .= "<th>" . htmlentities($cp->t_fields[$id][TITRE], ENT_QUOTES, $charset) . "</th>";
                     }
                 } else {
                     eval("\$colencours=\$msg[expl_header_" . $colonnesarray[$i] . "];");
                     $entry .= "<th>" . htmlentities($colencours, ENT_QUOTES, $charset) . "</th>";
                 }
             }
             $entry .= "<th>&nbsp;</th></tr>{$expl_liste}</table>";
         } else {
             $entry = "";
         }
         if ($pmb_expl_display_location_without_expl) {
             if ($pmb_sur_location_activate) {
                 $array_surloc = array();
                 $requete = "SELECT * FROM sur_location ORDER BY surloc_libelle";
                 $result = pmb_mysql_query($requete, $dbh) or die("<br />" . pmb_mysql_error() . "<br />" . $requete);
                 $nb_surloc = pmb_mysql_num_rows($result);
                 if ($nb_surloc) {
                     while ($surloc = pmb_mysql_fetch_object($result)) {
                         $array_surloc[] = array("id" => $surloc->surloc_id, "libelle" => $surloc->surloc_libelle, "locations" => array());
                     }
                 }
                 if (count($array_surloc)) {
                     foreach ($array_surloc as $key => $surloc) {
                         $requete = "SELECT idlocation, location_libelle from docs_location where surloc_num=" . $surloc["id"] . " AND \n\t\t\t\t\t\tidlocation not in (SELECT expl_location from exemplaires WHERE expl_notice={$no_notice}) order by location_libelle";
                         $result = pmb_mysql_query($requete, $dbh) or die("<br />" . pmb_mysql_error() . "<br />" . $requete);
                         $nb_loc = pmb_mysql_num_rows($result);
                         if ($nb_loc) {
                             while ($loc = pmb_mysql_fetch_object($result)) {
                                 $array_surloc[$key]["locations"][] = array("id" => $loc->idlocation, "libelle" => $loc->location_libelle);
                             }
                         } else {
                             unset($array_surloc[$key]);
                         }
                     }
                 }
                 //Au moins une surloc à afficher
                 if (count($array_surloc)) {
                     $tr_surloc = "";
                     foreach ($array_surloc as $key => $surloc) {
                         $tr_surloc .= "<tr><td>";
                         $tr_loc = "";
                         foreach ($surloc["locations"] as $keyloc => $loc) {
                             $tr_loc .= "<tr><td>" . $loc["libelle"] . "</td></tr>";
                         }
                         $tpl_surloc = "\n\t\t\t\t\t\t\t<table border='0' class='expl-list'>\n\t\t\t\t\t\t\t\t{$tr_loc}\n\t\t\t\t\t\t\t</table>";
                         $tr_surloc .= gen_plus('surlocation_without_expl' . $key . '_' . $no_notice, $surloc["libelle"], $tpl_surloc, 0);
                         $tr_surloc .= "</td></tr>";
                     }
                     $tpl = "\n\t\t\t\t\t<table border='0' class='expl-list'>\n\t\t\t\t\t\t{$tr_surloc}\n\t\t\t\t\t</table>";
                     $entry .= gen_plus('location_without_expl' . $no_notice, $msg['expl_surlocation_without_expl'], $tpl, 0);
                 }
             } else {
                 $requete = "SELECT location_libelle from docs_location where\n\t\t\t\tidlocation not in (SELECT expl_location from exemplaires WHERE expl_notice={$no_notice}) order by location_libelle";
                 $result = pmb_mysql_query($requete, $dbh) or die("<br />" . pmb_mysql_error() . "<br />" . $requete);
                 $nb_loc = pmb_mysql_num_rows($result);
                 if ($nb_loc) {
                     $items = "";
                     while ($loc = pmb_mysql_fetch_object($result)) {
                         $items .= "<tr><td>" . $loc->location_libelle . "</td></tr>";
                     }
                     $tpl = "\n\t\t\t\t\t<table border='0' class='expl-list'>\n\t\t\t\t\t\t{$items}\n\t\t\t\t\t</table>";
                     $tpl = gen_plus('location_without_expl' . $no_notice, $msg['expl_location_without_expl'], $tpl, 0);
                     $entry .= $tpl;
                 }
             }
         }
         $this->nb_expl = $nbr_expl;
         return $entry;
     } else {
         return "";
     }
 }
예제 #17
0
<?php

// +-------------------------------------------------+
// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
// +-------------------------------------------------+
// $Id: retours.inc.php,v 1.7 2012-08-20 08:06:32 ngantier Exp $
if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) {
    die("no access");
}
// Titre de la fenêtre
echo window_title($database_window_title . $msg[transferts_circ_menu_retour] . $msg[1003] . $msg[1001]);
//creation de l'objet transfert
$obj_transfert = new transfert();
switch ($action) {
    case "aff_ret":
        //on affiche l'écran de validation
        echo "<h1>" . $msg[transferts_circ_menu_titre] . " > " . $msg[transferts_circ_menu_retour] . "</h1>";
        echo affiche_liste_valide($transferts_retour_liste_valide, $transferts_retour_liste_valide_ligne, "SELECT num_notice, num_bulletin, " . "expl_cb as val_ex,lender_libelle, transferts.date_retour as val_date_retour, " . "date_reception as val_date_reception, motif as val_motif, location_libelle as val_dest, empr_cb as val_empr " . "FROM transferts " . "INNER JOIN transferts_demande ON id_transfert=num_transfert " . "INNER JOIN exemplaires ON num_expl=expl_id " . "INNER JOIN lenders ON idlender=expl_owner " . "INNER JOIN docs_location ON num_location_source=idlocation " . "LEFT JOIN resa ON resa_trans=id_resa " . "LEFT JOIN empr ON resa_idempr=id_empr " . "WHERE " . "id_transfert IN (!!liste_numeros!!) " . "AND etat_demande=3", "circ.php?categ=trans&sub=" . $sub);
        break;
    case "ret":
        //on enregistre les validations des exemplaires sélectionnés
        $obj_transfert->enregistre_retour($liste_transfert);
        $action = "";
        break;
}
if ($action == "") {
    //pas d'action donc affichage de la liste des validations en attente
    get_cb_expl($msg[transferts_circ_menu_titre] . " > " . $msg[transferts_circ_menu_retour], $msg[661], $msg[transferts_circ_retour_exemplaire], "./circ.php?categ=trans&sub=" . $sub . "&f_destination=" . $f_destination . "&nb_per_page=" . $nb_per_page, 0);
    //pour la validation d'un exemplaire
    if ($form_cb_expl != "") {
        //enregistre l'acceptation du transfert