RT# 83450 - fixed rateplan export
[freeside.git] / FS / FS / part_export / broadworks.pm
index 5966867..611bd00 100644 (file)
@@ -6,6 +6,7 @@ use strict;
 use Tie::IxHash;
 use FS::Record qw(dbh qsearch qsearchs);
 use Locale::SubCountry;
+use Carp qw(carp);
 
 our $me = '[broadworks]';
 our %client; # exportnum => client object
@@ -41,11 +42,12 @@ number, this requires a svc_phone definition and a part_device. The "title"
 field ("external name") of the part_device must be one of the access device
 type names recognized by BroadWorks, such as "Polycom Soundpoint IP 550",
 "SNOM 320", or "Generic SIP Phone".</P>
-<P>
+<P>Each phone service must have a device linked before it will be functional.
+Until then, authentication will be denied.</P>
 END
 );
 
-sub export_insert {
+sub _export_insert {
   my($self, $svc_x) = (shift, shift);
 
   my $cust_main = $svc_x->cust_main;
@@ -67,7 +69,7 @@ sub export_insert {
   '';
 }
 
-sub export_replace {
+sub _export_replace {
   my($self, $svc_new, $svc_old) = @_;
 
   my $cust_main = $svc_new->cust_main;
@@ -85,6 +87,11 @@ sub export_replace {
         newUserId => $newUserId
       );
       return $message if !$success;
+
+      if ( my $device = qsearchs('phone_device', { svcnum => $svc_new->svcnum }) ) {
+        # there's a Line/Port configured for the device, and it also needs to be renamed.
+        $error ||= $self->set_endpoint( $newUserId, $self->deviceName($device) );
+      }
     }
 
     if ( $svc_old->phonenum ne $svc_new->phonenum ) {
@@ -115,7 +122,7 @@ sub export_replace {
   '';
 }
 
-sub export_delete {
+sub _export_delete {
   my ($self, $svc_x) = @_;
 
   my $cust_main = $svc_x->cust_main;
@@ -156,6 +163,12 @@ sub export_delete {
 sub export_device_insert {
   my ($self, $svc_x, $device) = @_;
 
+  if ( $FS::svc_Common::noexport_hack ) {
+    carp 'export_device_insert() suppressed by noexport_hack'
+      if $self->option('debug');
+    return;
+  }
+
   if ( $device->count('svcnum = ?', $svc_x->svcnum) > 1 ) {
     return "This service already has a device.";
   }
@@ -175,6 +188,13 @@ sub export_device_insert {
 
 sub export_device_replace {
   my ($self, $svc_x, $new_device, $old_device) = @_;
+
+  if ( $FS::svc_Common::noexport_hack ) {
+    carp 'export_device_replace() suppressed by noexport_hack'
+      if $self->option('debug');
+    return;
+  }
+
   my $cust_main = $svc_x->cust_main;
   my $groupId = $self->groupId($cust_main);
 
@@ -199,6 +219,12 @@ sub export_device_replace {
 sub export_device_delete {
   my ($self, $svc_x, $device) = @_;
 
+  if ( $FS::svc_Common::noexport_hack ) {
+    carp 'export_device_delete() suppressed by noexport_hack'
+      if $self->option('debug');
+    return;
+  }
+
   if ( $device->isa('FS::phone_device') ) {
     my $error = $self->set_endpoint( $self->userId($svc_x), '' );
     return $error if $error;