Bug 20435: Allow lowercase prefix in inventory value builder
authorFridolin Somers <fridolin.somers@biblibre.com>
Fri, 16 Mar 2018 10:59:04 +0000 (11:59 +0100)
committerNick Clemens <nick@bywatersolutions.com>
Tue, 6 Nov 2018 17:42:31 +0000 (17:42 +0000)
Cataloging value builders for inventory stocknumberAV.pl and stocknumberam123.pl use a regexp to define if entered text is a prefix or not.
It actually only allows uppercase characters. A library may want to catalog with lowercase characters in inventory number and using those value builders.
Note that in database the text is not case-sensitive.

Test plan:
1) Configure stocknumberAV.pl value builder on an item subfield
2) Create an autorized value category 'INVENTORY'
3) Create in this category a value with code 'UC' and description '10'
4) Create in this category a value with code 'lc' and description '20'
5) Create a new item
6) Focus on stocknumber subfield
7) Enter '123' and click on value builder, the entry stays '123'
8) Enter 'UC' and click on value builder, the entry turn to 'UC 0000000011'
9) Enter 'lc' and click on value builder, the entry turn to 'lc 0000000021'
Same for stocknumberam123.pl

To elaborate on step #1:

Go to Administration->MARC Bibliographic framework
Click on the "Action" button to view the framework
for the item you will be creating, view MARC structure.
Search for Tag 952 (LOCATION AND ITEM INFORMATION (KOHA))
Select Actions->Subfields
Edit subfield i for "Inventory Number"
In the "Other options" pane, select the plugin to test.

Signed-off-by: Cori Lynn Arnold <carnold@dgiinc.com>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

cataloguing/value_builder/stocknumberAV.pl
cataloguing/value_builder/stocknumberam123.pl

index 789a055..ac9d41f 100755 (executable)
@@ -85,7 +85,7 @@ my $launcher = sub {
 
     # If a prefix is submited, we look for the highest stocknumber with this prefix, and return it incremented
     $code =~ s/ *$//g;
-    if ( $code =~ m/^[A-Z]+$/ ) {
+    if ( $code =~ m/^[a-zA-Z]+$/ ) {
         my $sth = $dbh->prepare("SELECT lib FROM authorised_values WHERE category='INVENTORY' AND authorised_value=?");
         $sth->execute( $code);
 
index 17d64ac..afed9e9 100755 (executable)
@@ -86,7 +86,7 @@ my $launcher = sub {
             );
         }
     # If a prefix is submited, we look for the highest stocknumber with this prefix, and return it incremented
-    } elsif ( $code =~ m/^[A-Z]+$/ ) {
+    } elsif ( $code =~ m/^[a-zA-Z]+$/ ) {
         my $sth = $dbh->prepare("SELECT MAX(CAST(SUBSTRING_INDEX(stocknumber,' ',-1) AS SIGNED)) FROM items WHERE stocknumber LIKE ?");
         $sth->execute($code.' %');