Fridolin Somers
a4f5564c85
When searching a patron, search type can be 'start with' and 'contain'. If the search text contains a space (or a coma), this text is splitted into several terms. Actually, the search on 'start with' with several terms never returns a result. It is because the search composes an "AND" SQL query on terms. For example (I display only the surname part) : search type = contain : 'jean paul' => surname like '%jean% AND %paul%' search type = start with : 'jean paul' => surname like 'jean% AND paul%' The query for 'start with' is impossible. I propose, for search with start with, to not split terms : jean paul => surname like 'jean paul%' One can always use '*' to add more truncation : jea* pau* => surname like 'jea% pau%' This bug affects a lot surnames with several terms like 'LE GUELEC' or 'MAC BETH'. Note that the patch moves : $searchmember =~ s/,/ /g; It removes the test "if $searchmember" because $searchmember is tested and set to empty string previously : unless ( $searchmember ) { $searchmember = $dt_params->{sSearch} // ''; } Test plan : ========== - Create two patrons with firstname "Jean Paul" - Go to Patrons module - Choose "Starts with" in "Search type" filter - Perform a search on "Jean Paul" => without patch : you get no result => with this patch : you get the two results - Check you get the two results for search on "Jean Pau" - Check you get the two results for search on "Jea* Pau*" - Check you do not get results for search on "Jea Paul" - Choose "Contains" in "Search type" filter - Check you get the two results for search on "Jean Paul" - Check you get the two results for search on "Jean Pau" - Check you get the two results for search on "Jea* Pau*" - Check you get the two results for search on "Jea Paul" - Check you get the two results for search on "Paul Jean" Signed-off-by: Alex <alexklbuckley@gmail.com> Tested 4 patches together, works as expected Signed-off-by: Marc Véron <veron@veron.ch> Bug 15252 - Patron search on start with does not work with several terms - followup 1 'start_with' is the default value of $searchtype, it can be explicit. Tested 4 patches together, works as expected Signed-off-by: Marc Véron <veron@veron.ch> Bug 15252 - correct UT searchtype value is contain and not contains Tested 4 patches together, works as expected Signed-off-by: Marc Véron <veron@veron.ch> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
14 lines
483 B
Perl
14 lines
483 B
Perl
use Modern::Perl;
|
|
use Test::More tests => 4;
|
|
|
|
use_ok( "C4::Utils::DataTables::Members" );
|
|
|
|
my $patrons = C4::Utils::DataTables::Members::search({
|
|
searchmember => "Doe",
|
|
searchfieldstype => 'standard',
|
|
searchtype => 'contain'
|
|
});
|
|
|
|
isnt( $patrons->{iTotalDisplayRecords}, undef, "The iTotalDisplayRecords key is defined");
|
|
isnt( $patrons->{iTotalRecords}, undef, "The iTotalRecords key is defined");
|
|
is( ref $patrons->{patrons}, 'ARRAY', "The patrons key is an arrayref");
|