LNP improvements, RT9527
authorlevinse <levinse>
Tue, 28 Dec 2010 15:58:12 +0000 (15:58 +0000)
committerlevinse <levinse>
Tue, 28 Dec 2010 15:58:12 +0000 (15:58 +0000)
FS/FS/Schema.pm
FS/FS/svc_phone.pm
httemplate/edit/svc_phone.cgi
httemplate/elements/select-lnp_status.html
httemplate/view/svc_phone.cgi

index 7224341..9cdfee0 100644 (file)
@@ -2880,6 +2880,7 @@ sub tables_hashref {
        'lnp_due_date',     'int', 'NULL',       '', '', '',
         'lnp_other_provider', 'varchar', 'NULL', $char_d,  '', '',
         'lnp_other_provider_account', 'varchar', 'NULL', $char_d,  '', '',
+        'lnp_reject_reason', 'varchar', 'NULL', $char_d,  '', '',
       ],
       'primary_key' => 'svcnum',
       'unique' => [],
index b61a93d..99288ec 100644 (file)
@@ -140,6 +140,10 @@ sub table_info {
                                type => 'select-lnp_status.html',
                                %dis2,
                        },
+       'lnp_reject_reason' => { 
+                               label => 'LNP Reject Reason',
+                               %dis2,
+                       },
        'portable' =>   {       label => 'Portable?', %dis2, },
        'lrn'   =>      {       label => 'LRN', 
                                disable_inventory => 1, 
@@ -353,6 +357,17 @@ sub replace {
   }
   #what about on-the-fly edits?  if the ui supports it?
 
+  # LNP data validation
+ return 'Invalid LNP status' # if someone does really stupid stuff
+    if (  ($old->lnp_status eq 'portingout' && $new->lnp_status eq 'portingin')
+       || ($old->lnp_status eq 'portout-reject' && $new->lnp_status eq 'portingin')
+       || ($old->lnp_status eq 'portin-reject' && $new->lnp_status eq 'portingout')
+       || ($old->lnp_status eq 'portingin' && $new->lnp_status eq 'native')
+       || ($old->lnp_status eq 'portin-reject' && $new->lnp_status eq 'native')
+       || ($old->lnp_status eq 'portingin' && $new->lnp_status eq 'portingout')
+       || ($old->lnp_status eq 'portingout' && $new->lnp_status eq 'portin-reject')
+       );
+
   my $error = $new->SUPER::replace($old, %options);
   if ( $error ) {
     $dbh->rollback if $oldAutoCommit;
@@ -419,11 +434,26 @@ sub check {
     || $self->ut_numbern('lnp_due_date')
     || $self->ut_textn('lnp_other_provider')
     || $self->ut_textn('lnp_other_provider_account')
-    || $self->ut_enumn('lnp_status', ['','portingin','portingout','portedin','native'])
+    || $self->ut_enumn('lnp_status', ['','portingin','portingout','portedin',
+                               'native', 'portin-reject', 'portout-reject'])
     || $self->ut_enumn('portable', ['','Y'])
+    || $self->ut_textn('lnp_reject_reason')
   ;
   return $error if $error;
 
+    # LNP data validation
+    return 'Cannot set LNP fields: no LNP in progress'
+       if ( ($self->lnp_desired_due_date || $self->lnp_due_date 
+           || $self->lnp_other_provider || $self->lnp_other_provider_account
+           || $self->lnp_reject_reason) 
+           && (!$self->lnp_status || $self->lnp_status eq 'native') );
+    return 'Cannot set LNP reject reason: no LNP in progress or status is not reject'
+       if ($self->lnp_reject_reason && (!$self->lnp_status 
+                           || $self->lnp_status !~ /^port(in|out)-reject$/) );
+    return 'Cannot port-out a non-portable number' 
+       if (!$self->portable && $self->lnp_status eq 'portingout');
+
+
   return 'Name ('. $self->phone_name.
          ") is longer than $phone_name_max characters"
     if $phone_name_max && length($self->phone_name) > $phone_name_max;
index 6482165..36b827b 100644 (file)
@@ -71,6 +71,7 @@ if ( $conf->exists('svc_phone-lnp') ) {
            {   field => 'lnp_status',
                type => 'select-lnp_status',
            },
+           'lnp_reject_reason',
            {   field => 'portable',
                type => 'checkbox',
            },
index f4910e0..358e237 100644 (file)
@@ -18,5 +18,7 @@ my %seloptions = (
                'portedin' => 'Ported In',
                'portingin' => 'Porting In',
                'portingout' => 'Porting Out',
+               'portin-reject' => 'Port-In Reject',
+               'portout-reject' => 'Port-Out Reject',
            );
 </%init>
index 94948a7..96211d8 100644 (file)
@@ -23,6 +23,7 @@ push @fields, qw( pbx_title sip_password pin phone_name );
 
 if ( $conf->exists('svc_phone-lnp') ) {
 push @fields, 'lnp_status',
+           'lnp_reject_reason',
            { field => 'portable', type => 'checkbox', },
            'lrn',
            { field => 'lnp_desired_due_date', type => 'date', },