selfservice priority sort order, #14029
[freeside.git] / httemplate / view / cust_main / tickets.html
index 0c48d21..adfaead 100644 (file)
@@ -122,7 +122,7 @@ my $open_link = FS::TicketSystem->href_customer_tickets($cust_main->custnum);
 my $openlabel = join('/', FS::TicketSystem->statuses );
 
 my $res_link  = FS::TicketSystem->href_customer_tickets(
-                  $cust_main->Custnum,
+                  $cust_main->custnum,
                   { 'statuses' => [ 'resolved' ] }
                 );
 
@@ -132,6 +132,25 @@ my( $new_base, %new_param ) =
 my $new_link = FS::TicketSystem->href_new_ticket( $cust_main );
 
 my $ss_priority = FS::TicketSystem->selfservice_priority;
+if ( $ss_priority ) {
+  my $dir = $conf->exists('ticket_system-priority_reverse') ? -1 : 1;
+  use sort 'stable';
+  # sort in the following way:
+  @tickets = sort { 
+    # within a severity level...
+    ( $a->{'content'} eq $b->{'content'} ) ? (
+      # no-priority tickets sort last
+      (
+        ($a->{'_selfservice_priority'} eq '') <=> 
+        ($b->{'_selfservice_priority'} eq '')
+      ) ||
+      # otherwise obey ticket_system-priority_reverse
+      ( $dir * 
+        ($b->{'_selfservice_priority'} <=> $a->{'_selfservice_priority'})
+      )
+    ) : 0; # but don't rearrange between severity levels
+  } @tickets;
+}
 
 my $format = $conf->config('date_format') || '%Y-%m-%d';