summaryrefslogtreecommitdiff
path: root/FS/FS/h_cust_svc.pm
diff options
context:
space:
mode:
authorkhoff <khoff>2005-04-01 22:52:11 +0000
committerkhoff <khoff>2005-04-01 22:52:11 +0000
commit29c80b06fd677d43ff94d4503bb577107c71882e (patch)
tree9ae1084150e5a15712a51db67400146f17feeb7e /FS/FS/h_cust_svc.pm
parent40861f48bd2987133783f6b086adb1988f9872be (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.pm22
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 ]