X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Flib%2FRT%2FURI%2Ffreeside%2FInternal.pm;fp=rt%2Flib%2FRT%2FURI%2Ffreeside%2FInternal.pm;h=5656a51d8a18e4ba9dda621f8380dbaa694b93e1;hb=e010976ba33c00bb2b97d677f610e4b19571feaf;hp=4069b87af8e6222a9637f9e54a3863ab293c9e58;hpb=e67988848e92af19719fe7c06c589e3b7b46d058;p=freeside.git diff --git a/rt/lib/RT/URI/freeside/Internal.pm b/rt/lib/RT/URI/freeside/Internal.pm index 4069b87af..5656a51d8 100644 --- a/rt/lib/RT/URI/freeside/Internal.pm +++ b/rt/lib/RT/URI/freeside/Internal.pm @@ -38,6 +38,7 @@ use FS::Conf; use FS::Record qw(qsearchs qsearch dbdef); use FS::cust_main; use FS::cust_svc; +use FS::payby; =head1 NAME @@ -53,7 +54,7 @@ See L for public/private interface documentation. -sub _FreesideGetRecord { # cache this? +sub _FreesideGetRecord { my $self = shift; my ($table, $pkey) = ($self->{'fstable'}, $self->{'fspkey'}); @@ -142,36 +143,31 @@ sub _FreesideURILabelLong { } -sub AgentName { +# no need to have a separate wrapper method for every one of these things +sub CustomerInfo { my $self = shift; my $rec = $self->_FreesideGetRecord() or return; - my $agent = $rec->{'_object'}->agent or return; - return $agent->agentnum . ': ' . $agent->agent; -} - -sub CustomerClass { - my $self = shift; - my $rec = $self->_FreesideGetRecord() or return; - my $cust_class = $rec->{'_object'}->cust_class or return; - return $cust_class->classname; -} - -sub CustomerTags { - my $self = shift; - my $rec = $self->_FreesideGetRecord() or return; - my @part_tag = $rec->{'_object'}->part_tag; - return map { - { 'name' => $_->tagname, - 'desc' => $_->tagdesc, - 'color' => $_->tagcolor } - } @part_tag; -} - -sub Referral { - my $self = shift; - my $rec = $self->_FreesideGetRecord() or return; - my $ref = qsearchs('part_referral', { refnum => $rec->{'_object'}->refnum }); - $ref ? $ref->referral : '' + my $cust_main = $rec->{'_object'}; + my $agent = $cust_main->agent; + my $class = $cust_main->cust_class; + my $referral = qsearchs('part_referral', { refnum => $cust_main->refnum }); + my @part_tags = $cust_main->part_tag; + + return $self->{CustomerInfo} ||= { + $cust_main->hash, + + AgentName => ($agent ? ($agent->agentnum.': '.$agent->agent) : ''), + CustomerClass => ($class ? $class->classname : ''), + CustomerTags => [ + sort { $a->{'name'} <=> $b->{'name'} } + map { + { name => $_->tagname, desc => $_->tagdesc, color => $_->tagcolor } + } @part_tags + ], + Referral => ($referral ? $referral->referral : ''), + InvoiceEmail => $cust_main->invoicing_list_emailonly_scalar, + BillingType => FS::payby->longname($cust_main->payby), + } } 1;