prepaid download/upload tracking
[freeside.git] / FS / FS / ClientAPI / MyAccount.pm
index c0fb46b..eb49a6d 100644 (file)
@@ -8,9 +8,11 @@ use Date::Format;
 use Business::CreditCard;
 use Time::Duration;
 use FS::CGI qw(small_custview); #doh
+use FS::UI::Web;
 use FS::Conf;
 use FS::Record qw(qsearch qsearchs);
 use FS::Msgcat qw(gettext);
+use FS::Misc qw(card_types);
 use FS::ClientAPI_SessionCache;
 use FS::svc_acct;
 use FS::svc_domain;
@@ -213,31 +215,6 @@ sub payment_info {
                      'country' => $conf->config('countrydefault') || 'US'
                    } );
 
-    my %card_types = (
-      #displayname                    #value (Business::CreditCard)
-      "VISA"                       => "VISA card",
-      "MasterCard"                 => "MasterCard",
-      "Discover"                   => "Discover card",
-      "American Express"           => "American Express card",
-      "Diner's Club/Carte Blanche" => "Diner's Club/Carte Blanche",
-      "enRoute"                    => "enRoute",
-      "JCB"                        => "JCB",
-      "BankCard"                   => "BankCard",
-      "Switch"                     => "Switch",
-      "Solo"                       => "Solo",
-    );
-    my @conf_card_types = grep { ! /^\s*$/ } $conf->config('card-types');
-    if ( @conf_card_types ) {
-      #perhaps the hash is backwards for this, but this way works better for
-      #usage in selfservice
-      %card_types = map  { $_ => $card_types{$_} }
-                    grep {
-                           my $d = $_;
-                          grep { $card_types{$d} eq $_ } @conf_card_types
-                         }
-                   keys %card_types;
-    }
-
     $payment_info = {
 
       #list all counties/states/countries
@@ -248,14 +225,7 @@ sub payment_info {
       'states' =>
         [ sort { $a cmp $b } keys %states ],
 
-      'card_types' => {
-        'VISA' => 'VISA card',
-        'MasterCard' => 'MasterCard',
-        'Discover' => 'Discover card',
-        'American Express' => 'American Express card',
-        'Switch' => 'Switch',
-        'Solo' => 'Solo',
-      },
+      'card_types' => card_types(),
 
     };
 
@@ -409,10 +379,12 @@ sub process_prepay {
   my $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } )
     or return { 'error' => "unknown custnum $custnum" };
 
-  my( $amount, $seconds ) = ( 0, 0 );
+  my( $amount, $seconds, $upbytes, $downbytes ) = ( 0, 0, 0, 0 );
   my $error = $cust_main->recharge_prepay( $p->{'prepaid_cardnum'},
                                            \$amount,
-                                           \$seconds
+                                           \$seconds,
+                                           \$upbytes,
+                                           \$downbytes
                                          );
 
   return { 'error' => $error } if $error;
@@ -421,6 +393,10 @@ sub process_prepay {
            'amount'   => $amount,
            'seconds'  => $seconds,
            'duration' => duration_exact($seconds),
+           'upbytes'  => $upbytes,
+           'upload'   => FS::UI::Web::bytecount_unexact($upbytes),
+           'downbytes'=> $downbytes,
+           'download' => FS::UI::Web::bytecount_unexact($downbytes),
          };
 
 }
@@ -570,7 +546,9 @@ sub list_svcs {
 
   my @cust_svc = ();
   #foreach my $cust_pkg ( $cust_main->ncancelled_pkgs ) {
-  foreach my $cust_pkg ( $cust_main->unsuspended_pkgs ) {
+  foreach my $cust_pkg ( $p->{'ncancelled'} 
+                         ? $cust_main->ncancelled_pkgs
+                         : $cust_main->unsuspended_pkgs ) {
     push @cust_svc, @{[ $cust_pkg->cust_svc ]}; #@{[ ]} to force array context
   }
   @cust_svc = grep { $_->part_svc->svcdb eq $p->{'svcdb'} } @cust_svc
@@ -591,6 +569,9 @@ sub list_svcs {
                             'value'    => $value,
                             'username' => $svc_x->username,
                             'email'    => $svc_x->email,
+                            'seconds'  => $svc_x->seconds,
+                            'upbytes'  => $svc_x->upbytes,
+                            'downbytes'=> $svc_x->downbytes,
                             # more...
                           };
                         }