RT# 83341 - added ability to sort by name in advanced customer reports
[freeside.git] / FS / FS / UI / Web.pm
index 8a1d502..b6dda8f 100644 (file)
@@ -414,7 +414,14 @@ sub cust_sort_fields {
   cust_header(@_) if( @_ or !@cust_fields );
   #inefficientish, but tiny lists and only run once per page
 
-  map { $_ eq 'custnum' ? 'custnum' : '' } @cust_fields;
+  my @sort_fields;
+  foreach (@cust_fields) {
+    if ($_ eq "custnum") { push @sort_fields, 'custnum'; }
+    elsif ($_ eq "contact" || $_ eq "name") { push @sort_fields, '(last, first)'; }
+    elsif ($_ eq "company") { push @sort_fields, 'company'; }
+    else { push @sort_fields, ''; }
+  }
+  return @sort_fields;
 
 }
 
@@ -471,9 +478,9 @@ sub cust_sql_fields {
 =item join_cust_main [ TABLE[.CUSTNUM] ] [ LOCATION_TABLE[.LOCATIONNUM] ]
 
 Returns an SQL join phrase for the FROM clause so that the fields listed
-in L<cust_sql_fields> will be available.  Currently joins to cust_main 
+in L</cust_sql_fields> will be available.  Currently joins to cust_main
 itself, as well as cust_location (under the aliases 'bill_location' and
-'ship_location') if address fields are needed.  L<cust_header()> should have
+'ship_location') if address fields are needed.  L</cust_header> should have
 been called already.
 
 All of these will be left joins; if you want to exclude rows with no linked