From 08504d70f6115218eea9717540a58b0d0e418091 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=UTF-8 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ä --- 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.20.1