Bug 18277: Remove GetBiblionumberFromItemnumber - Easy ones

To retrieve a biblionumber from an itemnumber, we can use:
  Koha::Item->biblio->biblionumber

This is only what this patchset does.
Doing that we will be able to get rid of the
C4::Biblio::GetBiblionumberFromItemnumber subroutine.

Test plan:
- Acquisition module: cancel a receipt
- Export a record to CSV
- Modify items in a batch

Item's info should be correct

Other changes with be checked by QA team, by reading the code.

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
Jonathan Druart 2017-03-15 12:28:13 -03:00
parent eed1447a63
commit fa467223ea
7 changed files with 31 additions and 16 deletions

View File

@ -31,6 +31,7 @@ use Koha::DateUtils qw( dt_from_string output_pref );
use Koha::Acquisition::Order;
use Koha::Acquisition::Booksellers;
use Koha::Biblios;
use Koha::Items;
use Koha::Number::Price;
use Koha::Libraries;
use Koha::CsvProfiles;
@ -1660,17 +1661,17 @@ sub CancelReceipt {
my @affects = split q{\|}, C4::Context->preference("AcqItemSetSubfieldsWhenReceiptIsCancelled");
if ( @affects ) {
for my $in ( @itemnumbers ) {
my $biblionumber = C4::Biblio::GetBiblionumberFromItemnumber( $in );
my $frameworkcode = GetFrameworkCode($biblionumber);
my ( $itemfield ) = GetMarcFromKohaField( 'items.itemnumber', $frameworkcode );
my $item = C4::Items::GetMarcItem( $biblionumber, $in );
my $item = Koha::Items->find( $in );
my $biblio = $item->biblio;
my ( $itemfield ) = GetMarcFromKohaField( 'items.itemnumber', $biblio->frameworkcode );
my $item_marc = C4::Items::GetMarcItem( $biblio->biblionumber, $in );
for my $affect ( @affects ) {
my ( $sf, $v ) = split q{=}, $affect, 2;
foreach ( $item->field($itemfield) ) {
foreach ( $item_marc->field($itemfield) ) {
$_->update( $sf => $v );
}
}
C4::Items::ModItemFromMarc( $item, $biblionumber, $in );
C4::Items::ModItemFromMarc( $item_marc, $biblio->biblionumber, $in );
}
}
}

View File

@ -665,7 +665,8 @@ sub DelItem {
my $biblionumber = $params->{biblionumber};
unless ($biblionumber) {
$biblionumber = C4::Biblio::GetBiblionumberFromItemnumber($itemnumber);
my $item = Koha::Items->find( $itemnumber );
$biblionumber = $item->biblio->biblionumber;
}
# If there is no biblionumber for the given itemnumber, there is nothing to delete

View File

@ -34,6 +34,7 @@ use C4::XSLT ();
use YAML; #marcrecords2csv
use Template;
use Text::CSV::Encoded; #marc2csv
use Koha::Items;
use Koha::SimpleMARC qw(read_field);
use Koha::XSLT_Handler;
use Koha::CsvProfiles;
@ -427,7 +428,8 @@ sub marc2csv {
my $firstpass = 1;
if ( @$itemnumbers ) {
for my $itemnumber ( @$itemnumbers) {
my $biblionumber = GetBiblionumberFromItemnumber $itemnumber;
my $item = Koha::Items->find( $itemnumber );
my $biblionumber = $item->biblio->biblionumber;
$output .= marcrecord2csv( $biblionumber, $id, $firstpass, $csv, $fieldprocessing, [$itemnumber] );
$firstpass = 0;
}

View File

@ -22,6 +22,7 @@ use Mojo::Base 'Mojolicious::Controller';
use C4::Biblio;
use C4::Reserves;
use Koha::Items;
use Koha::Patrons;
use Koha::Holds;
use Koha::DateUtils;
@ -65,18 +66,21 @@ sub add {
}, 400);
}
my $biblio;
if ($itemnumber) {
my $item_biblionumber = C4::Biblio::GetBiblionumberFromItemnumber($itemnumber);
if ($biblionumber and $biblionumber != $item_biblionumber) {
my $item = Koha::Items->find( $itemnumber );
$biblio = $item->biblio;
if ($biblionumber and $biblionumber != $biblio->biblionumber) {
return $c->$cb({
error => "Item $itemnumber doesn't belong to biblio $biblionumber"
}, 400);
}
$biblionumber ||= $item_biblionumber;
$biblionumber ||= $biblio->biblionumber;
$biblio->unblessed; # FIXME remove later
} else {
$biblio = C4::Biblio::GetBiblio($biblionumber);
}
my $biblio = C4::Biblio::GetBiblio($biblionumber);
my $can_reserve =
$itemnumber
? CanItemBeReserved( $borrowernumber, $itemnumber )

View File

@ -31,6 +31,7 @@ use C4::Circulation;
use C4::Koha;
use C4::ClassSource;
use Koha::DateUtils;
use Koha::Items;
use Koha::ItemTypes;
use Koha::Libraries;
use List::MoreUtils qw/any/;
@ -794,9 +795,10 @@ foreach my $field (@fields) {
if ( C4::Context->preference('EasyAnalyticalRecords') ) {
foreach my $hostitemnumber (@hostitemnumbers){
my $item = Koha::Items->find( $hostitemnumber );
if ($this_row{itemnumber} eq $hostitemnumber){
$this_row{hostitemflag} = 1;
$this_row{hostbiblionumber}= GetBiblionumberFromItemnumber($hostitemnumber);
$this_row{hostbiblionumber}= $item->biblio->biblionumber;
last;
}
}

View File

@ -245,7 +245,8 @@ if ( $query->param('place_reserve') ) {
#item may belong to a host biblio, if yes change biblioNum to hosts bilbionumber
if ( $itemNum ne '' ) {
my $hostbiblioNum = GetBiblionumberFromItemnumber($itemNum);
my $item = Koha::Items->find( $itemNum );
my $hostbiblioNum = $item->biblio->biblionumber;
if ( $hostbiblioNum ne $biblioNum ) {
$biblioNum = $hostbiblioNum;
}

View File

@ -37,6 +37,7 @@ use List::MoreUtils qw/uniq/;
use Koha::Biblios;
use Koha::DateUtils;
use Koha::Items;
use Koha::ItemTypes;
my $input = new CGI;
@ -121,7 +122,10 @@ if ($op eq "action") {
$items_display_hashref=BuildItemsData(@itemnumbers);
} else {
# Else, we only display the barcode
my @simple_items_display = map {{ itemnumber => $_, barcode => (GetBarcodeFromItemnumber($_) or ""), biblionumber => (GetBiblionumberFromItemnumber($_) or "") }} @itemnumbers;
my @simple_items_display = map {
my $itemnumber = $_;
my $item = Koha::Items->find($itemnumber);
{ itemnumber => $itemnumber, barcode => ($item->barcode || q||), biblionumber => $item->biblio->biblionumber }} @itemnumbers;
$template->param("simple_items_display" => \@simple_items_display);
}