From 5de0705275ba5a61ebee2d8766d804a36c611287 Mon Sep 17 00:00:00 2001 From: Andreas Roussos Date: Fri, 2 Jul 2021 13:12:21 +0200 Subject: [PATCH] Bug 28472: handle items with NULL shelving location MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The UpdateItemLocationOnCheckin System Preference can be set to update the location of ALL items during check in, regardless of their shelving location. However, this does not currently work 100% as it is excluding items with no shelving location (i.e. value of NULL in the corresponding database field). This patch, based on the comment made by Nick Clemens, fixes that. Test plan (based on the original Bug Description by Andrew Fuerste-Henry): 1) Have a shelving location CART 2) In UpdateItemLocationOnCheckin, enter "_ALL_: CART" (without the quotes) 3) Check in an item that has a shelving location, confirm it changes to CART 4) Check in an item with a NULL shelving location, confirm it doesn't go to CART 5) Apply this patch 6) Repeat step 4): this time the item should move to the CART shelving location Signed-off-by: Andrew Fuerste-Henry Signed-off-by: Nick Clemens Signed-off-by: Andrew Fuerste-Henry Signed-off-by: Joonas Kylmälä Signed-off-by: Jonathan Druart --- C4/Circulation.pm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 03332f3836..5da1d80258 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -2014,7 +2014,10 @@ sub AddReturn { if (defined $update_loc_rules->{_ALL_}) { if ($update_loc_rules->{_ALL_} eq '_PERM_') { $update_loc_rules->{_ALL_} = $item->permanent_location; } if ($update_loc_rules->{_ALL_} eq '_BLANK_') { $update_loc_rules->{_ALL_} = ''; } - if ( defined $item->location && $item->location ne $update_loc_rules->{_ALL_}) { + if ( + ( defined $item->location && $item->location ne $update_loc_rules->{_ALL_}) || + (!defined $item->location && $update_loc_rules->{_ALL_} ne "") + ) { $messages->{'ItemLocationUpdated'} = { from => $item->location, to => $update_loc_rules->{_ALL_} }; $item->location($update_loc_rules->{_ALL_})->store({skip_record_index=>1}); } -- 2.39.2