X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FClientAPI%2FSignup.pm;h=a178bec9c119df8b7364c89c4193348bc76f1e64;hb=768ab093771b3305a67c9d929b461ef777ecdad8;hp=a4ea21b8f5e855283c5d14e6809dea235dc6c046;hpb=3888fd6d1902f93c19d62df186e04617357f58c5;p=freeside.git diff --git a/FS/FS/ClientAPI/Signup.pm b/FS/FS/ClientAPI/Signup.pm index a4ea21b8f..a178bec9c 100644 --- a/FS/FS/ClientAPI/Signup.pm +++ b/FS/FS/ClientAPI/Signup.pm @@ -26,6 +26,7 @@ use FS::reg_code; use FS::payby; use FS::banned_pay; use FS::part_tag; +use FS::cust_payby; $DEBUG = 1; $me = '[FS::ClientAPI::Signup]'; @@ -175,7 +176,7 @@ sub signup_info { 'nomadix' => $conf->exists('signup_server-nomadix'), 'payby' => [ $conf->config('signup_server-payby') ], 'card_types' => card_types(), - 'paytypes' => [ @FS::cust_main::paytypes ], + 'paytypes' => [ FS::cust_payby->paytypes ], 'cvv_enabled' => 1, 'require_cvv' => $conf->exists('signup-require_cvv'), 'stateid_enabled' => $conf->exists('show_stateid'), @@ -533,20 +534,27 @@ sub new_customer { ( map { $_ => $packet->{$_} } qw( salesnum ss stateid stateid_state - - payby - payinfo paycvv paydate payname paystate paytype - paystart_month paystart_year payissue - payip - locale - referral_custnum comments ) ), ); + my %insert_options = (); + if ( $packet->{payby} =~ /^(CARD|DCRD|CHEK|DCHK)$/ ) { + $insert_options{cust_payby} = [ + new FS::cust_payby { + map { $_ => $packet->{$_} } qw( + payby + payinfo paycvv paydate payname paystate paytype + paystart_month paystart_year payissue + payip + ), + } + ]; + } + my $template_custnum = $conf->config('signup_server-prepaid-template-custnum'); my $cust_main; if ( $template_custnum && $packet->{prepaid_shortform} ) { @@ -644,8 +652,6 @@ sub new_customer { ? split( /\s*\,\s*/, $packet->{'invoicing_list'} ) : (); - my %insert_options = (); - my @exempt_groups = grep /\S/, $conf->config('tax-cust_exempt-groups'); my @tax_exempt = grep { $packet->{"tax_$_"} eq 'Y' } @exempt_groups; $insert_options{'tax_exemption'} = { @@ -688,6 +694,9 @@ sub new_customer { map { $_ => $packet->{$_} } qw( username _password sec_phrase popnum domsvc ), }; + + my $error = $svc->is_password_allowed($packet->{_password}); + return { error => $error } if $error; my @acct_snarf; my $snarfnum = 1; @@ -824,8 +833,8 @@ sub new_customer { #this used to apply a credit, but now we can void invoices... foreach my $cust_bill (@cust_bill) { - my $voiderror = $cust_bill->void(); - warn "Error voiding cust bill after decline: $voiderror"; + my $voiderror = $cust_bill->void('automatic payment failed'); + warn "Error voiding cust bill after decline: $voiderror" if $voiderror; } #should check list for errors... @@ -948,16 +957,25 @@ sub new_customer_minimal { last first company daytime night fax mobile ss stateid stateid_state - payby - payinfo paycvv paydate payname paystate paytype - paystart_month paystart_year payissue - payip - locale ), } ); + my %opt = (); + if ( $packet->{payby} =~ /^(CARD|DCRD|CHEK|DCHK)$/ ) { + $opt{cust_payby} = [ + new FS::cust_payby { + map { $_ => $packet->{$_} } qw( + payby + payinfo paycvv paydate payname paystate paytype + paystart_month paystart_year payissue + payip + ), + } + ]; + } + if ( grep length($packet->{$_}), FS::cust_main->location_fields ) { my $bill_hash; foreach my $f (FS::cust_main->location_fields) { @@ -1041,7 +1059,6 @@ sub new_customer_minimal { } - my %opt = (); if ( $invoicing_list[0] && $packet->{'_password'} ) { $opt{'contact'} = [ new FS::contact { 'first' => $cust_main->first,