diff --git a/C4/Biblio.pm b/C4/Biblio.pm index 533932b127..d90094e7d0 100644 --- a/C4/Biblio.pm +++ b/C4/Biblio.pm @@ -1268,10 +1268,12 @@ sub GetMarcBiblio { } my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare("SELECT * FROM biblioitems WHERE biblionumber=? "); + my $sth = $dbh->prepare("SELECT biblioitemnumber, marcxml FROM biblioitems WHERE biblionumber=? "); $sth->execute($biblionumber); my $row = $sth->fetchrow_hashref; + my $biblioitemnumber = $row->{'biblioitemnumber'}; my $marcxml = StripNonXmlChars( $row->{'marcxml'} ); + my $frameworkcode = GetFrameworkCode($biblionumber); MARC::File::XML->default_record_format( C4::Context->preference('marcflavour') ); my $record = MARC::Record->new(); @@ -1280,7 +1282,7 @@ sub GetMarcBiblio { if ($@) { warn " problem with :$biblionumber : $@ \n$marcxml"; } return unless $record; - C4::Biblio::_koha_marc_update_bib_ids($record, '', $biblionumber, $row->{biblioitemnumber}); + C4::Biblio::_koha_marc_update_bib_ids($record, $frameworkcode, $biblionumber, $biblioitemnumber); C4::Biblio::EmbedItemsInMarcBiblio($record, $biblionumber) if ($embeditems); return $record; diff --git a/t/db_dependent/Biblio.t b/t/db_dependent/Biblio.t index f53b6a5c29..0413b909cd 100755 --- a/t/db_dependent/Biblio.t +++ b/t/db_dependent/Biblio.t @@ -194,6 +194,19 @@ sub run_tests { is( GetMarcPrice( $record_for_isbn, $marcflavour ), 100, "GetMarcPrice returns the correct value"); + my $newincbiblioitemnumber=$biblioitemnumber+1; + $dbh->do("UPDATE biblioitems SET biblioitemnumber = ? WHERE biblionumber = ?;", undef, $newincbiblioitemnumber, $biblionumber ); + my $updatedrecord = GetMarcBiblio($biblionumber, 0); + my $frameworkcode = GetFrameworkCode($biblionumber); + my ( $biblioitem_tag, $biblioitem_subfield ) = GetMarcFromKohaField( "biblioitems.biblioitemnumber", $frameworkcode ); + die qq{No biblioitemnumber tag for framework "$frameworkcode"} unless $biblioitem_tag; + my $biblioitemnumbertotest; + if ( $biblioitem_tag < 10 ) { + $biblioitemnumbertotest = $updatedrecord->field($biblioitem_tag)->data(); + } else { + $biblioitemnumbertotest = $updatedrecord->field($biblioitem_tag)->subfield($biblioitem_subfield); + } + is ($newincbiblioitemnumber, $biblioitemnumbertotest); } sub mock_marcfromkohafield { @@ -260,19 +273,19 @@ sub create_issn_field { } subtest 'MARC21' => sub { - plan tests => 27; + plan tests => 28; run_tests('MARC21'); $dbh->rollback; }; subtest 'UNIMARC' => sub { - plan tests => 27; + plan tests => 28; run_tests('UNIMARC'); $dbh->rollback; }; subtest 'NORMARC' => sub { - plan tests => 27; + plan tests => 28; run_tests('NORMARC'); $dbh->rollback; };