Bug 30909: Retain permanent_location if mapped
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Tue, 7 Jun 2022 09:27:04 +0000 (11:27 +0200)
committerTomas Cohen Arazi <tomascohen@theke.io>
Wed, 20 Jul 2022 12:05:45 +0000 (09:05 -0300)
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 <andrewfh@dubcolib.org>
Signed-off-by: Joonas Kylmälä <joonas.kylmala@iki.fi>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
cataloguing/additem.pl

index 86aa0cf..80c0a23 100755 (executable)
@@ -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 {