diff options
author | Mark Wells <mark@freeside.biz> | 2012-04-18 06:18:14 -0700 |
---|---|---|
committer | Mark Wells <mark@freeside.biz> | 2012-04-18 06:18:14 -0700 |
commit | e39c7a239fe3604445ffdef6472d0e41abca0049 (patch) | |
tree | 2fb13b68111cebb689d5ecb544ecf9e94ae3280c /FS/FS/cust_svc.pm | |
parent | 3ce70fff14b951189273348f4ddd06aa1069eafc (diff) |
remove ticket links to deleted services, #17067
Diffstat (limited to 'FS/FS/cust_svc.pm')
-rw-r--r-- | FS/FS/cust_svc.pm | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/FS/FS/cust_svc.pm b/FS/FS/cust_svc.pm index a527913..6bd8cb8 100644 --- a/FS/FS/cust_svc.pm +++ b/FS/FS/cust_svc.pm @@ -98,6 +98,28 @@ Deletes this service from the database. If there is an error, returns the error, otherwise returns false. Note that this only removes the cust_svc record - you should probably use the B<cancel> method instead. +=cut + +sub delete { + my $self = shift; + my $error = $self->SUPER::delete; + return $error if $error; + + if ( FS::Conf->new->config('ticket_system') eq 'RT_Internal' ) { + FS::TicketSystem->init; + my $session = FS::TicketSystem->session; + my $links = RT::Links->new($session->{CurrentUser}); + my $svcnum = $self->svcnum; + $links->Limit(FIELD => 'Target', + VALUE => 'freeside://freeside/cust_svc/'.$svcnum); + while ( my $l = $links->Next ) { + my ($val, $msg) = $l->Delete; + # can't do anything useful on error + warn "error unlinking ticket $svcnum: $msg\n" if !$val; + } + } +} + =item cancel Cancels the relevant service by calling the B<cancel> method of the associated |