diff options
author | khoff <khoff> | 2005-04-01 22:52:11 +0000 |
---|---|---|
committer | khoff <khoff> | 2005-04-01 22:52:11 +0000 |
commit | 29c80b06fd677d43ff94d4503bb577107c71882e (patch) | |
tree | 9ae1084150e5a15712a51db67400146f17feeb7e /FS/FS/h_cust_svc.pm | |
parent | 40861f48bd2987133783f6b086adb1988f9872be (diff) |
Trap, and attempt to resolve, problems caused by missing history records.
Diffstat (limited to 'FS/FS/h_cust_svc.pm')
-rw-r--r-- | FS/FS/h_cust_svc.pm | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/FS/FS/h_cust_svc.pm b/FS/FS/h_cust_svc.pm index 17be97d..0cbac4a 100644 --- a/FS/FS/h_cust_svc.pm +++ b/FS/FS/h_cust_svc.pm @@ -40,9 +40,25 @@ Returns a list consisting of: sub label { my $self = shift; carp "FS::h_cust_svc::label called on $self" if $DEBUG; - my $svc_x = $self->h_svc_x(@_) - or die "can't find h_". $self->part_svc->svcdb. '.svcnum '. $self->svcnum; - $self->_svc_label($svc_x, @_); + my $svc_x = $self->h_svc_x(@_); + my $part_svc = $self->part_svc; + + unless ($svc_x) { + carp "can't find h_". $self->part_svc->svcdb. '.svcnum '. $self->svcnum if $DEBUG; + return $part_svc->svc, 'n/a', $part_svc->svcdb; + } + + my @label; + eval { @label = $self->_svc_label($svc_x, @_); }; + + if ($@) { + carp 'while resolving history record for svcdb/svcnum ' . + $part_svc->svcdb . '/' . $self->svcnum . ': ' . $@ if $DEBUG; + return $part_svc->svc, 'n/a', $part_svc->svcdb; + } else { + return @label; + } + } =item h_svc_x END_TIMESTAMP [ START_TIMESTAMP ] |