summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FS/FS/Schema.pm1
-rw-r--r--FS/FS/svc_phone.pm32
-rw-r--r--httemplate/edit/svc_phone.cgi1
-rw-r--r--httemplate/elements/select-lnp_status.html2
-rw-r--r--httemplate/view/svc_phone.cgi1
5 files changed, 36 insertions, 1 deletions
diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm
index 7224341..9cdfee0 100644
--- a/FS/FS/Schema.pm
+++ b/FS/FS/Schema.pm
@@ -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' => [],
diff --git a/FS/FS/svc_phone.pm b/FS/FS/svc_phone.pm
index b61a93d..99288ec 100644
--- a/FS/FS/svc_phone.pm
+++ b/FS/FS/svc_phone.pm
@@ -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;
diff --git a/httemplate/edit/svc_phone.cgi b/httemplate/edit/svc_phone.cgi
index 6482165..36b827b 100644
--- a/httemplate/edit/svc_phone.cgi
+++ b/httemplate/edit/svc_phone.cgi
@@ -71,6 +71,7 @@ if ( $conf->exists('svc_phone-lnp') ) {
{ field => 'lnp_status',
type => 'select-lnp_status',
},
+ 'lnp_reject_reason',
{ field => 'portable',
type => 'checkbox',
},
diff --git a/httemplate/elements/select-lnp_status.html b/httemplate/elements/select-lnp_status.html
index f4910e0..358e237 100644
--- a/httemplate/elements/select-lnp_status.html
+++ b/httemplate/elements/select-lnp_status.html
@@ -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>
diff --git a/httemplate/view/svc_phone.cgi b/httemplate/view/svc_phone.cgi
index 94948a7..96211d8 100644
--- a/httemplate/view/svc_phone.cgi
+++ b/httemplate/view/svc_phone.cgi
@@ -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', },