Bug 18757: Problem when importing only items in MARC records
authorFridolin Somers <fridolin.somers@biblibre.com>
Thu, 8 Jun 2017 14:22:55 +0000 (16:22 +0200)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Tue, 29 Oct 2019 12:17:38 +0000 (12:17 +0000)
When importing records with Stage MARC records for import, one can use matching rules to only import items into existing records.
Those imported items are stored as XML to be staged.

The bug is that when MARC Flavour is UNIMARC the XML serialization fails because its is looking in field 100$a which does not exist.
You see in logs the error : Unsupported UNIMARC character encoding [] for XML output for UNIMARC; 100$a

This patch adds the format "USMARC" to XML serialization, like in C4::Items::_get_unlinked_subfields_xml

Test plan :
- On a UNIMARC database
- Define a maching rule on title 200$a
- Select a record with items
- Export it using : Save as > MARC (Unicode/UTF-8)
- Delete all items
- Go to Tools > Stage MARC records for import
- Upload exported file
- Select title matching rule
- Select "Ingore incoming record" in "Action if matching record found :"
- Select Yes and "Always add items" in "Check for embedded item record data?"
- Click Stage for import
=> Without patch you get the error
=> With patch the import is staged
- Import into the catalog and check item is well recreated

Signed-off-by: Amandine Zocca <azocca@ville-montauban.fr>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

C4/ImportBatch.pm

index 8d39ed2..7e252da 100644 (file)
@@ -467,7 +467,7 @@ sub AddItemsToImportBiblio {
                                         VALUES (?, ?, ?)");
         $sth->bind_param(1, $import_record_id);
         $sth->bind_param(2, 'staged');
-        $sth->bind_param(3, $item_marc->as_xml());
+        $sth->bind_param(3, $item_marc->as_xml("USMARC"));
         $sth->execute();
         push @import_items_ids, $dbh->{'mysql_insertid'};
         $sth->finish();