diff --git a/installer/data/mysql/atomicupdate/bug_33117.pl b/installer/data/mysql/atomicupdate/bug_33117.pl new file mode 100644 index 0000000000..03e9ab6787 --- /dev/null +++ b/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'"; + }, +}; diff --git a/installer/data/mysql/mandatory/sysprefs.sql b/installer/data/mysql/mandatory/sysprefs.sql index b224c147fe..a417499c4f 100644 --- a/installer/data/mysql/mandatory/sysprefs.sql +++ b/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'), diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/js_includes.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/js_includes.inc index f1745d52e8..3ea7f705ff 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/js_includes.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/js_includes.inc @@ -71,6 +71,7 @@ diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref index ffe8481869..b79316a593 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref +++ b/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: diff --git a/koha-tmpl/intranet-tmpl/prog/js/patron-autocomplete.js b/koha-tmpl/intranet-tmpl/prog/js/patron-autocomplete.js index cc8ec068ae..167928dd3f 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/patron-autocomplete.js +++ b/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);