From 201962afb41285b50dc853028b7b1f1ef83039d2 Mon Sep 17 00:00:00 2001 From: Mark Wells Date: Tue, 1 Oct 2013 12:30:58 -0700 Subject: [PATCH] when a service is deleted, transfer its tickets to the owning customer, #25180 --- FS/FS/cust_svc.pm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/FS/FS/cust_svc.pm b/FS/FS/cust_svc.pm index d6d7d4cf1..958209049 100644 --- a/FS/FS/cust_svc.pm +++ b/FS/FS/cust_svc.pm @@ -113,6 +113,10 @@ my $rt_session; sub delete { my $self = shift; + + my $cust_pkg = $self->cust_pkg; + my $custnum = $cust_pkg->custnum if $cust_pkg; + my $error = $self->SUPER::delete; return $error if $error; @@ -126,7 +130,15 @@ sub delete { $links->Limit(FIELD => 'Target', VALUE => 'freeside://freeside/cust_svc/'.$svcnum); while ( my $l = $links->Next ) { - my ($val, $msg) = $l->Delete; + my ($val, $msg); + if ( $custnum ) { + # re-link to point to the customer instead + ($val, $msg) = + $l->SetTarget('freeside://freeside/cust_main/'.$custnum); + } else { + # unlinked service + ($val, $msg) = $l->Delete; + } # can't do anything useful on error warn "error unlinking ticket $svcnum: $msg\n" if !$val; } -- 2.11.0