summaryrefslogtreecommitdiff
path: root/FS/FS/ClientAPI/MyAccount.pm
diff options
context:
space:
mode:
authorivan <ivan>2011-09-28 01:02:23 +0000
committerivan <ivan>2011-09-28 01:02:23 +0000
commit8405bf17ab0cdf9b227caf18a53131fd5935b377 (patch)
tree5a47f16472d91991f775b32c644eecdc6c94a4fc /FS/FS/ClientAPI/MyAccount.pm
parent70bffe41ccf43a9d25c2b54679f1e9310f50c1c4 (diff)
add self-service customer_info_short call to improve uniserve portal perf, RT#13656
Diffstat (limited to 'FS/FS/ClientAPI/MyAccount.pm')
-rw-r--r--FS/FS/ClientAPI/MyAccount.pm64
1 files changed, 64 insertions, 0 deletions
diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm
index fc9e124..74c4b33 100644
--- a/FS/FS/ClientAPI/MyAccount.pm
+++ b/FS/FS/ClientAPI/MyAccount.pm
@@ -443,6 +443,70 @@ sub customer_info {
}
+sub customer_info_short {
+ my $p = shift;
+
+ my($context, $session, $custnum) = _custoragent_session_custnum($p);
+ return { 'error' => $session } if $context eq 'error';
+
+ my %return;
+
+ my $conf = new FS::Conf;
+
+ if ( $custnum ) { #customer record
+
+ my $search = { 'custnum' => $custnum };
+ $search->{'agentnum'} = $session->{'agentnum'} if $context eq 'agent';
+ my $cust_main = qsearchs('cust_main', $search )
+ or return { 'error' => "unknown custnum $custnum" };
+
+ $return{small_custview} =
+ small_custview( $cust_main,
+ scalar($conf->config('countrydefault')),
+ 1, ##nobalance
+ );
+
+ $return{name} = $cust_main->first. ' '. $cust_main->get('last');
+
+ $return{payby} = $cust_main->payby;
+
+ #none of these are terribly expensive if we want 'em...
+ #for (@cust_main_editable_fields) {
+ # $return{$_} = $cust_main->get($_);
+ #}
+ #
+ #if ( $cust_main->payby =~ /^(CARD|DCRD)$/ ) {
+ # $return{payinfo} = $cust_main->paymask;
+ # @return{'month', 'year'} = $cust_main->paydate_monthyear;
+ #}
+ #
+ #$return{'invoicing_list'} =
+ # join(', ', grep { $_ !~ /^(POST|FAX)$/ } $cust_main->invoicing_list );
+ #$return{'postal_invoicing'} =
+ # 0 < ( grep { $_ eq 'POST' } $cust_main->invoicing_list );
+
+ if ( $session->{'svcnum'} ) {
+ my $cust_svc = qsearchs('cust_svc', { 'svcnum' => $session->{'svcnum'} });
+ $return{'svc_label'} = ($cust_svc->label)[1] if $cust_svc;
+ }
+
+ } elsif ( $session->{'svcnum'} ) { #no customer record
+
+ #uuh, not supproted yet... die?
+ return { 'error' => 'customer_info_short not yet supported as agent' };
+
+ } else {
+
+ return { 'error' => 'Expired session' }; #XXX redirect to login w/this err!
+
+ }
+
+ return { 'error' => '',
+ 'custnum' => $custnum,
+ %return,
+ };
+}
+
sub edit_info {
my $p = shift;
my $session = _cache->get($p->{'session_id'})