X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=circ%2Fbranchtransfers.pl;h=cb10b5b0f1654fee8d658eeda4c209c00e32e155;hb=f41f272ff087d65ed11d760e6c7c58818c3a24d4;hp=8cd01d58bd506bee64d4095875d84b7aab65ecbb;hpb=e441cb35fb13670e65b9437706561c17d1311945;p=koha-ffzg.git diff --git a/circ/branchtransfers.pl b/circ/branchtransfers.pl index 8cd01d58bd..cb10b5b0f1 100755 --- a/circ/branchtransfers.pl +++ b/circ/branchtransfers.pl @@ -22,13 +22,10 @@ use Modern::Perl; use CGI qw ( -utf8 ); -use C4::Circulation; -use C4::Output; -use C4::Reserves; -use C4::Biblio; -use C4::Items; -use C4::Auth qw/:DEFAULT get_session/; -use C4::Koha; +use C4::Circulation qw( transferbook barcodedecode ); +use C4::Output qw( output_html_with_http_headers ); +use C4::Reserves qw( ModReserve ModReserveAffect ); +use C4::Auth qw( get_session get_template_and_user ); use C4::Members; use Koha::BiblioFrameworks; use Koha::AuthorisedValues; @@ -39,7 +36,7 @@ use Koha::Patrons; ############################################### # Getting state -my $query = new CGI; +my $query = CGI->new; if (!C4::Context->userenv){ my $sessionID = $query->cookie("CGISESSID"); @@ -59,7 +56,6 @@ my ($template, $user, $cookie, $flags ) = get_template_and_user( template_name => "circ/branchtransfers.tt", query => $query, type => "intranet", - authnotrequired => 0, flagsrequired => { circulate => "circulate_remaining_permissions" }, } ); @@ -74,13 +70,16 @@ my $messages; my $found; my $reserved; my $waiting; +my $hold_transferred; +my $hold_processed; my $reqmessage; my $cancelled; -my $setwaiting; +my $settransit; my $request = $query->param('request') || ''; my $borrowernumber = $query->param('borrowernumber') || 0; my $tobranchcd = $query->param('tobranchcd') || ''; +my $trigger = 'Manual'; my $ignoreRs = 0; ############ @@ -97,21 +96,21 @@ if ( $request eq "KillWaiting" ) { $reqmessage = 1; } # FIXME else? } -elsif ( $request eq "SetWaiting" ) { +elsif ( $request eq "SetTransit" ) { my $item = $query->param('itemnumber'); - ModReserveAffect( $item, $borrowernumber ); + my $reserve_id = $query->param('reserve_id'); + ModReserveAffect( $item, $borrowernumber, 1, $reserve_id ); $ignoreRs = 1; - $setwaiting = 1; + $settransit = 1; $reqmessage = 1; + $trigger = 'Reserve'; } elsif ( $request eq 'KillReserved' ) { my $biblionumber = $query->param('biblionumber'); - my $holds = Koha::Holds->search({ - biblionumber => $biblionumber, - borrowernumber => $borrowernumber - }); - if ( $holds->count ) { - $holds->next->cancel; + my $reserve_id = $query->param('reserve_id'); + my $hold = Koha::Holds->find({ reserve_id => $reserve_id }); + if ( $hold ) { + $hold->cancel; $cancelled = 1; $reqmessage = 1; } # FIXME else? @@ -122,14 +121,20 @@ my @trsfitemloop; my $transferred; my $barcode = $query->param('barcode'); # remove leading/trailing whitespace -defined $barcode and $barcode =~ s/^\s*|\s*$//g; # FIXME: barcodeInputFilter +$barcode = barcodedecode($barcode) if $barcode; # warn "barcode : $barcode"; if ($barcode) { ( $transferred, $messages ) = - transferbook( $tobranchcd, $barcode, $ignoreRs, 'Manual' ); + transferbook({ + from_branch => C4::Context->userenv->{'branch'}, + to_branch => $tobranchcd, + barcode => $barcode, + ignore_reserves => $ignoreRs, + trigger => $trigger + }); my $item = Koha::Items->find({ barcode => $barcode }); - $found = $messages->{'ResFound'}; + $found = $messages->{'ResFound'} unless $settransit; if ($transferred) { my %trsfitem; my $frbranchcd = C4::Context->userenv->{'branch'}; @@ -162,17 +167,24 @@ my $biblionumber; ##################### -if ($found) { - my $res = $messages->{'ResFound'}; - $itemnumber = $res->{'itemnumber'}; - $borrowernumber = $res->{'borrowernumber'}; +my $hold; +if ($found){ + $hold = Koha::Holds->find( + { reserve_id => $found->{reserve_id} }, + { prefetch => ['item','patron'] } + ); + $itemnumber = $found->{'itemnumber'}; + $borrowernumber = $found->{'borrowernumber'}; - if ( $res->{'ResFound'} eq "Waiting" ) { + if ( $found->{'ResFound'} eq "Waiting" ) { $waiting = 1; - } - elsif ( $res->{'ResFound'} eq "Reserved" ) { + } elsif ( $found->{'ResFound'} eq "Transferred" ) { + $hold_transferred = 1; + } elsif ( $found->{'ResFound'} eq "Processing" ) { + $hold_processed = 1; + } elsif ( $found->{'ResFound'} eq "Reserved" ) { $reserved = 1; - $biblionumber = $res->{'biblionumber'}; + $biblionumber = $found->{'biblionumber'}; } } @@ -200,8 +212,10 @@ foreach my $code ( keys %$messages ) { $err{patron} = $patron; } } - $err{errdesteqholding} = ( $code eq 'DestinationEqualsHolding' ); - push( @errmsgloop, \%err ); + elsif ( $code eq 'DestinationEqualsHolding' ) { + $err{errdesteqholding} = 1; + } + push( @errmsgloop, \%err ) if (keys %err); } } @@ -210,8 +224,11 @@ foreach my $code ( keys %$messages ) { $template->param( found => $found, + hold => $hold, reserved => $reserved, waiting => $waiting, + transferred => $hold_transferred, + processing => $hold_processed, borrowernumber => $borrowernumber, itemnumber => $itemnumber, barcode => $barcode, @@ -219,7 +236,7 @@ $template->param( tobranchcd => $tobranchcd, reqmessage => $reqmessage, cancelled => $cancelled, - setwaiting => $setwaiting, + settransit => $settransit, trsfitemloop => \@trsfitemloop, errmsgloop => \@errmsgloop, PatronAutoComplete => C4::Context->preference("PatronAutoComplete"),