Fix for bug 1437, items not showing on moredetail.pl

Signed-off-by: Chris Cormack <crc@liblime.com>
This commit is contained in:
Chris Cormack 2007-09-30 17:49:53 -05:00
parent 97db0fb6d6
commit b989b83264
3 changed files with 77 additions and 16 deletions

View file

@ -68,6 +68,7 @@ push @EXPORT, qw(
&GetUsedMarcStructure
&GetItemsInfo
&GetItemsByBiblioitemnumber
&GetItemnumberFromBarcode
&get_itemnumbers_of
&GetXmlBiblio
@ -1392,6 +1393,68 @@ sub GetItemInfosOf {
return get_infos_of( $query, 'itemnumber' );
}
=head2 GetItemsByBiblioitemnumber
=over 4
GetItemsByBiblioitemnumber($biblioitemnumber);
Returns an arrayref of hashrefs suitable for use in a TMPL_LOOP
Called by moredetail.pl
=back
=cut
sub GetItemsByBiblioitemnumber {
my ( $bibitem ) = @_;
my $dbh = C4::Context->dbh;
my $sth = $dbh->prepare("SELECT * FROM items WHERE items.biblioitemnumber = ?") || die $dbh->errstr;
# Get all items attached to a biblioitem
my $i = 0;
my @results;
$sth->execute($bibitem) || die $sth->errstr;
while ( my $data = $sth->fetchrow_hashref ) {
# Foreach item, get circulation information
my $sth2 = $dbh->prepare( "SELECT * FROM issues,borrowers
WHERE itemnumber = ?
AND returndate is NULL
AND issues.borrowernumber = borrowers.borrowernumber"
);
$sth2->execute( $data->{'itemnumber'} );
if ( my $data2 = $sth2->fetchrow_hashref ) {
# if item is out, set the due date and who it is out too
$data->{'date_due'} = $data2->{'date_due'};
$data->{'cardnumber'} = $data2->{'cardnumber'};
$data->{'borrowernumber'} = $data2->{'borrowernumber'};
}
else {
# set date_due to blank, so in the template we check itemlost, and wthdrawn
$data->{'date_due'} = '';
} # else
$sth2->finish;
# Find the last 3 people who borrowed this item.
my $query2 = "SELECT * FROM issues, borrowers WHERE itemnumber = ?
AND issues.borrowernumber = borrowers.borrowernumber
AND returndate is not NULL
ORDER BY returndate desc,timestamp desc LIMIT 3";
$sth2 = $dbh->prepare($query2) || die $dbh->errstr;
$sth2->execute( $data->{'itemnumber'} ) || die $sth2->errstr;
my $i2 = 0;
while ( my $data2 = $sth2->fetchrow_hashref ) {
$data->{"timestamp$i2"} = $data2->{'timestamp'};
$data->{"card$i2"} = $data2->{'cardnumber'};
$data->{"borrower$i2"} = $data2->{'borrowernumber'};
$i2++;
}
$sth2->finish;
push(@results,$data);
}
$sth->finish;
return (\@results);
}
=head2 GetBiblioItemInfosOf
=over 4

View file

@ -23,7 +23,7 @@ use strict;
require Exporter;
use C4::Koha;
use CGI;
use C4::Biblio; # to use &GetBiblioItemData &itemissues
use C4::Biblio; # to use &GetBiblioItemData &GetItemsByBiblioitemnumber
use C4::Acquisition;
use C4::Output; # contains gettemplate
use C4::Auth;
@ -54,19 +54,19 @@ my $bi=$query->param('bi');
my $data=GetBiblioItemData($bi);
my $dewey = $data->{'dewey'};
# FIXME Dewey is a string, not a number, & we should use a function
$dewey =~ s/0+$//;
if ($dewey eq "000.") { $dewey = "";};
if ($dewey < 10){$dewey='00'.$dewey;}
if ($dewey < 100 && $dewey > 10){$dewey='0'.$dewey;}
if ($dewey <= 0){
$dewey='';
}
$dewey=~ s/\.$//;
$data->{'dewey'}=$dewey;
# $dewey =~ s/0+$//;
# if ($dewey eq "000.") { $dewey = "";};
# if ($dewey < 10){$dewey='00'.$dewey;}
# if ($dewey < 100 && $dewey > 10){$dewey='0'.$dewey;}
# if ($dewey <= 0){
# $dewey='';
# }
# $dewey=~ s/\.$//;
# $data->{'dewey'}=$dewey;
my @results;
my $items= GetItemIssues($bi);
my $items= GetItemsByBiblioitemnumber($bi);
my $count=@$items;
$data->{'count'}=$count;
@ -83,18 +83,16 @@ foreach my $item (@$items){
$item->{'ordernumber'} = $ordernum;
$item->{'booksellerinvoicenumber'} = $order->{'booksellerinvoicenumber'};
if ($item->{'date_due'} eq 'Available'){
if ($item->{'date_due'} eq ''){
$item->{'issue'}= 0;
} else {
$item->{'date_due'} = format_date($item->{'date_due'});
$item->{'issue'}= 1;
$item->{'borrowernumber'} = $item->{'borrower'};
$item->{'cardnumber'} = $item->{'card'};
}
}
$template->param(BIBITEM_DATA => \@results);
$template->param(ITEM_DATA => \@$items);
$template->param(ITEM_DATA => $items);
$template->param(loggedinuser => $loggedinuser);
output_html_with_http_headers $query, $cookie, $template->output;

View file

@ -84,4 +84,4 @@ NAME="biblionumber"-->&amp;itemnumber=<!-- TMPL_VAR NAME="itemnumber" -->">Modif
<!-- TMPL_INCLUDE NAME="cat-menu.inc" -->
</div>
</div>
<!-- TMPL_INCLUDE NAME="intranet-bottom.inc" -->
<!-- TMPL_INCLUDE NAME="intranet-bottom.inc" -->