Bug 22043: SIP Checkin Response alert flag set to often set to Y incorrectly
[koha.git] / C4 / Barcodes.pm
index 7bc384f..256a177 100644 (file)
@@ -4,18 +4,18 @@ package C4::Barcodes;
 #
 # This file is part of Koha.
 #
-# Koha is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or (at your option) any later
-# version.
+# Koha is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
 #
-# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+# Koha is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
 #
-# You should have received a copy of the GNU General Public License along
-# with Koha; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
 
 use strict;
 use warnings;
@@ -24,17 +24,16 @@ use Carp;
 
 use C4::Context;
 use C4::Debug;
-use C4::Dates;
 use C4::Barcodes::hbyymmincr;
 use C4::Barcodes::annual;
 use C4::Barcodes::incremental;
+use C4::Barcodes::EAN13;
 
-use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
+use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
 use vars qw($debug $cgi_debug);        # from C4::Debug, of course
 use vars qw($max $prefformat);
 
 BEGIN {
-    $VERSION = 0.01;
        require Exporter;
     @ISA = qw(Exporter);
     @EXPORT_OK = qw();
@@ -54,7 +53,7 @@ sub initial {
        return '0000001';
 }
 sub width {
-       return undef;
+       return;
 }
 sub process_head {     # (self,head,whole,specific)
        my $self = shift;
@@ -128,33 +127,33 @@ sub next_value {
        my ($head,$incr,$tail) = $self->parse($max);    # for incremental, you'd get ('',the_whole_barcode,'')
        unless (defined $incr) {
                warn "No incrementing part of barcode ($max) returned by parse.";
-               return undef;
+               return;
        }
        my $x = length($incr);          # number of digits
        $incr =~ /^9+$/ and $x++;       # if they're all 9's, we need an extra.
-               # Note, this enlargement might be undesireable for some barcode formats.
+        # Note, this enlargement might be undesirable for some barcode formats.
                # Those should override next_value() to work accordingly.
        $incr++;
 
        $debug and warn "$incr";
        $head = $self->process_head($head,$max,$specific);
-       $tail = $self->process_tail($tail,$max,$specific);
+    $tail = $self->process_tail($tail,$incr,$specific); # XXX use $incr and not $max!
        my $next_value = $head . $incr . $tail;
        $debug and print STDERR "(  next ) max barcode found: $next_value\n";
        return $next_value;
 }
 sub next {
-       my $self = shift or return undef;
+       my $self = shift or return;
        (@_) and $self->{next} = shift;
        return $self->{next};
 }
 sub previous {
-       my $self = shift or return undef;
+       my $self = shift or return;
        (@_) and $self->{previous} = shift;
        return $self->{previous};
 }
 sub serial {
-       my $self = shift or return undef;
+       my $self = shift or return;
        (@_) and $self->{serial} = shift;
        return $self->{serial};
 }
@@ -177,6 +176,7 @@ our $types = {
        incremental => sub {C4::Barcodes::incremental->new_object(@_);},
        hbyymmincr  => sub {C4::Barcodes::hbyymmincr->new_object(@_); },
        OFF         => sub {C4::Barcodes::OFF->new_object(@_);        },
+    EAN13       => sub {C4::Barcodes::EAN13->new_object(@_);      },
 };
 
 sub new {
@@ -190,11 +190,11 @@ sub new {
        $autoBarcodeType =~ s/^.*:://;  # in case we get C4::Barcodes::incremental, we just want 'incremental'
        unless ($autoBarcodeType) {
                carp "No autoBarcode format found.";
-               return undef;
+               return;
        }
        unless (defined $types->{$autoBarcodeType}) {
                carp "The autoBarcode format '$autoBarcodeType' is unrecognized.";
-               return undef;
+               return;
        }
        carp "autoBarcode format = $autoBarcodeType" if $debug;
        my $self;
@@ -225,7 +225,7 @@ sub new {
                return $self;
        }
        carp "Failed new C4::Barcodes::$autoBarcodeType";
-       return undef;
+       return;
 }
 
 sub new_object {