X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=fs_signup%2FFS-SignupClient%2Fcgi%2Fsignup.cgi;h=78f31aa288cafc9a008af61a06447fe16d592fee;hp=b6cc08a47c3940e2175355559fff5e9c4c4dc46b;hb=292610eafc745b94f4d9d2d784b02669bd297fc6;hpb=36ebe10e75936261aad914bbb5e5e2154323412c diff --git a/fs_signup/FS-SignupClient/cgi/signup.cgi b/fs_signup/FS-SignupClient/cgi/signup.cgi index b6cc08a47..78f31aa28 100755 --- a/fs_signup/FS-SignupClient/cgi/signup.cgi +++ b/fs_signup/FS-SignupClient/cgi/signup.cgi @@ -1,12 +1,14 @@ #!/usr/bin/perl -Tw # -# $Id: signup.cgi,v 1.33 2002-11-28 10:54:13 ivan Exp $ +# $Id: signup.cgi,v 1.44 2003-09-29 06:22:18 ivan Exp $ use strict; -use vars qw( @payby $cgi $locales $packages $pops $init_data $error +use vars qw( @payby $cgi $locales $packages + $pops %pop %popnum2pop + $init_data $error $last $first $ss $company $address1 $address2 $city $state $county $country $zip $daytime $night $fax $invoicing_list $payby $payinfo - $paydate $payname $referral_custnum + $paydate $payname $referral_custnum $init_popstate $pkgpart $username $password $password2 $sec_phrase $popnum $agentnum $ieak_file $ieak_template $cck_file $cck_template @@ -137,20 +139,42 @@ if ( -e $decline_html ) { ( $locales, $packages, $pops, $init_data ) = signup_info(); @payby = @{$init_data->{'payby'}} if @{$init_data->{'payby'}}; $packages = $init_data->{agentnum2part_pkg}{$agentnum} if $agentnum; +%pop = (); +%popnum2pop = (); +foreach (@$pops) { + push @{ $pop{ $_->{state} }->{ $_->{ac} } }, $_; + $popnum2pop{$_->{popnum}} = $_; +} $cgi = new CGI; if ( defined $cgi->param('magic') ) { if ( $cgi->param('magic') eq 'process' ) { - $cgi->param('state') =~ /^(\w*)( \(([\w ]+)\))? ?\/ ?(\w+)$/ - or die "Oops, illegal \"state\" param: ". $cgi->param('state'); - $state = $1; - $county = $3 || ''; - $country = $4; + if ( $cgi->param('state') =~ /^(\w*)( \(([\w ]+)\))? ?\/ ?(\w+)$/ ) { + $state = $1; + $county = $3 || ''; + $country = $4; + } elsif ( $cgi->param('state') =~ /^(\w*)$/ ) { + $state = $1; + $cgi->param('county') =~ /^([\w ]*)$/ + or die "illegal county: ". $cgi->param('county'); + $county = $1; + $cgi->param('country') =~ /^(\w+)$/ + or die "illegal country: ". $cgi->param('country'); + $country = $1; + } else { + die "illegal state: ". $cgi->param('state'); + } $payby = $cgi->param('payby'); - $payinfo = $cgi->param( $payby. '_payinfo' ); + if ( $payby eq 'CHEK' || $payby eq 'DCHK' ) { + #$payinfo = join('@', map { $cgi->param( $payby. "_payinfo$_" ) } (1,2) ); + $payinfo = $cgi->param($payby. '_payinfo1'). '@'. + $cgi->param($payby. '_payinfo2'); + } else { + $payinfo = $cgi->param( $payby. '_payinfo' ); + } $paydate = $cgi->param( $payby. '_month' ). '-'. $cgi->param( $payby. '_year' ); $payname = $cgi->param( $payby. '_payname' ); @@ -189,6 +213,7 @@ if ( defined $cgi->param('magic') ) { $password = $cgi->param('_password'); $popnum = $cgi->param('popnum'); #$agentnum, # = $cgi->param('agentnum'), + $init_popstate = $cgi->param('init_popstate'); if ( $cgi->param('_password') ne $cgi->param('_password2') ) { $error = $init_data->{msgcat}{passwords_dont_match}; #msgcat @@ -197,7 +222,7 @@ if ( defined $cgi->param('magic') ) { } else { $password2 = $cgi->param('_password2'); - if ( $payby eq 'CARD' && $cgi->param('CARD_type') ) { + if ( $payby =~ /^(CARD|DCRD)$/ && $cgi->param('CARD_type') ) { $payinfo =~ s/\D//g; $payinfo =~ /^(\d{13,16})$/ @@ -279,12 +304,14 @@ if ( defined $cgi->param('magic') ) { $sec_phrase = ''; $popnum = ''; $referral_custnum = $cgi->param('ref') || ''; + $init_popstate = $cgi->param('init_popstate') || ''; print_form; } sub print_form { $cgi->delete('ref'); + $cgi->delete('init_popstate'); $self_url = $cgi->self_url; $error = "Error: $error" if $error; @@ -312,7 +339,7 @@ sub print_okay { or die "fatal: invalid email_name got past FS::SignupClient::new_customer"; $email_name = $1; #global for template - my $pop = pop_info($cgi->param('popnum')); + my $pop = $popnum2pop{$cgi->param('popnum')}; #or die "fatal: invalid popnum got past FS::SignupClient::new_customer"; if ( $pop ) { ( $ac, $exch, $loc ) = ( $pop->{'ac'}, $pop->{'exch'}, $pop->{'loc'} ); @@ -350,15 +377,6 @@ sub print_okay { } } -sub pop_info { - my $popnum = shift; - my $pop; - foreach $pop ( @{$pops} ) { - if ( $pop->{'popnum'} == $popnum ) { return $pop; } - } - ''; -} - #horrible false laziness with FS/FS/svc_acct_pop.pm::popselector sub popselector { @@ -366,14 +384,16 @@ sub popselector { return '' unless @$pops; return $pops->[0]{city}. ', '. $pops->[0]{state}. - ' ('. $pops->[0]{ac}. ')/'. $pops->[0]{exch}. + ' ('. $pops->[0]{ac}. ')/'. $pops->[0]{exch}. '-'. $pops->[0]{loc}. '' if scalar(@$pops) == 1; - my %pop = (); - foreach (@$pops) { - push @{ $pop{ $_->{state} }->{ $_->{ac} } }, $_; - } + #my %pop = (); + #my %popnum2pop = (); + #foreach (@$pops) { + # push @{ $pop{ $_->{state} }->{ $_->{ac} } }, $_; + # $popnum2pop{$_->{popnum}} = $_; + #} my $text = < @@ -382,16 +402,23 @@ sub popselector { var length = what.length; what.options[length] = optionName; } +END - function acstate_changed(what) { - state = what.options[what.selectedIndex].text; - for (var i = what.form.popac.length;i > 0;i--) - what.form.popac.options[i] = null; - what.form.popac.options[0] = new Option("Area code", "-1", false, true); + if ( $init_popstate ) { + $text .= ''; + } else { + $text .= < 0;i--) - what.form.popnum.options[i] = null; + what.form.popnum.options.length = 0; what.form.popnum.options[0] = new Option("City", "-1", false, true); END - foreach my $state ( keys %pop ) { + foreach my $state ( @states ) { foreach my $popac ( keys %{ $pop{$state} } ) { $text .= "\nif ( ac == \"$popac\" ) {\n"; foreach my $pop ( @{$pop{$state}->{$popac}}) { my $o_popnum = $pop->{popnum}; my $poptext = $pop->{city}. ', '. $pop->{state}. - ' ('. $pop->{ac}. ')/'. $pop->{exch}; + ' ('. $pop->{ac}. ')/'. $pop->{exch}. '-'. $pop->{loc}; $text .= "opt(what.form.popnum, \"$o_popnum\", \"$poptext\");\n"; if ($popnum == $o_popnum) { @@ -437,7 +463,7 @@ END qq!'; $text .= @@ -446,12 +472,19 @@ END $text .= qq!
'; #callback? return 3 html pieces? #'
!; @@ -491,7 +524,7 @@ sub regionselector { my ( $selected_county, $selected_state, $selected_country, $prefix, $onchange ) = @_; - my $prefix = '' unless defined $prefix; + $prefix = '' unless defined $prefix; my $countyflag = 0;