X-Git-Url: http://git.rot13.org/?p=koha.git;a=blobdiff_plain;f=C4%2FItems.pm;fp=C4%2FItems.pm;h=e4c041b57a2cb9334cfc6c276b9d4015d01544e9;hp=456c0a051cc628edc89358000e32dd61bab9ea0b;hb=0313856d9a1a9c0c002da0aead8c8516b51e1c11;hpb=8ae61b6a2a6b2c6e27f33d1d32e1849265782530;ds=sidebyside diff --git a/C4/Items.pm b/C4/Items.pm index 456c0a051c..e4c041b57a 100644 --- a/C4/Items.pm +++ b/C4/Items.pm @@ -979,9 +979,7 @@ sub GetLostItems { =head2 GetItemsForInventory - $itemlist = GetItemsForInventory($minlocation, $maxlocation, - $location, $itemtype $datelastseen, $branch, - $offset, $size, $statushash); +($itemlist, $iTotalRecords) = GetItemsForInventory($minlocation, $maxlocation, $location, $itemtype, $ignoreissued, $datelastseen, $branchcode, $offset, $size, $statushash); Retrieve a list of title/authors/barcode/callnumber, for biblio inventory. @@ -994,6 +992,8 @@ the datelastseen can be used to specify that you want to see items not seen sinc offset & size can be used to retrieve only a part of the whole listing (defaut behaviour) $statushash requires a hashref that has the authorized values fieldname (intems.notforloan, etc...) as keys, and an arrayref of statuscodes we are searching for as values. +$iTotalRecords is the number of rows that would have been returned without the $offset, $size limit clause + =cut sub GetItemsForInventory { @@ -1002,7 +1002,7 @@ sub GetItemsForInventory { my ( @bind_params, @where_strings ); my $query = <<'END_SQL'; -SELECT items.itemnumber, barcode, itemcallnumber, title, author, biblio.biblionumber, datelastseen +SELECT SQL_CALC_FOUND_ROWS items.itemnumber, barcode, itemcallnumber, title, author, biblio.biblionumber, biblio.frameworkcode, datelastseen, homebranch, location, notforloan, damaged, itemlost, stocknumber FROM items LEFT JOIN biblio ON items.biblionumber = biblio.biblionumber LEFT JOIN biblioitems on items.biblionumber = biblioitems.biblionumber @@ -1045,7 +1045,7 @@ END_SQL } push @bind_params, $branchcode; } - + if ( $itemtype ) { push @where_strings, 'biblioitems.itemtype = ?'; push @bind_params, $itemtype; @@ -1061,20 +1061,33 @@ END_SQL $query .= join ' AND ', @where_strings; } $query .= ' ORDER BY items.cn_sort, itemcallnumber, title'; + $query .= " LIMIT $offset, $size" if ($offset and $size); my $sth = $dbh->prepare($query); $sth->execute( @bind_params ); my @results; - $size--; - while ( my $row = $sth->fetchrow_hashref ) { - $offset-- if ($offset); - $row->{datelastseen}=format_date($row->{datelastseen}); - if ( ( !$offset ) && $size ) { - push @results, $row; - $size--; + my $tmpresults = $sth->fetchall_arrayref({}); + $sth = $dbh->prepare("SELECT FOUND_ROWS()"); + $sth->execute(); + my ($iTotalRecords) = $sth->fetchrow_array(); + + foreach my $row (@$tmpresults) { + $row->{datelastseen} = format_date( $row->{datelastseen} ); + + # Auth values + foreach (keys %$row) { + # If the koha field is mapped to a marc field + my ($f, $sf) = GetMarcFromKohaField("items.$_", $row->{'frameworkcode'}); + if ($f and $sf) { + # We replace the code with it's description + my $authvals = C4::Koha::GetKohaAuthorisedValuesFromField($f, $sf, $row->{'frameworkcode'}); + $row->{$_} = $authvals->{$row->{$_}} if defined $authvals->{$row->{$_}}; + } } + push @results, $row; } - return \@results; + + return (\@results, $iTotalRecords); } =head2 GetItemsCount