access_info login_info login customer_info edit_info invoice
payment_info process_payment realtime_collect process_prepay
list_pkgs order_pkg signup_info order_recharge
- part_svc_info provision_acct provision_external
+ part_svc_info provision_acct provision_external provision_phone
unprovision_svc change_pkg suspend_pkg domainselector
list_svcs list_svc_usage list_cdr_usage list_support_usage
myaccount_passwd list_invoices create_ticket get_ticket did_report
$template_dir = '.';
-$DEBUG = 1;
+$DEBUG = 0;
$form_max = 255;
$session_id = $cgi->param('session');
#order|pw_list XXX ???
-$cgi->param('action') =~
- /^(myaccount|tktcreate|tktview|didreport|invoices|view_invoice|make_payment|make_ach_payment|make_term_payment|make_thirdparty_payment|payment_results|ach_payment_results|recharge_prepay|recharge_results|logout|change_bill|change_ship|change_pay|process_change_bill|process_change_ship|process_change_pay|customer_order_pkg|process_order_pkg|customer_change_pkg|process_change_pkg|process_order_recharge|provision|provision_svc|process_svc_acct|process_svc_external|delete_svc|view_usage|view_usage_details|view_cdr_details|view_support_details|change_password|process_change_password|customer_suspend_pkg|process_suspend_pkg)$/
+my @actions = ( qw(
+ myaccount
+ tktcreate
+ tktview
+ didreport
+ invoices
+ view_invoice
+ make_payment
+ make_ach_payment
+ make_term_payment
+ make_thirdparty_payment
+ post_thirdparty_payment
+ payment_results
+ ach_payment_results
+ recharge_prepay
+ recharge_results
+ logout
+ change_bill
+ change_ship
+ change_pay
+ process_change_bill
+ process_change_ship
+ process_change_pay
+ customer_order_pkg
+ process_order_pkg
+ customer_change_pkg
+ process_change_pkg
+ process_order_recharge
+ provision
+ provision_svc
+ process_svc_acct
+ process_svc_phone
+ process_svc_external
+ delete_svc
+ view_usage
+ view_usage_details
+ view_cdr_details
+ view_support_details
+ change_password
+ process_change_password
+ customer_suspend_pkg
+ process_suspend_pkg
+));
+
+$cgi->param('action') =~ ( '^(' . join('|', @actions) . ')$' )
or die "unknown action ". $cgi->param('action');
my $action = $1;
my $result = eval "&$action();";
die $@ if $@;
-#fixed "Use of uninitialized value in string eq"; very annoying when developing
-if ( $result->{error} && ($result->{error} eq "Can't resume session"
- || $result->{error} eq "Expired session") ) {
+warn Dumper($result) if $DEBUG;
+
+if ( $result->{error} && ( $result->{error} eq "Can't resume session"
+ || $result->{error} eq "Expired session") ) { #ick
+
my $login_info = login_info();
do_template('login', $login_info);
exit;
#--
use Data::Dumper;
-sub myaccount { my $result = customer_info( 'session_id' => $session_id ); warn Dumper($result); $result;}
+sub myaccount {
+ customer_info( 'session_id' => $session_id );
+}
sub change_bill { my $payment_info =
payment_info( 'session_id' => $session_id );
}
sub make_thirdparty_payment {
+ payment_info('session_id' => $session_id);
+}
+
+sub post_thirdparty_payment {
$cgi->param('payby_method') =~ /^(CC|ECHECK)$/
or die "illegal payby method";
- realtime_collect( 'session_id' => $session_id, 'method' => $1 );
+ my $method = $1;
+ $cgi->param('amount') =~ /^(\d+(\.\d*)?)$/
+ or die "illegal amount";
+ my $amount = $1;
+ my $result = realtime_collect(
+ 'session_id' => $session_id,
+ 'method' => $method,
+ 'amount' => $amount,
+ );
+ $result;
}
sub make_term_payment {
sub didreport {
my $result = did_report( 'session_id' => $session_id,
- 'format' => $cgi->param('type'),
- 'recentonly' => $cgi->param('recentonly'),
- );
+ 'format' => $cgi->param('type'),
+ 'recentonly' => $cgi->param('recentonly'),
+ );
die $result->{'error'} if exists $result->{'error'} && $result->{'error'};
$result;
}
my $result = part_svc_info(
'session_id' => $session_id,
- map { $_ => $cgi->param($_) } qw( pkgnum svcpart ),
+ map { $_ => $cgi->param($_) } qw( pkgnum svcpart svcnum ),
);
die $result->{'error'} if exists $result->{'error'} && $result->{'error'};
or die 'Unknown svcdb '. $result->{'svcdb'};
$action .= "_$1";
+ $result->{'numavail'} = $cgi->param('numavail');
+ $result->{'lnp'} = $cgi->param('lnp');
+
+ $result;
+}
+
+sub process_svc_phone {
+ my @bulkdid = $cgi->param('bulkdid');
+ my $phonenum = $cgi->param('phonenum');
+ my $lnp = $cgi->param('lnp');
+
+ my $result;
+ if($lnp) {
+ $result = provision_phone (
+ 'session_id' => $session_id,
+ 'countrycode' => '1',
+ map { $_ => $cgi->param($_) } qw( pkgnum svcpart phonenum
+ lnp_desired_due_date lnp_other_provider
+ lnp_other_provider_account )
+ );
+ } else {
+ $result = provision_phone (
+ 'session_id' => $session_id,
+ 'bulkdid' => [ @bulkdid ],
+ 'countrycode' => '1',
+ map { $_ => $cgi->param($_) } qw( pkgnum svcpart phonenum svcnum email forwarddst )
+ );
+ }
+
+ if ( exists $result->{'error'} && $result->{'error'} ) {
+ $action = 'provision_svc_phone';
+ return {
+ $cgi->Vars,
+ %{ part_svc_info( 'session_id' => $session_id,
+ map { $_ => $cgi->param($_) } qw( pkgnum svcpart svcnum )
+ )
+ },
+ 'error' => $result->{'error'},
+ };
+ }
+
$result;
}
)
or die $Text::Template::ERROR;
- #warn "filling in $template with $fill_in\n";
-
if($result && ref($result) && $result->{'format'} && $result->{'content'}
&& $result->{'format'} eq 'csv') {
- print $cgi->header('-expires' => 'now',
- '-Content-Type' => 'text/csv',
- '-Content-Disposition' => "attachment;filename=output.csv",
- ),
- $result->{'content'};
+ print $cgi->header('-expires' => 'now',
+ '-Content-Type' => 'text/csv',
+ '-Content-Disposition' => "attachment;filename=output.csv",
+ ),
+ $result->{'content'};
}
elsif($result && ref($result) && $result->{'format'} && $result->{'content'}
- && $result->{'format'} eq 'xls') {
+ && $result->{'format'} eq 'xls') {
print $cgi->header('-expires' => 'now',
- '-Content-Type' => 'application/vnd.ms-excel',
- '-Content-Disposition' => "attachment;filename=output.xls",
- '-Content-Length' => length($result->{'content'}),
- ),
- $result->{'content'};
+ '-Content-Type' => 'application/vnd.ms-excel',
+ '-Content-Disposition' => "attachment;filename=output.xls",
+ '-Content-Length' => length($result->{'content'}),
+ ),
+ $result->{'content'};
}
else {
- print $cgi->header( '-expires' => 'now' ),
- $template->fill_in( PACKAGE => 'FS::SelfService::_selfservicecgi',
- HASH => $fill_in
- );
+ my $data = $template->fill_in(
+ PACKAGE => 'FS::SelfService::_selfservicecgi',
+ HASH => $fill_in,
+ ) || "Error processing template $source"; # at least print _something_
+ print $cgi->header( '-expires' => 'now' );
+ print $data;
}
-
-}
+ }
#*FS::SelfService::_selfservicecgi::include = \&Text::Template::fill_in_file;
package FS::SelfService::_selfservicecgi;
-#use FS::SelfService qw(regionselector expselect popselector);
use HTML::Entities;
-use FS::SelfService qw(regionselector popselector domainselector location_form);
+use FS::SelfService qw(
+ regionselector popselector domainselector location_form didselector
+);
#false laziness w/agent.cgi
use vars qw(@INCLUDE_ARGS);