From 594e96fa2b75e379a1a85894b41d65968c3ede80 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Thu, 11 Jul 2024 12:03:40 +0000 Subject: [PATCH] Bug 37326: decode barcode file in inventory tool This patch ensures that barcodes uploaded as a file into batchMod are run through any transformations to match the behaviour of barcodes entered in a list To test: 1 - Edit BarcodeSeparators system preference to remove \s 2 - Install barcode transformer plugin: https://github.com/bywatersolutions/koha-plugin-barcode-transformer/releases/tag/v1.2.0 3 - Configure the plguin: item: - match: "^[A-Z]* \| " search: "^[A-Z]* \| " replace: "" - match: " \| .*$" search: " \| .*$" replace: "" 4 - Go to Cataloging->Batch item modification 5 - Enter a list of barcodes into the 'Scan one by one' box like: ERR | 12345 | ERR FOO | 23456 | FOO BAR | 34567 | BAR 6 - Click 'Continue' 7 - Note the barcodes not found are: 12345 23456 34567 8 - Save the barcodes with extra text into a file 9 - Perform batch mod, supplying the barcodes via the file 10 - Note the barcodes not found are the original strings 11 - Apply patch, restart all 12 - Perform batch modification using file again 13 - Note the not found barcodes are the transformed version 14 - Sign off! --- tools/batchMod.pl | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/batchMod.pl b/tools/batchMod.pl index 1b432318571..d6367b48a15 100755 --- a/tools/batchMod.pl +++ b/tools/batchMod.pl @@ -223,6 +223,7 @@ if ($op eq "cud-show" || $op eq "show"){ if ($filecontent eq 'barcode_file') { @contentlist = grep /\S/, ( map { split /[$split_chars]/ } @contentlist ); @contentlist = uniq @contentlist; + @contentlist = map { barcodedecode($_) } @contentlist; # Note: adding lc for case insensitivity my %itemdata = map { lc($_->{barcode}) => $_->{itemnumber} } @{ Koha::Items->search({ barcode => { -in => \@contentlist } }, { columns => [ 'itemnumber', 'barcode' ] } )->unblessed }; @itemnumbers = map { exists $itemdata{lc $_} ? $itemdata{lc $_} : () } @contentlist; -- 2.39.2