X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=serials%2Frouting-preview.pl;h=b33cb8dbcdff457b3cd814b153c1b81aa9fb471f;hb=9d6d641d1f8b77271800f43bc027b651f9aea52b;hp=5d57c13bf74316b84777343c830d0440d54d4e83;hpb=2ea6fdec156419fbbdd5f64da927d0b2b45e751c;p=srvgit diff --git a/serials/routing-preview.pl b/serials/routing-preview.pl index 5d57c13bf7..b33cb8dbcd 100755 --- a/serials/routing-preview.pl +++ b/serials/routing-preview.pl @@ -2,41 +2,38 @@ # 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 . # Routing Preview.pl script used to view a routing list after creation -# lets one print out routing slip and create (in this instance) the heirarchy +# lets one print out routing slip and create (in this instance) the hierarchy # of reserves for the serial -use strict; -use warnings; -use CGI; +use Modern::Perl; +use CGI qw ( -utf8 ); use C4::Koha; -use C4::Auth; -use C4::Dates; -use C4::Output; -use C4::Acquisition; -use C4::Reserves; -use C4::Circulation; +use C4::Auth qw( get_template_and_user ); +use C4::Output qw( output_html_with_http_headers ); +use C4::Reserves qw( AddReserve ModReserve ); use C4::Context; -use C4::Members; -use C4::Biblio; -use C4::Items; -use C4::Serials; +use C4::Items qw( GetItemsInfo ); +use C4::Serials qw( delroutingmember getroutinglist GetSubscription GetSerials check_routing ); use URI::Escape; -use C4::Branch; -my $query = new CGI; +use Koha::Biblios; +use Koha::Libraries; +use Koha::Patrons; + +my $query = CGI->new; my $subscriptionid = $query->param('subscriptionid'); my $issue = $query->param('issue'); my $routingid; @@ -56,74 +53,79 @@ if($edit){ print $query->redirect("routing.pl?subscriptionid=$subscriptionid"); } -my ($routing, @routinglist) = getroutinglist($subscriptionid); +my @routinglist = getroutinglist($subscriptionid); my $subs = GetSubscription($subscriptionid); my ($tmp ,@serials) = GetSerials($subscriptionid); my ($template, $loggedinuser, $cookie); +my $library; if($ok){ # get biblio information.... - my $biblio = $subs->{'biblionumber'}; - my ($count2,@bibitems) = GetBiblioItemByBiblioNumber($biblio); - my @itemresults = GetItemsInfo($subs->{'biblionumber'}, 'intra'); - my $branch = $itemresults[0]->{'holdingbranch'}; - my $branchname = GetBranchName($branch); + my $biblionumber = $subs->{'bibnum'}; + my @itemresults = GetItemsInfo( $biblionumber ); + my $branch = @itemresults ? $itemresults[0]->{'holdingbranch'} : $subs->{branchcode}; + $library = Koha::Libraries->find($branch); if (C4::Context->preference('RoutingListAddReserves')){ # get existing reserves ..... - my ($count,$reserves) = GetReservesFromBiblionumber($biblio); - my $totalcount = $count; - foreach my $res (@$reserves) { - if ($res->{'found'} eq 'W') { - $count--; - } - } - my $const = 'o'; + + my $biblio = Koha::Biblios->find( $biblionumber ); + my $holds = $biblio->current_holds; + my $count = $holds->count; + while ( my $hold = $holds->next ) { + $count-- if $hold->is_waiting; + } my $notes; my $title = $subs->{'bibliotitle'}; - for(my $i=0;$i<$routing;$i++){ - my $sth = $dbh->prepare("SELECT * FROM reserves WHERE biblionumber = ? AND borrowernumber = ?"); - $sth->execute($biblio,$routinglist[$i]->{'borrowernumber'}); - my $data = $sth->fetchrow_hashref; - - # warn "$routinglist[$i]->{'borrowernumber'} is the same as $data->{'borrowernumber'}"; - if($routinglist[$i]->{'borrowernumber'} == $data->{'borrowernumber'}){ - ModReserve($routinglist[$i]->{'ranking'},$biblio,$routinglist[$i]->{'borrowernumber'},$branch); - } else { - AddReserve($branch,$routinglist[$i]->{'borrowernumber'},$biblio,$const,\@bibitems,$routinglist[$i]->{'ranking'},'',$notes,$title); - } - } + for my $routing ( @routinglist ) { + my $sth = $dbh->prepare('SELECT * FROM reserves WHERE biblionumber = ? AND borrowernumber = ? LIMIT 1'); + $sth->execute($biblionumber,$routing->{borrowernumber}); + my $reserve = $sth->fetchrow_hashref; + + if($routing->{borrowernumber} == $reserve->{borrowernumber}){ + ModReserve({ + rank => $routing->{ranking}, + biblionumber => $biblionumber, + borrowernumber => $routing->{borrowernumber}, + branchcode => $branch + }); + } else { + AddReserve( + { + branchcode => $branch, + borrowernumber => $routing->{borrowernumber}, + biblionumber => $biblionumber, + priority => $routing->{ranking}, + notes => $notes, + title => $title, + } + ); + } + } } ($template, $loggedinuser, $cookie) -= get_template_and_user({template_name => "serials/routing-preview-slip.tmpl", += get_template_and_user({template_name => "serials/routing-preview-slip.tt", query => $query, type => "intranet", - authnotrequired => 0, - flagsrequired => {serials => 'routing'}, - debug => 1, + flagsrequired => {serials => '*'}, }); - $template->param("libraryname"=>$branchname); } else { ($template, $loggedinuser, $cookie) -= get_template_and_user({template_name => "serials/routing-preview.tmpl", += get_template_and_user({template_name => "serials/routing-preview.tt", query => $query, type => "intranet", - authnotrequired => 0, - flagsrequired => {serials => 'routing'}, - debug => 1, + flagsrequired => {serials => '*'}, }); } -my @results; -my $data; -for(my $i=0;$i<$routing;$i++){ - $data=GetMember('borrowernumber' => $routinglist[$i]->{'borrowernumber'}); - $data->{'location'}=$data->{'branchcode'}; - $data->{'name'}="$data->{'firstname'} $data->{'surname'}"; - $data->{'routingid'}=$routinglist[$i]->{'routingid'}; - $data->{'subscriptionid'}=$subscriptionid; - push(@results, $data); +$template->param( libraryname => $library->branchname ) if $library; + +my $memberloop = []; +for my $routing (@routinglist) { + my $member = Koha::Patrons->find( $routing->{borrowernumber} )->unblessed; + $member->{name} = "$member->{firstname} $member->{surname}"; + push @{$memberloop}, $member; } my $routingnotes = $serials[0]->{'routingnotes'}; @@ -132,11 +134,12 @@ $routingnotes =~ s/\n/\
/g; $template->param( title => $subs->{'bibliotitle'}, issue => $issue, - issue_escaped => URI::Escape::uri_escape($issue), + issue_escaped => URI::Escape::uri_escape_utf8($issue), subscriptionid => $subscriptionid, - memberloop => \@results, + memberloop => $memberloop, routingnotes => $routingnotes, hasRouting => check_routing($subscriptionid), + (uc(C4::Context->preference("marcflavour"))) => 1 ); output_html_with_http_headers $query, $cookie, $template->output;