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 ++++++++++++++++++++++++++++ 1 file changed, 256 insertions(+) create mode 100644 fs_selfservice/FS-SelfService/cgi/agent.cgi (limited to 'fs_selfservice/FS-SelfService/cgi/agent.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); + -- 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/agent.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/agent.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 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/agent.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 ++++ 1 file changed, 4 insertions(+) (limited to 'fs_selfservice/FS-SelfService/cgi/agent.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} }; -- 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 ++++++++++++++++++++++++---- 1 file changed, 169 insertions(+), 23 deletions(-) (limited to 'fs_selfservice/FS-SelfService/cgi/agent.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 + ); + +} + -- 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 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'fs_selfservice/FS-SelfService/cgi/agent.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, -- cgit v1.2.1 From b5fbaadb1cb2893660e460a1d4a3cabe02774de7 Mon Sep 17 00:00:00 2001 From: ivan Date: Sat, 12 Mar 2005 14:31:50 +0000 Subject: - bring prepaid support into this century (close: Bug#1124) - finally get rid of fs_signup (everything is in fs_selfservice now) (Bug#413) - organize main menu sysadmin section so it is slightly less confusing --- fs_selfservice/FS-SelfService/cgi/agent.cgi | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'fs_selfservice/FS-SelfService/cgi/agent.cgi') diff --git a/fs_selfservice/FS-SelfService/cgi/agent.cgi b/fs_selfservice/FS-SelfService/cgi/agent.cgi index 92c76f38e..695d20e4c 100644 --- a/fs_selfservice/FS-SelfService/cgi/agent.cgi +++ b/fs_selfservice/FS-SelfService/cgi/agent.cgi @@ -113,7 +113,7 @@ sub process_signup { my $error = ''; - #some false laziness w/signup.cgi + #false laziness w/signup.cgi, identical except for agentnum vs session_id my $payby = $cgi->param('payby'); if ( $payby eq 'CHEK' || $payby eq 'DCHK' ) { #$payinfo = join('@', map { $cgi->param( $payby. "_payinfo$_" ) } (1,2) ); @@ -161,17 +161,25 @@ sub process_signup { unless ( $error ) { my $rv = new_customer ( { 'session_id' => $session_id, - map { $_ => $cgi->param($_) } + map { $_ => scalar($cgi->param($_)) } qw( last first ss company address1 address2 city county state zip country daytime night fax + + ship_last ship_first ship_company + ship_address1 ship_address2 ship_city ship_county ship_state + ship_zip ship_country + ship_daytime ship_night ship_fax + payby payinfo paycvv paydate payname invoicing_list + referral_custnum promo_code reg_code pkgpart username sec_phrase _password popnum refnum ), grep { /^snarf_/ } $cgi->param } ); $error = $rv->{'error'}; } + #eslaf if ( $error ) { $action = 'signup'; @@ -409,7 +417,8 @@ sub do_template { #warn join(' / ', map { "$_=>".$fill_in->{$_} } keys %$fill_in). "\n"; $cgi->delete_all(); - $fill_in->{'selfurl'} = $cgi->self_url; + $fill_in->{'selfurl'} = $cgi->self_url; #OLD + $fill_in->{'self_url'} = $cgi->self_url; $fill_in->{'cgi'} = \$cgi; my $template = new Text::Template( TYPE => 'FILE', -- cgit v1.2.1