Bug 32437: Honor overlay setting in staged batch when adding to a basket
authorNick Clemens <nick@bywatersolutions.com>
Mon, 12 Dec 2022 18:41:28 +0000 (18:41 +0000)
committerTomas Cohen Arazi <tomascohen@theke.io>
Fri, 31 Mar 2023 11:13:27 +0000 (13:13 +0200)
This patch uses the replace method added in last patch to ensure
records are overlayed when added to a basket

To test:
 1 - Stage the sample file on this report using the options below
     (If not using sample database simply save a record as marc from the details page, then change the title in the interface and import the saved version)
 2 - Make sure to match using KohaBiblio (999c)
 3 - Set option "Replace existing record" if match found
 4 - Once record is staged go to Acquisitions
 5 - Find a vendor and select/create an open basket
 6 - Add to basket from the staged file
 7 - Add order info and save
 8 - Check the record, title is unchanged -  Sample file should add 'New and improved!'
 9 - Check the staged records batch - note the diff shows that new record should have overwritten
10 - Apply patch
11 - Stage file, match on KohaBiblio, set action if matching record found to 'Ignore incoming record'
12 - Add to basket from the staged file and save
13 - Confirm record not overlayed when not reuqested
14 - Stage file, match on KohaBiblio, set action if mathc record found to  'Replace existing...'
15 - Add to basket from staged file and save
16 - Confirm the record is updated to 'New and improved!'

Signed-off-by: Andrew Fuerste-Henry <andrewfh@dubcolib.org>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
acqui/addorderiso2709.pl

index eefcabc..fb31a8b 100755 (executable)
@@ -51,6 +51,7 @@ use Koha::Acquisition::Baskets;
 use Koha::Acquisition::Currencies;
 use Koha::Acquisition::Orders;
 use Koha::Acquisition::Booksellers;
+use Koha::ImportBatches;
 use Koha::Import::Records;
 use Koha::Patrons;
 
@@ -135,6 +136,8 @@ if ($op eq ""){
 
     # retrieve the file you want to import
     my $import_batch_id = $cgiparams->{'import_batch_id'};
+    my $import_batch = Koha::ImportBatches->find( $import_batch_id );
+    my $overlay_action = $import_batch->overlay_action;
     my $import_records = Koha::Import::Records->search({
         import_batch_id => $import_batch_id,
     });
@@ -171,6 +174,10 @@ if ($op eq ""){
         # Insert the biblio, or find it through matcher
         if ( $biblionumber ) { # If matched during staging we can continue
             $import_record->status('imported')->store;
+            if( $overlay_action eq 'replace' ){
+                my $biblio = Koha::Biblios->find( $biblionumber );
+                $import_record->replace({ biblio => $biblio });
+            }
         } else { # Otherwise we check for duplicates, and skip if they exist
             if ($matcher_id) {
                 if ( $matcher_id eq '_TITLE_AUTHOR_' ) {