Fix for bug 1437, items not showing on moredetail.pl
Signed-off-by: Chris Cormack <crc@liblime.com>
This commit is contained in:
parent
97db0fb6d6
commit
b989b83264
3 changed files with 77 additions and 16 deletions
63
C4/Biblio.pm
63
C4/Biblio.pm
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -84,4 +84,4 @@ NAME="biblionumber"-->&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" -->
|
||||
|
|
Loading…
Reference in a new issue