Bug 33117: Adding new PatronAutoCompleteSearchMethod system preference

This patch adds a new system preference called "PatronAutoCompleteSearchMethod"
which allows staff to choose between "Starts with" or "Contains" when
searching for patrons.

The "Contains" option should be useful when searching for patrons that have
multiple surnames or when searching using a patron's middle name.

New Test Plan:
 0. Ensure system preference PatronAutoComplete is set to Try
 1. Create a patron that has a first name, middle name and two surnames.
    (i.e. Adela Maria, Hernandez Acosta).
 2. In patron or checkout search, enter their first name and first
    surname without submitting.
 3. Confirm that a record is found in the autocomplete results
 4. In patron or checkout search, enter their first name and second
    surname without submitting.
 5. Confirm that no record is found.
 6. Enter their middle name and first surname. Confirm that no record is
    found.
 7. Enter their middle name and second surname. Confirm that no record
    is found.
 8. Apply the patch, update database
 9. Under Administration > Global System Preferences > search for
    "PatronAutocompleteSearchMethod"
10. Choose "Contains" instead of "Starts with" for the system
    preference, reload your search page
11. Repeat steps 2-4. The patron record should appear for all search
    methods.
12. Sign off!

Signed-off-by: Andrew Fuerste-Henry <andrewfh@dubcolib.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
Laura Escamilla 2023-05-26 16:19:54 +00:00 committed by Tomas Cohen Arazi
parent b7f89dcca3
commit 7b675997b4
Signed by: tomascohen
GPG key ID: 0A272EA1B2F3C15F
5 changed files with 27 additions and 1 deletions

View file

@ -0,0 +1,17 @@
use Modern::Perl;
return {
bug_number => "33117",
description => "Patron checkout is not able to find patrons if using a second surname or other name during the search",
up => sub {
my ($args) = @_;
my ( $dbh, $out ) = @$args{qw(dbh out)};
$dbh->do(q{
INSERT INTO systempreferences (`variable`,`value`,`explanation`,`options`,`type`)
VALUES ('PatronAutoCompleteSearchMethod','starts_with','Allows staff to set a default method when searching for patrons with autocomplete','starts_with|contains','Choice');
});
say $out "Added new system preference 'PatronAutoCompleteSearchMethod'";
},
};

View file

@ -552,6 +552,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `
('PassItemMarcToXSLT','0',NULL,'If enabled, item fields in the MARC record will be made avaiable to XSLT sheets. Otherwise they will be removed.','YesNo'),
('PatronAnonymizeDelay','',NULL,'Delay for anonymizing patrons', 'Integer'),
('PatronAutoComplete','1','Try|Don\'t try','to guess the patron being entered while typing a patron search for circulation or patron search. Only returns the first 10 results at a time.','YesNo'),
('PatronAutoCompleteSearchMethod','starts_with','Choose which search method to use by default when searching with PatronAutoComplete','starts_with|choice','Choice'),
('PatronDuplicateMatchingAddFields','surname|firstname|dateofbirth', NULL,'A list of fields separated by "|" to deduplicate patrons when created','Free'),
('patronimages','0',NULL,'Enable patron images for the staff interface','YesNo'),
('PatronRemovalDelay','',NULL,'Delay for removing anonymized patrons', 'Integer'),

View file

@ -71,6 +71,7 @@
<script>
var defaultPatronSearchFields = "[% Koha.Preference('DefaultPatronSearchFields') || 'firstname,middle_name,surname,othernames,cardnumber,userid' | html %]";
var patronAutoCompleteSearchMethod = "[% Koha.Preference('PatronAutoCompleteSearchMethod') || 'contains' | html %]";
var loggedInLibrary = '[% Branches.GetLoggedInBranchcode | html %]';
var singleBranchMode = '[% singleBranchMode | html %]';
</script>

View file

@ -26,6 +26,12 @@ Circulation:
0: "Don't try"
- to guess the patron being entered while typing a patron search for circulation or patron search.
- Only returns the first 10 results at a time.
-
- pref: PatronAutoCompleteSearchMethod
choices:
starts_with: "Starts with"
contains: "Contains"
- Enable this search method to determine whether to use Starts with or Contains for autocomplete patron searches.
-
- pref: itemBarcodeInputFilter
choices:

View file

@ -2,6 +2,7 @@ function patron_autocomplete(node, options) {
let link_to;
let url_params;
let on_select_callback;
let leading_wildcard = patronAutoCompleteSearchMethod === 'contains' ? '%' : '';
if ( options ) {
if ( options['link-to'] ) {
link_to = options['link-to'];
@ -22,7 +23,7 @@ function patron_autocomplete(node, options) {
let subquery_or = [];
defaultPatronSearchFields.split(',').forEach(function(field,i){
subquery_or.push(
{["me."+field]: {'like': pattern + '%'}}
{["me."+field]: {'like': leading_wildcard + pattern + '%'}}
);
});
subquery_and.push(subquery_or);