From 01b92fe1901ab23845cb2d59221505b91303bc68 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Wed, 9 Jun 2021 12:59:27 +0000 Subject: [PATCH] Bug 28533: Set subfields to 'undef' if whole field request in itemcallnumebr system preference MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch undefines the CNsubfields variable when the whole field is requested Note that the substr returns '' when no characters are found, so we test if the string eq '' Testing 'truth' doesn't work because "0" is a valid option To test: 1 - Edit a record, add an 082 field 082 0 0 ‡aalpha‡bbeta‡0delta 2 - Set itemcallnumber system preference to 082 3 - Attempt to add/edit items 4 - ISE 5 - Apply patch, restart all the things 6 - Add/edit items - no error 7 - Confirm the itemcallnumber field is populated with "alpha beta delta" 8 - Set itemcallnumber system preference to '0820' 9 - Add/edit items 10 - Confirm itemcallnumber is populated with 'delta' --- cataloguing/additem.pl | 1 + 1 file changed, 1 insertion(+) diff --git a/cataloguing/additem.pl b/cataloguing/additem.pl index 870f767e8b..2f02f8df33 100755 --- a/cataloguing/additem.pl +++ b/cataloguing/additem.pl @@ -144,6 +144,7 @@ sub generate_subfield_form { foreach my $pref_itemcallnumber_part (split(/,/, $pref_itemcallnumber)){ my $CNtag = substr( $pref_itemcallnumber_part, 0, 3 ); # 3-digit tag number my $CNsubfields = substr( $pref_itemcallnumber_part, 3 ); # Any and all subfields + $CNsubfields = undef if $CNsubfields eq ''; my $temp2 = $temp->field($CNtag); next unless $temp2; -- 2.11.0