X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=circ%2Freserveratios.pl;h=f44966cef7eed5e6342c3c201668a8b7abec5d84;hb=f3e620372f7b7f0670fe6d422496156300054f34;hp=b0dc55ee2f5f9d3ec5eaac7f221e638d12d15fd6;hpb=20241fd68696d989e9ab6c68924abd63df9b20dc;p=koha.git diff --git a/circ/reserveratios.pl b/circ/reserveratios.pl index b0dc55ee2f..f44966cef7 100755 --- a/circ/reserveratios.pl +++ b/circ/reserveratios.pl @@ -19,6 +19,8 @@ # Suite 330, Boston, MA 02111-1307 USA use strict; +use warnings; + use C4::Context; use C4::Output; use CGI; @@ -28,12 +30,10 @@ use C4::Debug; use Date::Calc qw/Today Add_Delta_YM/; my $input = new CGI; -my $order = $input->param('order'); -my $startdate=$input->param('from'); -my $enddate=$input->param('to'); -my $ratio=$input->param('ratio'); - -my $theme = $input->param('theme'); # only used if allowthemeoverride is set +my $order = $input->param('order') || ''; +my $startdate = $input->param('from'); +my $enddate = $input->param('to'); +my $ratio = $input->param('ratio'); my ( $template, $loggedinuser, $cookie ) = get_template_and_user( { @@ -41,24 +41,11 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( query => $input, type => "intranet", authnotrequired => 0, - flagsrequired => { circulate => 1 }, + flagsrequired => { circulate => "circulate_remaining_permissions" }, debug => 1, } ); -my $duedate; -my $borrowernumber; -my $itemnum; -my $data1; -my $data2; -my $data3; -my $name; -my $phone; -my $email; -my $biblionumber; -my $title; -my $author; - my ( $year, $month, $day ) = Today(); my $todaysdate = sprintf("%-04.4d-%-02.2d-%02.2d", $year, $month, $day); # Find yesterday for the default shelf pull start and end dates @@ -66,18 +53,14 @@ my $todaysdate = sprintf("%-04.4d-%-02.2d-%02.2d", $year, $month, $day); my $datelastyear = sprintf("%-04.4d-%-02.2d-%02.2d", Add_Delta_YM($year, $month, $day, -1, 0)); # Predefine the start and end dates if they are not already defined -$startdate =~ s/^\s+//; -$startdate =~ s/\s+$//; -$enddate =~ s/^\s+//; -$enddate =~ s/\s+$//; # Check if null, should string match, if so set start and end date to yesterday -if (!defined($startdate) or $startdate eq "") { +if (!defined($startdate) or $startdate !~ s/^\s*(\S+)\s*$/$1/) { # strip spaces, remove Taint $startdate = format_date($datelastyear); } -if (!defined($enddate) or $enddate eq "") { - $enddate = format_date($todaysdate); +if (!defined($enddate) or $enddate !~ s/^\s*(\S+)\s*$/$1/) { # strip spaces, remove Taint + $enddate = format_date($todaysdate); } -if (!defined($ratio) or $ratio eq "" or $ratio !~ /^\s*\d+\s*$/ ) { +if (!defined($ratio) or $ratio !~ s/^\s*(0?\.?\d+)(\.0*)?\s*$/$1/) { # strip spaces, remove Taint $ratio = 3; } if ($ratio == 0) { @@ -144,20 +127,23 @@ notforloan = 0 AND damaged = 0 AND itemlost = 0 AND wthdrawn = 0 $sqldatewhere "; - if (C4::Context->preference('IndependantBranches')){ $strsth .= " AND items.holdingbranch=? "; push @query_params, C4::Context->userenv->{'branch'}; } $strsth .= " GROUP BY reserves.biblionumber " . $sqlorderby; + +$template->param(sql => $strsth); my $sth = $dbh->prepare($strsth); $sth->execute(@query_params); +my $ratio_atleast1 = ($ratio >= 1) ? 1 : 0; my @reservedata; while ( my $data = $sth->fetchrow_hashref ) { - my @itemlist; - my $ratiocalc = int(10 * $data->{reservecount} / $data->{itemcount} / $ratio )/10; + my $thisratio = $data->{reservecount} / $data->{itemcount}; + my $ratiocalc = ($thisratio / $ratio); + ($thisratio / $ratio) >= 1 or next; # TODO: tighter targeting -- get ratio limit into SQL using HAVING clause push( @reservedata, { @@ -166,34 +152,32 @@ while ( my $data = $sth->fetchrow_hashref ) { name => $data->{borrower}, title => $data->{title}, author => $data->{author}, - notes => $data->{notes}, + notes => $data->{notes}, itemnum => $data->{itemnumber}, biblionumber => $data->{biblionumber}, holdingbranch => $data->{holdingbranch}, - listbranch => $data->{listbranch}, + listbranch => $data->{listbranch}, branch => $data->{branch}, itemcallnumber => $data->{itemcallnumber}, - location => $data->{l_location}, - itype => $data->{l_itype}, + location => $data->{l_location}, + itype => $data->{l_itype}, reservecount => $data->{reservecount}, - itemcount => $data->{itemcount}, - ratiocalc => $ratiocalc, - ratio_ge_one => $ratiocalc ge 1.0 ? 1 : "", - listcall => $data->{listcall} + itemcount => $data->{itemcount}, + ratiocalc => sprintf("%.0d", $ratio_atleast1 ? ($thisratio / $ratio) : $thisratio), + thisratio => sprintf("%.2f", $thisratio), + thisratio_atleast1 => ($thisratio >= 1) ? 1 : 0, + listcall => $data->{listcall} } ); } - -$sth->finish; - $template->param( + ratio_atleast1 => $ratio_atleast1, todaysdate => format_date($todaysdate), from => $startdate, to => $enddate, ratio => $ratio, reserveloop => \@reservedata, - "BiblioDefaultView".C4::Context->preference("BiblioDefaultView") => 1, DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), );