X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=circ%2Freturns.pl;h=cba91419522957aa5ef2881ed83eea2e0d0ef148;hb=791fe1bbd7ccf58110fa0da9f751eccb199a6c47;hp=40706a2288ae9fd196eae27b3923014fd9ce198b;hpb=554c77569d5afe52912c085d0603b9d87a062d9b;p=koha.git diff --git a/circ/returns.pl b/circ/returns.pl index 40706a2288..cba9141952 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. # @@ -44,6 +45,7 @@ use C4::Members; use C4::Branch; # GetBranches GetBranchName use C4::Koha; # FIXME : is it still useful ? use C4::RotatingCollections; +use Koha::DateUtils; my $query = new CGI; @@ -149,6 +151,7 @@ if ( $query->param('resbarcode') ) { if ( $messages->{'transfert'} ) { $template->param( itemtitle => $iteminfo->{'title'}, + itemnumber => $iteminfo->{'itemnumber'}, itembiblionumber => $iteminfo->{'biblionumber'}, iteminfo => $iteminfo->{'author'}, tobranchname => GetBranchName($messages->{'transfert'}), @@ -171,10 +174,12 @@ my $barcode = $query->param('barcode'); my $exemptfine = $query->param('exemptfine'); my $dropboxmode = $query->param('dropboxmode'); my $dotransfer = $query->param('dotransfer'); -my $calendar = C4::Calendar->new( branchcode => $userenv_branch ); +my $canceltransfer = $query->param('canceltransfer'); +my $dest = $query->param('dest'); +my $calendar = Koha::Calendar->new( branchcode => $userenv_branch ); #dropbox: get last open day (today - 1) -my $today = C4::Dates->new(); -my $today_iso = $today->output('iso'); +my $today = DateTime->now( time_zone => C4::Context->tz()); +#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 @@ -183,6 +188,17 @@ if ($dotransfer){ 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 =~ s/^\s*|\s*$//g; # remove leading/trailing whitespace @@ -224,6 +240,7 @@ if ($barcode) { itemtype => $biblio->{'itemtype'}, ccode => $biblio->{'ccode'}, itembiblionumber => $biblio->{'biblionumber'}, + additional_materials => $biblio->{'materials'} ); my %input = ( @@ -233,21 +250,42 @@ if ($barcode) { ); if ($returned) { - my $duedate = $issueinformation->{'date_due'}; + my $time_now = DateTime->now( time_zone => C4::Context->tz )->truncate( to => 'minutes'); + my $duedate = $issueinformation->{date_due}->strftime('%Y-%m-%d %H:%M'); $returneditems{0} = $barcode; $riborrowernumber{0} = $borrower->{'borrowernumber'}; $riduedate{0} = $duedate; $input{borrowernumber} = $borrower->{'borrowernumber'}; $input{duedate} = $duedate; - $input{return_overdue} = 1 if ($duedate and $duedate lt $today->output('iso')); + $input{return_overdue} = 1 if (DateTime->compare($issueinformation->{date_due}, $time_now) == -1); push( @inputloop, \%input ); - 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("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'} ) { $input{duedate} = 0; @@ -278,6 +316,7 @@ if ( $messages->{'WasTransfered'} ) { $template->param( found => 1, transfer => 1, + itemnumber => $itemnumber, ); } @@ -303,6 +342,7 @@ if ( $messages->{'WrongTransfer'} and not $messages->{'WasTransfered'}) { WrongTransfer => 1, TransferWaitingAt => $messages->{'WrongTransfer'}, WrongTransferItem => $messages->{'WrongTransferItem'}, + itemnumber => $itemnumber, ); my $reserve = $messages->{'ResFound'}; @@ -388,6 +428,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; } @@ -421,7 +464,12 @@ foreach my $code ( keys %$messages ) { } 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"; # note we need all the (empty) elsif's above, or we die. # This forces the issue of staying in sync w/ Circulation.pm @@ -473,7 +521,7 @@ if ($borrower) { { my $biblio = GetBiblioFromItemNumber( $item->{'itemnumber'}); push @itemloop, { - duedate => format_date($item->{'date_due'}), + duedate => output_pref($item->{'date_due'}), biblionum => $biblio->{'biblionumber'}, barcode => $biblio->{'barcode'}, title => $biblio->{'title'}, @@ -504,19 +552,21 @@ 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 $bar_code = $returneditems{$_}; - my $duedate = $riduedate{$_}; - if ($duedate) { - my @tempdate = split( /-/, $duedate ); - $ri{year} = $tempdate[0]; - $ri{month} = $tempdate[1]; - $ri{day} = $tempdate[2]; - $ri{duedate} = format_date($duedate); + if ($riduedate{$_}) { + my $duedate = DateTime::Format::DateParse::MySQL( $riduedate{$_}, C4::Context->tz()->name()); + $ri{year} = $duedate->year(); + $ri{month} = $duedate->month(); + $ri{day} = $duedate->day(); + $ri{hour} = $duedate->hour(); + $ri{minute} = $duedate->minute(); + $ri{duedate} = output_pref($duedate); my ($b) = GetMemberDetails( $riborrowernumber{$_}, 0 ); - $ri{return_overdue} = 1 if ($duedate lt $today->output('iso')); + $ri{return_overdue} = 1 if (DateTime->compare($duedate, DateTime->now()) == -1 ); $ri{borrowernumber} = $b->{'borrowernumber'}; $ri{borcnum} = $b->{'cardnumber'}; $ri{borfirstname} = $b->{'firstname'}; @@ -536,11 +586,17 @@ foreach ( sort { $a <=> $b } keys %returneditems ) { $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} = $bar_code; + + $ri{location} = $biblio->{'location'}; + my $shelfcode = $ri{'location'}; + $ri{'location'} = $shelflocations->{$shelfcode} if ( defined( $shelfcode ) && defined($shelflocations) && exists( $shelflocations->{$shelfcode} ) ); + } else { last; @@ -557,7 +613,7 @@ $template->param( errmsgloop => \@errmsgloop, exemptfine => $exemptfine, dropboxmode => $dropboxmode, - dropboxdate => $dropboxdate->output(), + dropboxdate => output_pref($dropboxdate), overduecharges => $overduecharges, soundon => C4::Context->preference("SoundOn"), );