summaryrefslogtreecommitdiff
path: root/FS/FS/cust_svc.pm
diff options
context:
space:
mode:
authorivan <ivan>2001-11-03 17:49:52 +0000
committerivan <ivan>2001-11-03 17:49:52 +0000
commitfd72d2af8120195f96826eb044e217dbfcaee1c7 (patch)
tree8f7e468c4e48f24aab10a9c4704a68fb982ca770 /FS/FS/cust_svc.pm
parent3802a0ac7cbbae87a45014b0968f0a4186876d52 (diff)
new 'jsearch' call for big joined searches & caching support
preliminary customer browse optimizations, much faster!
Diffstat (limited to 'FS/FS/cust_svc.pm')
-rw-r--r--FS/FS/cust_svc.pm42
1 files changed, 35 insertions, 7 deletions
diff --git a/FS/FS/cust_svc.pm b/FS/FS/cust_svc.pm
index daec79f..c398e5e 100644
--- a/FS/FS/cust_svc.pm
+++ b/FS/FS/cust_svc.pm
@@ -14,6 +14,17 @@ use FS::svc_forward;
@ISA = qw( FS::Record );
+sub _cache {
+ my $self = shift;
+ my ( $hashref, $cache ) = @_;
+ if ( $hashref->{'username'} ) {
+ $self->{'_svc_acct'} = FS::svc_acct->new($hashref, '');
+ }
+ if ( $hashref->{'svc'} ) {
+ $self->{'_svcpart'} = FS::part_svc->new($hashref);
+ }
+}
+
=head1 NAME
FS::cust_svc - Object method for cust_svc objects
@@ -109,6 +120,20 @@ sub check {
''; #no error
}
+=item part_svc
+
+Returns the definition for this service, as a FS::part_svc object (see
+L<FS::part_svc>).
+
+=cut
+
+sub part_svc {
+ my $self = shift;
+ $self->{'_svcpart'}
+ ? $self->{'_svcpart'}
+ : qsearchs( 'part_svc', { 'svcpart' => $self->svcpart } );
+}
+
=item label
Returns a list consisting of:
@@ -120,11 +145,14 @@ Returns a list consisting of:
sub label {
my $self = shift;
- my $part_svc = qsearchs( 'part_svc', { 'svcpart' => $self->svcpart } );
- my $svcdb = $part_svc->svcdb;
- my $svc_x = qsearchs( $svcdb, { 'svcnum' => $self->svcnum } )
- or die "can't find $svcdb.svcnum ". $self->svcnum;
- my $svc = $part_svc->svc;
+ my $svcdb = $self->part_svc->svcdb;
+ my $svc_x;
+ if ( $svcdb eq 'svc_acct' && $self->{'_svc_acct'} ) {
+ $svc_x = $self->{'_svc_acct'};
+ } else {
+ $svc_x = qsearchs( $svcdb, { 'svcnum' => $self->svcnum } )
+ or die "can't find $svcdb.svcnum ". $self->svcnum;
+ }
my $tag;
if ( $svcdb eq 'svc_acct' ) {
$tag = $svc_x->email;
@@ -148,14 +176,14 @@ sub label {
cluck "warning: asked for label of unsupported svcdb; using svcnum";
$tag = $svc_x->getfield('svcnum');
}
- $svc, $tag, $svcdb;
+ $self->part_svc->svc, $tag, $svcdb;
}
=back
=head1 VERSION
-$Id: cust_svc.pm,v 1.5 2001-09-03 22:07:38 ivan Exp $
+$Id: cust_svc.pm,v 1.6 2001-11-03 17:49:52 ivan Exp $
=head1 BUGS