From dda4f71d470d19155c9a52e6eb7bc34072d3fbd9 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 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 --- C4/Circulation.pm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 89e2737f56..9f7fadcfd3 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -2023,7 +2023,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.20.1