add Excel and CSV download of templated reports and clean up their HTML formatting...
[freeside.git] / httemplate / search / cust_main.cgi
index 48fbf41..a325667 100755 (executable)
@@ -71,7 +71,7 @@ if ( $cgi->param('browse')
     } elsif ( $query eq 'tickets' ) {
       $sortby = \*tickets_sort;
       $orderby = "ORDER BY tickets DESC";
-      push @select, FS::TicketSystem->sql_customer_tickets. " as tickets";
+      push @select, FS::TicketSystem->sql_num_customer_tickets. " as tickets";
       push @addl_headers, 'Tickets';
       push @addl_cols, 'tickets';
     } else {
@@ -279,12 +279,13 @@ if ( scalar(@cust_main) == 1 && ! $cgi->param('referral_custnum') ) {
     }
     print ' cancelled customers</a> )';
   }
+
   if ( $cgi->param('referral_custnum') ) {
     $cgi->param('referral_custnum') =~ /^(\d+)$/
       or eidiot "Illegal referral_custnum\n";
     my $referral_custnum = $1;
     my $cust_main = qsearchs('cust_main', { custnum => $referral_custnum } );
-    print '<FORM METHOD=POST>'.
+    print '<FORM METHOD="GET">'.
           qq!<INPUT TYPE="hidden" NAME="referral_custnum" VALUE="$referral_custnum">!.
           'referrals of <A HREF="'. popurl(2).
           "view/cust_main.cgi?$referral_custnum\">$referral_custnum: ".
@@ -314,6 +315,13 @@ END
           '</FORM>';
   }
 
+  my @custom_priorities = ();
+  if ( $conf->config('ticket_system-custom_priority_field')
+       && @{[ $conf->config('ticket_system-custom_priority_field-values') ]} ) {
+    @custom_priorities =
+      $conf->config('ticket_system-custom_priority_field-values');
+  }
+
   print "<BR><BR>". $pager. &table(). <<END;
       <TR>
         <TH></TH>
@@ -390,12 +398,47 @@ END
     }
 
     foreach my $addl_col ( @addl_cols ) {
-      print "<TD ROWSPAN=$rowspan>". 
-            qq!<A HREF="${p}rt/Search/Results.html?Order=ASC&Query=%20MemberOf%20%3D%20%27freeside%3A%2F%2Ffreeside%2Fcust_main%2F!.
-            $cust_main->custnum. 
-            qq!%27%20%20AND%20%28%20Status%20%3D%20%27open%27%20%20OR%20Status%20%3D%20%27new%27%20%20OR%20Status%20%3D%20%27stalled%27%20%29%20&Rows=50&OrderBy=id&Page=1&Format=%27%20%20%20%3Cb%3E%3Ca%20href%3D%22%2Ffreeside%2Frt%2FTicket%2FDisplay.html%3Fid%3D__id__%22%3E__id__%3C%2Fa%3E%3C%2Fb%3E%2FTITLE%3A%23%27%2C%20%0A%27%3Cb%3E%3Ca%20href%3D%22%2Ffreeside%2Frt%2FTicket%2FDisplay.html%3Fid%3D__id__%22%3E__Subject__%3C%2Fa%3E%3C%2Fb%3E%2FTITLE%3ASubject%27%2C%20%0A%27__Status__%27%2C%20%0A%27__QueueName__%27%2C%20%0A%27__OwnerName__%27%2C%20%0A%27__Priority__%27%2C%20%0A%27__NEWLINE__%27%2C%20%0A%27%27%2C%20%0A%27%3Csmall%3E__Requestors__%3C%2Fsmall%3E%27%2C%20%0A%27%3Csmall%3E__CreatedRelative__%3C%2Fsmall%3E%27%2C%20%0A%27%3Csmall%3E__ToldRelative__%3C%2Fsmall%3E%27%2C%20%0A%27%3Csmall%3E__LastUpdatedRelative__%3C%2Fsmall%3E%27%2C%20%0A%27%3Csmall%3E__TimeLeft__%3C%2Fsmall%3E%27">!.
-              $cust_main->get($addl_col).
-            "</A></TD>";
+      print "<TD ROWSPAN=$rowspan ALIGN=right><FONT SIZE=-1>";
+      if ( $addl_col eq 'tickets' ) {
+        if ( @custom_priorities ) {
+          print &itable('', 0);
+          foreach my $priority ( @custom_priorities, '' ) {
+          
+            my $num =
+              FS::TicketSystem->num_customer_tickets($custnum,$priority);
+            my $ahref = '';
+            $ahref= '<A HREF="'.
+                    FS::TicketSystem->href_customer_tickets($custnum,$priority).
+                    '">'
+              if $num;
+
+            print '<TR>'.
+                  "  <TD ALIGN=right><FONT SIZE=-1>$ahref$num</A></FONT></TD>".
+                  "<TD ALIGN=left><FONT SIZE=-1>$ahref".
+                  ( $priority || '<i>(none)</i>' ).
+                  "</A></FONT></TD></TR>";
+
+          }
+          print '<TR><TD BGCOLOR="#000000" COLSPAN=2></TD></TR>'.
+                '<TR><TD ALIGN=right><FONT SIZE=-1>';
+        }
+
+        my $ahref = '';
+        $ahref = '<A HREF="'.
+                    FS::TicketSystem->href_customer_tickets($custnum).
+                    '">'
+          if $cust_main->get($addl_col);
+
+        print $ahref. $cust_main->get($addl_col). '</A>';
+        print "</FONT></TD><TD ALIGN=left>".
+              "<FONT SIZE=-1>${ahref}Total</A><FONT>".
+              "</TD></TR></TABLE>"
+          if @custom_priorities;
+
+      } else {
+        print $cust_main->get($addl_col);
+      }
+      print "</FONT></TD>";
     }
 
     my($n1)='';