X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FClientAPI%2FSignup.pm;h=b7dcdbb646e6ff64ff07317434a18614ca6dc962;hb=c1a8a9a97ee439036f9f3da5ff222fe3612fc4be;hp=595f4fb405031a8e511c03391a8b353d256343a6;hpb=0e7c29b192fff137d3b9167b29633a94f94b995f;p=freeside.git diff --git a/FS/FS/ClientAPI/Signup.pm b/FS/FS/ClientAPI/Signup.pm index 595f4fb40..b7dcdbb64 100644 --- a/FS/FS/ClientAPI/Signup.pm +++ b/FS/FS/ClientAPI/Signup.pm @@ -185,8 +185,6 @@ sub signup_info { 'signup_service' => $svc_x, 'company_name' => scalar($conf->config('company_name')), #per-agent? - 'agent_ship_address' => scalar($conf->exists('agent-ship_address')), - 'require_phone' => scalar($conf->exists('cust_main-require_phone')), 'logo' => scalar($conf->config_binary('logo.png')), 'prepaid_template_custnum' => $conf->exists('signup_server-prepaid-template-custnum'), }; @@ -375,13 +373,6 @@ sub signup_info { $signup_info->{'company_name'} = $conf->config('company_name', $agentnum); - if ( $signup_info->{'agent_ship_address'} && $agent->agent_custnum ) { - my $cust_main = $agent->agent_cust_main; - my $prefix = length($cust_main->ship_last) ? 'ship_' : ''; - $signup_info->{"ship_$_"} = $cust_main->get("$prefix$_") - foreach qw( address1 city county state zip country ); - } - #some of the above could probably be cached, too my $signup_info_cache_agent = $cache->get("signup_info_cache_agent$agentnum"); @@ -403,8 +394,23 @@ sub signup_info { qw( body_bgcolor box_bgcolor menu_bgcolor ) ), ( map { $_ => join("\n", $conf->config("selfservice-$_", $agentnum ) ) } qw( head body_header body_footer ) ), + ( map { $_ => join("\n", $conf->config("signup_server-$_", $agentnum ) ) } + qw( terms_of_service ) ), + + ( map { $_ => scalar($conf->exists($_, $agentnum)) } + qw(cust_main-require_phone agent-ship_address) ), }; + if ( $signup_info_cache_agent->{'agent-ship_address'} + && $agent->agent_cust_main ) { + + my $cust_main = $agent->agent_cust_main; + my $location = $cust_main->ship_location; + $signup_info_cache_agent->{"ship_$_"} = $location->get($_) + foreach qw( address1 city county state zip country ); + + } + $cache->set("signup_info_cache_agent$agentnum", $signup_info_cache_agent); } @@ -503,6 +509,13 @@ sub new_customer { || $conf->config('signup_server-default_agentnum'); } + my ($bill_hash, $ship_hash); + foreach my $f (FS::cust_main->location_fields) { + # avoid having to change this in front-end code + $bill_hash->{$f} = $packet->{"bill_$f"} || $packet->{$f}; + $ship_hash->{$f} = $packet->{"ship_$f"}; + } + #shares some stuff with htdocs/edit/process/cust_main.cgi... take any # common that are still here and library them. my $template_custnum = $conf->config('signup_server-prepaid-template-custnum'); @@ -511,6 +524,7 @@ sub new_customer { my $template_cust = qsearchs('cust_main', { 'custnum' => $template_custnum } ); return { 'error' => 'Configuration error' } unless $template_cust; + #XXX Copy template customer's locations $cust_main = new FS::cust_main ( { 'agentnum' => $agentnum, 'refnum' => $packet->{refnum} @@ -550,39 +564,48 @@ sub new_customer { || $conf->config('signup_server-default_refnum'), map { $_ => $packet->{$_} } qw( - - last first ss company address1 address2 - city county state zip country + last first ss company daytime night fax stateid stateid_state - - ship_last ship_first ship_ss 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 paystate paytype paystart_month paystart_year payissue payip override_ban_warn - referral_custnum comments - ) + ), } ); } + my $bill_location = FS::cust_location->new($bill_hash); + my $ship_location; my $agent = qsearchs('agent', { 'agentnum' => $agentnum } ); - if ( $conf->exists('agent_ship_address') && $agent->agent_custnum ) { + if ( $conf->exists('agent-ship_address', $agentnum) + && $agent->agent_custnum ) { + my $agent_cust_main = $agent->agent_cust_main; my $prefix = length($agent_cust_main->ship_last) ? 'ship_' : ''; - $cust_main->set("ship_$_", $agent_cust_main->get("$prefix$_") ) - foreach qw( address1 city county state zip country ); - - $cust_main->set("ship_$_", $cust_main->get($_)) - foreach qw( last first ); + $ship_location = FS::cust_location->new({ + $agent_cust_main->ship_location->location_hash + }); } + # we don't have an equivalent of the "same" checkbox in selfservice + # so is there a ship address, and if so, is it different from the billing + # address? + elsif ( length($ship_hash->{address1}) > 0 and + grep { $bill_hash->{$_} ne $ship_hash->{$_} } keys(%$ship_hash) + ) { + + $ship_location = FS::cust_location->new( $ship_hash ); + + } + else { + $ship_location = $bill_location; + } + $cust_main->set('bill_location' => $bill_location); + $cust_main->set('ship_location' => $ship_location); return { 'error' => "Illegal payment type" } unless grep { $_ eq $packet->{'payby'} }