This commit was generated by cvs2svn to compensate for changes in r4407,
[freeside.git] / fs_selfservice / FS-SelfService / cgi / selfservice.cgi
index d8e044a..034a684 100644 (file)
@@ -6,10 +6,13 @@ use subs qw(do_template);
 use CGI;
 use CGI::Carp qw(fatalsToBrowser);
 use Text::Template;
+use HTML::Entities;
 use FS::SelfService qw( login customer_info invoice
                         payment_info process_payment 
+                        process_prepay
                         list_pkgs
-                        part_svc_info provision_acct unprovision_svc
+                        part_svc_info provision_acct provision_external
+                        unprovision_svc
                       );
 
 $template_dir = '.';
@@ -59,7 +62,7 @@ $session_id = $cgi->param('session');
 
 #order|pw_list XXX ???
 $cgi->param('action') =~
-    /^(myaccount|view_invoice|make_payment|payment_results|logout|change_bill|change_ship|provision|provision_svc|process_svc_acct|delete_svc)$/
+    /^(myaccount|view_invoice|make_payment|payment_results|recharge_prepay|recharge_results|logout|change_bill|change_ship|provision|provision_svc|process_svc_acct|process_svc_external|delete_svc)$/
   or die "unknown action ". $cgi->param('action');
 my $action = $1;
 
@@ -77,6 +80,7 @@ if ( $result->{error} eq "Can't resume session" ) { #ick
 warn "processing template $action\n";
 do_template($action, {
   'session_id' => $session_id,
+  'action'     => $action, #so the menu knows what tab we're on...
   %{$result}
 });
 
@@ -171,12 +175,30 @@ sub payment_results {
 
 }
 
+sub recharge_prepay {
+  customer_info( 'session_id' => $session_id );
+}
+
+sub recharge_results {
+
+  my $prepaid_cardnum = $cgi->param('prepaid_cardnum');
+  $prepaid_cardnum =~ s/\W//g;
+  $prepaid_cardnum =~ /^(\w*)$/ or die "illegal prepaid card number";
+  $prepaid_cardnum = $1;
+
+  process_prepay ( 'session_id'     => $session_id,
+                   'prepaid_cardnum' => $prepaid_cardnum,
+                 );
+}
+
 sub logout {
   FS::SelfService::logout( 'session_id' => $session_id );
 }
 
 sub provision {
-  list_pkgs( 'session_id' => $session_id );
+  my $result = list_pkgs( 'session_id' => $session_id );
+  die $result->{'error'} if exists $result->{'error'} && $result->{'error'};
+  $result;
 }
 
 sub provision_svc {
@@ -204,7 +226,7 @@ sub process_svc_acct {
   );
 
   if ( exists $result->{'error'} && $result->{'error'} ) { 
-    warn "$result $result->{'error'}"; 
+    #warn "$result $result->{'error'}"; 
     $action = 'provision_svc_acct';
     return {
       $cgi->Vars,
@@ -215,12 +237,19 @@ sub process_svc_acct {
       'error' => $result->{'error'},
     };
   } else {
-    warn "$result $result->{'error'}"; 
+    #warn "$result $result->{'error'}"; 
     return $result;
   }
 
 }
 
+sub process_svc_external {
+  provision_external (
+    'session_id' => $session_id,
+    map { $_ => $cgi->param($_) } qw( pkgnum svcpart )
+  );
+}
+
 sub delete_svc {
   unprovision_svc(
     'session_id' => $session_id,
@@ -255,8 +284,10 @@ sub do_template {
 package FS::SelfService::_selfservicecgi;
 
 #use FS::SelfService qw(regionselector expselect popselector);
+use HTML::Entities;
 use FS::SelfService qw(popselector);
 
+#false laziness w/agent.cgi
 sub include {
   my $name = shift;
   my $template = new Text::Template( TYPE   => 'FILE',
@@ -266,7 +297,9 @@ sub include {
                                    )
     or die $Text::Template::ERROR;
 
-  $template->fill_in();
+  $template->fill_in( PACKAGE => 'FS::SelfService::_selfservicecgi',
+                      #HASH    => $fill_in
+                    );
 
 }