Bug 10906 - Reimported records into Koha are imported only as DEFAULT frameworks...
authorJacek Ablewicz <abl@biblos.pk.edu.pl>
Mon, 23 Mar 2015 14:21:53 +0000 (15:21 +0100)
committerTomas Cohen Arazi <tomascohen@gmail.com>
Thu, 9 Apr 2015 18:05:11 +0000 (15:05 -0300)
Existing framework code is currently not retained when local record
gets replaced during batch import, or when the restore/reverse function
is being used.

This patch fixes aforementioned issues by correcting outdated GetBiblio()
calls in C4/ImportBatch.pm

To test:

1/ try to replicate the issue: import some MARC records with
"Tools -> Stage MARC records for import" etc., using test setup,
matching rules and so on such that some existing records will get
replaced with imported ones
2/ observe that records replaced during import now open in the editor
with 'Default' framework, even if they have some other framework
set up previously
3/ apply patch
4/ redo 1/, confirming that this problem is no longer replicable
5/ try use 'restore' function with some freshly imported
records, ensure that original framework code got retained
in the records which had their imports reverted

NOTE: I confirmed this change by
1) git grep "=\s*GetBiblio\s*("
   -- this shows how GetBiblio is called elsewhere.
      It differed! So then...
2) vi C4/Biblio.pm
   /sub GetBiblio
   -- find the right one, notice it only returns a HASH ref,
      not an array.

Signed-off-by: Mark Tompsett <mtompset@hotmail.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
C4/ImportBatch.pm

index 08304d7..fe31c45 100644 (file)
@@ -623,7 +623,7 @@ sub BatchCommitRecords {
             $recordid = $record_match;
             my $oldxml;
             if ($record_type eq 'biblio') {
-                my ($count, $oldbiblio) = GetBiblio($recordid);
+                my $oldbiblio = GetBiblio($recordid);
                 $oldxml = GetXmlBiblio($recordid);
 
                 # remove item fields so that they don't get
@@ -822,7 +822,7 @@ sub BatchRevertRecords {
             my $old_record = MARC::Record->new_from_xml(StripNonXmlChars($rowref->{'marcxml_old'}), 'UTF-8', $rowref->{'encoding'}, $marc_type);
             if ($record_type eq 'biblio') {
                 my $biblionumber = $rowref->{'matched_biblionumber'};
-                my ($count, $oldbiblio) = GetBiblio($biblionumber);
+                my $oldbiblio = GetBiblio($biblionumber);
                 $num_items_deleted += BatchRevertItems($rowref->{'import_record_id'}, $rowref->{'matched_biblionumber'});
                 ModBiblio($old_record, $biblionumber, $oldbiblio->{'frameworkcode'});
             } else {