Bugzilla – Attachment 146293 Details for
Bug 32804
Importing and replacing items causes inconsistency when itemnumber match and biblio match disagree
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 32804: Do not adjust biblionumber when replacing items during import
Bug-32804-Do-not-adjust-biblionumber-when-replacin.patch (text/plain), 4.77 KB, created by
Kyle M Hall (khall)
on 2023-02-06 17:10:45 UTC
(
hide
)
Description:
Bug 32804: Do not adjust biblionumber when replacing items during import
Filename:
MIME Type:
Creator:
Kyle M Hall (khall)
Created:
2023-02-06 17:10:45 UTC
Size:
4.77 KB
patch
obsolete
>From ca3e940aadc121731b3a8bd31bd5620ab1f16b56 Mon Sep 17 00:00:00 2001 >From: Nick Clemens <nick@bywatersolutions.com> >Date: Thu, 2 Feb 2023 20:16:49 +0000 >Subject: [PATCH] Bug 32804: Do not adjust biblionumber when replacing items > during import > >This patch adjust the item matching at import to confirm that for a duplicate itemnumber or barcode >matches an existing item in the DB and uses the original biblionumber when updating the item. > >When ordering in a consortium the items may be moved around, duplicate biblios added, and various matches found. >We should not allow importing of items to move them from 1 biblio to another, but we should allow the imports >to succeed and assume itemnumber or barcode matches are authoritative. The responsibility for correct matching of items to biblio should fall on the creator of the files > >To test: > 1 - Be using the sample data in koha testing docker > 2 - Stage the sample file on this report > 3 - Match on KohaBiblio(999$c) / Item processing: replace > 4 - Note the biblio match is "The complete novels / Austen, Jane" > 5 - View the staged marc, note the barcode 39999000004090 in an item > 6 - Search for that barcode > 7 - You find biblio "Five novels : complete and unabridged / Gustave Flaubert" > 8 - Import the file > 9 - Check the db: > SELECT * FROM items WHERE biblionumber != biblioitemnumber; >10 - Note the mismatch >11 - Fix the item and set it as 'Music' type > UPDATE items SET biblionumber = biblioitemnumber, itype='MU' WHERE biblionumber != biblioitemnumber; >12 - Apply patch, restart all >13 - Stage and import the file with the same settings >14 - Confirm the item is modified on its original biblio (99) and that item type is Book again >15 - Change itemnumber to avoid itemnumber match and reset type > UPDATE items SET itype='MU', itemnumber=999 WHERE itemnumber=212; >16 - Stage and import with the same setttings >17 - Confirm the marcode match worked and item is updated to book on original record >18 - Delete the original item >19 - Stage and import the file with the same settings >20 - The item is successfully created >21 - Stage and import, but item processing option is 'add' >22 - Confirm 1 item ignored >23 - Check the db > SELECT * FROM import_items WHERE barcode=39999000004090 >24 - Confirm there is a line with 'error' and duplicate_barcode >--- > C4/ImportBatch.pm | 22 ++++++++++++++++------ > 1 file changed, 16 insertions(+), 6 deletions(-) > >diff --git a/C4/ImportBatch.pm b/C4/ImportBatch.pm >index 905a44aa62..2d34422a10 100644 >--- a/C4/ImportBatch.pm >+++ b/C4/ImportBatch.pm >@@ -750,13 +750,20 @@ sub _batchCommitItems { > > my $item = TransformMarcToKoha({ record => $item_marc, kohafields => ['items.barcode','items.itemnumber'] }); > >- my $duplicate_barcode = exists( $item->{'barcode'} ) && Koha::Items->find({ barcode => $item->{'barcode'} }); >+ my $item_match; >+ my $duplicate_barcode = exists( $item->{'barcode'} ); > my $duplicate_itemnumber = exists( $item->{'itemnumber'} ); > >+ # We assume that when replaicing tiems we do not want to move them - the onus is on the importer to >+ # ensure the correct items/records are being updated > my $updsth = $dbh->prepare("UPDATE import_items SET status = ?, itemnumber = ?, import_error = ? WHERE import_items_id = ?"); >- if ( $action eq "replace" && $duplicate_itemnumber ) { >+ if ( >+ $action eq "replace" && >+ $duplicate_itemnumber && >+ ( $item_match = Koha::Items->find( $item->{itemnumber} )) >+ ) { > # Duplicate itemnumbers have precedence, that way we can update barcodes by overlaying >- ModItemFromMarc( $item_marc, $biblionumber, $item->{itemnumber}, { skip_record_index => 1 } ); >+ ModItemFromMarc( $item_marc, $item_match->biblionumber, $item->{itemnumber}, { skip_record_index => 1 } ); > $updsth->bind_param( 1, 'imported' ); > $updsth->bind_param( 2, $item->{itemnumber} ); > $updsth->bind_param( 3, undef ); >@@ -764,9 +771,12 @@ sub _batchCommitItems { > $updsth->execute(); > $updsth->finish(); > $num_items_replaced++; >- } elsif ( $action eq "replace" && $duplicate_barcode ) { >- my $itemnumber = $duplicate_barcode->itemnumber; >- ModItemFromMarc( $item_marc, $biblionumber, $itemnumber, { skip_record_index => 1 } ); >+ } elsif ( >+ $action eq "replace" && >+ $duplicate_barcode && >+ ( $item_match = Koha::Items->find({ barcode => $item->{'barcode'} }) ) >+ ) { >+ ModItemFromMarc( $item_marc, $item_match->biblionumber, $item_match->itemnumber, { skip_record_index => 1 } ); > $updsth->bind_param( 1, 'imported' ); > $updsth->bind_param( 2, $item->{itemnumber} ); > $updsth->bind_param( 3, undef ); >-- >2.30.2
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 32804
:
146034
|
146037
|
146292
|
146293
|
146345
|
146346
|
146579
|
147134
|
147135
|
147668
|
147669
|
147690
|
148314
|
148315
|
148316
|
148317
|
150363