Bug 30195: Search by ISBN if it is provided in suggestion
When a patron enters an ISBN/ISSN when suggesting a new purchase, the ISBN is used to find duplicates. Title/Author are ignored (as patrons might misspell them, and the ISBN provides a better way to find duplicates) Test Plan: * in the OPAC, go to /cgi-bin/koha/opac-suggestions.pl * Click "new purchase suggestion" * Enter any title * Enter an ISBN that exists in your library * Click "Submit your suggestion" -> A new purchase suggestion has been submitted * Apply the patch! * Again start a new purchase suggestion, enter any title and the duplicate ISBN, and Submit * You should see the note "A similar document already exists: ..." Please note that the title should not be required when entering an ISBN, but as the list of required fields is managed via OPACSuggestionMandatoryFields I fear that it's rather complicated to make title an optional required field if isbn is provided. I also added a simple non-DB test case to t/db_dependent/Suggestions.t (in a subtest at the end), but could not actually run it as I haven't gotten around to set up / try a testing Koha dev env... Sponsored-by: Steiermärkische Landesbibliothek Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
parent
b6dcd3cbd3
commit
f1e29b18ea
|
|
@ -615,19 +615,29 @@ sub MarcRecordFromNewSuggestion {
|
|||
my ($suggestion) = @_;
|
||||
my $record = MARC::Record->new();
|
||||
|
||||
my ($title_tag, $title_subfield) = GetMarcFromKohaField('biblio.title', '');
|
||||
$record->append_fields(
|
||||
MARC::Field->new($title_tag, ' ', ' ', $title_subfield => $suggestion->{title})
|
||||
);
|
||||
|
||||
my ($author_tag, $author_subfield) = GetMarcFromKohaField('biblio.author', '');
|
||||
if ($record->field( $author_tag )) {
|
||||
$record->field( $author_tag )->add_subfields( $author_subfield => $suggestion->{author} );
|
||||
if (my $isbn = $suggestion->{isbn}) {
|
||||
for my $field (qw(biblioitems.isbn biblioitems.issn)) {
|
||||
my ($tag, $subfield) = GetMarcFromKohaField($field, '');
|
||||
$record->append_fields(
|
||||
MARC::Field->new($tag, ' ', ' ', $subfield => $isbn)
|
||||
);
|
||||
}
|
||||
}
|
||||
else {
|
||||
my ($title_tag, $title_subfield) = GetMarcFromKohaField('biblio.title', '');
|
||||
$record->append_fields(
|
||||
MARC::Field->new($author_tag, ' ', ' ', $author_subfield => $suggestion->{author})
|
||||
MARC::Field->new($title_tag, ' ', ' ', $title_subfield => $suggestion->{title})
|
||||
);
|
||||
|
||||
my ($author_tag, $author_subfield) = GetMarcFromKohaField('biblio.author', '');
|
||||
if ($record->field( $author_tag )) {
|
||||
$record->field( $author_tag )->add_subfields( $author_subfield => $suggestion->{author} );
|
||||
}
|
||||
else {
|
||||
$record->append_fields(
|
||||
MARC::Field->new($author_tag, ' ', ' ', $author_subfield => $suggestion->{author})
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
my ($it_tag, $it_subfield) = GetMarcFromKohaField('biblioitems.itemtype', '');
|
||||
|
|
|
|||
|
|
@ -132,6 +132,7 @@ if ( $op =~ /save/i ) {
|
|||
title => $suggestion_only->{title},
|
||||
author => $suggestion_only->{author},
|
||||
itemtype => $suggestion_only->{itemtype},
|
||||
isbn => $suggestion_only->{isbn},
|
||||
});
|
||||
|
||||
my $manager = Koha::Patrons->find( $suggestion_only->{managedby} );
|
||||
|
|
|
|||
|
|
@ -648,4 +648,26 @@ subtest 'ModSuggestion should work on suggestions without a suggester' => sub {
|
|||
is( $suggestion->{note}, "Test note", "ModSuggestion works on suggestions without a suggester" );
|
||||
};
|
||||
|
||||
subtest 'Suggestion with ISBN' => sub {
|
||||
my $suggestion_with_isbn = {
|
||||
isbn => '1940997232',
|
||||
title => "The Clouds",
|
||||
author => "Aristophanes",
|
||||
};
|
||||
my $record = MarcRecordFromNewSuggestion( $suggestion_with_isbn );
|
||||
is("MARC::Record", ref($record), "MarcRecordFromNewSuggestion should return a MARC::Record object");
|
||||
|
||||
my ($isbn_tag, $isbn_subfield) = C4::Biblio::GetMarcFromKohaField('biblioitems.isbn', '');
|
||||
is($record->field( $isbn_tag )->subfield( $isbn_subfield ), "1940997232", "ISBN Record from suggestion ISBN should be '1940997232'");
|
||||
|
||||
my ($issn_tag, $issn_subfield) = C4::Biblio::GetMarcFromKohaField('biblioitems.issn', '');
|
||||
is($record->field( $issn_tag )->subfield( $issn_subfield ), "1940997232", "ISSN Record from suggestion ISBN should also be '1940997232'");
|
||||
|
||||
my ($title_tag, $title_subfield) = C4::Biblio::GetMarcFromKohaField('biblio.title', '');
|
||||
is($record->field( $title_tag), undef, "Record from suggestion title should be empty");
|
||||
|
||||
my ($author_tag, $author_subfield) = C4::Biblio::GetMarcFromKohaField('biblio.author', '');
|
||||
is($record->field( $author_tag), undef, "Record from suggestion author should be emtpy");
|
||||
}
|
||||
|
||||
$schema->storage->txn_rollback;
|
||||
|
|
|
|||
Loading…
Reference in New Issue