X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=circ%2Fbranchtransfers.pl;h=cb10b5b0f1654fee8d658eeda4c209c00e32e155;hb=f41f272ff087d65ed11d760e6c7c58818c3a24d4;hp=ea9b289d3286f40dab6568fc23a048716018cd5c;hpb=fcaed6ef24084da54d9d91c09072ff04d0070ef2;p=koha-ffzg.git diff --git a/circ/branchtransfers.pl b/circ/branchtransfers.pl index ea9b289d32..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"); @@ -47,7 +44,7 @@ if (!C4::Context->userenv){ $session = get_session($sessionID) if $sessionID; if (!$session){ # no branch set we can't transfer - print $query->redirect("/cgi-bin/koha/circ/selectbranchprinter.pl"); + print $query->redirect("/cgi-bin/koha/circ/set-library.pl"); exit; } } @@ -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,59 +121,45 @@ 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 %item; - my $biblio = $item->biblio; + my %trsfitem; my $frbranchcd = C4::Context->userenv->{'branch'}; - $item{'biblionumber'} = $item->biblionumber; - $item{'itemnumber'} = $item->itemnumber; - $item{'title'} = $biblio->title; - $item{'author'} = $biblio->author; - $item{'itemtype'} = $biblio->biblioitem->itemtype; - $item{'ccode'} = $item->ccode; - $item{'itemcallnumber'} = $item->itemcallnumber; - my $av = Koha::AuthorisedValues->search({ category => 'LOC', authorised_value => $item->location }); - $item{'location'} = $av->count ? $av->next->lib : ''; - $item{counter} = 0; - $item{barcode} = $barcode; - $item{frombrcd} = $frbranchcd; - $item{tobrcd} = $tobranchcd; - push( @trsfitemloop, \%item ); + $trsfitem{item} = $item; + $trsfitem{counter} = 0; + $trsfitem{frombrcd} = $frbranchcd; + $trsfitem{tobrcd} = $tobranchcd; + push( @trsfitemloop, \%trsfitem ); } } foreach ( $query->param ) { (next) unless (/bc-(\d*)/); my $counter = $1; - my %item; + my %trsfitem; my $bc = $query->param("bc-$counter"); my $frbcd = $query->param("fb-$counter"); my $tobcd = $query->param("tb-$counter"); $counter++; - $item{counter} = $counter; - $item{barcode} = $bc; - $item{frombrcd} = $frbcd; - $item{tobrcd} = $tobcd; + $trsfitem{counter} = $counter; + $trsfitem{frombrcd} = $frbcd; + $trsfitem{tobrcd} = $tobcd; my $item = Koha::Items->find({ barcode => $bc }); - my $biblio = $item->biblio; - $item{'biblionumber'} = $item->biblionumber; - $item{'itemnumber'} = $item->itemnumber; - $item{'title'} = $biblio->title; - $item{'author'} = $biblio->author; - $item{'itemtype'} = $biblio->biblioitem->itemtype; - $item{'ccode'} = $item->ccode; - $item{'itemcallnumber'} = $item->itemcallnumber; - my $av = Koha::AuthorisedValues->search({ category => 'LOC', authorised_value => $item->location }); - $item{'location'} = $av->count ? $av->next->lib : ''; - push( @trsfitemloop, \%item ); + $trsfitem{item} = $item; + push( @trsfitemloop, \%trsfitem ); } my $itemnumber; @@ -182,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'}; } } @@ -220,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); } } @@ -230,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, @@ -239,7 +236,7 @@ $template->param( tobranchcd => $tobranchcd, reqmessage => $reqmessage, cancelled => $cancelled, - setwaiting => $setwaiting, + settransit => $settransit, trsfitemloop => \@trsfitemloop, errmsgloop => \@errmsgloop, PatronAutoComplete => C4::Context->preference("PatronAutoComplete"),