From a7c07b5c1632715643eacb8f85441985e503786e Mon Sep 17 00:00:00 2001 From: Aleisha Amohia Date: Mon, 29 Apr 2019 01:25:46 +0000 Subject: [PATCH] Bug 22799: Avoiding batch item modification case sensitivity when entering barcodes Note: this fixes the bug that is present right now where batch item modification barcode matching is case sensitive, but if Koha barcodes ever do become case sensitive, this patch will need to be removed. To test: 1) Make/use an item with a barcode with letters in it. For testing purposes, I'll be using an item with the barcode 'abcde'. 2) Go to Tools -> Batch item modification and enter this barcode in the barcode list text input field, but change the case of one or some letters. (i.e. enter the barcode in the field as 'abCDE') 3) Click Continue 4) Notice that the next page shows an error 'the following barcodes were not found', but the item still shows underneath (was correctly fetched from database). 5) Create a text file and put the changed-case barcode in it (i.e. put the barcode 'abCDE' in the text file) 6) Go back to batch item modification and upload the text file as a barcode file 7) Notice same error as in Step 4 8) Apply patch and refresh page 9) Run through steps 1 to 6. There should no longer be an error and the barcodes should be found as expected. Sponsored-by: TBC --- tools/batchMod.pl | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tools/batchMod.pl b/tools/batchMod.pl index e5b6032..0aac1cf 100755 --- a/tools/batchMod.pl +++ b/tools/batchMod.pl @@ -257,7 +257,11 @@ if ($op eq "show"){ my $existing_items = Koha::Items->search({ barcode => \@contentlist }); @itemnumbers = $existing_items->get_column('itemnumber'); my %exists = map {$_=>1} $existing_items->get_column('barcode'); - @notfoundbarcodes = grep { !$exists{$_} } @contentlist; + # to avoid problems with case sensitivity + foreach my $barcode (@contentlist) { + $barcode = lc($barcode); + } + @notfoundbarcodes = grep { !$exists{lc($_)} } @contentlist; } elsif ( $filecontent eq 'itemid_file') { @itemnumbers = Koha::Items->search({ itemnumber => \@contentlist })->get_column('itemnumber'); @@ -278,7 +282,11 @@ if ($op eq "show"){ @itemnumbers = $existing_items->get_column('itemnumber'); my @barcodes = $existing_items->get_column('barcode'); my %exists = map {$_=>1} @barcodes; - @notfoundbarcodes = grep { !$exists{$_} } @barcodelist; + # to avoid problems with case sensitivity + foreach my $barcode (@barcodelist) { + $barcode = lc($barcode); + } + @notfoundbarcodes = grep { !$exists{lc($_)} } @barcodelist; } } -- 2.1.4