X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=circ%2Fpendingreserves.pl;h=932b035c234b812891e54e8154ecb4fe2eb4d09f;hb=5dc392f6638b7723a95007afadb23d2872c3f19f;hp=e532faff3e193ceb197534696b570e1dbc0bc161;hpb=23de370b2d73babe7378d419f59e3af7a632e394;p=koha.git diff --git a/circ/pendingreserves.pl b/circ/pendingreserves.pl index e532faff3e..932b035c23 100755 --- a/circ/pendingreserves.pl +++ b/circ/pendingreserves.pl @@ -1,22 +1,21 @@ #!/usr/bin/perl - # Copyright 2000-2002 Katipo Communications # # This file is part of Koha. # -# Koha is free software; you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or (at your option) any later -# version. +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. # -# Koha is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License along -# with Koha; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . # Modification by D.Ulm, actually works (as long as indep. branches not turned on) # Someone let me know what indep. branches is supposed to do and I'll make that part work too @@ -25,13 +24,16 @@ use strict; #use warnings; FIXME - Bug 2505 + +use constant PULL_INTERVAL => 2; + use C4::Context; use C4::Output; -use CGI; +use CGI qw ( -utf8 ); use C4::Auth; -use C4::Dates qw/format_date format_date_in_iso/; use C4::Debug; -use Date::Calc qw/Today Add_Delta_YMD/; +use Koha::DateUtils; +use DateTime::Duration; my $input = new CGI; my $startdate=$input->param('from'); @@ -42,7 +44,7 @@ my $theme = $input->param('theme'); # only used if allowthemeoverride is set my ( $template, $loggedinuser, $cookie ) = get_template_and_user( { - template_name => "circ/pendingreserves.tmpl", + template_name => "circ/pendingreserves.tt", query => $input, type => "intranet", authnotrequired => 0, @@ -51,70 +53,60 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( } ); -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); -my $yesterdaysdate = sprintf("%-04.4d-%-02.2d-%02.2d", Add_Delta_YMD($year, $month, $day, 0, 0, -1)); -# changed from delivered range of 10 years-yesterday to 2 days ago-today -# Find two days ago for the default shelf pull start and end dates, unless HoldsToPullStartDate sys pref is set. -my $defaultstartdate = ( C4::Context->preference('HoldsToPullStartDate') ) ? "-".C4::Context->preference('HoldsToPullStartDate') : -2; -my $pastdate = sprintf("%-04.4d-%-02.2d-%02.2d", Add_Delta_YMD($year, $month, $day, 0, 0, $defaultstartdate)); - -# Predefine the start and end dates if they are not already defined +my $today = dt_from_string; $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 "") { - $startdate = format_date($pastdate); + +if ( $startdate ) { + $startdate = eval{dt_from_string( $startdate )}; } -if (!defined($enddate) or $enddate eq "") { - $enddate = format_date($todaysdate); +unless ( $startdate ){ + # changed from delivered range of 10 years-yesterday to 2 days ago-today + # Find two days ago for the default shelf pull start date, unless HoldsToPullStartDate sys pref is set. + $startdate = $today - DateTime::Duration->new( days => C4::Context->preference('HoldsToPullStartDate') || PULL_INTERVAL ); } +if ( $enddate ) { + $enddate = eval{dt_from_string( $enddate )}; +} +unless ( $enddate ) { + #similarly: calculate end date with ConfirmFutureHolds (days) + $enddate = $today + DateTime::Duration->new( days => C4::Context->preference('ConfirmFutureHolds') || 0 ); +} my @reservedata; if ( $run_report ) { my $dbh = C4::Context->dbh; my $sqldatewhere = ""; - $debug and warn format_date_in_iso($startdate) . "\n" . format_date_in_iso($enddate); + my $startdate_iso = output_pref({ dt => $startdate, dateformat => 'iso', dateonly => 1 }); + my $enddate_iso = output_pref({ dt => $enddate, dateformat => 'iso', dateonly => 1 }); + $debug and warn $startdate_iso. "\n" . $enddate_iso; my @query_params = (); - if ($startdate) { + if ($startdate_iso) { $sqldatewhere .= " AND reservedate >= ?"; - push @query_params, format_date_in_iso($startdate); + push @query_params, $startdate_iso; } - if ($enddate) { + if ($enddate_iso) { $sqldatewhere .= " AND reservedate <= ?"; - push @query_params, format_date_in_iso($enddate); + push @query_params, $enddate_iso; } my $strsth = "SELECT min(reservedate) as l_reservedate, reserves.borrowernumber as borrowernumber, GROUP_CONCAT(DISTINCT items.holdingbranch - ORDER BY items.itemnumber SEPARATOR '
') l_holdingbranch, + ORDER BY items.itemnumber SEPARATOR '|') l_holdingbranch, reserves.biblionumber, reserves.branchcode, GROUP_CONCAT(DISTINCT reserves.branchcode ORDER BY items.itemnumber SEPARATOR ', ') l_branch, items.holdingbranch as branch, GROUP_CONCAT(DISTINCT items.itype - ORDER BY items.itemnumber SEPARATOR '
') l_itype, + ORDER BY items.itemnumber SEPARATOR '|') l_itype, GROUP_CONCAT(DISTINCT items.location - ORDER BY items.itemnumber SEPARATOR '
') l_location, + ORDER BY items.itemnumber SEPARATOR '|') l_location, GROUP_CONCAT(DISTINCT items.itemcallnumber ORDER BY items.itemnumber SEPARATOR '
') l_itemcallnumber, GROUP_CONCAT(DISTINCT items.enumchron @@ -122,7 +114,6 @@ if ( $run_report ) { GROUP_CONCAT(DISTINCT items.copynumber ORDER BY items.itemnumber SEPARATOR '
') l_copynumber, items.itemnumber, - notes, notificationdate, reminderdate, max(priority) as priority, @@ -141,16 +132,17 @@ if ( $run_report ) { $sqldatewhere AND (reserves.itemnumber IS NULL OR reserves.itemnumber = items.itemnumber) AND items.itemnumber NOT IN (SELECT itemnumber FROM branchtransfers where datearrived IS NULL) + AND items.itemnumber NOT IN (select itemnumber FROM reserves where found='W') AND issues.itemnumber IS NULL AND reserves.priority <> 0 AND reserves.suspend = 0 - AND notforloan = 0 AND damaged = 0 AND itemlost = 0 AND wthdrawn = 0 + AND notforloan = 0 AND damaged = 0 AND itemlost = 0 AND withdrawn = 0 "; # GROUP BY reserves.biblionumber allows only items that are not checked out, else multiples occur when # multiple patrons have a hold on an item - if (C4::Context->preference('IndependantBranches')){ + if (C4::Context->preference('IndependentBranches')){ $strsth .= " AND items.holdingbranch=? "; push @query_params, C4::Context->userenv->{'branch'}; } @@ -163,7 +155,7 @@ if ( $run_report ) { push( @reservedata, { - reservedate => format_date( $data->{l_reservedate} ), + reservedate => $data->{l_reservedate}, priority => $data->{priority}, name => $data->{l_patron}, title => $data->{title}, @@ -175,19 +167,18 @@ if ( $run_report ) { biblionumber => $data->{biblionumber}, statusw => ( $data->{found} eq "W" ), statusf => ( $data->{found} eq "F" ), - holdingbranch => $data->{l_holdingbranch}, + holdingbranches => [split('\|', $data->{l_holdingbranch})],, branch => $data->{l_branch}, itemcallnumber => $data->{l_itemcallnumber}, enumchron => $data->{l_enumchron}, copyno => $data->{l_copynumber}, - notes => $data->{notes}, notificationdate=> $data->{notificationdate}, reminderdate => $data->{reminderdate}, count => $data->{icount}, rcount => $data->{rcount}, pullcount => $data->{icount} <= $data->{rcount} ? $data->{icount} : $data->{rcount}, - itype => $data->{l_itype}, - location => $data->{l_location}, + itypes => [split('\|', $data->{l_itype})], + locations => [split('\|', $data->{l_location})], } ); } @@ -195,15 +186,14 @@ if ( $run_report ) { } $template->param( - todaysdate => format_date($todaysdate), + todaysdate => $today, from => $startdate, to => $enddate, run_report => $run_report, reserveloop => \@reservedata, "BiblioDefaultView".C4::Context->preference("BiblioDefaultView") => 1, - DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), - dateformat => C4::Context->preference("dateformat"), - HoldsToPullStartDate => (C4::Context->preference('HoldsToPullStartDate')?C4::Context->preference('HoldsToPullStartDate'):2), + HoldsToPullStartDate => C4::Context->preference('HoldsToPullStartDate') || PULL_INTERVAL, + HoldsToPullEndDate => C4::Context->preference('ConfirmFutureHolds') || 0, ); output_html_with_http_headers $input, $cookie, $template->output;