@@ -, +, @@ preference 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" preference, reload your search page methods. --- installer/data/mysql/atomicupdate/bug_33117.pl | 17 +++++++++++++++++ installer/data/mysql/mandatory/sysprefs.sql | 1 + .../prog/en/includes/js_includes.inc | 1 + .../modules/admin/preferences/circulation.pref | 6 ++++++ .../prog/js/patron-autocomplete.js | 3 ++- 5 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 installer/data/mysql/atomicupdate/bug_33117.pl --- a/installer/data/mysql/atomicupdate/bug_33117.pl +++ a/installer/data/mysql/atomicupdate/bug_33117.pl @@ -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'"; + }, +}; --- a/installer/data/mysql/mandatory/sysprefs.sql +++ a/installer/data/mysql/mandatory/sysprefs.sql @@ -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'), --- a/koha-tmpl/intranet-tmpl/prog/en/includes/js_includes.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/js_includes.inc @@ -71,6 +71,7 @@ --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref @@ -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: --- a/koha-tmpl/intranet-tmpl/prog/js/patron-autocomplete.js +++ a/koha-tmpl/intranet-tmpl/prog/js/patron-autocomplete.js @@ -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); --