[Koha-patches] [PATCH] Bug 5418: Add a new itemBarcodeInputFilter for libsuite8 style barcodes

Mike Hafen mdhafen at tech.washk12.org
Thu Nov 18 19:24:25 CET 2010


Two suggestions.

First, perhaps the users branch could be used, like from
C4::Branch::mybranch()
Then you wouldn't need to add the branch parameter to the sub

Second, perhaps instead of splitting the barcode string you should do
something like s/(.*)0+(.*)/$1$2/
That should strip out all the zeros.

On Wed, Nov 17, 2010 at 11:31 PM, Koustubha Kale <kmkale at anantcorp.com>wrote:
...

> diff --git a/C4/Circulation.pm b/C4/Circulation.pm
> index 10c3c11..08778ca 100644
> --- a/C4/Circulation.pm
> +++ b/C4/Circulation.pm
> @@ -136,7 +136,7 @@ System Pref options.
>  # FIXME -- these plugins should be moved out of Circulation.pm
>  #
>  sub barcodedecode {
> -    my ($barcode, $filter) = @_;
> +    my ($barcode, $filter, $branch) = @_;
>     $filter = C4::Context->preference('itemBarcodeInputFilter') unless
> $filter;
>     $filter or return $barcode;     # ensure filter is defined, else return
> untouched barcode
>        if ($filter eq 'whitespace') {
> @@ -155,6 +155,31 @@ sub barcodedecode {
>         # FIXME: $barcode could be "T1", causing warning: substr outside of
> string
>         # Why drop the nonzero digit after the T?
>         # Why pass non-digits (or empty string) to "T%07d"?
> +       } elsif ($filter eq 'libsuite8') {
> +       # FIXME: This NEEDS major code cleanup. All help is much
> appreciated
> +               use Scalar::Util qw(looks_like_number);
> +               my $barcode1=$barcode;
> +               my $branchcode=$branch."-";
> +               if($barcode1 =~ m/^$branchcode/){
> +               }
> +               else {
> +                       my @chars;
> +                       my @nums;
> +                       my @m1=split(/ */, $barcode);
> +                       foreach (@m1){
> +                               looks_like_number ($_) ? push(@nums,$_) :
> push(@chars,$_);
> +                       }
> +               my @n1;
> +               foreach(@nums){
> +                       if($_ > 0){
> +                               push(@n1,$_);
> +                       }
> +               }
> +               my ($chars) = join('', at chars);
> +               my ($n1) = join('', at n1);
> +               $barcode = "$branchcode" . $chars . "-" . $n1;
> +               }
> +
>        }
>     return $barcode;    # return barcode, modified or not
>  }
> diff --git a/circ/circulation.pl b/circ/circulation.pl
> index 7c4a0dc..b358a84 100755
> --- a/circ/circulation.pl
> +++ b/circ/circulation.pl
> @@ -115,8 +115,8 @@ if (C4::Context->preference("UseTablesortForCirc")) {
>
>  my $barcode        = $query->param('barcode') || '';
>  $barcode =~  s/^\s*|\s*$//g; # remove leading/trailing whitespace
> -
> -$barcode = barcodedecode($barcode) if( $barcode &&
> C4::Context->preference('itemBarcodeInputFilter'));
> +my $filter = C4::Context->preference('itemBarcodeInputFilter') || '';
> +$barcode = barcodedecode($barcode,$filter,$branch) if( $barcode &&
> C4::Context->preference('itemBarcodeInputFilter'));
>  my $stickyduedate  = $query->param('stickyduedate') ||
> $session->param('stickyduedate');
>  my $duedatespec    = $query->param('duedatespec')   ||
> $session->param('stickyduedate');
>  my $issueconfirmed = $query->param('issueconfirmed');
>
...
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/koha-patches/attachments/20101118/589cff08/attachment.htm>


More information about the Koha-patches mailing list