=cut
sub cust_location {
- my $self = shift;
+ my( $self, %opt ) = @_;
+
return '' unless $self->locationnum;
- qsearchs( 'cust_location', { 'locationnum' => $self->locationnum } );
+
+ return $opt{_cache}->{$self->locationnum}
+ if $opt{_cache} && $opt{_cache}->{$self->locationnum};
+
+ my $cust_location =
+ qsearchs( 'cust_location', { 'locationnum' => $self->locationnum } );
+
+ $opt{_cache}->{$self->locationnum} = $cust_location
+ if $opt{_cache};
+
+ $cust_location;
}
=item cust_location_or_main
sub cust_location_or_main {
my $self = shift;
- $self->cust_location || $self->cust_main;
+ $self->cust_location(@_) || $self->cust_main;
}
=item location_label [ OPTION => VALUE ... ]
sub location_label {
my $self = shift;
- my $object = $self->cust_location_or_main;
+ my $object = $self->cust_location_or_main or return '';
$object->location_label(@_);
}