@@ -, +, @@ --- C4/ImportBatch.pm | 38 ++++++++++++++++++++++++++++++++++---- catalogue/showmarc.pl | 3 +-- 2 files changed, 35 insertions(+), 6 deletions(-) --- a/C4/ImportBatch.pm +++ a/C4/ImportBatch.pm @@ -169,12 +169,42 @@ sub GetImportRecordMarc { my ($import_record_id) = @_; my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare("SELECT marc, encoding FROM import_records WHERE import_record_id = ?"); - $sth->execute($import_record_id); - my ($marc, $encoding) = $sth->fetchrow(); - $sth->finish(); + my ( $marc, $encoding ) = $dbh->selectrow_array(q| + SELECT marc, encoding + FROM import_records + WHERE import_record_id = ? + |, undef, $import_record_id ); + return $marc, $encoding; +} + +sub GetRecordFromImportBiblio { + my ( $import_record_id, $embed_items ) = @_; + + my ($marc) = GetImportRecordMarc($import_record_id); + my $record = MARC::Record->new_from_usmarc($marc); + EmbedItemsInImportBiblio( $record, $import_record_id ) if $embed_items; + + return $record; +} + +sub EmbedItemsInImportBiblio { + my ( $record, $import_record_id ) = @_; + my ( $itemtag, $itemsubfield ) = GetMarcFromKohaField("items.itemnumber", ''); + my $dbh = C4::Context->dbh; + my $import_items = $dbh->selectall_arrayref(q| + SELECT import_items.marcxml + FROM import_items + WHERE import_record_id = ? + |, { Slice => {} }, $import_record_id ); + my @item_fields; + for my $import_item ( @$import_items ) { + my $item_marc = MARC::Record::new_from_xml($import_item->{marcxml}); + push @item_fields, $item_marc->field($itemtag); + } + $record->append_fields(@item_fields); + return $record; } =head2 GetImportRecordMarcXML --- a/catalogue/showmarc.pl +++ a/catalogue/showmarc.pl @@ -43,8 +43,7 @@ my $view= $input->param('viewas')||''; my $record; if ($importid) { - my ($marc) = GetImportRecordMarc($importid); - $record = MARC::Record->new_from_usmarc($marc); + $record = C4::ImportBatch::GetRecordFromImportBiblio( $importid, 'embed_items' ); } else { $record =GetMarcBiblio($biblionumber); --