From 6ff02eb18af2dd61ce2dca064414ca183fa02e6e Mon Sep 17 00:00:00 2001 From: ivan Date: Tue, 16 Jul 2002 12:28:02 +0000 Subject: invoice viewing... --- fs_selfservice/FS-SelfService/cgi/login.html | 23 +++++ fs_selfservice/FS-SelfService/cgi/myaccount.html | 47 +++++++++ fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 109 +++++++++++++++++++++ .../FS-SelfService/cgi/view_invoice.html | 21 ++++ 4 files changed, 200 insertions(+) create mode 100644 fs_selfservice/FS-SelfService/cgi/login.html create mode 100644 fs_selfservice/FS-SelfService/cgi/myaccount.html create mode 100644 fs_selfservice/FS-SelfService/cgi/selfservice.cgi create mode 100644 fs_selfservice/FS-SelfService/cgi/view_invoice.html (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/login.html b/fs_selfservice/FS-SelfService/cgi/login.html new file mode 100644 index 000000000..dfbd0137a --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/login.html @@ -0,0 +1,23 @@ +Login +Login

+<%= $error %> +
+ + + + + + + + + + + + + + + +
Username
Domain
Password
+

+
+ diff --git a/fs_selfservice/FS-SelfService/cgi/myaccount.html b/fs_selfservice/FS-SelfService/cgi/myaccount.html new file mode 100644 index 000000000..f8a916eea --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/myaccount.html @@ -0,0 +1,47 @@ +MyAccount +MyAccount

+<%= $url = "$selfurl?session=$session_id;action="; ''; %> +
+MyAccount
+SomethingElse
+
+ +Hello <%= $name %>!

+Your customer number is <%= $custnum %>

+Your contact information
<%= $small_custview %> +Your outstanding balance is $<%= $balance %>

+ +<%= + if ( @open_invoices ) { + $OUT .= ''. + '$td${a}Invoice #". $invoice->{'invnum'}. "$td". + "$td$a". $invoice->{'date'}. "$td". + qq!'. + ''; + $col = $col eq $col1 ? $col2 : $col1; + } + $OUT .= '
Open Invoices'; + my $link = qq!!; + my $a=qq!'; + $OUT .= + "
$a\$!. $invoice->{'owed'}. + '
'; + } else { + $OUT .= 'You have no outstanding invoices.

'; + } +%> + +
+
+small text + + + + diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi new file mode 100644 index 000000000..eae373931 --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -0,0 +1,109 @@ +#!/usr/bin/perl -Tw + +use strict; +use vars qw($cgi $session_id $form_max $template_dir); +use subs qw(do_template); +use CGI; +use CGI::Carp qw(fatalsToBrowser); +use Text::Template; +use FS::SelfService qw(login customer_info invoice); + +$template_dir = '.'; + +$form_max = 255; + +$cgi = new CGI; + +unless ( defined $cgi->param('session') ) { + do_template('login',{}); + exit; +} + +if ( $cgi->param('session') eq 'login' ) { + + $cgi->param('username') =~ /^\s*([a-z0-9_\-\.\&]{0,$form_max})\s*$/i + or die "illegal username"; + my $username = $1; + + $cgi->param('domain') =~ /^\s*([\w\-\.]{0,$form_max})\s*$/ + or die "illegal domain"; + my $domain = $1; + + $cgi->param('password') =~ /^(.{0,$form_max})$/ + or die "illegal password"; + my $password = $1; + + my $rv = login( + 'username' => $username, + 'domain' => $domain, + 'password' => $password, + ); + if ( $rv->{error} ) { + do_template('login', { + 'error' => $rv->{error}, + 'username' => $username, + 'domain' => $domain, + } ); + exit; + } else { + $cgi->param('session' => $rv->{session_id} ); + $cgi->param('action' => 'myaccount' ); + } +} + +$session_id = $cgi->param('session'); + +$cgi->param('action') =~ /^(myaccount|view_invoice)$/ + or die "unknown action ". $cgi->param('action'); +my $action = $1; + +my $result = eval "&$action();"; +die $@ if $@; + +if ( $result->{error} eq "Can't resume session" ) { #ick + do_template('login',{}); + exit; +} + +#warn $result->{'open_invoices'}; +#warn scalar(@{$result->{'open_invoices'}}); + +do_template($action, { + 'session_id' => $session_id, + %{$result} +}); + +#-- + +sub myaccount { customer_info( 'session_id' => $session_id ); } + +sub view_invoice { + + $cgi->param('invnum') =~ /^(\d+)$/ or die "illegal invnum"; + my $invnum = $1; + + invoice( 'session_id' => $session_id, + 'invnum' => $invnum, + ); + +} + +#-- + +sub do_template { + my $name = shift; + my $fill_in = shift; + + $cgi->delete_all(); + $fill_in->{'self_url'} = $cgi->self_url; + + my $template = new Text::Template( TYPE => 'FILE', + SOURCE => "$template_dir/$name.html", + DELIMITERS => [ '<%=', '%>' ], + UNTAINT => 1, ) + or die $Text::Template::ERROR; + + print $cgi->header( '-expires' => 'now' ), + $template->fill_in( HASH => $fill_in ); +} + diff --git a/fs_selfservice/FS-SelfService/cgi/view_invoice.html b/fs_selfservice/FS-SelfService/cgi/view_invoice.html new file mode 100644 index 000000000..33388de99 --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/view_invoice.html @@ -0,0 +1,21 @@ +MyAccount +MyAccount

+<%= $url = "$selfurl?session=$session_id;action="; ''; %> +
+MyAccount
+SomethingElse
+
+ +<-- back to MyAccount

+ +
+<%= $invoice_text %>
+
+ +
+
+small text + + + + -- cgit v1.2.1 From 920c0d8dea4535893157a547c87dda63dca64599 Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 22 Jul 2002 10:51:22 +0000 Subject: adding --- fs_selfservice/FS-SelfService/cgi/passwd.html | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 fs_selfservice/FS-SelfService/cgi/passwd.html (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/passwd.html b/fs_selfservice/FS-SelfService/cgi/passwd.html new file mode 100644 index 000000000..fadc4df8b --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/passwd.html @@ -0,0 +1,25 @@ + + + Change password + + +

Change password

+
+ + + + + + + + + + + + + +
Username
Current password
New password
Re-enter new password
+
+ + + -- cgit v1.2.1 From 9033414f18177eb733d1a227d2be1c15d244f766 Mon Sep 17 00:00:00 2001 From: ivan Date: Tue, 13 May 2003 03:22:35 +0000 Subject: - self-service updates: cleanup and beginnings of "make a payment" - fix pod masking FS::svc_acct::cust_svc --- fs_selfservice/FS-SelfService/cgi/login.html | 15 ++++++++++++--- fs_selfservice/FS-SelfService/cgi/myaccount.html | 13 ++++++++----- fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 8 ++++++-- fs_selfservice/FS-SelfService/cgi/view_invoice.html | 4 ++-- 4 files changed, 28 insertions(+), 12 deletions(-) (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/login.html b/fs_selfservice/FS-SelfService/cgi/login.html index dfbd0137a..112cc34ea 100644 --- a/fs_selfservice/FS-SelfService/cgi/login.html +++ b/fs_selfservice/FS-SelfService/cgi/login.html @@ -6,16 +6,25 @@ - + - + - +
Username + + +
Domain + + +
Password + + +


diff --git a/fs_selfservice/FS-SelfService/cgi/myaccount.html b/fs_selfservice/FS-SelfService/cgi/myaccount.html index f8a916eea..d8bfe0cb1 100644 --- a/fs_selfservice/FS-SelfService/cgi/myaccount.html +++ b/fs_selfservice/FS-SelfService/cgi/myaccount.html @@ -3,20 +3,23 @@ <%= $url = "$selfurl?session=$session_id;action="; ''; %> @@ -23,7 +23,7 @@
MyAccount
-SomethingElse
+
Hello <%= $name %>!

-Your customer number is <%= $custnum %>

Your contact information
<%= $small_custview %> -Your outstanding balance is $<%= $balance %>

+
+<%= if ( $balance ) { + $OUT .= qq! Make a $balance payment!; +} %> +

<%= if ( @open_invoices ) { $OUT .= ''. '
Open Invoices'; - my $link = qq!myaccount!; my $col1 = "ffffff"; my $col2 = "dddddd"; my $col = $col1; @@ -40,7 +43,7 @@ Your outstanding balance is $<%= $balance %>


-small text +powered by freeside diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index eae373931..9b8bdc100 100644 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -53,7 +53,7 @@ if ( $cgi->param('session') eq 'login' ) { $session_id = $cgi->param('session'); -$cgi->param('action') =~ /^(myaccount|view_invoice)$/ +$cgi->param('action') =~ /^(myaccount|view_invoice|make_payment)$/ or die "unknown action ". $cgi->param('action'); my $action = $1; @@ -88,6 +88,10 @@ sub view_invoice { } +sub make_payment { + +} + #-- sub do_template { @@ -95,7 +99,7 @@ sub do_template { my $fill_in = shift; $cgi->delete_all(); - $fill_in->{'self_url'} = $cgi->self_url; + $fill_in->{'selfurl'} = $cgi->self_url; my $template = new Text::Template( TYPE => 'FILE', SOURCE => "$template_dir/$name.html", diff --git a/fs_selfservice/FS-SelfService/cgi/view_invoice.html b/fs_selfservice/FS-SelfService/cgi/view_invoice.html index 33388de99..d2b012b5d 100644 --- a/fs_selfservice/FS-SelfService/cgi/view_invoice.html +++ b/fs_selfservice/FS-SelfService/cgi/view_invoice.html @@ -3,7 +3,7 @@ <%= $url = "$selfurl?session=$session_id;action="; ''; %>
MyAccount
-SomethingElse
+
<-- back to MyAccount

@@ -14,7 +14,7 @@

-small text +powered by freeside -- cgit v1.2.1 From d1d57ae4fa0f2a30b36a70c656aa2672744f75a3 Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 18 May 2003 06:20:21 +0000 Subject: self-service: make payment UI done --- fs_selfservice/FS-SelfService/cgi/login.html | 4 ++-- fs_selfservice/FS-SelfService/cgi/myaccount.html | 7 ++----- fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 5 +++-- 3 files changed, 7 insertions(+), 9 deletions(-) (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/login.html b/fs_selfservice/FS-SelfService/cgi/login.html index 112cc34ea..ca6251eb1 100644 --- a/fs_selfservice/FS-SelfService/cgi/login.html +++ b/fs_selfservice/FS-SelfService/cgi/login.html @@ -8,7 +8,7 @@
Username - +
Password - +
diff --git a/fs_selfservice/FS-SelfService/cgi/myaccount.html b/fs_selfservice/FS-SelfService/cgi/myaccount.html index d8bfe0cb1..f1a63870a 100644 --- a/fs_selfservice/FS-SelfService/cgi/myaccount.html +++ b/fs_selfservice/FS-SelfService/cgi/myaccount.html @@ -9,12 +9,9 @@ Hello <%= $name %>!

Your contact information
<%= $small_custview %>
-<%= if ( $balance ) { - $OUT .= qq! Make a $balance payment!; +<%= if ( $balance > 0 ) { + $OUT .= qq! Make a payment

!; } %> -

- <%= if ( @open_invoices ) { $OUT .= ''. diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index 9b8bdc100..7b392bcf4 100644 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -6,7 +6,7 @@ use subs qw(do_template); use CGI; use CGI::Carp qw(fatalsToBrowser); use Text::Template; -use FS::SelfService qw(login customer_info invoice); +use FS::SelfService qw(login customer_info invoice payment_info); $template_dir = '.'; @@ -68,6 +68,7 @@ if ( $result->{error} eq "Can't resume session" ) { #ick #warn $result->{'open_invoices'}; #warn scalar(@{$result->{'open_invoices'}}); +warn "processing template $action\n"; do_template($action, { 'session_id' => $session_id, %{$result} @@ -89,7 +90,7 @@ sub view_invoice { } sub make_payment { - + payment_info( 'session_id' => $session_id ); } #-- -- cgit v1.2.1 From 2c88b03550a72438bbd75ec7461d2c26fc797efc Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 18 May 2003 08:09:41 +0000 Subject: forgot this file --- .../FS-SelfService/cgi/make_payment.html | 118 +++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 fs_selfservice/FS-SelfService/cgi/make_payment.html (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/make_payment.html b/fs_selfservice/FS-SelfService/cgi/make_payment.html new file mode 100644 index 000000000..d469bddb6 --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/make_payment.html @@ -0,0 +1,118 @@ +MyAccount +MyAccount

+<%= $url = "$selfurl?session=$session_id;action="; ''; %> +
+MyAccount
+ +
+Make a payment

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Amount Due +
+ $<%=sprintf("%.2f",$balance)%> +
+
Payment amount +
+ $"> +
+
Card type + +
Card number + + + + + + + + +
+ Exp. + + / + +
+
Exact name on card
Card billing address + +
Address line 2 + +
City + + + + + + + + +
+ + State + + Zip + +
+
+ + Remember this information +
+ NAME="CARD"> + Charge future payments to this card automatically +
+ + +
+
+powered by freeside + + -- cgit v1.2.1 From 667a729f660ad4f871acd5eb3173303396543eeb Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 18 May 2003 11:44:37 +0000 Subject: interface for making payments all done --- fs_selfservice/FS-SelfService/cgi/make_payment.html | 14 ++++++++------ fs_selfservice/FS-SelfService/cgi/myaccount.html | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/make_payment.html b/fs_selfservice/FS-SelfService/cgi/make_payment.html index d469bddb6..ce1db6865 100644 --- a/fs_selfservice/FS-SelfService/cgi/make_payment.html +++ b/fs_selfservice/FS-SelfService/cgi/make_payment.html @@ -6,7 +6,7 @@ Make a payment

-
+ @@ -29,8 +29,8 @@ - +
Card type @@ -63,7 +63,7 @@
Exact name on card
Card billing address @@ -85,7 +85,7 @@ State @@ -109,7 +109,9 @@
- +
+ +

diff --git a/fs_selfservice/FS-SelfService/cgi/myaccount.html b/fs_selfservice/FS-SelfService/cgi/myaccount.html index f1a63870a..f48fdedea 100644 --- a/fs_selfservice/FS-SelfService/cgi/myaccount.html +++ b/fs_selfservice/FS-SelfService/cgi/myaccount.html @@ -7,7 +7,7 @@ Hello <%= $name %>!

-Your contact information
<%= $small_custview %> +<%= $small_custview %>
<%= if ( $balance > 0 ) { $OUT .= qq! Make a payment

!; -- cgit v1.2.1 From f0afbc011e7b909a2e6ac54039c975710e76f341 Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 19 May 2003 00:15:20 +0000 Subject: processing payments... --- .../FS-SelfService/cgi/make_payment.html | 4 +- fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 73 +++++++++++++++++++++- 2 files changed, 74 insertions(+), 3 deletions(-) (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/make_payment.html b/fs_selfservice/FS-SelfService/cgi/make_payment.html index ce1db6865..6adc0bde0 100644 --- a/fs_selfservice/FS-SelfService/cgi/make_payment.html +++ b/fs_selfservice/FS-SelfService/cgi/make_payment.html @@ -99,12 +99,12 @@ - + Remember this information - NAME="CARD"> + NAME="auto" VALUE="1"> Charge future payments to this card automatically diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index 7b392bcf4..2ce2c8b6c 100644 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -53,7 +53,8 @@ if ( $cgi->param('session') eq 'login' ) { $session_id = $cgi->param('session'); -$cgi->param('action') =~ /^(myaccount|view_invoice|make_payment)$/ +$cgi->param('action') =~ + /^(myaccount|view_invoice|make_payment|process_payment)$/ or die "unknown action ". $cgi->param('action'); my $action = $1; @@ -93,6 +94,76 @@ sub make_payment { payment_info( 'session_id' => $session_id ); } +sub process_payment { + + $cgi->param('amount') =~ /^\s*(\d+(\.\d{2})?)\s*$/ + or die "illegal amount"; #!!! + my $amount = $1; + + my $payinfo = $cgi->param('payinfo'); + $payinfo =~ s/\D//g; + $payinfo =~ /^(\d{13,16})$/ + #or $error ||= $init_data->{msgcat}{invalid_card}; #. $self->payinfo; + or die "illegal card"; #!!! + $payinfo = $1; + validate($payinfo) + #or $error ||= $init_data->{msgcat}{invalid_card}; #. $self->payinfo; + or die "invalid card"; #!!! + cardtype($payinfo) eq $cgi->param('card_type') + #or $error ||= $init_data->{msgcat}{not_a}. $cgi->param('CARD_type'); + or die "not a ". $cgi->param('card_type'); + + $cgi->param('month') =~ /^(\d{2})$/ or die "illegal month"; + my $month = $1; + $cgi->param('year') =~ /^(\d{4})$/ or die "illegal year"; + my $year = $1; + + $cgi->param('payname') =~ /^(.{0,80})$/ or die "illegal payname"; + my $payname = $1; + + $cgi->param('address1') =~ /^(.{0,80})$/ or die "illegal address1"; + my $address1 = $1; + + $cgi->param('address2') =~ /^(.{0,80})$/ or die "illegal address2"; + my $address2 = $1; + + $cgi->param('city') =~ /^(.{0,80})$/ or die "illegal city"; + my $city = $1; + + $cgi->param('state') =~ /^(.{2})$/ or die "illegal state"; + my $state = $1; + + $cgi->param('zip') =~ /^(.{0,10})$/ or die "illegal zip"; + my $zip = $1; + + my $save = 0; + $save = 1 if $cgi->param('save'); + + my $auto = 0; + $auto = 1 if $cgi->param('auto'); + + $cgi->param('paybatch') =~ /^([\w\-\.]+)$/ or die "illegal paybatch"; + my $patbatch = $1; + + process_payment( + 'session_id' => $session_id, + 'amount' => $amount, + 'payinfo' => $payinfo, + 'month' => $month, + 'year' => $year, + 'payname' => $payname, + 'address1' => $address1, + 'address2' => $address2, + 'city' => $city, + 'state' => $state, + 'zip' => $zip, + 'save' => $save, + 'auto' => $auto, + 'paybatch' => $paybatch, + ); + +} + #-- sub do_template { -- cgit v1.2.1 From a1295d0682aa81a408abe06fcaa7c14440f6a2e2 Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 19 May 2003 13:38:41 +0000 Subject: first crack at payment processing with self-service (step two of the process) --- fs_selfservice/FS-SelfService/cgi/make_payment.html | 4 ++-- fs_selfservice/FS-SelfService/cgi/process_payment.html | 18 ++++++++++++++++++ fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 4 +++- 3 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 fs_selfservice/FS-SelfService/cgi/process_payment.html (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/make_payment.html b/fs_selfservice/FS-SelfService/cgi/make_payment.html index 6adc0bde0..fdb411b11 100644 --- a/fs_selfservice/FS-SelfService/cgi/make_payment.html +++ b/fs_selfservice/FS-SelfService/cgi/make_payment.html @@ -31,7 +31,7 @@ @@ -104,7 +104,7 @@ - NAME="auto" VALUE="1"> + NAME="auto" VALUE="1" onClick="if (this.checked) { document.OneTrueForm.save.checked=true; }"> Charge future payments to this card automatically diff --git a/fs_selfservice/FS-SelfService/cgi/process_payment.html b/fs_selfservice/FS-SelfService/cgi/process_payment.html new file mode 100644 index 000000000..e4946dc8f --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/process_payment.html @@ -0,0 +1,18 @@ +MyAccount +MyAccount

+<%= $url = "$selfurl?session=$session_id;action="; ''; %> +
+MyAccount
+ +
+Payment results

+<%= if ( $error ) { + $OUT .= qq!Error processing your payment: $error +
+
+powered by freeside + + diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index 2ce2c8b6c..d43df4041 100644 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -96,6 +96,8 @@ sub make_payment { sub process_payment { + use Business::CreditCard; + $cgi->param('amount') =~ /^\s*(\d+(\.\d{2})?)\s*$/ or die "illegal amount"; #!!! my $amount = $1; @@ -143,7 +145,7 @@ sub process_payment { $auto = 1 if $cgi->param('auto'); $cgi->param('paybatch') =~ /^([\w\-\.]+)$/ or die "illegal paybatch"; - my $patbatch = $1; + my $paybatch = $1; process_payment( 'session_id' => $session_id, -- cgit v1.2.1 From e2a51e422dbd070a4571f229f8e5c6929950d137 Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 19 May 2003 13:54:55 +0000 Subject: fix up some bugs in processing payments via self-service... appears to be working so far --- fs_selfservice/FS-SelfService/cgi/make_payment.html | 4 ++-- fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/make_payment.html b/fs_selfservice/FS-SelfService/cgi/make_payment.html index fdb411b11..1d860f08a 100644 --- a/fs_selfservice/FS-SelfService/cgi/make_payment.html +++ b/fs_selfservice/FS-SelfService/cgi/make_payment.html @@ -8,7 +8,7 @@ Make a payment

- + @@ -110,7 +110,7 @@
Amount Due

- +
diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index d43df4041..456d2dde2 100644 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -6,7 +6,8 @@ use subs qw(do_template); use CGI; use CGI::Carp qw(fatalsToBrowser); use Text::Template; -use FS::SelfService qw(login customer_info invoice payment_info); +use FS::SelfService qw( login customer_info invoice payment_info + process_payment ); $template_dir = '.'; @@ -54,7 +55,7 @@ if ( $cgi->param('session') eq 'login' ) { $session_id = $cgi->param('session'); $cgi->param('action') =~ - /^(myaccount|view_invoice|make_payment|process_payment)$/ + /^(myaccount|view_invoice|make_payment|do_payment)$/ or die "unknown action ". $cgi->param('action'); my $action = $1; @@ -94,7 +95,7 @@ sub make_payment { payment_info( 'session_id' => $session_id ); } -sub process_payment { +sub do_payment { use Business::CreditCard; -- cgit v1.2.1 From e354694764fb1442b6bc74a63189f094c51f1a89 Mon Sep 17 00:00:00 2001 From: ivan Date: Tue, 20 May 2003 05:43:47 +0000 Subject: working self-service self-payments! --- fs_selfservice/FS-SelfService/cgi/make_payment.html | 2 +- fs_selfservice/FS-SelfService/cgi/payment_results.html | 18 ++++++++++++++++++ fs_selfservice/FS-SelfService/cgi/process_payment.html | 18 ------------------ fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 4 ++-- 4 files changed, 21 insertions(+), 21 deletions(-) create mode 100644 fs_selfservice/FS-SelfService/cgi/payment_results.html delete mode 100644 fs_selfservice/FS-SelfService/cgi/process_payment.html (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/make_payment.html b/fs_selfservice/FS-SelfService/cgi/make_payment.html index 1d860f08a..a1cda6d49 100644 --- a/fs_selfservice/FS-SelfService/cgi/make_payment.html +++ b/fs_selfservice/FS-SelfService/cgi/make_payment.html @@ -8,7 +8,7 @@ Make a payment

- + diff --git a/fs_selfservice/FS-SelfService/cgi/payment_results.html b/fs_selfservice/FS-SelfService/cgi/payment_results.html new file mode 100644 index 000000000..92c8cf51b --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/payment_results.html @@ -0,0 +1,18 @@ +MyAccount +MyAccount

+<%= $url = "$selfurl?session=$session_id;action="; ''; %> +
Amount Due
+MyAccount
+ +
+Payment results

+<%= if ( $error ) { + $OUT .= qq!Error processing your payment: $error!; +} else { + $OUT .= 'Your payment was processed sucessfully. Thank you.'; +} %> +
+
+powered by freeside + + diff --git a/fs_selfservice/FS-SelfService/cgi/process_payment.html b/fs_selfservice/FS-SelfService/cgi/process_payment.html deleted file mode 100644 index e4946dc8f..000000000 --- a/fs_selfservice/FS-SelfService/cgi/process_payment.html +++ /dev/null @@ -1,18 +0,0 @@ -MyAccount -MyAccount

-<%= $url = "$selfurl?session=$session_id;action="; ''; %> -
-MyAccount
- -
-Payment results

-<%= if ( $error ) { - $OUT .= qq!Error processing your payment: $error -
-
-powered by freeside - - diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index 456d2dde2..6d6716ddc 100644 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -55,7 +55,7 @@ if ( $cgi->param('session') eq 'login' ) { $session_id = $cgi->param('session'); $cgi->param('action') =~ - /^(myaccount|view_invoice|make_payment|do_payment)$/ + /^(myaccount|view_invoice|make_payment|payment_results)$/ or die "unknown action ". $cgi->param('action'); my $action = $1; @@ -95,7 +95,7 @@ sub make_payment { payment_info( 'session_id' => $session_id ); } -sub do_payment { +sub payment_results { use Business::CreditCard; -- cgit v1.2.1 From d8ea8ef98411f56069ff4036bd5a2403b456655b Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 2 Oct 2003 11:23:04 +0000 Subject: removing testing info --- fs_selfservice/FS-SelfService/cgi/login.html | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/login.html b/fs_selfservice/FS-SelfService/cgi/login.html index ca6251eb1..5607de783 100644 --- a/fs_selfservice/FS-SelfService/cgi/login.html +++ b/fs_selfservice/FS-SelfService/cgi/login.html @@ -7,23 +7,20 @@ Username - - + Domain - - + Password - - + -- cgit v1.2.1 From 0147f0917ebbff5f72f43db0f81f13a87d7cf626 Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 22 Mar 2004 12:50:07 +0000 Subject: credit card expiration selection now -> 15 years instead of hardcoded --- fs_selfservice/FS-SelfService/cgi/make_payment.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/make_payment.html b/fs_selfservice/FS-SelfService/cgi/make_payment.html index a1cda6d49..40cd83c6f 100644 --- a/fs_selfservice/FS-SelfService/cgi/make_payment.html +++ b/fs_selfservice/FS-SelfService/cgi/make_payment.html @@ -53,7 +53,7 @@ / -- cgit v1.2.1 From 3913f6d159b5b8110061690b7c97642c27abf7eb Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 10 Jun 2004 12:31:32 +0000 Subject: agent interface --- fs_selfservice/FS-SelfService/cgi/agent.cgi | 256 +++++++++++++++++++++ fs_selfservice/FS-SelfService/cgi/agent_login.html | 22 ++ fs_selfservice/FS-SelfService/cgi/agent_main.html | 40 ++++ fs_selfservice/FS-SelfService/cgi/cvv2.html | 25 ++ fs_selfservice/FS-SelfService/cgi/cvv2.png | Bin 0 -> 3854 bytes fs_selfservice/FS-SelfService/cgi/cvv2_amex.png | Bin 0 -> 4573 bytes .../FS-SelfService/cgi/list_customers.html | 41 ++++ fs_selfservice/FS-SelfService/cgi/signup.html | 233 +++++++++++++++++++ .../FS-SelfService/cgi/view_customer.html | 84 +++++++ 9 files changed, 701 insertions(+) create mode 100644 fs_selfservice/FS-SelfService/cgi/agent.cgi create mode 100644 fs_selfservice/FS-SelfService/cgi/agent_login.html create mode 100644 fs_selfservice/FS-SelfService/cgi/agent_main.html create mode 100644 fs_selfservice/FS-SelfService/cgi/cvv2.html create mode 100644 fs_selfservice/FS-SelfService/cgi/cvv2.png create mode 100644 fs_selfservice/FS-SelfService/cgi/cvv2_amex.png create mode 100644 fs_selfservice/FS-SelfService/cgi/list_customers.html create mode 100755 fs_selfservice/FS-SelfService/cgi/signup.html create mode 100644 fs_selfservice/FS-SelfService/cgi/view_customer.html (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/agent.cgi b/fs_selfservice/FS-SelfService/cgi/agent.cgi new file mode 100644 index 000000000..3508e82e3 --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/agent.cgi @@ -0,0 +1,256 @@ +#!/usr/bin/perl -Tw + +#some false laziness w/selfservice.cgi + +use strict; +use vars qw($cgi $session_id $form_max $template_dir); +use subs qw(do_template); +use CGI; +use CGI::Carp qw(fatalsToBrowser); +use Business::CreditCard; +use Text::Template; +use FS::SelfService qw( agent_login agent_info + agent_list_customers + signup_info new_customer + customer_info order_pkg + ); + +$template_dir = '.'; + +$form_max = 255; + +$cgi = new CGI; + +unless ( defined $cgi->param('session') ) { + do_template('agent_login',{}); + exit; +} + +if ( $cgi->param('session') eq 'login' ) { + + $cgi->param('username') =~ /^\s*([a-z0-9_\-\.\&]{0,$form_max})\s*$/i + or die "illegal username"; + my $username = $1; + + $cgi->param('password') =~ /^(.{0,$form_max})$/ + or die "illegal password"; + my $password = $1; + + my $rv = agent_login( + 'username' => $username, + 'password' => $password, + ); + if ( $rv->{error} ) { + do_template('agent_login', { + 'error' => $rv->{error}, + 'username' => $username, + } ); + exit; + } else { + $cgi->param('session' => $rv->{session_id} ); + $cgi->param('action' => 'agent_main' ); + } +} + +$session_id = $cgi->param('session'); + +$cgi->param('action') =~ + /^(agent_main|signup|process_signup|list_customers|view_customer|process_order_pkg)$/ + or die "unknown action ". $cgi->param('action'); +my $action = $1; + +warn "running $action\n"; +my $result = eval "&$action();"; +die $@ if $@; + +if ( $result->{error} eq "Can't resume session" ) { #ick + do_template('agent_login',{}); + exit; +} + +warn "processing template $action\n"; +do_template($action, { + 'session_id' => $session_id, + %{$result} +}); + +#-- + +sub agent_main { agent_info( 'session_id' => $session_id ); } + +sub signup { signup_info( 'session_id' => $session_id ); } + +sub process_signup { + + my $init_data = signup_info( 'session_id' => $session_id ); + if ( $init_data->{'error'} ) { + if ( $init_data->{'error'} eq "Can't resume session" ) { #ick + do_template('agent_login',{}); + exit; + } else { #? + die $init_data->{'error'}; + } + } + + my $error = ''; + + #some false laziness w/signup.cgi + my $payby = $cgi->param('payby'); + if ( $payby eq 'CHEK' || $payby eq 'DCHK' ) { + #$payinfo = join('@', map { $cgi->param( $payby. "_payinfo$_" ) } (1,2) ); + $cgi->param('payinfo' => $cgi->param($payby. '_payinfo1'). '@'. + $cgi->param($payby. '_payinfo2') + ); + } else { + $cgi->param('payinfo' => $cgi->param( $payby. '_payinfo' ) ); + } + $cgi->param('paydate' => $cgi->param( $payby. '_month' ). '-'. + $cgi->param( $payby. '_year' ) + ); + $cgi->param('payname' => $cgi->param( $payby. '_payname' ) ); + $cgi->param('paycvv' => defined $cgi->param( $payby. '_paycvv' ) + ? $cgi->param( $payby. '_paycvv' ) + : '' + ); + + if ( $cgi->param('invoicing_list') ) { + $cgi->param('invoicing_list' => $cgi->param('invoicing_list'). ', POST') + if $cgi->param('invoicing_list_POST'); + } else { + $cgi->param('invoicing_list' => 'POST' ); + } + + if ( $cgi->param('_password') ne $cgi->param('_password2') ) { + $error = $init_data->{msgcat}{passwords_dont_match}; #msgcat + $cgi->param('_password', ''); + $cgi->param('_password2', ''); + } + + if ( $payby =~ /^(CARD|DCRD)$/ && $cgi->param('CARD_type') ) { + my $payinfo = $cgi->param('payinfo'); + $payinfo =~ s/\D//g; + + $payinfo =~ /^(\d{13,16})$/ + or $error ||= $init_data->{msgcat}{invalid_card}; #. $self->payinfo; + $payinfo = $1; + validate($payinfo) + or $error ||= $init_data->{msgcat}{invalid_card}; #. $self->payinfo; + cardtype($payinfo) eq $cgi->param('CARD_type') + or $error ||= $init_data->{msgcat}{not_a}. $cgi->param('CARD_type'); + } + + unless ( $error ) { + my $rv = new_customer ( { + 'session_id' => $session_id, + map { $_ => $cgi->param($_) } + qw( last first ss company + address1 address2 city county state zip country + daytime night fax + payby payinfo paycvv paydate payname invoicing_list + pkgpart username sec_phrase _password popnum refnum + ), + grep { /^snarf_/ } $cgi->param + } ); + $error = $rv->{'error'}; + } + + if ( $error ) { + $action = 'signup'; + my $r = { + $cgi->Vars, + %{$init_data}, + 'error' => $error, + }; + #warn join('\n', map "$_ => $r->{$_}", keys %$r )."\n"; + $r; + } else { + $action = 'agent_main'; + my $agent_info = agent_info( 'session_id' => $session_id ); + $agent_info->{'message'} = 'Signup sucessful'; + $agent_info; + } + +} + +sub list_customers { + agent_list_customers( 'session_id' => $session_id, + map { $_ => $cgi->param($_) } + grep defined($cgi->param($_)), + qw(prospect active susp cancel) + ); +} + +sub view_customer { + + my $init_data = signup_info( 'session_id' => $session_id ); + if ( $init_data->{'error'} ) { + if ( $init_data->{'error'} eq "Can't resume session" ) { #ick + do_template('agent_login',{}); + exit; + } else { #? + die $init_data->{'error'}; + } + } + + my $customer_info = customer_info ( + 'agent_session_id' => $session_id, + 'custnum' => $cgi->param('custnum') + ); + + + return { + ( map { $_ => $init_data->{$_} } + qw( part_pkg security_phrase svc_acct_pop ), + ), + %$customer_info, + }; +} + +sub process_order_pkg { + + my $results = order_pkg ( + 'agent_session_id' => $session_id, + map { $_ => $cgi->param($_) } + qw( custnum pkgpart username _password _password2 sec_phrase popnum ) + ); + + $action = 'view_customer'; + $cgi->delete( grep { $_ ne 'custnum' } $cgi->param ) + unless $results->{'error'}; + + return { + $cgi->Vars, + %{view_customer()}, + 'message' => $results->{'error'} + ? ''. $results->{'error'}. '' + : 'Package order sucessful.' + }; + +} + +#-- + +sub do_template { + my $name = shift; + my $fill_in = shift; + #warn join(' / ', map { "$_=>".$fill_in->{$_} } keys %$fill_in). "\n"; + + $cgi->delete_all(); + $fill_in->{'selfurl'} = $cgi->self_url; + $fill_in->{'cgi'} = \$cgi; + + my $template = new Text::Template( TYPE => 'FILE', + SOURCE => "$template_dir/$name.html", + DELIMITERS => [ '<%=', '%>' ], + UNTAINT => 1, ) + or die $Text::Template::ERROR; + + print $cgi->header( '-expires' => 'now' ), + $template->fill_in( PACKAGE => 'FS::SelfService::_agentcgi', + HASH => $fill_in + ); +} + +package FS::SelfService::_agentcgi; +use FS::SelfService qw(regionselector expselect popselector); + diff --git a/fs_selfservice/FS-SelfService/cgi/agent_login.html b/fs_selfservice/FS-SelfService/cgi/agent_login.html new file mode 100644 index 000000000..4b0778ec5 --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/agent_login.html @@ -0,0 +1,22 @@ +Reseller Login +Reseller Login

+<%= $error %> + + + + + + + + + + + +
Username + +
Password + +
+

+ + diff --git a/fs_selfservice/FS-SelfService/cgi/agent_main.html b/fs_selfservice/FS-SelfService/cgi/agent_main.html new file mode 100644 index 000000000..89a1b330d --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/agent_main.html @@ -0,0 +1,40 @@ +Reseller Main +Reseller Main

+<%= $url = "$selfurl?session=$session_id;action="; ''; %> +
+Reseller Main
+ +
+ +<%= $message + ? "$message" + : "Hello $agent!" +%>

+ + + +
Customer summary
+ + <%= $num_prospect %> + prospects + +
<%= $num_active %> + active + +
<%= $num_susp %> + suspended + +
<%= $num_cancel %> + cancelled + +
+ +
New customer + +
+
+powered by freeside + + + + diff --git a/fs_selfservice/FS-SelfService/cgi/cvv2.html b/fs_selfservice/FS-SelfService/cgi/cvv2.html new file mode 100644 index 000000000..b178c8513 --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/cvv2.html @@ -0,0 +1,25 @@ + + + + CVV2 information + + + + The CVV2 number (also called CVC2 or CID) is a three- or four-digit + security code used to reduce credit card fraud.

+ + + + + + + + +
Visa / MasterCard / DiscoverAmerican Express
+ Visa/MasterCard/Discover + + American Express +
+
(close window)
+ + diff --git a/fs_selfservice/FS-SelfService/cgi/cvv2.png b/fs_selfservice/FS-SelfService/cgi/cvv2.png new file mode 100644 index 000000000..4610dcbe6 Binary files /dev/null and b/fs_selfservice/FS-SelfService/cgi/cvv2.png differ diff --git a/fs_selfservice/FS-SelfService/cgi/cvv2_amex.png b/fs_selfservice/FS-SelfService/cgi/cvv2_amex.png new file mode 100644 index 000000000..21c36a0ab Binary files /dev/null and b/fs_selfservice/FS-SelfService/cgi/cvv2_amex.png differ diff --git a/fs_selfservice/FS-SelfService/cgi/list_customers.html b/fs_selfservice/FS-SelfService/cgi/list_customers.html new file mode 100644 index 000000000..6d4ba564e --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/list_customers.html @@ -0,0 +1,41 @@ +Reseller Main +Reseller Main

+<%= $url = "$selfurl?session=$session_id;action="; ''; %> +
+Reseller Main
+ +
+ +<%= + if ( @customers ) { + $OUT .= ''. + ''. + "$td{'statuscolor'}. '">'. + ucfirst($customer->{'status'}). "". "$td". + "$td$a". $customer->{'name'}. "". + ''; + #"$td". + $col = $col eq $col1 ? $col2 : $col1; + } + $OUT .= '
Customers'; + my $col1 = "ffffff"; + my $col2 = "dddddd"; + my $col = $col1; + + foreach my $customer ( @customers ) { + my $td = qq!!; + my $a = qq!'; + $OUT .= + '
'; + } else { + $OUT .= 'No customers.

'; + } +%> + +
+
+powered by freeside + + + diff --git a/fs_selfservice/FS-SelfService/cgi/signup.html b/fs_selfservice/FS-SelfService/cgi/signup.html new file mode 100755 index 000000000..973035179 --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/signup.html @@ -0,0 +1,233 @@ +<%= $agent || 'ISP' %> Signup form + + +<%= $agent || 'ISP' %> Signup form

+<%= $error %> +
+ + + + +Where did you hear about our service?

+Contact Information + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
*Contact name
(last, first)
, +
Company
*Address
 
*City*State/Country + <%= + ($county_html, $state_html, $country_html) = + regionselector( { + selected_county => $county, + selected_state => $state, + selected_country => $country, + default_state => $statedefault, + default_country => $countrydefault, + locales => \@cust_main_county, + } ); + + "$county_html $state_html"; + %> + *Zip
*Country<%= $country_html %>
Day Phone
Night Phone
Fax
* required fields
+
Billing information + + +<%= scalar(@payby) > 1 ? '' : '' %> +
+ + <%= + $OUT .= ' + + Postal mail invoice +
Email invoice +
Billing type
+ + + + <%= + + my $cardselect = ''; + + my %payby = ( + 'CARD' => qq!Credit card
*$cardselect
*Exp !. expselect("CARD"). qq!
*Name on card
!, + 'DCRD' => qq!Credit card
*$cardselect
*Exp !. expselect("DCRD"). qq!
*Name on card
!, + 'CHEK' => qq!Electronic check
${r}Account number
${r}ABA/Routing code
${r}Bank name !, + 'DCHK' => qq!Electronic check
${r}Account number
${r}ABA/Routing code
${r}Bank name !, + 'LECB' => qq!Phone bill billing
${r}Phone number !, + 'BILL' => qq!Billing
P.O.
*Exp !. expselect("BILL", "12-2037"). qq!
*Attention
!, + 'COMP' => qq!Complimentary
*Approved by
*Exp !. expselect("COMP"), + 'PREPAY' => qq!Prepaid card
*!, + ); + + if ( $cvv_enabled ) { + foreach my $payby ( grep { exists $payby{$_} } qw(CARD DCRD) ) { #1.4/1.5 + $payby{$payby} .= qq!
CVV2 (help!; + } + } + + my( $account, $aba ) = split('@', $payinfo); + my %paybychecked = ( + 'CARD' => qq!Credit card
*$cardselect
*Exp !. expselect("CARD", $paydate). qq!
*Name on card
!, + 'DCRD' => qq!Credit card
*$cardselect
*Exp !. expselect("DCRD", $paydate). qq!
*Name on card
!, + 'CHEK' => qq!Electronic check
${r}Account number
${r}ABA/Routing code
${r}Bank name !, + 'DCHK' => qq!Electronic check
${r}Account number
${r}ABA/Routing code
${r}Bank name !, + 'LECB' => qq!Phone bill billing
${r}Phone number !, + 'BILL' => qq!Billing
P.O.
*Exp !. expselect("BILL", $paydate). qq!
*Attention
!, + 'COMP' => qq!Complimentary
*Approved by
*Exp !. expselect("COMP", $paydate), + 'PREPAY' => qq!Prepaid card
*!, + ); + + if ( $cvv_enabled ) { + foreach my $payby ( grep { exists $payby{$_} } qw(CARD DCRD) ) { #1.4/1.5 + $paybychecked{$payby} .= qq!
CVV2 (help!; + } + } + + for (@payby) { + if ( scalar(@payby) == 1) { + $OUT .= '"; + } else { + $OUT .= qq!!; + } else { + $OUT .= qq!> $payby{$_}!; + } + + } + } + %> + +
'. + qq!!. + "$paybychecked{$_} $paybychecked{$_}
* required fields for each billing type +

First package + + + + + + + + + + + + + + + + +<%= + if ( $security_phrase ) { + $OUT .= < + + + +ENDOUT + } else { + $OUT .= ''; + } +%> +<%= + if ( @svc_acct_pop ) { + $OUT .= ''; + } else { + $OUT .= popselector(popnum=>$popnum, pops=>\@svc_acct_pop); + } +%> +
Username
Password
Re-enter Password
Security Phrase +
Access number'. + popselector( 'popnum' => $popnum, + 'pops' => \@svc_acct_pop, + 'init_popstate' => $init_popstate, + 'popac' => $popac, + 'acstate' => $acstate, + ). + '
+

+
diff --git a/fs_selfservice/FS-SelfService/cgi/view_customer.html b/fs_selfservice/FS-SelfService/cgi/view_customer.html new file mode 100644 index 000000000..e4e9be250 --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/view_customer.html @@ -0,0 +1,84 @@ +View Customer +View Customer

+<%= $url = "$selfurl?session=$session_id;action="; ''; %> +
+Reseller Main
+ +
+ +<%= $message + ? "$message

" + : '' +%> + +<%= $small_custview %> + +
Purchase additional package +
+ + + + + + + + + + + + + + + + + + + +<%= + if ( $security_phrase ) { + $OUT .= < + + + +ENDOUT + } else { + $OUT .= ''; + } +%> +<%= + if ( @svc_acct_pop ) { + $OUT .= ''; + } else { + $OUT .= popselector(popnum=>$popnum, pops=>\@svc_acct_pop); + } +%> +
Username
Password
Re-enter Password
Security Phrase +
Access number'. + popselector( 'popnum' => $popnum, + 'pops' => \@svc_acct_pop, + 'init_popstate' => $init_popstate, + 'popac' => $popac, + 'acstate' => $acstate, + ). + '
+ +
+ +
+
+powered by freeside + + + + -- cgit v1.2.1 From e5e2460c838fbef71b57d9380eb2d2bb6f1576db Mon Sep 17 00:00:00 2001 From: ivan Date: Tue, 15 Jun 2004 13:29:44 +0000 Subject: moving passwd cgi to self-service --- fs_selfservice/FS-SelfService/cgi/passwd.cgi | 60 +++++++++++++++++++++++++++ fs_selfservice/FS-SelfService/cgi/passwd.html | 3 ++ 2 files changed, 63 insertions(+) create mode 100755 fs_selfservice/FS-SelfService/cgi/passwd.cgi (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/passwd.cgi b/fs_selfservice/FS-SelfService/cgi/passwd.cgi new file mode 100755 index 000000000..38b70d0cf --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/passwd.cgi @@ -0,0 +1,60 @@ +#!/usr/bin/perl -Tw + +use strict; +use Getopt::Std; +use FS::SelfService qw(passwd); +use CGI; +use CGI::Carp qw(fatalsToBrowser); + +my $freeside_uid = scalar(getpwnam('freeside')); + +$ENV{'PATH'} ='/usr/local/bin:/usr/bin:/usr/ucb:/bin'; +$ENV{'SHELL'} = '/bin/sh'; +$ENV{'IFS'} = " \t\n"; +$ENV{'CDPATH'} = ''; +$ENV{'ENV'} = ''; +$ENV{'BASH_ENV'} = ''; + +die "fs_passwd.cgi isn't running as freeside user\n" if $> != $freeside_uid; + +my $cgi = new CGI; + +$cgi->param('username') =~ /^([^\n]{0,255}$)/ or die "Illegal username"; +my $me = $1; + +$cgi->param('domain') =~ /^([^\n]{0,255}$)/ or die "Illegal domain"; +my $domain = $1; + +$cgi->param('old_password') =~ /^([^\n]{0,255}$)/ or die "Illegal old_password"; +my $old_password = $1; + +$cgi->param('new_password') =~ /^([^\n]{0,255}$)/ or die "Illegal new_password"; +my $new_password = $1; + +die "New passwords don't match" + unless $new_password eq $cgi->param('new_password2'); + +my $rv = passwd( + 'username' => $me, + 'domain' => $domain, + 'old_password' => $old_password, + 'new_password' => $new_password, +); + +my $error = $rv->{error}; + +if ($error) { + die $error; +} else { + print $cgi->header(), < + + Password changed + + +

Password changed

+
Your password has been changed. + + +END +} diff --git a/fs_selfservice/FS-SelfService/cgi/passwd.html b/fs_selfservice/FS-SelfService/cgi/passwd.html index fadc4df8b..7e06ecff1 100644 --- a/fs_selfservice/FS-SelfService/cgi/passwd.html +++ b/fs_selfservice/FS-SelfService/cgi/passwd.html @@ -9,6 +9,9 @@ Username + Domain + + Current password -- cgit v1.2.1 From 2449cfd0609ec82d85f4539dc454f94f14a31a41 Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 21 Jun 2004 10:58:50 +0000 Subject: check password match on agent add'l package order --- fs_selfservice/FS-SelfService/cgi/agent.cgi | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/agent.cgi b/fs_selfservice/FS-SelfService/cgi/agent.cgi index 3508e82e3..a219fe771 100644 --- a/fs_selfservice/FS-SelfService/cgi/agent.cgi +++ b/fs_selfservice/FS-SelfService/cgi/agent.cgi @@ -208,6 +208,13 @@ sub view_customer { sub process_order_pkg { + if ( $cgi->param('_password') ne $cgi->param('_password2') ) { + my $init_data = signup_info( 'session_id' => $session_id ); + $error = $init_data->{msgcat}{passwords_dont_match}; #msgcat + $cgi->param('_password', ''); + $cgi->param('_password2', ''); + } + my $results = order_pkg ( 'agent_session_id' => $session_id, map { $_ => $cgi->param($_) } -- cgit v1.2.1 From 2772fa107c03791feee54c544e379f7431bef950 Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 21 Jun 2004 14:24:21 +0000 Subject: fix dup password checking on add'l package order --- fs_selfservice/FS-SelfService/cgi/agent.cgi | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/agent.cgi b/fs_selfservice/FS-SelfService/cgi/agent.cgi index a219fe771..9b07ee16b 100644 --- a/fs_selfservice/FS-SelfService/cgi/agent.cgi +++ b/fs_selfservice/FS-SelfService/cgi/agent.cgi @@ -208,14 +208,16 @@ sub view_customer { sub process_order_pkg { + my $results = ''; + if ( $cgi->param('_password') ne $cgi->param('_password2') ) { my $init_data = signup_info( 'session_id' => $session_id ); - $error = $init_data->{msgcat}{passwords_dont_match}; #msgcat + $results = { error => $init_data->{msgcat}{passwords_dont_match} }; $cgi->param('_password', ''); $cgi->param('_password2', ''); } - my $results = order_pkg ( + $results ||= order_pkg ( 'agent_session_id' => $session_id, map { $_ => $cgi->param($_) } qw( custnum pkgpart username _password _password2 sec_phrase popnum ) -- cgit v1.2.1 From 83ce2076d59c3c27beb78dd5892b2da99fd60ec1 Mon Sep 17 00:00:00 2001 From: ivan Date: Fri, 25 Jun 2004 17:57:02 +0000 Subject: fix one-time card charging not pulling in exp date? --- fs_selfservice/FS-SelfService/cgi/make_payment.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/make_payment.html b/fs_selfservice/FS-SelfService/cgi/make_payment.html index 40cd83c6f..a0fb5c3f3 100644 --- a/fs_selfservice/FS-SelfService/cgi/make_payment.html +++ b/fs_selfservice/FS-SelfService/cgi/make_payment.html @@ -46,7 +46,7 @@ @@ -54,7 +54,7 @@ -- cgit v1.2.1 From 0b227319d33d012890891570891f9d9401ff89ff Mon Sep 17 00:00:00 2001 From: ivan Date: Wed, 30 Jun 2004 14:33:35 +0000 Subject: forgot october! closes: Bug#880 --- fs_selfservice/FS-SelfService/cgi/make_payment.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/make_payment.html b/fs_selfservice/FS-SelfService/cgi/make_payment.html index a0fb5c3f3..cf6d62e22 100644 --- a/fs_selfservice/FS-SelfService/cgi/make_payment.html +++ b/fs_selfservice/FS-SelfService/cgi/make_payment.html @@ -45,7 +45,7 @@ Exp. -- cgit v1.2.1 From 034bc0f9d6b114a40bcc75ada15017ce206d0ced Mon Sep 17 00:00:00 2001 From: ivan Date: Fri, 9 Jul 2004 09:29:39 +0000 Subject: new style ; param separator --- fs_selfservice/FS-SelfService/cgi/agent_main.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/agent_main.html b/fs_selfservice/FS-SelfService/cgi/agent_main.html index 89a1b330d..629734555 100644 --- a/fs_selfservice/FS-SelfService/cgi/agent_main.html +++ b/fs_selfservice/FS-SelfService/cgi/agent_main.html @@ -16,16 +16,16 @@ <%= $num_prospect %> - prospects + prospects
<%= $num_active %> - active + active
<%= $num_susp %> - suspended + suspended
<%= $num_cancel %> - cancelled + cancelled -- cgit v1.2.1 From d2f3aff3c7fc373c9501d5b86d6c8fa8fd2e97ff Mon Sep 17 00:00:00 2001 From: ivan Date: Fri, 9 Jul 2004 11:45:59 +0000 Subject: add debugging to agent.cgi, make sure warnings are turned off when parsing templates to avoid too much output to STDERR triggering obscure apache hang bug. thanks dean you rule. --- fs_selfservice/FS-SelfService/cgi/agent.cgi | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/agent.cgi b/fs_selfservice/FS-SelfService/cgi/agent.cgi index 9b07ee16b..2d948e790 100644 --- a/fs_selfservice/FS-SelfService/cgi/agent.cgi +++ b/fs_selfservice/FS-SelfService/cgi/agent.cgi @@ -3,7 +3,7 @@ #some false laziness w/selfservice.cgi use strict; -use vars qw($cgi $session_id $form_max $template_dir); +use vars qw($DEBUG $me $cgi $session_id $form_max $template_dir); use subs qw(do_template); use CGI; use CGI::Carp qw(fatalsToBrowser); @@ -15,19 +15,28 @@ use FS::SelfService qw( agent_login agent_info customer_info order_pkg ); +$DEBUG = 0; +$me = 'agent.cgi:'; + $template_dir = '.'; $form_max = 255; +warn "$me starting\n" if $DEBUG; + +warn "$me initializing CGI\n" if $DEBUG; $cgi = new CGI; unless ( defined $cgi->param('session') ) { + warn "$me no session defined, sending login page\n" if $DEBUG; do_template('agent_login',{}); exit; } if ( $cgi->param('session') eq 'login' ) { + warn "$me processing login\n" if $DEBUG; + $cgi->param('username') =~ /^\s*([a-z0-9_\-\.\&]{0,$form_max})\s*$/i or die "illegal username"; my $username = $1; @@ -54,12 +63,13 @@ if ( $cgi->param('session') eq 'login' ) { $session_id = $cgi->param('session'); +warn "$me checking action\n" if $DEBUG; $cgi->param('action') =~ /^(agent_main|signup|process_signup|list_customers|view_customer|process_order_pkg)$/ or die "unknown action ". $cgi->param('action'); my $action = $1; -warn "running $action\n"; +warn "$me running $action\n" if $DEBUG; my $result = eval "&$action();"; die $@ if $@; @@ -68,11 +78,12 @@ if ( $result->{error} eq "Can't resume session" ) { #ick exit; } -warn "processing template $action\n"; +warn "$me processing template $action\n" if $DEBUG; do_template($action, { 'session_id' => $session_id, %{$result} }); +warn "$me done processing template $action\n" if $DEBUG; #-- @@ -254,6 +265,7 @@ sub do_template { UNTAINT => 1, ) or die $Text::Template::ERROR; + local $^W = 0; print $cgi->header( '-expires' => 'now' ), $template->fill_in( PACKAGE => 'FS::SelfService::_agentcgi', HASH => $fill_in -- cgit v1.2.1 From 6ced9264b8ec79e4b460be90ede25ec72a7dfc16 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 15 Jul 2004 22:40:01 +0000 Subject: big update for customer self-service: add provisioning/unprovisioning of purchased services, like fs_selfadmin --- fs_selfservice/FS-SelfService/cgi/agent.cgi | 4 + fs_selfservice/FS-SelfService/cgi/delete_svc.html | 18 +++++ fs_selfservice/FS-SelfService/cgi/logout.html | 5 ++ .../FS-SelfService/cgi/make_payment.html | 7 +- fs_selfservice/FS-SelfService/cgi/myaccount.html | 9 +-- .../FS-SelfService/cgi/myaccount_menu.html | 13 +++ .../FS-SelfService/cgi/payment_results.html | 7 +- .../FS-SelfService/cgi/process_svc_acct.html | 14 ++++ fs_selfservice/FS-SelfService/cgi/provision.html | 77 ++++++++++++++++++ .../FS-SelfService/cgi/provision_svc_acct.html | 66 ++++++++++++++++ fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 92 +++++++++++++++++++++- .../FS-SelfService/cgi/view_invoice.html | 9 +-- 12 files changed, 298 insertions(+), 23 deletions(-) create mode 100644 fs_selfservice/FS-SelfService/cgi/delete_svc.html create mode 100644 fs_selfservice/FS-SelfService/cgi/logout.html create mode 100644 fs_selfservice/FS-SelfService/cgi/myaccount_menu.html create mode 100644 fs_selfservice/FS-SelfService/cgi/process_svc_acct.html create mode 100644 fs_selfservice/FS-SelfService/cgi/provision.html create mode 100644 fs_selfservice/FS-SelfService/cgi/provision_svc_acct.html (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/agent.cgi b/fs_selfservice/FS-SelfService/cgi/agent.cgi index 2d948e790..6d2fd5840 100644 --- a/fs_selfservice/FS-SelfService/cgi/agent.cgi +++ b/fs_selfservice/FS-SelfService/cgi/agent.cgi @@ -221,6 +221,10 @@ sub process_order_pkg { my $results = ''; + unless ( length($cgi->param('_password')) ) { + my $init_data = signup_info( 'session_id' => $session_id ); + $results = { 'error' => $init_data->{msgcat}{empty_password} } + } if ( $cgi->param('_password') ne $cgi->param('_password2') ) { my $init_data = signup_info( 'session_id' => $session_id ); $results = { error => $init_data->{msgcat}{passwords_dont_match} }; diff --git a/fs_selfservice/FS-SelfService/cgi/delete_svc.html b/fs_selfservice/FS-SelfService/cgi/delete_svc.html new file mode 100644 index 000000000..16054a77c --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/delete_svc.html @@ -0,0 +1,18 @@ +MyAccount +MyAccount

+<%= $url = "$selfurl?session=$session_id;action="; ''; %> + +<%= include('myaccount_menu') %> +
+ +<%= if ( $error ) { + $OUT .= qq!Error: $error!; +} else { + $OUT .= "$svc removed."; +} %> + +
+
+powered by freeside + + diff --git a/fs_selfservice/FS-SelfService/cgi/logout.html b/fs_selfservice/FS-SelfService/cgi/logout.html new file mode 100644 index 000000000..0e774e9eb --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/logout.html @@ -0,0 +1,5 @@ +MyAccount +MyAccount

+You have been logged out. + + diff --git a/fs_selfservice/FS-SelfService/cgi/make_payment.html b/fs_selfservice/FS-SelfService/cgi/make_payment.html index cf6d62e22..3522c0867 100644 --- a/fs_selfservice/FS-SelfService/cgi/make_payment.html +++ b/fs_selfservice/FS-SelfService/cgi/make_payment.html @@ -1,10 +1,9 @@ MyAccount MyAccount

<%= $url = "$selfurl?session=$session_id;action="; ''; %> -
-MyAccount
- -
+ +<%= include('myaccount_menu') %> +
Make a payment

diff --git a/fs_selfservice/FS-SelfService/cgi/myaccount.html b/fs_selfservice/FS-SelfService/cgi/myaccount.html index f48fdedea..9997d7059 100644 --- a/fs_selfservice/FS-SelfService/cgi/myaccount.html +++ b/fs_selfservice/FS-SelfService/cgi/myaccount.html @@ -1,10 +1,9 @@ MyAccount MyAccount

<%= $url = "$selfurl?session=$session_id;action="; ''; %> -
-MyAccount
- -
+ +<%= include('myaccount_menu') %> +
Hello <%= $name %>!

<%= $small_custview %> @@ -15,7 +14,7 @@ Hello <%= $name %>!

<%= if ( @open_invoices ) { $OUT .= ''. - ''; my $link = qq! + diff --git a/fs_selfservice/FS-SelfService/cgi/payment_results.html b/fs_selfservice/FS-SelfService/cgi/payment_results.html index 92c8cf51b..44289deba 100644 --- a/fs_selfservice/FS-SelfService/cgi/payment_results.html +++ b/fs_selfservice/FS-SelfService/cgi/payment_results.html @@ -1,10 +1,9 @@ MyAccount MyAccount

<%= $url = "$selfurl?session=$session_id;action="; ''; %> -
Open Invoices'; + '
Open Invoices
+ +Overview

+Change payment info *

+Change service address *

+Setup my services

+Purchase additional package *

+ +Change password(s)

+Logout

+* coming soon +
-MyAccount
- -
+ +<%= include('myaccount_menu') %> +
Payment results

<%= if ( $error ) { $OUT .= qq!Error processing your payment: $error!; diff --git a/fs_selfservice/FS-SelfService/cgi/process_svc_acct.html b/fs_selfservice/FS-SelfService/cgi/process_svc_acct.html new file mode 100644 index 000000000..7052059c4 --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/process_svc_acct.html @@ -0,0 +1,14 @@ +MyAccount +MyAccount

+<%= $url = "$selfurl?session=$session_id;action="; ''; %> + +<%= include('myaccount_menu') %> +
+ +<%= $svc %> setup sucessfully. + +
+
+powered by freeside + + diff --git a/fs_selfservice/FS-SelfService/cgi/provision.html b/fs_selfservice/FS-SelfService/cgi/provision.html new file mode 100644 index 000000000..326f90229 --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/provision.html @@ -0,0 +1,77 @@ +MyAccount +MyAccount

+<%= $url = "$selfurl?session=$session_id;action="; ''; %> + +<%= include('myaccount_menu') %> +
+Setup services

+ + + +<%= foreach my $pkg ( + grep { scalar(@{$_->{part_svc}}) + || scalar(@{$_->{cust_svc}}) + } @cust_pkg + ) { + + $OUT .= ''. + ''; + + my $col1 = "ffffff"; + my $col2 = "dddddd"; + my $col = $col1; + + foreach my $cust_svc ( @{ $pkg->{cust_svc} } ) { + my $td = qq!'. + "$td>". $cust_svc->{label}[1]. ''. + "$td>"; + + #if ( $cust_svc->{label}[2] eq 'svc_acct' ) { + # $OUT .= qq!(!. + # 'change pw) '; + #} + + unless ( $cust_svc->{'svcnum'} == $svcnum ) { + $OUT .= qq!(!. + 'delete)'; + + } + $OUT .= ''; + $col = $col eq $col1 ? $col2 : $col1; + } + + $OUT .= '' + if scalar(@{$pkg->{part_svc}}) && scalar(@{$pkg->{cust_svc}}); + + my $col = $col1; + + foreach my $part_svc ( @{ $pkg->{part_svc} } ) { + + my $td = qq!'; + $col = $col eq $col1 ? $col2 : $col1; + } + + $OUT .= '
'. + $pkg->{'pkg'}. + '
". $cust_svc->{label}[0]. ':
!. + 'Setup '. $part_svc->{'svc'}. ' '. + '('. $part_svc->{'num_avail'}. ' available)'. + '

'; + +} %> + +
+
+powered by freeside + diff --git a/fs_selfservice/FS-SelfService/cgi/provision_svc_acct.html b/fs_selfservice/FS-SelfService/cgi/provision_svc_acct.html new file mode 100644 index 000000000..d18375c82 --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/provision_svc_acct.html @@ -0,0 +1,66 @@ +MyAccount +MyAccount

+<%= $url = "$selfurl?session=$session_id;action="; ''; %> + +<%= include('myaccount_menu') %> +
+Setup <%= $svc %>

+ +<%= if ( $error ) { + $OUT .= qq!Error setting up $svc: $error!. + '

'; +} ''; %> + + + + + + + + + + + + + + + + + + +<%= + if ( $security_phrase ) { + $OUT .= < + + + +ENDOUT + } else { + $OUT .= ''; + } +%> +<%= + if ( @svc_acct_pop ) { + $OUT .= ''; + } else { + $OUT .= popselector(popnum=>$popnum, pops=>\@svc_acct_pop); + } +%> +
Username
Password
Re-enter Password
Security Phrase +
Access number'. + popselector( 'popnum' => $popnum, + 'pops' => \@svc_acct_pop, + 'init_popstate' => $init_popstate, + 'popac' => $popac, + 'acstate' => $acstate, + ). + '
+ + + +
+
+powered by freeside + + diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index 6d6716ddc..d8e044a96 100644 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -6,8 +6,11 @@ use subs qw(do_template); use CGI; use CGI::Carp qw(fatalsToBrowser); use Text::Template; -use FS::SelfService qw( login customer_info invoice payment_info - process_payment ); +use FS::SelfService qw( login customer_info invoice + payment_info process_payment + list_pkgs + part_svc_info provision_acct unprovision_svc + ); $template_dir = '.'; @@ -54,8 +57,9 @@ if ( $cgi->param('session') eq 'login' ) { $session_id = $cgi->param('session'); +#order|pw_list XXX ??? $cgi->param('action') =~ - /^(myaccount|view_invoice|make_payment|payment_results)$/ + /^(myaccount|view_invoice|make_payment|payment_results|logout|change_bill|change_ship|provision|provision_svc|process_svc_acct|delete_svc)$/ or die "unknown action ". $cgi->param('action'); my $action = $1; @@ -167,6 +171,63 @@ sub payment_results { } +sub logout { + FS::SelfService::logout( 'session_id' => $session_id ); +} + +sub provision { + list_pkgs( 'session_id' => $session_id ); +} + +sub provision_svc { + + my $result = part_svc_info( + 'session_id' => $session_id, + map { $_ => $cgi->param($_) } qw( pkgnum svcpart ), + ); + die $result->{'error'} if exists $result->{'error'} && $result->{'error'}; + + $result->{'svcdb'} =~ /^svc_(.*)$/ + #or return { 'error' => 'Unknown svcdb '. $result->{'svcdb'} }; + or die 'Unknown svcdb '. $result->{'svcdb'}; + $action .= "_$1"; + + $result; +} + +sub process_svc_acct { + + my $result = provision_acct ( + 'session_id' => $session_id, + map { $_ => $cgi->param($_) } qw( + pkgnum svcpart username _password _password2 sec_phrase popnum ) + ); + + if ( exists $result->{'error'} && $result->{'error'} ) { + warn "$result $result->{'error'}"; + $action = 'provision_svc_acct'; + return { + $cgi->Vars, + %{ part_svc_info( 'session_id' => $session_id, + map { $_ => $cgi->param($_) } qw( pkgnum svcpart ) + ) + }, + 'error' => $result->{'error'}, + }; + } else { + warn "$result $result->{'error'}"; + return $result; + } + +} + +sub delete_svc { + unprovision_svc( + 'session_id' => $session_id, + 'svcnum' => $cgi->param('svcnum'), + ); +} + #-- sub do_template { @@ -175,6 +236,7 @@ sub do_template { $cgi->delete_all(); $fill_in->{'selfurl'} = $cgi->self_url; + $fill_in->{'cgi'} = \$cgi; my $template = new Text::Template( TYPE => 'FILE', SOURCE => "$template_dir/$name.html", @@ -183,6 +245,28 @@ sub do_template { or die $Text::Template::ERROR; print $cgi->header( '-expires' => 'now' ), - $template->fill_in( HASH => $fill_in ); + $template->fill_in( PACKAGE => 'FS::SelfService::_selfservicecgi', + HASH => $fill_in + ); +} + +#*FS::SelfService::_selfservicecgi::include = \&Text::Template::fill_in_file; + +package FS::SelfService::_selfservicecgi; + +#use FS::SelfService qw(regionselector expselect popselector); +use FS::SelfService qw(popselector); + +sub include { + my $name = shift; + my $template = new Text::Template( TYPE => 'FILE', + SOURCE => "$main::template_dir/$name.html", + DELIMITERS => [ '<%=', '%>' ], + UNTAINT => 1, + ) + or die $Text::Template::ERROR; + + $template->fill_in(); + } diff --git a/fs_selfservice/FS-SelfService/cgi/view_invoice.html b/fs_selfservice/FS-SelfService/cgi/view_invoice.html index d2b012b5d..46f731890 100644 --- a/fs_selfservice/FS-SelfService/cgi/view_invoice.html +++ b/fs_selfservice/FS-SelfService/cgi/view_invoice.html @@ -1,12 +1,9 @@ MyAccount MyAccount

<%= $url = "$selfurl?session=$session_id;action="; ''; %> -
-MyAccount
- -
- -<-- back to MyAccount

+ +<%= include('myaccount_menu') %> + diff --git a/fs_selfservice/FS-SelfService/cgi/agent_order_pkg.html b/fs_selfservice/FS-SelfService/cgi/agent_order_pkg.html new file mode 100644 index 000000000..0a665c99e --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/agent_order_pkg.html @@ -0,0 +1,19 @@ +Reseller +Reseller

+<%= $url = "$selfurl?session=$session_id;custnum=$custnum;action="; ''; %> +
 <%= $invoice_text %>
-- 
cgit v1.2.1


From 3913733875c647485de5c53b296a2343fec3fa66 Mon Sep 17 00:00:00 2001
From: ivan 
Date: Tue, 17 Aug 2004 07:43:50 +0000
Subject: fix path to passwd.cgi!

---
 fs_selfservice/FS-SelfService/cgi/passwd.cgi  | 2 +-
 fs_selfservice/FS-SelfService/cgi/passwd.html | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

(limited to 'fs_selfservice/FS-SelfService/cgi')

diff --git a/fs_selfservice/FS-SelfService/cgi/passwd.cgi b/fs_selfservice/FS-SelfService/cgi/passwd.cgi
index 38b70d0cf..d77876e37 100755
--- a/fs_selfservice/FS-SelfService/cgi/passwd.cgi
+++ b/fs_selfservice/FS-SelfService/cgi/passwd.cgi
@@ -15,7 +15,7 @@ $ENV{'CDPATH'} = '';
 $ENV{'ENV'} = '';
 $ENV{'BASH_ENV'} = '';
 
-die "fs_passwd.cgi isn't running as freeside user\n" if $> != $freeside_uid;
+die "passwd.cgi isn't running as freeside user\n" if $> != $freeside_uid;
 
 my $cgi = new CGI;
 
diff --git a/fs_selfservice/FS-SelfService/cgi/passwd.html b/fs_selfservice/FS-SelfService/cgi/passwd.html
index 7e06ecff1..459c96aa8 100644
--- a/fs_selfservice/FS-SelfService/cgi/passwd.html
+++ b/fs_selfservice/FS-SelfService/cgi/passwd.html
@@ -4,7 +4,7 @@
   
   
     

Change password

-
+ -- cgit v1.2.1 From 0cbeb01df08457b056a7ae775b4924c266b4228b Mon Sep 17 00:00:00 2001 From: ivan Date: Tue, 24 Aug 2004 11:16:57 +0000 Subject: big update for reseller interface --- fs_selfservice/FS-SelfService/cgi/agent.cgi | 192 ++++++++++++++++++--- .../FS-SelfService/cgi/agent_customer_menu.html | 7 + .../FS-SelfService/cgi/agent_delete_svc.html | 20 +++ .../FS-SelfService/cgi/agent_logout.html | 5 + fs_selfservice/FS-SelfService/cgi/agent_main.html | 21 +-- fs_selfservice/FS-SelfService/cgi/agent_menu.html | 15 ++ .../FS-SelfService/cgi/agent_order_pkg.html | 19 ++ .../FS-SelfService/cgi/agent_provision.html | 25 +++ .../cgi/agent_provision_svc_acct.html | 19 ++ .../FS-SelfService/cgi/list_customers.html | 12 +- fs_selfservice/FS-SelfService/cgi/order_pkg.html | 75 ++++++++ fs_selfservice/FS-SelfService/cgi/provision.html | 68 +------- .../FS-SelfService/cgi/provision_list.html | 74 ++++++++ fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 15 +- fs_selfservice/FS-SelfService/cgi/svc_acct.html | 55 ++++++ .../FS-SelfService/cgi/view_customer.html | 75 ++------ 16 files changed, 519 insertions(+), 178 deletions(-) create mode 100644 fs_selfservice/FS-SelfService/cgi/agent_customer_menu.html create mode 100644 fs_selfservice/FS-SelfService/cgi/agent_delete_svc.html create mode 100644 fs_selfservice/FS-SelfService/cgi/agent_logout.html create mode 100644 fs_selfservice/FS-SelfService/cgi/agent_menu.html create mode 100644 fs_selfservice/FS-SelfService/cgi/agent_order_pkg.html create mode 100644 fs_selfservice/FS-SelfService/cgi/agent_provision.html create mode 100644 fs_selfservice/FS-SelfService/cgi/agent_provision_svc_acct.html create mode 100644 fs_selfservice/FS-SelfService/cgi/order_pkg.html create mode 100644 fs_selfservice/FS-SelfService/cgi/provision_list.html create mode 100644 fs_selfservice/FS-SelfService/cgi/svc_acct.html (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/agent.cgi b/fs_selfservice/FS-SelfService/cgi/agent.cgi index 6d2fd5840..b88709862 100644 --- a/fs_selfservice/FS-SelfService/cgi/agent.cgi +++ b/fs_selfservice/FS-SelfService/cgi/agent.cgi @@ -9,10 +9,12 @@ use CGI; use CGI::Carp qw(fatalsToBrowser); use Business::CreditCard; use Text::Template; -use FS::SelfService qw( agent_login agent_info +#use HTML::Entities; +use FS::SelfService qw( agent_login agent_logout agent_info agent_list_customers signup_info new_customer - customer_info order_pkg + customer_info list_pkgs order_pkg + part_svc_info provision_acct unprovision_svc ); $DEBUG = 0; @@ -65,7 +67,7 @@ $session_id = $cgi->param('session'); warn "$me checking action\n" if $DEBUG; $cgi->param('action') =~ - /^(agent_main|signup|process_signup|list_customers|view_customer|process_order_pkg)$/ + /^(agent_main|signup|process_signup|list_customers|view_customer|agent_provision|provision_svc|process_svc_acct|delete_svc|agent_order_pkg|process_order_pkg|logout)$/ or die "unknown action ". $cgi->param('action'); my $action = $1; @@ -87,6 +89,11 @@ warn "$me done processing template $action\n" if $DEBUG; #-- +sub logout { + $action = 'agent_logout'; + agent_logout( 'session_id' => $session_id ); +} + sub agent_main { agent_info( 'session_id' => $session_id ); } sub signup { signup_info( 'session_id' => $session_id ); } @@ -184,15 +191,55 @@ sub process_signup { } sub list_customers { - agent_list_customers( 'session_id' => $session_id, - map { $_ => $cgi->param($_) } - grep defined($cgi->param($_)), - qw(prospect active susp cancel) - ); + + my $results = + agent_list_customers( 'session_id' => $session_id, + map { $_ => $cgi->param($_) } + grep defined($cgi->param($_)), + qw(prospect active susp cancel), + 'search', + ); + + if ( scalar( @{$results->{'customers'}} ) == 1 ) { + $action = 'view_customer'; + customer_info ( + 'agent_session_id' => $session_id, + 'custnum' => $results->{'customers'}[0]{'custnum'}, + ); + } else { + $results; + } + } sub view_customer { + #my $init_data = signup_info( 'session_id' => $session_id ); + #if ( $init_data->{'error'} ) { + # if ( $init_data->{'error'} eq "Can't resume session" ) { #ick + # do_template('agent_login',{}); + # exit; + # } else { #? + # die $init_data->{'error'}; + # } + #} + # + #my $customer_info = + customer_info ( + 'agent_session_id' => $session_id, + 'custnum' => $cgi->param('custnum'), + ); + # + #return { + # ( map { $_ => $init_data->{$_} } + # qw( part_pkg security_phrase svc_acct_pop ), + # ), + # %$customer_info, + #}; +} + +sub agent_order_pkg { + my $init_data = signup_info( 'session_id' => $session_id ); if ( $init_data->{'error'} ) { if ( $init_data->{'error'} eq "Can't resume session" ) { #ick @@ -205,16 +252,91 @@ sub view_customer { my $customer_info = customer_info ( 'agent_session_id' => $session_id, - 'custnum' => $cgi->param('custnum') + 'custnum' => $cgi->param('custnum'), ); - return { ( map { $_ => $init_data->{$_} } qw( part_pkg security_phrase svc_acct_pop ), ), %$customer_info, }; + +} + +sub agent_provision { + my $result = list_pkgs( + 'agent_session_id' => $session_id, + 'custnum' => $cgi->param('custnum'), + ); + die $result->{'error'} if exists $result->{'error'} && $result->{'error'}; + $result; +} + +sub provision_svc { + + my $result = part_svc_info( + 'agent_session_id' => $session_id, + map { $_ => $cgi->param($_) } qw( pkgnum svcpart custnum ), + ); + die $result->{'error'} if exists $result->{'error'} && $result->{'error'}; + + $result->{'svcdb'} =~ /^svc_(.*)$/ + #or return { 'error' => 'Unknown svcdb '. $result->{'svcdb'} }; + or die 'Unknown svcdb '. $result->{'svcdb'}; + $action .= "_$1"; + $action = "agent_$action"; + + $result; +} + +sub process_svc_acct { + + my $result = provision_acct ( + 'agent_session_id' => $session_id, + map { $_ => $cgi->param($_) } qw( + custnum pkgnum svcpart username _password _password2 sec_phrase popnum ) + ); + + if ( exists $result->{'error'} && $result->{'error'} ) { + #warn "$result $result->{'error'}"; + $action = 'provision_svc_acct'; + $action = "agent_$action"; + return { + $cgi->Vars, + %{ part_svc_info( 'agent_session_id' => $session_id, + map { $_ => $cgi->param($_) } qw(pkgnum svcpart custnum) + ) + }, + 'error' => $result->{'error'}, + }; + } else { + #warn "$result $result->{'error'}"; + $action = 'agent_provision'; + return { + %{agent_provision()}, + 'message' => $result->{'svc'}. ' setup sucessfully.', + }; + } + +} + +sub delete_svc { + my $result = unprovision_svc( + 'agent_session_id' => $session_id, + 'custnum' => $cgi->param('custnum'), + 'svcnum' => $cgi->param('svcnum'), + ); + + $action = 'agent_provision'; + + return { + %{agent_provision()}, + 'message' => $result->{'error'} + ? ''. $result->{'error'}. '' + : $result->{'svc'}. ' removed.' + }; + } sub process_order_pkg { @@ -223,11 +345,12 @@ sub process_order_pkg { unless ( length($cgi->param('_password')) ) { my $init_data = signup_info( 'session_id' => $session_id ); - $results = { 'error' => $init_data->{msgcat}{empty_password} } + #die $init_data->{'error'} if $init_data->{'error'}; + $results = { 'error' => $init_data->{msgcat}{empty_password} }; } if ( $cgi->param('_password') ne $cgi->param('_password2') ) { my $init_data = signup_info( 'session_id' => $session_id ); - $results = { error => $init_data->{msgcat}{passwords_dont_match} }; + $results = { 'error' => $init_data->{msgcat}{passwords_dont_match} }; $cgi->param('_password', ''); $cgi->param('_password2', ''); } @@ -238,17 +361,22 @@ sub process_order_pkg { qw( custnum pkgpart username _password _password2 sec_phrase popnum ) ); - $action = 'view_customer'; - $cgi->delete( grep { $_ ne 'custnum' } $cgi->param ) - unless $results->{'error'}; - - return { - $cgi->Vars, - %{view_customer()}, - 'message' => $results->{'error'} - ? ''. $results->{'error'}. '' - : 'Package order sucessful.' - }; + if ( $results->{'error'} ) { + $action = 'agent_order_pkg'; + return { + $cgi->Vars, + %{agent_order_pkg()}, + #'message' => ''. $results->{'error'}. '', + 'error' => ''. $results->{'error'}. '', + }; + } else { + $action = 'view_customer'; + #$cgi->delete( grep { $_ ne 'custnum' } $cgi->param ); + return { + %{view_customer()}, + 'message' => 'Package order sucessful.', + }; + } } @@ -277,5 +405,23 @@ sub do_template { } package FS::SelfService::_agentcgi; + +use HTML::Entities; use FS::SelfService qw(regionselector expselect popselector); +#false laziness w/selfservice.cgi +sub include { + my $name = shift; + my $template = new Text::Template( TYPE => 'FILE', + SOURCE => "$main::template_dir/$name.html", + DELIMITERS => [ '<%=', '%>' ], + UNTAINT => 1, + ) + or die $Text::Template::ERROR; + + $template->fill_in( PACKAGE => 'FS::SelfService::_agentcgi', + #HASH => $fill_in + ); + +} + diff --git a/fs_selfservice/FS-SelfService/cgi/agent_customer_menu.html b/fs_selfservice/FS-SelfService/cgi/agent_customer_menu.html new file mode 100644 index 000000000..603fc0bd2 --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/agent_customer_menu.html @@ -0,0 +1,7 @@ +<%= $url = "$selfurl?session=$session_id;custnum=$custnum;action="; ''; %> + + diff --git a/fs_selfservice/FS-SelfService/cgi/agent_delete_svc.html b/fs_selfservice/FS-SelfService/cgi/agent_delete_svc.html new file mode 100644 index 000000000..e8be07ed1 --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/agent_delete_svc.html @@ -0,0 +1,20 @@ +MyAccount +MyAccount

+<%= $url = "$selfurl?session=$session_id;action="; ''; %> +
Username +Setup services

+Purchase additional package

+ +
+<%= include('myaccount_menu') %> +
+<%= $small_custview %> +
+<%= if ( $error ) { + + $OUT .= qq!Error: $error!; +} else { + $OUT .= "$svc removed."; +} %> + +
+
+powered by freeside + + diff --git a/fs_selfservice/FS-SelfService/cgi/agent_logout.html b/fs_selfservice/FS-SelfService/cgi/agent_logout.html new file mode 100644 index 000000000..98094679a --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/agent_logout.html @@ -0,0 +1,5 @@ +Reseller +Reseller

+You have been logged out. + + diff --git a/fs_selfservice/FS-SelfService/cgi/agent_main.html b/fs_selfservice/FS-SelfService/cgi/agent_main.html index 629734555..9dd338382 100644 --- a/fs_selfservice/FS-SelfService/cgi/agent_main.html +++ b/fs_selfservice/FS-SelfService/cgi/agent_main.html @@ -1,10 +1,9 @@ -Reseller Main -Reseller Main

+Reseller +Reseller

<%= $url = "$selfurl?session=$session_id;action="; ''; %> -
-Reseller Main
- -
+ +<%= include('agent_menu') %> +
<%= $message ? "$message" @@ -16,21 +15,19 @@
<%= $num_prospect %> - prospects + <%= $num_prospect ? qq!! : '' %>prospects
<%= $num_active %> - active + <%= $num_active ? qq!! : '' %>active
<%= $num_susp %> - suspended + <%= $num_susp ? qq!! : '' %>suspended
<%= $num_cancel %> - cancelled + <%= $num_cancel ? qq!! : '' %>cancelled
-
New customer -

powered by freeside diff --git a/fs_selfservice/FS-SelfService/cgi/agent_menu.html b/fs_selfservice/FS-SelfService/cgi/agent_menu.html new file mode 100644 index 000000000..84a295304 --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/agent_menu.html @@ -0,0 +1,15 @@ +<%= $url = "$selfurl?session=$session_id;action="; ''; %> +
+ +Overview

+New customer

+ + + +
+cust #, last name, or company
+
+ +Logout

+ +
+<%= include('agent_menu') %> +
+<%= $small_custview %> +
+ + +<%= include('agent_customer_menu') %> +
+<%= include('order_pkg') %> +
+ +
+
+powered by freeside + diff --git a/fs_selfservice/FS-SelfService/cgi/agent_provision.html b/fs_selfservice/FS-SelfService/cgi/agent_provision.html new file mode 100644 index 000000000..8770e2f9e --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/agent_provision.html @@ -0,0 +1,25 @@ +Reseller +Reseller

+<%= $url = "$selfurl?session=$session_id;custnum=$custnum;action="; ''; %> + +<%= include('agent_menu') %> +
+ +<%= $message + ? "$message

" + : '' +%> + +<%= $small_custview %> +
+ + +<%= include('agent_customer_menu') %> +
+<%= include('provision_list') %> +
+ +
+
+powered by freeside + diff --git a/fs_selfservice/FS-SelfService/cgi/agent_provision_svc_acct.html b/fs_selfservice/FS-SelfService/cgi/agent_provision_svc_acct.html new file mode 100644 index 000000000..8d299cdc5 --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/agent_provision_svc_acct.html @@ -0,0 +1,19 @@ +Reseller +Reseller

+<%= $url = "$selfurl?session=$session_id;custnum=$custnum;action="; ''; %> + +<%= include('agent_menu') %> +
+<%= $small_custview %> +
+ +<%= include('agent_customer_menu') %> +
+<%= include('svc_acct') %> +
+ +
+
+powered by freeside + + diff --git a/fs_selfservice/FS-SelfService/cgi/list_customers.html b/fs_selfservice/FS-SelfService/cgi/list_customers.html index 6d4ba564e..858e5e9ba 100644 --- a/fs_selfservice/FS-SelfService/cgi/list_customers.html +++ b/fs_selfservice/FS-SelfService/cgi/list_customers.html @@ -1,10 +1,9 @@ -Reseller Main -Reseller Main

+Reseller +Reseller

<%= $url = "$selfurl?session=$session_id;action="; ''; %> -$td COLSPAN=3 ALIGN=center>". - qq!!. - 'Setup '. $part_svc->{'svc'}. ' '. + qq!!. 'Setup '. $part_svc->{'svc'}. ' '. '('. $part_svc->{'num_avail'}. ' available)'. ''; $col = $col eq $col1 ? $col2 : $col1; diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index 44dd8bb3a..0816758fb 100644 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -10,7 +10,8 @@ use HTML::Entities; use FS::SelfService qw( login customer_info invoice payment_info process_payment list_pkgs - part_svc_info provision_acct unprovision_svc + part_svc_info provision_acct provision_external + unprovision_svc ); $template_dir = '.'; @@ -60,7 +61,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|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; @@ -224,6 +225,13 @@ sub process_svc_acct { } +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, -- cgit v1.2.1
-Reseller Main
- -
+ +<%= include('agent_menu') %> +'; + +} %> + +
<%= if ( @customers ) { @@ -38,4 +37,3 @@ powered by freeside - diff --git a/fs_selfservice/FS-SelfService/cgi/order_pkg.html b/fs_selfservice/FS-SelfService/cgi/order_pkg.html new file mode 100644 index 000000000..9cdd4cd6c --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/order_pkg.html @@ -0,0 +1,75 @@ + +Purchase additional package

+<%= if ( $error ) { + $OUT .= qq!$error

!; +} ''; %> +
+ + + + + + + + + + + + + + + + + + + +<%= + if ( $security_phrase ) { + $OUT .= < + + + +ENDOUT + } else { + $OUT .= ''; + } +%> +<%= + if ( @svc_acct_pop ) { + $OUT .= ''; + } else { + $OUT .= popselector(popnum=>$popnum, pops=>\@svc_acct_pop); + } +%> +
Username
Password
Re-enter Password
Security Phrase +
Access number'. + popselector( 'popnum' => $popnum, + 'pops' => \@svc_acct_pop, + 'init_popstate' => $init_popstate, + 'popac' => $popac, + 'acstate' => $acstate, + ). + '
+ +
+ diff --git a/fs_selfservice/FS-SelfService/cgi/provision.html b/fs_selfservice/FS-SelfService/cgi/provision.html index 326f90229..6d80e89db 100644 --- a/fs_selfservice/FS-SelfService/cgi/provision.html +++ b/fs_selfservice/FS-SelfService/cgi/provision.html @@ -4,73 +4,7 @@ <%= include('myaccount_menu') %>
-Setup services

- - - -<%= foreach my $pkg ( - grep { scalar(@{$_->{part_svc}}) - || scalar(@{$_->{cust_svc}}) - } @cust_pkg - ) { - - $OUT .= ''. - ''; - - my $col1 = "ffffff"; - my $col2 = "dddddd"; - my $col = $col1; - - foreach my $cust_svc ( @{ $pkg->{cust_svc} } ) { - my $td = qq!'. - "$td>". $cust_svc->{label}[1]. ''. - "$td>"; - - #if ( $cust_svc->{label}[2] eq 'svc_acct' ) { - # $OUT .= qq!(!. - # 'change pw) '; - #} - - unless ( $cust_svc->{'svcnum'} == $svcnum ) { - $OUT .= qq!(!. - 'delete)'; - - } - $OUT .= ''; - $col = $col eq $col1 ? $col2 : $col1; - } - - $OUT .= '' - if scalar(@{$pkg->{part_svc}}) && scalar(@{$pkg->{cust_svc}}); - - my $col = $col1; - - foreach my $part_svc ( @{ $pkg->{part_svc} } ) { - - my $td = qq!'; - $col = $col eq $col1 ? $col2 : $col1; - } - - $OUT .= '
'. - $pkg->{'pkg'}. - '
". $cust_svc->{label}[0]. ':
!. - 'Setup '. $part_svc->{'svc'}. ' '. - '('. $part_svc->{'num_avail'}. ' available)'. - '

'; - -} %> - +<%= include('provision_list') %>

powered by freeside diff --git a/fs_selfservice/FS-SelfService/cgi/provision_list.html b/fs_selfservice/FS-SelfService/cgi/provision_list.html new file mode 100644 index 000000000..7e7059388 --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/provision_list.html @@ -0,0 +1,74 @@ +Setup services

+ + + + + +<%= foreach my $pkg ( + grep { scalar(@{$_->{part_svc}}) + || scalar(@{$_->{cust_svc}}) + } @cust_pkg + ) { + + $OUT .= #'
'. + ''; + + my $col1 = "ffffff"; + my $col2 = "dddddd"; + my $col = $col1; + + foreach my $cust_svc ( @{ $pkg->{cust_svc} } ) { + my $td = qq!'. + "$td>". $cust_svc->{label}[1]. ''; + $OUT .= '
password: '. encode_entities($cust_svc->{_password}). '' + if exists($cust_svc->{_password}); + $OUT .= ''. + "$td>"; + + #if ( $cust_svc->{label}[2] eq 'svc_acct' ) { + # $OUT .= qq!(!. + # 'change pw) '; + #} + + unless ( $cust_svc->{'svcnum'} == $svcnum ) { + $OUT .= qq!(!. + 'delete)'; + + } + $OUT .= ''; + $col = $col eq $col1 ? $col2 : $col1; + } + + $OUT .= '' + if scalar(@{$pkg->{part_svc}}) && scalar(@{$pkg->{cust_svc}}); + + $col = $col1; + + foreach my $part_svc ( @{ $pkg->{part_svc} } ) { + + my $td = qq!'; + $col = $col eq $col1 ? $col2 : $col1; + } + + #$OUT .= '
'. + $pkg->{'pkg'}. + '
". $cust_svc->{label}[0]. ':
!. + 'Setup '. $part_svc->{'svc'}. ' '. + '('. $part_svc->{'num_avail'}. ' available)'. + '

'; + $OUT .= '
 
diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index d8e044a96..44dd8bb3a 100644 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -6,6 +6,7 @@ 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 list_pkgs @@ -176,7 +177,9 @@ sub logout { } 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 +207,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,7 +218,7 @@ sub process_svc_acct { 'error' => $result->{'error'}, }; } else { - warn "$result $result->{'error'}"; + #warn "$result $result->{'error'}"; return $result; } @@ -255,8 +258,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 +271,9 @@ sub include { ) or die $Text::Template::ERROR; - $template->fill_in(); + $template->fill_in( PACKAGE => 'FS::SelfService::_selfservicecgi', + #HASH => $fill_in + ); } diff --git a/fs_selfservice/FS-SelfService/cgi/svc_acct.html b/fs_selfservice/FS-SelfService/cgi/svc_acct.html new file mode 100644 index 000000000..abed8786e --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/svc_acct.html @@ -0,0 +1,55 @@ +Setup <%= $svc %>

+ +<%= if ( $error ) { + $OUT .= qq!Error setting up $svc: $error!. + '

'; +} ''; %> +
+ + + + + + + + + + + + + + + + + + +<%= + if ( $security_phrase ) { + $OUT .= < + + + +ENDOUT + } else { + $OUT .= ''; + } +%> +<%= + if ( @svc_acct_pop ) { + $OUT .= ''; + } else { + $OUT .= popselector(popnum=>$popnum, pops=>\@svc_acct_pop); + } +%> +
Username
Password
Re-enter Password
Security Phrase +
Access number'. + popselector( 'popnum' => $popnum, + 'pops' => \@svc_acct_pop, + 'init_popstate' => $init_popstate, + 'popac' => $popac, + 'acstate' => $acstate, + ). + '
+ +
diff --git a/fs_selfservice/FS-SelfService/cgi/view_customer.html b/fs_selfservice/FS-SelfService/cgi/view_customer.html index e4e9be250..11e4432d0 100644 --- a/fs_selfservice/FS-SelfService/cgi/view_customer.html +++ b/fs_selfservice/FS-SelfService/cgi/view_customer.html @@ -1,10 +1,9 @@ -View Customer -View Customer

+Reseller +Reseller

<%= $url = "$selfurl?session=$session_id;action="; ''; %> -
-Reseller Main
- -
+ +<%= include('agent_menu') %> +
<%= $message ? "$message

" @@ -13,67 +12,13 @@ <%= $small_custview %> -
Purchase additional package -
- - - - - -
+<%= include('agent_customer_menu') %> + - - - - - - - - - - - - - -<%= - if ( $security_phrase ) { - $OUT .= < - - - -ENDOUT - } else { - $OUT .= ''; - } -%> -<%= - if ( @svc_acct_pop ) { - $OUT .= ''; - } else { - $OUT .= popselector(popnum=>$popnum, pops=>\@svc_acct_pop); - } -%> -
-
Username
Password
Re-enter Password
Security Phrase -
Access number'. - popselector( 'popnum' => $popnum, - 'pops' => \@svc_acct_pop, - 'init_popstate' => $init_popstate, - 'popac' => $popac, - 'acstate' => $acstate, - ). - '
- - +

-- cgit v1.2.1 From 7598902376bff0ddeba07ef9eb973f64efe87ad5 Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 5 Sep 2004 22:42:13 +0000 Subject: fixed duplicate checking will catch it, but add client-side protection against double-submission also. --- fs_selfservice/FS-SelfService/cgi/signup.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/signup.html b/fs_selfservice/FS-SelfService/cgi/signup.html index 973035179..3532527a2 100755 --- a/fs_selfservice/FS-SelfService/cgi/signup.html +++ b/fs_selfservice/FS-SelfService/cgi/signup.html @@ -14,7 +14,7 @@ //--> <%= $agent || 'ISP' %> Signup form

<%= $error %> -
+ @@ -229,5 +229,5 @@ ENDOUT } %>
-

+

-- cgit v1.2.1 From b50276a1fc993e07ef839f87a0611680bbda2ce7 Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 17 Oct 2004 09:54:58 +0000 Subject: use templated svc_acct provisioner, from agent interface --- .../FS-SelfService/cgi/provision_svc_acct.html | 56 +--------------------- 1 file changed, 1 insertion(+), 55 deletions(-) (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/provision_svc_acct.html b/fs_selfservice/FS-SelfService/cgi/provision_svc_acct.html index d18375c82..cf3585721 100644 --- a/fs_selfservice/FS-SelfService/cgi/provision_svc_acct.html +++ b/fs_selfservice/FS-SelfService/cgi/provision_svc_acct.html @@ -4,61 +4,7 @@ <%= include('myaccount_menu') %>
-Setup <%= $svc %>

- -<%= if ( $error ) { - $OUT .= qq!Error setting up $svc: $error!. - '

'; -} ''; %> -
- - - - - - - - - - - - - - - - - -<%= - if ( $security_phrase ) { - $OUT .= < - - - -ENDOUT - } else { - $OUT .= ''; - } -%> -<%= - if ( @svc_acct_pop ) { - $OUT .= ''; - } else { - $OUT .= popselector(popnum=>$popnum, pops=>\@svc_acct_pop); - } -%> -
Username
Password
Re-enter Password
Security Phrase -
Access number'. - popselector( 'popnum' => $popnum, - 'pops' => \@svc_acct_pop, - 'init_popstate' => $init_popstate, - 'popac' => $popac, - 'acstate' => $acstate, - ). - '
- -
- +<%= include('svc_acct') %>

powered by freeside -- cgit v1.2.1 From dda265d579b6f754feea0deacd12ae358d552f11 Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 17 Oct 2004 14:01:47 +0000 Subject: add artera turbo handling to self-service and reseller interfaces --- fs_selfservice/FS-SelfService/cgi/agent.cgi | 25 ++++++++++++++++++++-- .../FS-SelfService/cgi/process_svc_external.html | 16 ++++++++++++++ .../FS-SelfService/cgi/provision_list.html | 17 +++++++++++++-- fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 12 +++++++++-- 4 files changed, 64 insertions(+), 6 deletions(-) create mode 100644 fs_selfservice/FS-SelfService/cgi/process_svc_external.html (limited to 'fs_selfservice/FS-SelfService/cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/agent.cgi b/fs_selfservice/FS-SelfService/cgi/agent.cgi index b88709862..92c76f38e 100644 --- a/fs_selfservice/FS-SelfService/cgi/agent.cgi +++ b/fs_selfservice/FS-SelfService/cgi/agent.cgi @@ -14,7 +14,8 @@ use FS::SelfService qw( agent_login agent_logout agent_info agent_list_customers signup_info new_customer customer_info list_pkgs order_pkg - part_svc_info provision_acct unprovision_svc + part_svc_info provision_acct provision_external + unprovision_svc ); $DEBUG = 0; @@ -67,7 +68,7 @@ $session_id = $cgi->param('session'); warn "$me checking action\n" if $DEBUG; $cgi->param('action') =~ - /^(agent_main|signup|process_signup|list_customers|view_customer|agent_provision|provision_svc|process_svc_acct|delete_svc|agent_order_pkg|process_order_pkg|logout)$/ + /^(agent_main|signup|process_signup|list_customers|view_customer|agent_provision|provision_svc|process_svc_acct|process_svc_external|delete_svc|agent_order_pkg|process_order_pkg|logout)$/ or die "unknown action ". $cgi->param('action'); my $action = $1; @@ -321,6 +322,26 @@ sub process_svc_acct { } +sub process_svc_external { + + my $result = provision_external ( + 'agent_session_id' => $session_id, + map { $_ => $cgi->param($_) } qw( custnum pkgnum svcpart ) + ); + + #warn "$result $result->{'error'}"; + $action = 'agent_provision'; + return { + %{agent_provision()}, + 'message' => $result->{'error'} + ? ''. $result->{'error'}. '' + : $result->{'svc'}. ' setup sucessfully'. + ': serial number '. + sprintf('%010d', $result->{'id'}). '-'. $result->{'title'} + }; + +} + sub delete_svc { my $result = unprovision_svc( 'agent_session_id' => $session_id, diff --git a/fs_selfservice/FS-SelfService/cgi/process_svc_external.html b/fs_selfservice/FS-SelfService/cgi/process_svc_external.html new file mode 100644 index 000000000..772cf0838 --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/process_svc_external.html @@ -0,0 +1,16 @@ +<%= $error ? 'MyAccount' : sprintf("Your serial number is %010d-$title", $id) %> +MyAccount

+<%= $url = "$selfurl?session=$session_id;action="; ''; %> + +<%= include('myaccount_menu') %> +
+ +<%= $svc %> setup sucessfully. + +

Your serial number is <%= sprintf("%010d-$title", $id) %> + +
+
+powered by freeside + + diff --git a/fs_selfservice/FS-SelfService/cgi/provision_list.html b/fs_selfservice/FS-SelfService/cgi/provision_list.html index 7e7059388..0c8e05078 100644 --- a/fs_selfservice/FS-SelfService/cgi/provision_list.html +++ b/fs_selfservice/FS-SelfService/cgi/provision_list.html @@ -58,9 +58,22 @@ function areyousure(href, message) { my $td = qq!
{'svcdb'} eq 'svc_external' + #&& $conf->exists('svc_external-skip_manual') + ) { + $link = "${url}process_svc_external;". + "pkgnum=$pkg->{'pkgnum'};". + "svcpart=$part_svc->{'svcpart'}"; + } else { + $link = "${url}provision_svc;". + "pkgnum=$pkg->{'pkgnum'};". + "svcpart=$part_svc->{'svcpart'}"; + } + $OUT .= "