X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FClientAPI%2FSignup.pm;h=2eefcf8d9d609c1d09d5768c5a0859248214efab;hb=5250c44bd7f282c7d782bf0e8349af12376929df;hp=c376476c3284fe2e533c1e02e7d6b5ae0ad0e087;hpb=81e426fe755eaea508041bc2d7b25ac44c777434;p=freeside.git diff --git a/FS/FS/ClientAPI/Signup.pm b/FS/FS/ClientAPI/Signup.pm index c376476c3..2eefcf8d9 100644 --- a/FS/FS/ClientAPI/Signup.pm +++ b/FS/FS/ClientAPI/Signup.pm @@ -1,7 +1,7 @@ package FS::ClientAPI::Signup; use strict; -use vars qw($DEBUG $me); +use vars qw( $DEBUG $me ); use Data::Dumper; use Tie::RefHash; use FS::Conf; @@ -26,6 +26,15 @@ use FS::payby; $DEBUG = 0; $me = '[FS::ClientAPI::Signup]'; +sub clear_cache { + warn "$me clear_cache called\n" if $DEBUG; + my $cache = new FS::ClientAPI_SessionCache( { + 'namespace' => 'FS::ClientAPI::Signup', + } ); + $cache->clear(); + return {}; +} + sub signup_info { my $packet = shift; @@ -90,7 +99,7 @@ sub signup_info { ], 'agent' => [ map { my $agent = $_; - map { $_ => $agent->get($_) } @agent_fields; + +{ map { $_ => $agent->get($_) } @agent_fields } } qsearch('agent', { 'disabled' => '' } ) ], @@ -111,6 +120,9 @@ sub signup_info { 'payby' => [ $conf->config('signup_server-payby') ], + 'payby_longname' => [ map { FS::payby->longname($_) } + $conf->config('signup_server-payby') ], + 'card_types' => card_types(), 'paytypes' => [ @FS::cust_main::paytypes ], @@ -338,6 +350,36 @@ sub signup_info { 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"); + + if ( $signup_info_cache_agent ) { + + warn "$me loading cached signup info for agentnum $agentnum\n" + if $DEBUG > 1; + + } else { + + warn "$me populating signup info cache for agentnum $agentnum\n" + if $DEBUG > 1; + + $signup_info_cache_agent = { + #( map { $_ => scalar( $conf->config($_, $agentnum) ) } + # qw( company_name ) ), + ( map { $_ => scalar( $conf->config("selfservice-$_", $agentnum ) ) } + qw( body_bgcolor box_bgcolor) ), + ( map { $_ => join("\n", $conf->config("selfservice-$_", $agentnum ) ) } + qw( head body_header body_footer ) ), + }; + + $cache->set("signup_info_cache_agent$agentnum", $signup_info_cache_agent); + + } + + $signup_info->{$_} = $signup_info_cache_agent->{$_} + foreach keys %$signup_info_cache_agent; + } # else { # delete $signup_info->{'part_pkg'}; @@ -608,26 +650,22 @@ sub new_customer { if ( $conf->exists('signup_server-realtime') ) { - #warn "[fs_signup_server] Billing customer...\n" if $Debug; + #warn "$me Billing customer...\n" if $Debug; my $bill_error = $cust_main->bill; - #warn "[fs_signup_server] error billing new customer: $bill_error" + #warn "$me error billing new customer: $bill_error" # if $bill_error; $bill_error = $cust_main->apply_payments_and_credits; - #warn "[fs_signup_server] error applying payments and credits for". + #warn "$me error applying payments and credits for". # " new customer: $bill_error" # if $bill_error; - if ($cust_main->_new_bop_required()) { - $bill_error = $cust_main->realtime_collect( - method => FS::payby->payby2bop( $packet->{payby} ), - depend_jobnum => $placeholder->jobnum, - ); - } else { - $bill_error = $cust_main->collect('realtime' => 1); - } - #warn "[fs_signup_server] error collecting from new customer: $bill_error" + $bill_error = $cust_main->realtime_collect( + method => FS::payby->payby2bop( $packet->{payby} ), + depend_jobnum => $placeholder->jobnum, + ); + #warn "$me error collecting from new customer: $bill_error" # if $bill_error; if ($bill_error && ref($bill_error) eq 'HASH') { @@ -639,6 +677,11 @@ sub new_customer { }; } + $bill_error = $cust_main->apply_payments_and_credits; + #warn "$me error applying payments and credits for". + # " new customer: $bill_error" + # if $bill_error; + if ( $cust_main->balance > 0 ) { #this makes sense. credit is "un-doing" the invoice