From 967b1c01527201e63b988f6aeea8021a7d18f421 Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 8 Nov 2010 22:04:52 +0000 Subject: [PATCH] return phone numbers to inventory when unprovisioned, RT#10520 --- FS/FS/phone_avail.pm | 22 +++++++++++++++++++++- FS/FS/svc_phone.pm | 11 +++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/FS/FS/phone_avail.pm b/FS/FS/phone_avail.pm index 55b44eca7..f05f05be2 100644 --- a/FS/FS/phone_avail.pm +++ b/FS/FS/phone_avail.pm @@ -1,11 +1,14 @@ package FS::phone_avail; use strict; -use vars qw( @ISA ); +use vars qw( @ISA $DEBUG $me ); use FS::Record qw( qsearch qsearchs ); @ISA = qw(FS::Record); +$me = '[FS::phone_avail]'; +$DEBUG = 0; + =head1 NAME FS::phone_avail - Phone number availability cache @@ -170,6 +173,23 @@ sub process_batch_import { } +# Used by FS::Upgrade to migrate to a new database. +sub _upgrade_data { + my ($class, %opts) = @_; + + warn "$me upgrading $class\n" if $DEBUG; + + my $sth = dbh->prepare( + 'UPDATE phone_avail SET svcnum = NULL + WHERE svcnum IS NOT NULL + AND 0 = ( SELECT COUNT(*) FROM svc_phone + WHERE phone_avail.svcnum = svc_phone.svcnum )' + ) or die dbh->errstr; + + $sth->execute or die $sth->errstr; + +} + =back =head1 BUGS diff --git a/FS/FS/svc_phone.pm b/FS/FS/svc_phone.pm index a599ea227..adf7a6c56 100644 --- a/FS/FS/svc_phone.pm +++ b/FS/FS/svc_phone.pm @@ -13,6 +13,7 @@ use FS::phone_device; use FS::svc_pbx; use FS::svc_domain; use FS::cust_location; +use FS::phone_avail; $me = '[' . __PACKAGE__ . ']'; $DEBUG = 0; @@ -262,6 +263,16 @@ sub delete { } } + my @phone_avail = qsearch('phone_avail', { 'svcnum' => $self->svcnum } ); + foreach my $phone_avail ( @phone_avail ) { + $phone_avail->svcnum(''); + my $error = $phone_avail->replace; + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return $error; + } + } + my $error = $self->SUPER::delete; if ( $error ) { $dbh->rollback if $oldAutoCommit; -- 2.11.0