From e2668a685702a0cd9adf3deeafcc9e4433199e0f Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 7 Jun 2022 11:27:04 +0200 Subject: [PATCH] Bug 30909: Retain permanent_location if mapped MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit If items.permanent_location is mapped to a MARC subfields we must retain the value, not using items.location Test plan: 1 - Map permanent_location to a marc field 2 - Expose that field in the item editor 3 - Change the location of the item and retain the permanent location on saving 4 - note that permanent location has not changed Test the different other situation, when adding and editing: Empty the field, change only location, change only permanent_location, etc. Signed-off-by: andrew Signed-off-by: Joonas Kylmälä Signed-off-by: Tomas Cohen Arazi --- cataloguing/additem.pl | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/cataloguing/additem.pl b/cataloguing/additem.pl index 86aa0cf009..80c0a23ce0 100755 --- a/cataloguing/additem.pl +++ b/cataloguing/additem.pl @@ -208,8 +208,11 @@ if ($op eq "additem") { my @v = grep { $_ ne "" } uniq $input->multi_param( "items." . $c ); - next if !@v - && $c ne 'permanent_location'; # See 27837 + next unless @v; + + if ( $c eq 'permanent_location' ) { # See 27837 + $item->make_column_dirty('permanent_location'); + } $item->$c(join ' | ', @v); } @@ -477,6 +480,10 @@ if ($op eq "additem") { my @v = map { ( defined $_ && $_ eq '' ) ? undef : $_ } $input->multi_param( "items." . $c ); next unless @v; + if ( $c eq 'permanent_location' ) { # See 27837 + $item->make_column_dirty('permanent_location'); + } + if ( scalar(@v) == 1 && not defined $v[0] ) { delete $new_values->{$c}; } else { -- 2.39.5