add status info to list_pkgs call, RT#13656
[freeside.git] / FS / FS / ClientAPI / MyAccount.pm
index cf8e1cc..a1fd4b3 100644 (file)
@@ -20,6 +20,7 @@ use FS::Msgcat qw(gettext);
 use FS::Misc qw(card_types);
 use FS::Misc::DateTime qw(parse_datetime);
 use FS::ClientAPI_SessionCache;
+use FS::cust_svc;
 use FS::svc_acct;
 use FS::svc_domain;
 use FS::svc_phone;
@@ -339,7 +340,25 @@ sub customer_info {
       $return{balance} = $cust_main->balance;
     }
 
-    $return{tickets} = [ ($cust_main->tickets) ];
+    my @tickets = $cust_main->tickets;
+    # unavoidable false laziness w/ httemplate/view/cust_main/tickets.html
+    if ( FS::TicketSystem->selfservice_priority ) {
+      my $dir = $conf->exists('ticket_system-priority_reverse') ? -1 : 1;
+      $return{tickets} = [ 
+        sort { 
+          (
+            ($a->{'_selfservice_priority'} eq '') <=>
+            ($b->{'_selfservice_priority'} eq '')
+          ) ||
+          ( $dir * 
+            ($b->{'_selfservice_priority'} <=> $a->{'_selfservice_priority'}) 
+          )
+        } @tickets
+      ];
+    }
+    else {
+      $return{tickets} = \@tickets;
+    }
 
     unless ( $session->{'pkgnum'} ) {
       my @open = map {
@@ -400,6 +419,11 @@ sub customer_info {
       $return{discount_terms_hash} = { $cust_main->discount_terms_hash };
     }
 
+    if ( $session->{'svcnum'} ) {
+      my $cust_svc = qsearchs('cust_svc', { 'svcnum' => $session->{'svcnum'} });
+      $return{'svc_label'} = ($cust_svc->label)[1] if $cust_svc;
+    }
+
   } elsif ( $session->{'svcnum'} ) { #no customer record
 
     my $svc_acct = qsearchs('svc_acct', { 'svcnum' => $session->{'svcnum'} } )
@@ -673,7 +697,7 @@ sub process_payment {
       if $cust_main->paymask eq $payinfo;
 
     $payinfo =~ s/\D//g;
-    $payinfo =~ /^(\d{13,16})$/
+    $payinfo =~ /^(\d{13,16}|\d{8,9})$/
       or return { 'error' => gettext('invalid_card') }; # . ": ". $self->payinfo
     $payinfo = $1;
 
@@ -1038,8 +1062,10 @@ sub list_pkgs {
   { 'svcnum'   => $session->{'svcnum'},
     'custnum'  => $custnum,
     'cust_pkg' => [ map {
-                          { $_->hash,
+                          my $primary_cust_svc = $_->primary_cust_svc;
+                          +{ $_->hash,
                             $_->part_pkg->hash,
+                            status => $_->status,
                             part_svc =>
                               [ map $_->hashref, $_->available_part_svc ],
                             cust_svc => 
@@ -1057,6 +1083,14 @@ sub list_pkgs {
                                       $ref;
                                     } $_->cust_svc
                               ],
+                            primary_cust_svc =>
+                              $primary_cust_svc
+                                ? { $primary_cust_svc->hash,
+                                    label => [ $primary_cust_svc->label ],
+                                    finger => $primary_cust_svc->svc_x->finger, #uuh
+                                    $primary_cust_svc->part_svc->hash,
+                                  }
+                                : {}, #'' ?
                           };
                         } $cust_main->ncancelled_pkgs
                   ],