GetItemsLocationInfo
GetHostItemsInfo
GetItemnumbersForBiblio
- get_itemnumbers_of
get_hostitemnumbers_of
GetItemnumberFromBarcode
GetBarcodeFromItemnumber
return \@items;
}
-=head2 get_itemnumbers_of
-
- my @itemnumbers_of = get_itemnumbers_of(@biblionumbers);
-
-Given a list of biblionumbers, return the list of corresponding itemnumbers
-for each biblionumber.
-
-Return a reference on a hash where keys are biblionumbers and values are
-references on array of itemnumbers.
-
-=cut
-
-sub get_itemnumbers_of {
- my @biblionumbers = @_;
-
- my $dbh = C4::Context->dbh;
-
- my $query = '
- SELECT itemnumber,
- biblionumber
- FROM items
- WHERE biblionumber IN (?' . ( ',?' x scalar @biblionumbers - 1 ) . ')
- ';
- my $sth = $dbh->prepare($query);
- $sth->execute(@biblionumbers);
-
- my %itemnumbers_of;
-
- while ( my ( $itemnumber, $biblionumber ) = $sth->fetchrow_array ) {
- push @{ $itemnumbers_of{$biblionumber} }, $itemnumber;
- }
-
- return \%itemnumbers_of;
-}
-
=head2 get_hostitemnumbers_of
my @itemnumbers_of = get_hostitemnumbers_of($biblionumber);
foreach my $hostfield ( $marcrecord->field($tag) ) {
my $hostbiblionumber = $hostfield->subfield($biblio_s);
my $linkeditemnumber = $hostfield->subfield($item_s);
- my @itemnumbers;
- if ( my $itemnumbers =
- get_itemnumbers_of($hostbiblionumber)->{$hostbiblionumber} )
- {
- @itemnumbers = @$itemnumbers;
- }
- foreach my $itemnumber (@itemnumbers) {
- if ( $itemnumber eq $linkeditemnumber ) {
- push( @returnhostitemnumbers, $itemnumber );
- last;
- }
- }
+ my $is_from_biblio = Koha::Items->search({ itemnumber => $linkeditemnumber, biblionumber => $hostbiblionumber });
+ push @returnhostitemnumbers, $linkeditemnumber
+ if $is_from_biblio;
}
return @returnhostitemnumbers;
use C4::Acquisition qw/ModOrder GetOrdersByBiblionumber/;
use Koha::BiblioFrameworks;
+use Koha::Items;
use Koha::MetadataRecord;
my $input = new CGI;
# Moving items from the other record to the reference record
foreach my $biblionumber (@biblionumbers) {
- my $itemnumbers = get_itemnumbers_of($biblionumber);
- foreach my $itemnumber (@{ $itemnumbers->{$biblionumber} }) {
- my $res = MoveItemFromBiblio($itemnumber, $biblionumber, $ref_biblionumber);
- if (not defined $res) {
- push @notmoveditems, $itemnumber;
+ my $items = Koha::Items->search({ biblionumber => $biblionumber });
+ while ( my $item = $items->next) {
+ my $res = MoveItemFromBiblio( $item->itemnumber, $biblionumber, $ref_biblionumber );
+ if ( not defined $res ) {
+ push @notmoveditems, $item->itemnumber;
+ }
}
}
- }
# If some items could not be moved :
if (scalar(@notmoveditems) > 0) {
my $itemlist = join(' ',@notmoveditems);
use C4::Context;
use C4::Search qw(SimpleSearch);
use C4::Biblio qw(TransformMarcToKoha);
-use C4::Items qw(GetItemInfosOf get_itemnumbers_of);
+use C4::Items qw(GetItemInfosOf);
use C4::Creators::Lib qw(html_table);
use C4::Debug;
-use Koha::DateUtils;
+use Koha::DateUtils;
+use Koha::Items;
use Koha::ItemTypes;
use Koha::SearchEngine::Search;
push (@results_set, $biblio);
my $biblionumber = $biblio->{'biblionumber'};
#DEBUG Notes: Grab the item numbers associated with this MARC record...
- my $itemnums = get_itemnumbers_of($biblionumber);
+ my $items = Koha::Items->search({ biblionumber => $biblionumber }, { order_by => { -desc => 'itemnumber' }});
#DEBUG Notes: Retrieve the item data for each number...
- if (my $iii = $itemnums->{$biblionumber}) {
- my $item_results = GetItemInfosOf(@$iii);
- foreach my $item ( keys %$item_results ) {
- #DEBUG Notes: Build an array element 'item' of the correct bib (results) hash which contains item-specific data...
- if ($item_results->{$item}->{'biblionumber'} eq $results_set[$i]->{'biblionumber'}) {
- my $item_data;
- $item_data->{'_item_number'} = $item_results->{$item}->{'itemnumber'};
- $item_data->{'_item_call_number'} = ($item_results->{$item}->{'itemcallnumber'} ? $item_results->{$item}->{'itemcallnumber'} : 'NA');
- $item_data->{'_date_accessioned'} = $item_results->{$item}->{'dateaccessioned'};
- $item_data->{'_barcode'} = ( $item_results->{$item}->{'barcode'} ? $item_results->{$item}->{'barcode'} : 'NA');
- $item_data->{'_add'} = $item_results->{$item}->{'itemnumber'};
- unshift (@row_data, $item_data); # item numbers are given to us in descending order by get_itemnumbers_of()...
- }
+ while ( my $item = $items->next ) {
+ #DEBUG Notes: Build an array element 'item' of the correct bib (results) hash which contains item-specific data...
+ if ( $item->biblionumber eq $results_set[$i]->{'biblionumber'} ) {
+ my $item_data;
+ $item_data->{'_item_number'} = $item->itemnumber;
+ $item_data->{'_item_call_number'} = ( $item->itemcallnumber || 'NA' );
+ $item_data->{'_date_accessioned'} = $item->dateaccessioned;
+ $item_data->{'_barcode'} = ( $item->barcode || 'NA' );
+ $item_data->{'_add'} = $item->itemnumber;
+ push @row_data, $item_data;
}
$results_set[$i]->{'item_table'} = html_table($display_columns, \@row_data);
}
- else {
- # FIXME: Some error trapping code needed
- warn sprintf('No item numbers retrieved for biblio number: %s', $biblionumber);
- }
}
( $template, $loggedinuser, $cookie ) = get_template_and_user(
my $fixedRank = $count+1;
my %itemnumbers_of_biblioitem;
- my @itemnumbers;
## $items is array of 'item' table numbers
- if (my $items = get_itemnumbers_of($biblionumber)->{$biblionumber}){
- @itemnumbers = @$items;
- }
+ my $items = Koha::Items->search({ biblionumber => $biblionumber });
+ my @itemnumbers = $items->get_column('itemnumber');
my @hostitems = get_hostitemnumbers_of($biblionumber);
if (@hostitems){
$template->param('hostitemsflag' => 1);