From ba9713ba3a2d8fa5b94211dbc1e6003517079578 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Mon, 9 Aug 2021 16:28:16 +0000 Subject: [PATCH] Bug 28832: Don't batch modify fields that we don't update In bug 27837 we made sure to always pass through the permanent_location if it was passed in unlike other fields which are not passed if they have no value. During batch mod, however, fields that aren't editied have no value, so forcing permanent_location to pass through forces blanking it. This patch alters the script to only pass thgouhr for edit the fields that have been updated or cleared. To test: 1 - In frameworks add a new subfield to 952, "C" - make it editable in items tab and visible in intranet/editor 2 - In mappings map that subfield to items.permanent_location 3 - Set an item to have differing shelving location and permanent_location 4 - This saves correctly for an individual item 5 - Edit the item using Tools->batch item modification, updating the note field 6 - Note the permanet_location is removed 7 - Check the DB, the field is set to NULL 8 - Apply patch 9 - Repeat 10 - Permanent location is not cleared 11 - Verify that clearing fields works as before, including permanent_location Signed-off-by: Andrew Fuerste-Henry Signed-off-by: Andrew Fuerste-Henry Signed-off-by: Deb Stephenson Signed-off-by: Andrew Fuerste-Henry Signed-off-by: Martin Renvoize Signed-off-by: Andrew Fuerste-Henry --- tools/batchMod.pl | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tools/batchMod.pl b/tools/batchMod.pl index 17b822876a..de0af2d63b 100755 --- a/tools/batchMod.pl +++ b/tools/batchMod.pl @@ -121,6 +121,15 @@ if ($op eq "action") { my $values_to_modify = scalar(grep {!/^$/} @values) || scalar(grep {!/^$/} @searches); my $values_to_blank = scalar(@disabled); + # Clear the fields we are not editing, leave fields we are blanking + foreach( my $i = 0; $i < scalar @values; $i++ ){ + unless( $values[$i] || grep { $subfields[$i] } @disabled ){ + splice(@values,$i,1); + splice(@subfields,$i,1); + splice(@tags,$i,1); + } + } + my $marcitem; #initializing values for updates @@ -239,7 +248,6 @@ if ($op eq "action") { } } } - $modified += UpdateMarcWith( $marcitem, $localmarcitem ); if ($modified) { eval { -- 2.39.5