[freeside-commits] freeside/FS/FS phone_avail.pm, 1.4, 1.5 svc_phone.pm, 1.28, 1.29

Ivan,,, ivan at wavetail.420.am
Mon Nov 8 14:04:54 PST 2010


Update of /home/cvs/cvsroot/freeside/FS/FS
In directory wavetail.420.am:/tmp/cvs-serv16600/FS/FS

Modified Files:
	phone_avail.pm svc_phone.pm 
Log Message:
return phone numbers to inventory when unprovisioned, RT#10520

Index: phone_avail.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/phone_avail.pm,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -w -d -r1.4 -r1.5
--- phone_avail.pm	2 Mar 2009 08:50:01 -0000	1.4
+++ phone_avail.pm	8 Nov 2010 22:04:52 -0000	1.5
@@ -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 @@
 
 }
 
+# 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

Index: svc_phone.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/svc_phone.pm,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -w -d -r1.28 -r1.29
--- svc_phone.pm	4 Oct 2010 18:46:39 -0000	1.28
+++ svc_phone.pm	8 Nov 2010 22:04:52 -0000	1.29
@@ -13,6 +13,7 @@
 use FS::svc_pbx;
 use FS::svc_domain;
 use FS::cust_location;
+use FS::phone_avail;
 
 $me = '[' . __PACKAGE__ . ']';
 $DEBUG = 0;
@@ -262,6 +263,16 @@
     }
   }
 
+  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;



More information about the freeside-commits mailing list