X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=circ%2Freturns.pl;h=c05277c3d720b891e1f2b2b9d173c03a3624908c;hb=b06a289173d0f2e299b0c8652d59d47dc196062c;hp=40eeed153f5bc5a8660e513ea9cb7acb07577922;hpb=8219d79f5a6d35937a819487f881157260cf768a;p=koha_gimpoz diff --git a/circ/returns.pl b/circ/returns.pl index 40eeed153f..c05277c3d7 100755 --- a/circ/returns.pl +++ b/circ/returns.pl @@ -15,9 +15,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 +26,7 @@ script to execute returns of books =cut use strict; -# use warnings; # FIXME +#use warnings; FIXME - Bug 2505 use CGI; use C4::Context; @@ -43,17 +43,18 @@ use C4::Items; use C4::Members; 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,7 +73,6 @@ 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 $overduecharges = (C4::Context->preference('finesMode') && C4::Context->preference('finesMode') ne 'off'); @@ -87,16 +87,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 ## 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')); ###################### @@ -140,7 +149,7 @@ if ( $query->param('resbarcode') ) { if ( $messages->{'transfert'} ) { $template->param( itemtitle => $iteminfo->{'title'}, - itembiblionumber => $iteminfo->{'biblionumber'}, + itembiblionumber => $iteminfo->{'biblionumber'}, iteminfo => $iteminfo->{'author'}, tobranchname => GetBranchName($messages->{'transfert'}), name => $name, @@ -163,19 +172,20 @@ my $exemptfine = $query->param('exemptfine'); my $dropboxmode = $query->param('dropboxmode'); my $dotransfer = $query->param('dotransfer'); my $calendar = C4::Calendar->new( branchcode => $userenv_branch ); - #dropbox: get last open day (today - 1) +#dropbox: get last open day (today - 1) my $today = C4::Dates->new(); my $today_iso = $today->output('iso'); my $dropboxdate = $calendar->addDate($today, -1); if ($dotransfer){ - # 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); +# 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); } # actually return book and prepare item table..... if ($barcode) { + $barcode =~ s/^\s*|\s*$//g; # remove leading/trailing whitespace $barcode = barcodedecode($barcode) if C4::Context->preference('itemBarcodeInputFilter'); $itemnumber = GetItemnumberFromBarcode($barcode); @@ -198,6 +208,7 @@ if ($barcode) { # ( $returned, $messages, $issueinformation, $borrower ) = AddReturn( $barcode, $userenv_branch, $exemptfine, $dropboxmode); # do the return + my $homeorholdingbranchreturn = C4::Context->preference('HomeOrHoldingBranchReturn') or 'homebranch'; # get biblio description my $biblio = GetBiblioFromItemNumber($itemnumber); @@ -207,6 +218,7 @@ if ($barcode) { $template->param( title => $biblio->{'title'}, homebranch => $biblio->{'homebranch'}, + homebranchname => GetBranchName( $biblio->{$homeorholdingbranchreturn} ), author => $biblio->{'author'}, itembarcode => $biblio->{'barcode'}, itemtype => $biblio->{'itemtype'}, @@ -229,6 +241,13 @@ if ($barcode) { $input{duedate} = $duedate; $input{return_overdue} = 1 if ($duedate and $duedate lt $today->output('iso')); push( @inputloop, \%input ); + + my ( $od, $issue, $fines ) = GetMemberIssuesAndFines( $borrower->{'borrowernumber'} ); + if ($fines) { + $template->param( fines => sprintf("%.2f",$fines) ); + $template->param( fineborrowernumber => $borrower->{'borrowernumber'} ); + } + } elsif ( !$messages->{'BadBarcode'} ) { $input{duedate} = 0; @@ -263,23 +282,24 @@ if ( $messages->{'WasTransfered'} ) { } if ( $messages->{'NeedsTransfer'} ){ - $template->param( - found => 1, - needstransfer => 1, - itemnumber => $itemnumber, - ); + $template->param( + found => 1, + needstransfer => 1, + itemnumber => $itemnumber, + ); } if ( $messages->{'Wrongbranch'} ){ - $template->param( - wrongbranch => 1, - ); + $template->param( + wrongbranch => 1, + ); } # 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'}, @@ -347,7 +367,7 @@ if ( $messages->{'ResFound'}) { debarred => $borr->{'debarred'}, gonenoaddress => $borr->{'gonenoaddress'}, barcode => $barcode, - destbranch => $reserve->{'branchcode'}, + destbranch => $reserve->{'branchcode'}, borrowernumber => $reserve->{'borrowernumber'}, itemnumber => $reserve->{'itemnumber'}, reservenotes => $reserve->{'reservenotes'}, @@ -401,7 +421,7 @@ foreach my $code ( keys %$messages ) { } elsif ( $code eq 'Wrongbranch' ) { } - + else { 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 @@ -487,32 +507,30 @@ my @riloop; 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'}; @@ -522,12 +540,12 @@ foreach ( sort { $a <=> $b } keys %returneditems ) { $ri{itemnote} = $biblio->{'itemnotes'}; $ri{ccode} = $biblio->{'ccode'}; $ri{itemnumber} = $biblio->{'itemnumber'}; - $ri{barcode} = $barcode; + $ri{barcode} = $bar_code; } else { last; } - push( @riloop, \%ri ); + push @riloop, \%ri; } $template->param( @@ -539,9 +557,25 @@ $template->param( errmsgloop => \@errmsgloop, exemptfine => $exemptfine, dropboxmode => $dropboxmode, - dropboxdate => $dropboxdate->output(), + 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;