# 2006 SAN-OP
# 2007-2010 BibLibre, Paul POULAIN
# 2010 Catalyst IT
+# 2011 PTFS-Europe Ltd.
#
# This file is part of Koha.
#
=cut
use strict;
-#use warnings; FIXME - Bug 2505
+use warnings;
use CGI;
+use DateTime;
use C4::Context;
use C4::Auth qw/:DEFAULT get_session/;
use C4::Output;
use C4::Circulation;
-use C4::Dates qw/format_date/;
-use Date::Calc qw/Add_Delta_Days/;
-use C4::Calendar;
use C4::Print;
use C4::Reserves;
use C4::Biblio;
use C4::Branch; # GetBranches GetBranchName
use C4::Koha; # FIXME : is it still useful ?
use C4::RotatingCollections;
+use Koha::DateUtils;
+use Koha::Calendar;
my $query = new CGI;
if ( $messages->{'transfert'} ) {
$template->param(
itemtitle => $iteminfo->{'title'},
+ itemnumber => $iteminfo->{'itemnumber'},
itembiblionumber => $iteminfo->{'biblionumber'},
iteminfo => $iteminfo->{'author'},
tobranchname => GetBranchName($messages->{'transfert'}),
my $dotransfer = $query->param('dotransfer');
my $canceltransfer = $query->param('canceltransfer');
my $dest = $query->param('dest');
-my $calendar = C4::Calendar->new( branchcode => $userenv_branch );
+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 $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
}
}
- 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, $userenv_branch, $exemptfine, $dropboxmode); # do the return
- my $homeorholdingbranchreturn = C4::Context->preference('HomeOrHoldingBranchReturn') or 'homebranch';
+ my $homeorholdingbranchreturn = C4::Context->preference('HomeOrHoldingBranchReturn');
+ $homeorholdingbranchreturn ||= 'homebranch';
# get biblio description
my $biblio = GetBiblioFromItemNumber($itemnumber);
# fix up item type for display
$biblio->{'itemtype'} = C4::Context->preference('item-level_itypes') ? $biblio->{'itype'} : $biblio->{'itemtype'};
+ # Check if we should display a checkin message, based on the the item
+ # type of the checked in item
+ my $itemtype = C4::ItemType->get( $biblio->{'itemtype'} );
+ if ( $itemtype->{'checkinmsg'} ) {
+ $template->param(
+ checkinmsg => $itemtype->{'checkinmsg'},
+ checkinmsgtype => $itemtype->{'checkinmsgtype'},
+ );
+ }
+
$template->param(
title => $biblio->{'title'},
homebranch => $biblio->{'homebranch'},
);
if ($returned) {
- my $duedate = $issueinformation->{'date_due'};
+ my $time_now = DateTime->now( time_zone => C4::Context->tz )->truncate( to => 'minute');
+ 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 );
if ( C4::Context->preference("FineNotifyAtCheckin") ) {
$input{duedate} = 0;
$returneditems{0} = $barcode;
$riduedate{0} = 0;
- if ( $messages->{'wthdrawn'} ) {
- $input{withdrawn} = 1;
- $input{borrowernumber} = 'Item Cancelled'; # FIXME: should be in display layer ?
- $riborrowernumber{0} = 'Item Cancelled';
- }
- else {
- $input{borrowernumber} = ' '; # This seems clearly bogus.
- $riborrowernumber{0} = ' ';
- }
push( @inputloop, \%input );
}
}
$template->param(
found => 1,
transfer => 1,
+ itemnumber => $itemnumber,
);
}
# 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'}) {
- $messages->{'WrongTransfer'} = GetBranchName( $messages->{'WrongTransfer'} );
$template->param(
WrongTransfer => 1,
TransferWaitingAt => $messages->{'WrongTransfer'},
elsif ( $code eq 'WasLost' ) {
$err{waslost} = 1;
}
+ elsif ( $code eq 'LostItemFeeRefunded' ) {
+ $template->param( LostItemFeeRefunded => 1 );
+ }
elsif ( $code eq 'ResFound' ) {
; # FIXME... anything to do here?
}
elsif ( $code eq 'WasTransfered' ) {
; # FIXME... anything to do here?
}
- elsif ( $code eq 'wthdrawn' ) {
+ elsif ( $code eq 'withdrawn' ) {
$err{withdrawn} = 1;
- $exit_required_p = 1;
+ $exit_required_p = 1 if C4::Context->preference("BlockReturnOfWithdrawnItems");
}
elsif ( ( $code eq 'IsPermanent' ) && ( not $messages->{'ResFound'} ) ) {
if ( $messages->{'IsPermanent'} ne $userenv_branch ) {
elsif ( $code eq 'Wrongbranch' ) {
}
elsif ( $code eq 'Debarred' ) {
- $err{debarred} = format_date( $messages->{'Debarred'} );
+ $err{debarred} = $messages->{'Debarred'};
$err{debarcardnumber} = $borrower->{cardnumber};
$err{debarborrowernumber} = $borrower->{borrowernumber};
$err{debarname} = "$borrower->{firstname} $borrower->{surname}";
}
$template->param( errmsgloop => \@errmsgloop );
-# patrontable ....
-if ($borrower) {
- my $flags = $borrower->{'flags'};
- my @flagloop;
- my $flagset;
- foreach my $flag ( sort keys %$flags ) {
- my %flaginfo;
- unless ($flagset) { $flagset = 1; }
- $flaginfo{redfont} = ( $flags->{$flag}->{'noissues'} );
- $flaginfo{flag} = $flag;
- if ( $flag eq 'CHARGES' ) {
- $flaginfo{msg} = $flag;
- $flaginfo{charges} = 1;
- $flaginfo{chargeamount} = $flags->{$flag}->{amount};
- $flaginfo{borrowernumber} = $borrower->{borrowernumber};
- }
- elsif ( $flag eq 'WAITING' ) {
- $flaginfo{msg} = $flag;
- $flaginfo{waiting} = 1;
- my @waitingitemloop;
- my $items = $flags->{$flag}->{'itemlist'};
- foreach my $item (@$items) {
- my $biblio = GetBiblioFromItemNumber( $item->{'itemnumber'});
- push @waitingitemloop, {
- biblionum => $biblio->{'biblionumber'},
- barcode => $biblio->{'barcode'},
- title => $biblio->{'title'},
- brname => $branches->{ $biblio->{'holdingbranch'} }->{'branchname'},
- };
- }
- $flaginfo{itemloop} = \@waitingitemloop;
- }
- elsif ( $flag eq 'ODUES' ) {
- my $items = $flags->{$flag}->{'itemlist'};
- my @itemloop;
- foreach my $item ( sort { $a->{'date_due'} cmp $b->{'date_due'} }
- @$items )
- {
- my $biblio = GetBiblioFromItemNumber( $item->{'itemnumber'});
- 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;
- }
- else {
- $flaginfo{other} = 1;
- $flaginfo{msg} = $flags->{$flag}->{'message'};
- }
- push( @flagloop, \%flaginfo );
- }
- $template->param(
- flagset => $flagset,
- flagloop => \@flagloop,
- riborrowernumber => $borrower->{'borrowernumber'},
- riborcnum => $borrower->{'cardnumber'},
- riborsurname => $borrower->{'surname'},
- ribortitle => $borrower->{'title'},
- riborfirstname => $borrower->{'firstname'}
- );
-}
-
#set up so only the last 8 returned items display (make for faster loading pages)
my $returned_counter = ( C4::Context->preference('numReturnedItemsToShow') ) ? C4::Context->preference('numReturnedItemsToShow') : 8;
my $count = 0;
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 = dt_from_string( $riduedate{$_}, 'sql');
+ $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'};
# my %ri;
my $biblio = GetBiblioFromItemNumber(GetItemnumberFromBarcode($bar_code));
+ my $item = GetItem( 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{ccode} = $biblio->{'ccode'};
$ri{itemnumber} = $biblio->{'itemnumber'};
$ri{barcode} = $bar_code;
+ $ri{homebranch} = $item->{'homebranch'};
+ $ri{holdingbranch} = $item->{'holdingbranch'};
$ri{location} = $biblio->{'location'};
my $shelfcode = $ri{'location'};
}
push @riloop, \%ri;
}
-
$template->param(
riloop => \@riloop,
genbrname => $branches->{$userenv_branch}->{'branchname'},
errmsgloop => \@errmsgloop,
exemptfine => $exemptfine,
dropboxmode => $dropboxmode,
- dropboxdate => $dropboxdate->output(),
+ dropboxdate => output_pref($dropboxdate),
overduecharges => $overduecharges,
soundon => C4::Context->preference("SoundOn"),
+ BlockReturnOfWithdrawnItems => C4::Context->preference("BlockReturnOfWithdrawnItems"),
);
### Comment out rotating collections for now to allow it a little more time to bake