require Exporter;
use CGI;
use C4::Biblio;
+use C4::Items;
use C4::Auth; # checkauth, getborrowernumber.
use C4::Koha;
use C4::Circulation;
# get borrower information ....
my ( $borr, $flags ) = GetMemberDetails( $borrowernumber );
+# get branches and itemtypes
+my $branches = GetBranches();
+my $itemtypes = GetItemTypes();
+
# get biblionumber.....
my $biblionumber = $query->param('biblionumber');
my $branch = $query->param('branch');
$template->param( branch => $branch );
-my $branches = GetBranches();
-
# make sure it's a real branch
if ( !$branches->{$branch} ) {
$branch = '';
my %itemtypes;
my @duedates;
#die @items;
+my %itemhash;
+my $forloan;
foreach my $itm (@items) {
push @duedates, { date_due => format_date( $itm->{'date_due'} ) }
if defined $itm->{'date_due'};
$itm->{ $itm->{'publictype'} } = 1;
+ warn $itm->{'notforloan'};
my $fee = GetReserveFee( undef, $borrowernumber, $itm->{'biblionumber'},
'a', ( $itm->{'biblioitemnumber'} ) );
$fee = sprintf "%.02f", $fee;
push @{ $types{$pty}->{'items'} }, $itm;
}
}
+ $itemhash{$itm->{'itemnumber'}}=$itm;
+ if (!$itm->{'notforloan'} && !$itm->{'itemnotforloan'}){
+ $forloan=1;
+ }
}
$template->param( ITEMS => \@duedates );
} else {
AddReserve($branch,$borrowernumber,$biblionumber,'a',\@realbi,$rank,$notes,$bibdata->{'title'},$checkitem, $found);
}
- print $query->redirect("/cgi-bin/koha/opac-user.pl");
+ print $query->redirect("/cgi-bin/koha/opac-user.pl#opac-user-holds");
}
else {
}
my @reserves = GetReservesFromBorrowernumber( $borrowernumber );
$template->param( RESERVES => \@reserves );
- if ( scalar(@$reserves) >= $MAXIMUM_NUMBER_OF_RESERVES ) {
+ if ( scalar(@reserves) >= $MAXIMUM_NUMBER_OF_RESERVES ) {
$template->param( message => 1 );
$noreserves = 1;
- $template->param( too_many_reserves => scalar($reserves));
+ $template->param( too_many_reserves => scalar(@reserves));
}
- foreach my $res (@$reserves) {
- if ( $res->{'biblionumber'} == $biblionumber ) {
+ foreach my $res (@reserves) {
+ if ( $res->{'biblionumber'} == $biblionumber && $res->{'borrowernumber'} == $borrowernumber) {
$template->param( message => 1 );
$noreserves = 1;
$template->param( already_reserved => 1 );
}
-my @branchcodes;
my %itemnumbers_of_biblioitem;
my @itemnumbers = @{ get_itemnumbers_of($biblionumber)->{$biblionumber} };
my $iteminfos_of = GetItemInfosOf(@itemnumbers);
foreach my $itemnumber (@itemnumbers) {
- push( @branchcodes,
- $iteminfos_of->{$itemnumber}->{homebranch},
- $iteminfos_of->{$itemnumber}->{holdingbranch} );
-
my $biblioitemnumber = $iteminfos_of->{$itemnumber}->{biblioitemnumber};
push( @{ $itemnumbers_of_biblioitem{$biblioitemnumber} }, $itemnumber );
}
-# @branchcodes = uniq @branchcodes;
-
my @biblioitemnumbers = keys %itemnumbers_of_biblioitem;
-my $branchinfos_of = get_branchinfos_of(@branchcodes);
my $notforloan_label_of = get_notforloan_label_of();
my $biblioiteminfos_of = GetBiblioItemInfosOf(@biblioitemnumbers);
push @itemtypes, $biblioiteminfos_of->{$biblioitemnumber}{itemtype};
}
-my $itemtypeinfos_of = get_itemtypeinfos_of(@itemtypes);
-
my @bibitemloop;
foreach my $biblioitemnumber (@biblioitemnumbers) {
my $biblioitem = $biblioiteminfos_of->{$biblioitemnumber};
$biblioitem->{description} =
- $itemtypeinfos_of->{ $biblioitem->{itemtype} }{description};
+ $itemtypes->{ $biblioitem->{itemtype} }{description};
foreach
my $itemnumber ( @{ $itemnumbers_of_biblioitem{$biblioitemnumber} } )
{
- my $item = $iteminfos_of->{$itemnumber};
+ my $item = $itemhash{$itemnumber};
$item->{homebranchname} =
- $branchinfos_of->{ $item->{homebranch} }{branchname};
+ $branches->{ $item->{homebranch} }{branchname};
# if the holdingbranch is different than the homebranch, we show the
# holdingbranch of the document too
if ( $item->{homebranch} ne $item->{holdingbranch} ) {
$item->{holdingbranchname} =
- $branchinfos_of->{ $item->{holdingbranch} }{branchname};
+ $branches->{ $item->{holdingbranch} }{branchname};
}
# add information
}
# Management of the notforloan document
- if ( $item->{notforloan} ) {
+ if ( $item->{notforloan} || $item->{itemnotforloan}) {
$item->{backgroundcolor} = 'other';
$item->{notforloanvalue} =
$notforloan_label_of->{ $item->{notforloan} };
if ( $transfertwhen ne '' ) {
$item->{transfertwhen} = format_date($transfertwhen);
$item->{transfertfrom} =
- $branchinfos_of->{$transfertfrom}{branchname};
- $item->{transfertto} = $branchinfos_of->{$transfertto}{branchname};
+ $branches->{$transfertfrom}{branchname};
+ $item->{transfertto} = $branches->{$transfertto}{branchname};
$item->{nocancel} = 1;
}
# If there is no loan, return and transfer, we show a checkbox.
$item->{notforloan} = $item->{notforloan} || 0;
+ # FIXME: every library will define this differently
# An item is available only if:
if (
not defined $reservedate # not reserved yet
$item->{available} = 1;
}
+ # FIXME: move this to a pm
+ my $dbh = C4::Context->dbh;
+ my $sth2 = $dbh->prepare("SELECT * FROM reserves WHERE borrowernumber=? AND itemnumber=? AND found='W'");
+ $sth2->execute($item->{ReservedForBorrowernumber},$item->{itemnumber});
+ while (my $wait_hashref = $sth2->fetchrow_hashref) {
+ $item->{waitingdate} = format_date($wait_hashref->{waitingdate});
+ }
+ $item->{imageurl} = getitemtypeimagesrc() . "/".$itemtypes->{ $item->{itype} }{imageurl};
push @{ $biblioitem->{itemloop} }, $item;
}
# display infos
$template->param(
+ forloan => $forloan,
bibitemloop => \@bibitemloop,
);
output_html_with_http_headers $query, $cookie, $template->output;