Bug 13189 - Patron card creator patron search browse by last name broken by extended...
authorKyle M Hall <kyle@bywatersolutions.com>
Mon, 3 Nov 2014 14:31:27 +0000 (09:31 -0500)
committerTomas Cohen Arazi <tomascohen@gmail.com>
Thu, 12 Feb 2015 18:35:07 +0000 (15:35 -0300)
The browse by last name letters on the patron search for the patron card
creator doesn't work quite right. If extended patron attributes are
disabled, it works fine, but if they are enabled, they are searched even
when using the browse last name. Thus, if a searchable attribute has a
"D" in it, and one clicks the "D" link for the last name browser, that
patron will show even if he or she has no "D" in his or her hame!

Test Plan:
1) Enable extended patron attributes
2) Add a new searchable patron attribute
3) Create a new patron with the last name "Ace"
4) Add the value "D" to the attribute for this patron
5) Browse to the patron card maker, start a new patron batch
6) Click "Add item(s)" to bring up the patron search
7) Click the letter "D" in the patron search box
8) Note that "Ace" shows in the results list
9) Apply this patch
10) Repeat step 7
11) Note that "Ace" no longer shows in the results list
12) Perform a regular search by putting the letter "D" in the "Name:"
    field, and hit the "Search" button
13) Note this time the results *do* have Ace in them

Signed-off-by: Frederic Demians <f.demians@tamil.fr>
  Well described for a tricky bug. Reproducible. Fixed with this patch.

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
This works as described, no problems or regressions found.

C4/Members.pm
koha-tmpl/intranet-tmpl/prog/en/modules/patroncards/members-search.tt
patroncards/members-search.pl

index 6f95b94..4fb845d 100644 (file)
@@ -203,7 +203,7 @@ sub _express_member_find {
 }
 
 sub Search {
-    my ( $filter, $orderby, $limit, $columns_out, $search_on_fields, $searchtype ) = @_;
+    my ( $filter, $orderby, $limit, $columns_out, $search_on_fields, $searchtype, $not_attributes ) = @_;
 
     my $search_string;
     my $found_borrower;
@@ -237,7 +237,7 @@ sub Search {
         }
     }
 
-    if ( !$found_borrower && C4::Context->preference('ExtendedPatronAttributes') && $search_string ) {
+    if ( !$found_borrower && C4::Context->preference('ExtendedPatronAttributes') && $search_string && !$not_attributes ) {
         my $matching_records = C4::Members::Attributes::SearchIdMatchingAttribute($search_string);
         if(scalar(@$matching_records)>0) {
             if ( my $fr = ref $filter ) {
index 50289c1..b0e7702 100644 (file)
@@ -50,7 +50,7 @@ function add_item(borrowernum,batch_id,type_id){
 <div class="browse">
     Browse by last name:
     [% FOREACH letter IN alphabet.split(' ') %]
-        <a href="/cgi-bin/koha/patroncards/members-search.pl?member=[% letter %]&amp;batch_id=[% batch_id %]">[% letter %]</a>
+        <a href="/cgi-bin/koha/patroncards/members-search.pl?not_attributes=1&amp;member=[% letter %]&amp;batch_id=[% batch_id %]">[% letter %]</a>
     [% END %]
 </div>
 
index 3492c7d..0c680a0 100755 (executable)
@@ -35,6 +35,7 @@ my $resultsperpage = $cgi->param('resultsperpage')||C4::Context->preference("Pat
 my $category = $cgi->param('category') || undef;
 my $member = $cgi->param('member') || '';
 my $orderby = $cgi->param('orderby') || undef;
+my $not_attributes = $cgi->param('not_attributes') || undef;
 
 my @categories=C4::Category->all;
 my %categories_display;
@@ -72,8 +73,8 @@ $member =~ s/,//g;   #remove any commas from search string
 $member =~ s/\*/%/g;
 
 if ($member || $category) {
-    my $results = $category ? Search({''=>$member, categorycode=>$category}, $orderby)
-                            : Search($member, $orderby);
+    my $results = $category ? Search({''=>$member, categorycode=>$category}, $orderby, undef, undef, undef, undef, $not_attributes )
+                            : Search($member, $orderby, undef, undef, undef, undef, $not_attributes);
     my $count = $results ? @$results : 0;
 
     my @resultsdata = ();