From 06b45c339deeb85d74f163f0789307a121cb67af Mon Sep 17 00:00:00 2001 From: Fridolyn SOMERS Date: Fri, 15 Nov 2013 10:43:21 +0100 Subject: [PATCH] Bug 11254 - breeding search must normalize ISBN When importing records, the ISBN is normalized and stored into database (see C4::Breeding::ImportBreeding). But when searching with ISBN into reservoir, it is not normalized (see C4::Breeding::BreedingSearch). So search does not match. This patch adds the normalisation to breeding search. Also replaces call private method _isbn_cleanup by GetNormalizedISBN, the correct public method. Also allows the breeding search on ISBN with hyphens. Test plan : - Import a record with ISBN 13 with hyphens. ie 978-2-8153-0357-6 - Go to cataloguing : cataloguing/addbooks.pl - Enter ISBN 13 with hyphens. ie 978-2-8153-0357-6 => the imported record is found - Enter ISBN 13 without hyphens. ie 9782815303576 => the imported record is found - Enter normalized ISBN. ie 2815303574 => the imported record is found --- C4/Breeding.pm | 5 ++++- C4/ImportBatch.pm | 2 +- cataloguing/addbooks.pl | 4 +++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/C4/Breeding.pm b/C4/Breeding.pm index 8e01d41..0516cf0 100644 --- a/C4/Breeding.pm +++ b/C4/Breeding.pm @@ -110,7 +110,7 @@ sub ImportBreeding { # if isbn found and biblio does not exist, add it. If isbn found and biblio exists, # overwrite or ignore depending on user choice # drop every "special" char : spaces, - ... - $oldbiblio->{isbn} = C4::Koha::_isbn_cleanup($oldbiblio->{isbn}); # FIXME C4::Koha::_isbn_cleanup should be public + $oldbiblio->{isbn} = C4::Koha::GetNormalizedISBN($oldbiblio->{isbn}); # search if biblio exists my $biblioitemnumber; if ($oldbiblio->{isbn}) { @@ -175,6 +175,9 @@ sub BreedingSearch { my $sth; my @results; + # normalise ISBN like at import + $isbn = C4::Koha::GetNormalizedISBN($isbn); + $query = "SELECT import_record_id, file_name, isbn, title, author FROM import_biblios JOIN import_records USING (import_record_id) diff --git a/C4/ImportBatch.pm b/C4/ImportBatch.pm index c045878..9439986 100644 --- a/C4/ImportBatch.pm +++ b/C4/ImportBatch.pm @@ -1437,7 +1437,7 @@ sub _add_biblio_fields { my ($title, $author, $isbn, $issn) = _parse_biblio_fields($marc_record); my $dbh = C4::Context->dbh; # FIXME no controlnumber, originalsource - $isbn = C4::Koha::_isbn_cleanup($isbn); # FIXME C4::Koha::_isbn_cleanup should be made public + $isbn = C4::Koha::GetNormalizedISBN($isbn); my $sth = $dbh->prepare("INSERT INTO import_biblios (import_record_id, title, author, isbn, issn) VALUES (?, ?, ?, ?, ?)"); $sth->execute($import_record_id, $title, $author, $isbn, $issn); $sth->finish(); diff --git a/cataloguing/addbooks.pl b/cataloguing/addbooks.pl index b22a646..cbd98f0 100755 --- a/cataloguing/addbooks.pl +++ b/cataloguing/addbooks.pl @@ -116,7 +116,9 @@ if ($query) { #check is on isbn legnth 13 for new isbn and 10 for old isbn my ( $title, $isbn ); if ($query=~/\d/) { - my $querylength = length $query; + my $clean_query = $query; + $clean_query =~ s/-//g; # remove hyphens + my $querylength = length $clean_query; if ( $querylength == 13 || $querylength == 10 ) { $isbn = $query; } -- 1.8.3.2