View | Details | Raw Unified | Return to bug 20206
Collapse All | Expand All

(-)a/C4/Items.pm (-5 / +14 lines)
Lines 1365-1375 sub GetItemnumberFromBarcode { Link Here
1365
    my ($barcode) = @_;
1365
    my ($barcode) = @_;
1366
    my $dbh = C4::Context->dbh;
1366
    my $dbh = C4::Context->dbh;
1367
1367
1368
    my $rq =
1368
    my @result = $dbh->selectrow_array(
1369
      $dbh->prepare("SELECT itemnumber FROM items WHERE items.barcode=?");
1369
        "SELECT itemnumber FROM items WHERE items.barcode=?", undef, $barcode,
1370
    $rq->execute($barcode);
1370
    );
1371
    my ($result) = $rq->fetchrow;
1371
    if( !@result && $barcode !~ /^0/ ) {
1372
    return ($result);
1372
        # Bit arbitrary: try one, two or three leading zeroes
1373
        # But RLIKE ^0+[barcode] is seriously slower
1374
        my @barcodes = map { ( '0' x $_ ). $barcode } 1..3;
1375
        @result = $dbh->selectrow_array(
1376
            "SELECT itemnumber FROM items WHERE items.barcode IN (?,?,?)",
1377
            undef,
1378
            @barcodes,
1379
        );
1380
    }
1381
    return @result ? $result[0] : undef;
1373
}
1382
}
1374
1383
1375
=head2 GetBarcodeFromItemnumber
1384
=head2 GetBarcodeFromItemnumber
(-)a/t/db_dependent/Items.t (-2 / +21 lines)
Lines 30-36 use t::lib::TestBuilder; Link Here
30
use Koha::MarcSubfieldStructures;
30
use Koha::MarcSubfieldStructures;
31
use Koha::Caches;
31
use Koha::Caches;
32
32
33
use Test::More tests => 12;
33
use Test::More tests => 13;
34
34
35
use Test::Warn;
35
use Test::Warn;
36
36
Lines 758-763 subtest 'get_hostitemnumbers_of' => sub { Link Here
758
    is( @itemnumbers, 0, );
758
    is( @itemnumbers, 0, );
759
};
759
};
760
760
761
subtest 'GetItemnumberFromBarcode' => sub {
762
    plan tests => 4;
763
764
    $schema->storage->txn_begin;
765
    my $barcode = '20180215000';
766
    my $builder = t::lib::TestBuilder->new;
767
    my $item1 = $builder->build({ source => 'Item', value => { barcode => $barcode }});
768
    is( GetItemnumberFromBarcode( $barcode ), $item1->{itemnumber},
769
        'Barcode without leading zeroes found' );
770
    ModItem( { barcode => "00$barcode" }, undef, $item1->{itemnumber} );
771
    is( GetItemnumberFromBarcode( $barcode ), $item1->{itemnumber},
772
        'Barcode found by prefixing parameter' );
773
    is( GetItemnumberFromBarcode( "0$barcode" ), undef,
774
        'Barcode with one leading zero not found' );
775
    is( GetItemnumberFromBarcode( "00$barcode" ), $item1->{itemnumber},
776
        'Barcode with two leading zeroes found' );
777
778
    $schema->storage->txn_rollback;
779
};
780
761
# Helper method to set up a Biblio.
781
# Helper method to set up a Biblio.
762
sub get_biblio {
782
sub get_biblio {
763
    my ( $frameworkcode ) = @_;
783
    my ( $frameworkcode ) = @_;
764
- 

Return to bug 20206