X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=circ%2Freturns.pl;h=98d310e12429c37791b8700840894793d76a99b0;hb=6980d82991e2cc685c2c8f7fdc2b5c3fc1ae58ef;hp=be2fde6d4c97dca7a954ca3505ecd4bade4de183;hpb=454dd9376b8cdc848c7ed82e511265269a519805;p=koha_fer diff --git a/circ/returns.pl b/circ/returns.pl index be2fde6d4c..98d310e124 100755 --- a/circ/returns.pl +++ b/circ/returns.pl @@ -2,7 +2,8 @@ # Copyright 2000-2002 Katipo Communications # 2006 SAN-OP -# 2007 BibLibre, Paul POULAIN +# 2007-2010 BibLibre, Paul POULAIN +# 2010 Catalyst IT # # This file is part of Koha. # @@ -15,9 +16,9 @@ # 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., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA +# 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. =head1 returns.pl @@ -26,7 +27,7 @@ script to execute returns of books =cut use strict; -# use warnings; # FIXME +#use warnings; FIXME - Bug 2505 use CGI; use C4::Context; @@ -41,19 +42,20 @@ use C4::Reserves; use C4::Biblio; use C4::Items; use C4::Members; -use C4::Branch; # GetBranchName +use C4::Branch; # GetBranches GetBranchName use C4::Koha; # FIXME : is it still useful ? +use C4::RotatingCollections; my $query = new CGI; if (!C4::Context->userenv){ - my $sessionID = $query->cookie("CGISESSID"); - my $session = get_session($sessionID); - if ($session->param('branch') eq 'NO_LIBRARY_SET'){ - # no branch set we can't return - print $query->redirect("/cgi-bin/koha/circ/selectbranchprinter.pl"); - exit; - } + my $sessionID = $query->cookie("CGISESSID"); + my $session = get_session($sessionID); + if ($session->param('branch') eq 'NO_LIBRARY_SET'){ + # no branch set we can't return + print $query->redirect("/cgi-bin/koha/circ/selectbranchprinter.pl"); + exit; + } } #getting the template @@ -72,9 +74,10 @@ my ( $template, $librarian, $cookie ) = get_template_and_user( my $branches = GetBranches(); my $printers = GetPrinters(); -#my $branch = C4::Context->userenv?C4::Context->userenv->{'branch'}:""; -my $printer = C4::Context->userenv?C4::Context->userenv->{'branchprinter'}:""; +my $printer = C4::Context->userenv ? C4::Context->userenv->{'branchprinter'} : ""; my $overduecharges = (C4::Context->preference('finesMode') && C4::Context->preference('finesMode') ne 'off'); + +my $userenv_branch = C4::Context->userenv->{'branch'} || ''; # # Some code to handle the error if there is no branch or printer setting..... # @@ -85,16 +88,25 @@ my %riduedate; my %riborrowernumber; my @inputloop; foreach ( $query->param ) { - (next) unless (/ri-(\d*)/); + my $counter; + if (/ri-(\d*)/) { + $counter = $1; + if ($counter > 20) { + next; + } + } + else { + next; + } + my %input; - my $counter = $1; - (next) if ( $counter > 20 ); my $barcode = $query->param("ri-$counter"); my $duedate = $query->param("dd-$counter"); my $borrowernumber = $query->param("bn-$counter"); $counter++; - # decode barcode + # decode barcode ## Didn't we already decode them before passing them back last time?? + $barcode =~ s/^\s*|\s*$//g; # remove leading/trailing whitespace $barcode = barcodedecode($barcode) if(C4::Context->preference('itemBarcodeInputFilter')); ###################### @@ -123,44 +135,30 @@ if ( $query->param('resbarcode') ) { my $borrowernumber = $query->param('borrowernumber'); my $resbarcode = $query->param('resbarcode'); my $diffBranchReturned = $query->param('diffBranch'); - # set to waiting.... my $iteminfo = GetBiblioFromItemNumber($item); # fix up item type for display $iteminfo->{'itemtype'} = C4::Context->preference('item-level_itypes') ? $iteminfo->{'itype'} : $iteminfo->{'itemtype'}; - my $diffBranchSend; - -# addin in ModReserveAffect the possibility to check if the document is expected in this library or not, -# if not we send a value in reserve waiting for not implementting waiting status - if (C4::Context->userenv->{'branch'} ne $diffBranchReturned) { - $diffBranchSend = $diffBranchReturned; - } - else { - $diffBranchSend = undef; - } - ModReserveAffect( $item, $borrowernumber,$diffBranchSend); -# check if we have other reservs for this document, if we have a return send the message of transfer + my $diffBranchSend = ($userenv_branch ne $diffBranchReturned) ? $diffBranchReturned : undef; +# diffBranchSend tells ModReserveAffect whether document is expected in this library or not, +# i.e., whether to apply waiting status + ModReserveAffect( $item, $borrowernumber, $diffBranchSend); +# check if we have other reserves for this document, if we have a return send the message of transfer my ( $messages, $nextreservinfo ) = GetOtherReserves($item); - my $branchname = GetBranchName( $messages->{'transfert'} ); my ($borr) = GetMemberDetails( $nextreservinfo, 0 ); - my $borcnum = $borr->{'cardnumber'}; - my $name = - $borr->{'surname'} . ", " . $borr->{'title'} . " " . $borr->{'firstname'}; - my $slip = $query->param('resslip'); - - + my $name = $borr->{'surname'} . ", " . $borr->{'title'} . " " . $borr->{'firstname'}; if ( $messages->{'transfert'} ) { $template->param( itemtitle => $iteminfo->{'title'}, - itembiblionumber => $iteminfo->{'biblionumber'}, + itembiblionumber => $iteminfo->{'biblionumber'}, iteminfo => $iteminfo->{'author'}, - tobranchname => $branchname, + tobranchname => GetBranchName($messages->{'transfert'}), name => $name, borrowernumber => $borrowernumber, - borcnum => $borcnum, + borcnum => $borr->{'cardnumber'}, borfirstname => $borr->{'firstname'}, borsurname => $borr->{'surname'}, - diffbranch => 1 + diffbranch => 1, ); } } @@ -169,40 +167,72 @@ my $borrower; my $returned = 0; my $messages; my $issueinformation; -my $barcode = $query->param('barcode'); -# strip whitespace -# $barcode =~ s/\s*//g; - use barcodedecode for this; whitespace is not invalid. -my $exemptfine = $query->param('exemptfine'); -my $dropboxmode= $query->param('dropboxmode'); -my $calendar = C4::Calendar->new( branchcode => C4::Context->userenv->{'branch'} ); - #dropbox: get last open day (today - 1) +my $itemnumber; +my $barcode = $query->param('barcode'); +my $exemptfine = $query->param('exemptfine'); +my $dropboxmode = $query->param('dropboxmode'); +my $dotransfer = $query->param('dotransfer'); +my $canceltransfer = $query->param('canceltransfer'); +my $dest = $query->param('dest'); +my $calendar = C4::Calendar->new( branchcode => $userenv_branch ); +#dropbox: get last open day (today - 1) my $today = C4::Dates->new(); my $today_iso = $today->output('iso'); -my $dropboxdate = $calendar->addDate($today, -1 ); -my $dotransfer = $query->param('dotransfer'); +my $dropboxdate = $calendar->addDate($today, -1); if ($dotransfer){ - # An item has been returned to a branch other than the homebranch, and the librarian has choosen to initiate a transfer - my $transferitem=$query->param('transferitem'); - my $tobranch=$query->param('tobranch'); - ModItemTransfer($transferitem, C4::Context->userenv->{'branch'}, $tobranch); +# An item has been returned to a branch other than the homebranch, and the librarian has chosen to initiate a transfer + my $transferitem = $query->param('transferitem'); + my $tobranch = $query->param('tobranch'); + ModItemTransfer($transferitem, $userenv_branch, $tobranch); +} + +if ($canceltransfer){ + $itemnumber=$query->param('itemnumber'); + DeleteTransfer($itemnumber); + if($dest eq "ttr"){ + print $query->redirect("/cgi-bin/koha/circ/transferstoreceive.pl"); + exit; + } else { + $template->param( transfercancelled => 1); + } } # actually return book and prepare item table..... if ($barcode) { - $barcode = barcodedecode($barcode) if(C4::Context->preference('itemBarcodeInputFilter')); + $barcode =~ s/^\s*|\s*$//g; # remove leading/trailing whitespace + $barcode = barcodedecode($barcode) if C4::Context->preference('itemBarcodeInputFilter'); + $itemnumber = GetItemnumberFromBarcode($barcode); + + if ( C4::Context->preference("InProcessingToShelvingCart") ) { + my $item = GetItem( $itemnumber ); + if ( $item->{'location'} eq 'PROC' ) { + $item->{'location'} = 'CART'; + ModItem( $item, $item->{'biblionumber'}, $item->{'itemnumber'} ); + } + } + + if ( C4::Context->preference("ReturnToShelvingCart") ) { + my $item = GetItem( $itemnumber ); + $item->{'location'} = 'CART'; + ModItem( $item, $item->{'biblionumber'}, $item->{'itemnumber'} ); + } + # # save the return # ( $returned, $messages, $issueinformation, $borrower ) = - AddReturn( $barcode, C4::Context->userenv->{'branch'}, $exemptfine, $dropboxmode); + AddReturn( $barcode, $userenv_branch, $exemptfine, $dropboxmode); # do the return + my $homeorholdingbranchreturn = C4::Context->preference('HomeOrHoldingBranchReturn') or 'homebranch'; + # get biblio description - my $biblio = GetBiblioFromItemNumber($issueinformation->{'itemnumber'}); + my $biblio = GetBiblioFromItemNumber($itemnumber); # fix up item type for display $biblio->{'itemtype'} = C4::Context->preference('item-level_itypes') ? $biblio->{'itype'} : $biblio->{'itemtype'}; $template->param( title => $biblio->{'title'}, homebranch => $biblio->{'homebranch'}, + homebranchname => GetBranchName( $biblio->{$homeorholdingbranchreturn} ), author => $biblio->{'author'}, itembarcode => $biblio->{'barcode'}, itemtype => $biblio->{'itemtype'}, @@ -210,41 +240,60 @@ if ($barcode) { itembiblionumber => $biblio->{'biblionumber'}, ); + my %input = ( + counter => 0, + first => 1, + barcode => $barcode, + ); + if ($returned) { - $returneditems{0} = $barcode; - $riborrowernumber{0} = $borrower->{'borrowernumber'}; - $riduedate{0} = $issueinformation->{'date_due'}; - my %input; - $input{counter} = 0; - $input{first} = 1; - $input{barcode} = $barcode; + my $duedate = $issueinformation->{'date_due'}; + $returneditems{0} = $barcode; + $riborrowernumber{0} = $borrower->{'borrowernumber'}; + $riduedate{0} = $duedate; $input{borrowernumber} = $borrower->{'borrowernumber'}; - $input{duedate} = $issueinformation->{'date_due'}; - $input{return_overdue} = 1 if ($issueinformation->{'date_due'} lt $today->output('iso')); + $input{duedate} = $duedate; + $input{return_overdue} = 1 if ($duedate and $duedate lt $today->output('iso')); push( @inputloop, \%input ); - # check if the branch is the same as homebranch - # if not, we want to put a message - if ( $biblio->{'homebranch'} ne C4::Context->userenv->{'branch'} ) { - $template->param( homebranch => $biblio->{'homebranch'} ); + if ( C4::Context->preference("FineNotifyAtCheckin") ) { + my ( $od, $issue, $fines ) = GetMemberIssuesAndFines( $borrower->{'borrowernumber'} ); + if ($fines > 0) { + $template->param( fines => sprintf("%.2f",$fines) ); + $template->param( fineborrowernumber => $borrower->{'borrowernumber'} ); + } + } + + if (C4::Context->preference("WaitingNotifyAtCheckin") ) { + #Check for waiting holds + my @reserves = GetReservesFromBorrowernumber($borrower->{'borrowernumber'}); + my $waiting_holds; + foreach my $num_res (@reserves) { + if ( $num_res->{'found'} eq 'W' && $num_res->{'branchcode'} eq $userenv_branch) { + $waiting_holds++; + } + } + if ($waiting_holds > 0) { + $template->param( + waiting_holds => $waiting_holds, + holdsborrowernumber => $borrower->{'borrowernumber'}, + holdsfirstname => $borrower->{'firstname'}, + holdssurname => $borrower->{'surname'}, + ); + } } } elsif ( !$messages->{'BadBarcode'} ) { - my %input; - $input{counter} = 0; - $input{first} = 1; - $input{barcode} = $barcode; - $input{duedate} = 0; - + $input{duedate} = 0; $returneditems{0} = $barcode; $riduedate{0} = 0; if ( $messages->{'wthdrawn'} ) { $input{withdrawn} = 1; - $input{borrowernumber} = 'Item Cancelled'; + $input{borrowernumber} = 'Item Cancelled'; # FIXME: should be in display layer ? $riborrowernumber{0} = 'Item Cancelled'; } else { - $input{borrowernumber} = ' '; + $input{borrowernumber} = ' '; # This seems clearly bogus. $riborrowernumber{0} = ' '; } push( @inputloop, \%input ); @@ -267,33 +316,34 @@ if ( $messages->{'WasTransfered'} ) { } if ( $messages->{'NeedsTransfer'} ){ - $template->param( - found => 1, - needstransfer => 1, - itemnumber => $issueinformation->{'itemnumber'} - ); + $template->param( + found => 1, + needstransfer => 1, + itemnumber => $itemnumber, + ); } if ( $messages->{'Wrongbranch'} ){ - $template->param( - wrongbranch => 1, - ); + $template->param( + wrongbranch => 1, + ); } -# adding a case of wrong transfert, if the document wasn't transfered in the good library (according to branchtransfer (tobranch) BDD) +# case of wrong transfert, if the document wasn't transfered to the right library (according to branchtransfer (tobranch) BDD) if ( $messages->{'WrongTransfer'} and not $messages->{'WasTransfered'}) { - $template->param( + $messages->{'WrongTransfer'} = GetBranchName( $messages->{'WrongTransfer'} ); + $template->param( WrongTransfer => 1, TransferWaitingAt => $messages->{'WrongTransfer'}, WrongTransferItem => $messages->{'WrongTransferItem'}, + itemnumber => $itemnumber, ); - my $reserve = $messages->{'ResFound'}; + my $reserve = $messages->{'ResFound'}; my $branchname = $branches->{ $reserve->{'branchcode'} }->{'branchname'}; my ($borr) = GetMemberDetails( $reserve->{'borrowernumber'}, 0 ); - my $name = - $borr->{'surname'} . " " . $borr->{'title'} . " " . $borr->{'firstname'}; + my $name = $borr->{'surname'} . ", " . $borr->{'title'} . " " . $borr->{'firstname'}; $template->param( wname => $name, wborfirstname => $borr->{'firstname'}, @@ -307,29 +357,38 @@ if ( $messages->{'WrongTransfer'} and not $messages->{'WasTransfered'}) { wborzip => $borr->{'zipcode'}, wborrowernumber => $reserve->{'borrowernumber'}, wborcnum => $borr->{'cardnumber'}, - wtransfertFrom => C4::Context->userenv->{'branch'}, + wtransfertFrom => $userenv_branch, ); } - # # reserve found and item arrived at the expected branch # if ( $messages->{'ResFound'}) { - my $reserve = $messages->{'ResFound'}; + my $reserve = $messages->{'ResFound'}; my $branchname = $branches->{ $reserve->{'branchcode'} }->{'branchname'}; my ($borr) = GetMemberDetails( $reserve->{'borrowernumber'}, 0 ); - if ( $reserve->{'ResFound'} eq "Waiting" ) { - if ( C4::Context->userenv->{'branch'} eq $reserve->{'branchcode'} ) { - $template->param( waiting => 1 ); - } - else { - $template->param( waiting => 0 ); + + if ( $reserve->{'ResFound'} eq "Waiting" or $reserve->{'ResFound'} eq "Reserved" ) { + if ( $reserve->{'ResFound'} eq "Waiting" ) { + $template->param( + waiting => ($userenv_branch eq $reserve->{'branchcode'} ? 1 : 0 ), + ); + } elsif ( $reserve->{'ResFound'} eq "Reserved" ) { + $template->param( + intransit => ($userenv_branch eq $reserve->{'branchcode'} ? 0 : 1 ), + transfertodo => ($userenv_branch eq $reserve->{'branchcode'} ? 0 : 1 ), + resbarcode => $barcode, + reserved => 1, + ); } + # same params for Waiting or Reserved $template->param( found => 1, - name => $borr->{'surname'} . " " . $borr->{'title'} . " " . $borr->{'firstname'}, + currentbranch => $branches->{$userenv_branch}->{'branchname'}, + destbranchname => $branches->{ $reserve->{'branchcode'} }->{'branchname'}, + name => $borr->{'surname'} . ", " . $borr->{'title'} . " " . $borr->{'firstname'}, borfirstname => $borr->{'firstname'}, borsurname => $borr->{'surname'}, bortitle => $borr->{'title'}, @@ -339,62 +398,21 @@ if ( $messages->{'ResFound'}) { boraddress2 => $borr->{'address2'}, borcity => $borr->{'city'}, borzip => $borr->{'zipcode'}, - borrowernumber => $reserve->{'borrowernumber'}, borcnum => $borr->{'cardnumber'}, debarred => $borr->{'debarred'}, gonenoaddress => $borr->{'gonenoaddress'}, - currentbranch => $branches->{C4::Context->userenv->{'branch'}}->{'branchname'}, - itemnumber => $reserve->{'itemnumber'}, barcode => $barcode, - destbranchname => - $branches->{ $reserve->{'branchcode'} }->{'branchname'}, - destbranch => $reserve->{'branchcode'}, - ); - - } - if ( $reserve->{'ResFound'} eq "Reserved" ) { - if ( C4::Context->userenv->{'branch'} eq $reserve->{'branchcode'} ) { - $template->param( intransit => 0 ); - } - else { - $template->param( intransit => 1 ); - } - - $template->param( - found => 1, - currentbranch => $branches->{C4::Context->userenv->{'branch'}}->{'branchname'}, - destbranchname => - $branches->{ $reserve->{'branchcode'} }->{'branchname'}, - destbranch => $reserve->{'branchcode'}, - transfertodo => ( C4::Context->userenv->{'branch'} eq $reserve->{'branchcode'} ? 0 : 1 ), - reserved => 1, - resbarcode => $barcode, - # today => $todaysdate, - itemnumber => $reserve->{'itemnumber'}, - borsurname => $borr->{'surname'}, - bortitle => $borr->{'title'}, - borfirstname => $borr->{'firstname'}, - borrowernumber => $reserve->{'borrowernumber'}, - borcnum => $borr->{'cardnumber'}, - borphone => $borr->{'phone'}, - boraddress => $borr->{'address'}, - boraddress2 => $borr->{'address2'}, - borsub => $borr->{'suburb'}, - borcity => $borr->{'city'}, - borzip => $borr->{'zipcode'}, - boremail => $borr->{'email'}, - debarred => $borr->{'debarred'}, - gonenoaddress => $borr->{'gonenoaddress'}, - barcode => $barcode + destbranch => $reserve->{'branchcode'}, + borrowernumber => $reserve->{'borrowernumber'}, + itemnumber => $reserve->{'itemnumber'}, + reservenotes => $reserve->{'reservenotes'}, ); - } + } # else { ; } # error? } # Error Messages my @errmsgloop; foreach my $code ( keys %$messages ) { - - # warn $code; my %err; my $exit_required_p = 0; if ( $code eq 'BadBarcode' ) { @@ -405,6 +423,9 @@ foreach my $code ( keys %$messages ) { $err{notissued} = 1; $err{msg} = $branches->{ $messages->{'IsPermanent'} }->{'branchname'}; } + elsif ( $code eq 'LocalUse' ) { + $err{localuse} = 1; + } elsif ( $code eq 'WasLost' ) { $err{waslost} = 1; } @@ -422,7 +443,7 @@ foreach my $code ( keys %$messages ) { $exit_required_p = 1; } elsif ( ( $code eq 'IsPermanent' ) && ( not $messages->{'ResFound'} ) ) { - if ( $messages->{'IsPermanent'} ne C4::Context->userenv->{'branch'} ) { + if ( $messages->{'IsPermanent'} ne $userenv_branch ) { $err{ispermanent} = 1; $err{msg} = $branches->{ $messages->{'IsPermanent'} }->{'branchname'}; @@ -434,13 +455,19 @@ foreach my $code ( keys %$messages ) { elsif ( $code eq 'WrongTransferItem' ) { ; # FIXME... anything to do here? } - elsif ( $code eq 'NeedsTransfer' ) { - } - elsif ( $code eq 'Wrongbranch' ) { - } - + elsif ( $code eq 'NeedsTransfer' ) { + } + elsif ( $code eq 'Wrongbranch' ) { + } + elsif ( $code eq 'Debarred' ) { + $err{debarred} = format_date( $messages->{'Debarred'} ); + $err{debarcardnumber} = $borrower->{cardnumber}; + $err{debarborrowernumber} = $borrower->{borrowernumber}; + $err{debarname} = "$borrower->{firstname} $borrower->{surname}"; + } else { - die "Unknown error code $code"; # XXX + die "Unknown error code $code"; # note we need all the (empty) elsif's above, or we die. + # This forces the issue of staying in sync w/ Circulation.pm } if (%err) { push( @errmsgloop, \%err ); @@ -471,16 +498,13 @@ if ($borrower) { my @waitingitemloop; my $items = $flags->{$flag}->{'itemlist'}; foreach my $item (@$items) { - my $biblio = - GetBiblioFromItemNumber( $item->{'itemnumber'}); - my %waitingitem; - $waitingitem{biblionum} = $biblio->{'biblionumber'}; - $waitingitem{barcode} = $biblio->{'barcode'}; - $waitingitem{title} = $biblio->{'title'}; - $waitingitem{brname} = - $branches->{ $biblio->{'holdingbranch'} } - ->{'branchname'}; - push( @waitingitemloop, \%waitingitem ); + my $biblio = GetBiblioFromItemNumber( $item->{'itemnumber'}); + push @waitingitemloop, { + biblionum => $biblio->{'biblionumber'}, + barcode => $biblio->{'barcode'}, + title => $biblio->{'title'}, + brname => $branches->{ $biblio->{'holdingbranch'} }->{'branchname'}, + }; } $flaginfo{itemloop} = \@waitingitemloop; } @@ -491,14 +515,13 @@ if ($borrower) { @$items ) { my $biblio = GetBiblioFromItemNumber( $item->{'itemnumber'}); - my %overdueitem; - $overdueitem{duedate} = format_date( $item->{'date_due'} ); - $overdueitem{biblionum} = $biblio->{'biblionumber'}; - $overdueitem{barcode} = $biblio->{'barcode'}; - $overdueitem{title} = $biblio->{'title'}; - $overdueitem{brname} = - $branches->{ $biblio->{'holdingbranch'}} ->{'branchname'}; - push( @itemloop, \%overdueitem ); + push @itemloop, { + duedate => format_date($item->{'date_due'}), + biblionum => $biblio->{'biblionumber'}, + barcode => $biblio->{'barcode'}, + title => $biblio->{'title'}, + brname => $branches->{ $biblio->{'holdingbranch'} }->{'branchname'}, + }; } $flaginfo{itemloop} = \@itemloop; $flaginfo{overdue} = 1; @@ -524,65 +547,85 @@ if ($borrower) { my $returned_counter = ( C4::Context->preference('numReturnedItemsToShow') ) ? C4::Context->preference('numReturnedItemsToShow') : 8; my $count = 0; my @riloop; +my $shelflocations = GetKohaAuthorisedValues('items.location',''); foreach ( sort { $a <=> $b } keys %returneditems ) { my %ri; if ( $count++ < $returned_counter ) { - my $barcode = $returneditems{$_}; + my $bar_code = $returneditems{$_}; my $duedate = $riduedate{$_}; - my $overduetext; - my $borrowerinfo; if ($duedate) { my @tempdate = split( /-/, $duedate ); $ri{year} = $tempdate[0]; $ri{month} = $tempdate[1]; $ri{day} = $tempdate[2]; $ri{duedate} = format_date($duedate); - my ($borrower) = - GetMemberDetails( $riborrowernumber{$_}, 0 ); + my ($b) = GetMemberDetails( $riborrowernumber{$_}, 0 ); $ri{return_overdue} = 1 if ($duedate lt $today->output('iso')); - $ri{borrowernumber} = $borrower->{'borrowernumber'}; - $ri{borcnum} = $borrower->{'cardnumber'}; - $ri{borfirstname} = $borrower->{'firstname'}; - $ri{borsurname} = $borrower->{'surname'}; - $ri{bortitle} = $borrower->{'title'}; - $ri{bornote} = $borrower->{'borrowernotes'}; - $ri{borcategorycode} = $borrower->{'categorycode'}; + $ri{borrowernumber} = $b->{'borrowernumber'}; + $ri{borcnum} = $b->{'cardnumber'}; + $ri{borfirstname} = $b->{'firstname'}; + $ri{borsurname} = $b->{'surname'}; + $ri{bortitle} = $b->{'title'}; + $ri{bornote} = $b->{'borrowernotes'}; + $ri{borcategorycode}= $b->{'categorycode'}; } else { $ri{borrowernumber} = $riborrowernumber{$_}; } # my %ri; - my $biblio = GetBiblioFromItemNumber(GetItemnumberFromBarcode($barcode)); + my $biblio = GetBiblioFromItemNumber(GetItemnumberFromBarcode($bar_code)); # fix up item type for display $biblio->{'itemtype'} = C4::Context->preference('item-level_itypes') ? $biblio->{'itype'} : $biblio->{'itemtype'}; $ri{itembiblionumber} = $biblio->{'biblionumber'}; $ri{itemtitle} = $biblio->{'title'}; $ri{itemauthor} = $biblio->{'author'}; + $ri{itemcallnumber} = $biblio->{'itemcallnumber'}; $ri{itemtype} = $biblio->{'itemtype'}; $ri{itemnote} = $biblio->{'itemnotes'}; $ri{ccode} = $biblio->{'ccode'}; $ri{itemnumber} = $biblio->{'itemnumber'}; - $ri{barcode} = $barcode; + $ri{barcode} = $bar_code; + + $ri{location} = $biblio->{'location'}; + my $shelfcode = $ri{'location'}; + $ri{'location'} = $shelflocations->{$shelfcode} if ( defined( $shelfcode ) && defined($shelflocations) && exists( $shelflocations->{$shelfcode} ) ); + } else { last; } - push( @riloop, \%ri ); + push @riloop, \%ri; } -$template->param( riloop => \@riloop ); $template->param( - genbrname => $branches->{C4::Context->userenv->{'branch'}}->{'branchname'}, - genprname => $printers->{$printer}->{'printername'}, - branchname => $branches->{C4::Context->userenv->{'branch'}}->{'branchname'}, - printer => $printer, - errmsgloop => \@errmsgloop, - exemptfine => $exemptfine, - dropboxmode => $dropboxmode, - dropboxdate => $dropboxdate->output(), - overduecharges => $overduecharges, + riloop => \@riloop, + genbrname => $branches->{$userenv_branch}->{'branchname'}, + genprname => $printers->{$printer}->{'printername'}, + branchname => $branches->{$userenv_branch}->{'branchname'}, + printer => $printer, + errmsgloop => \@errmsgloop, + exemptfine => $exemptfine, + dropboxmode => $dropboxmode, + dropboxdate => $dropboxdate->output(), + overduecharges => $overduecharges, + soundon => C4::Context->preference("SoundOn"), ); +### Comment out rotating collections for now to allow it a little more time to bake +### for 3.4; in particular, must ensure that it doesn't fight with transfers required +### to fill hold requests +### -- Galen Charlton 2010-10-06 +#my $itemnumber = GetItemnumberFromBarcode( $query->param('barcode') ); +#if ( $itemnumber ) { +# my ( $holdingBranch, $collectionBranch ) = GetCollectionItemBranches( $itemnumber ); +# if ( ! ( $holdingBranch eq $collectionBranch ) ) { +# $template->param( +# collectionItemNeedsTransferred => 1, +# collectionBranch => GetBranchName($collectionBranch), +# ); +# } +#} + # actually print the page! output_html_with_http_headers $query, $cookie, $template->output;