From 08d132eca6a97c3417dc0f13bb603f080bd0e222 Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Fri, 7 Jun 2013 01:37:19 -0700 Subject: [PATCH] add fields to svc_phone: SMS provider, SMS provider acct#, max simultaneous calls --- FS/FS/Schema.pm | 52 ++++++++++++++------------ FS/FS/svc_phone.pm | 32 ++++++++++++++++ httemplate/browse/cdr_carrier.html | 22 +++++++++++ httemplate/edit/cdr_carrier.html | 19 ++++++++++ httemplate/edit/process/cdr_carrier.html | 10 +++++ httemplate/edit/svc_phone.cgi | 19 ++++++++++ httemplate/elements/menu.html | 1 + httemplate/elements/select-cdr_carrier.html | 19 ++++++++++ httemplate/elements/tr-select-cdr_carrier.html | 27 +++++++++++++ httemplate/view/svc_phone.cgi | 27 +++++++++---- 10 files changed, 196 insertions(+), 32 deletions(-) create mode 100644 httemplate/browse/cdr_carrier.html create mode 100644 httemplate/edit/cdr_carrier.html create mode 100644 httemplate/edit/process/cdr_carrier.html create mode 100644 httemplate/elements/select-cdr_carrier.html create mode 100644 httemplate/elements/tr-select-cdr_carrier.html diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index 21c26691a..71d84cc68 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -3573,8 +3573,9 @@ sub tables_hashref { 'cdr_carrier' => { 'columns' => [ - 'carrierid' => 'serial', '', '', '', '', - 'carriername' => 'varchar', '', $char_d, '', '', + 'carrierid' => 'serial', '', '', '', '', + 'carriername' => 'varchar', '', $char_d, '', '', + 'disabled' => 'char', 'NULL', 1, '', '', ], 'primary_key' => 'carrierid', 'unique' => [], @@ -3719,31 +3720,34 @@ sub tables_hashref { 'svc_phone' => { 'columns' => [ - 'svcnum', 'int', '', '', '', '', - 'countrycode', 'varchar', '', 3, '', '', - 'phonenum', 'varchar', '', 25, '', '', #12 ? - 'sim_imsi', 'varchar', 'NULL', 15, '', '', - 'pin', 'varchar', 'NULL', $char_d, '', '', - 'sip_password', 'varchar', 'NULL', $char_d, '', '', - 'phone_name', 'varchar', 'NULL', $char_d, '', '', - 'pbxsvc', 'int', 'NULL', '', '', '', - 'domsvc', 'int', 'NULL', '', '', '', - 'locationnum', 'int', 'NULL', '', '', '', - 'forwarddst', 'varchar', 'NULL', 15, '', '', - 'email', 'varchar', 'NULL', 255, '', '', - 'lnp_status', 'varchar', 'NULL', $char_d, '', '', - 'portable', 'char', 'NULL', 1, '', '', - 'lrn', 'char', 'NULL', 10, '', '', - 'lnp_desired_due_date', 'int', 'NULL', '', '', '', - '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, '', '', + 'svcnum', 'int', '', '', '', '', + 'countrycode', 'varchar', '', 3, '', '', + 'phonenum', 'varchar', '', 25, '', '', #12 ? + 'sim_imsi', 'varchar', 'NULL', 15, '', '', + 'pin', 'varchar', 'NULL', $char_d, '', '', + 'sip_password', 'varchar', 'NULL', $char_d, '', '', + 'phone_name', 'varchar', 'NULL', $char_d, '', '', + 'pbxsvc', 'int', 'NULL', '', '', '', + 'domsvc', 'int', 'NULL', '', '', '', + 'locationnum', 'int', 'NULL', '', '', '', + 'forwarddst', 'varchar', 'NULL', 15, '', '', + 'email', 'varchar', 'NULL', 255, '', '', + 'lnp_status', 'varchar', 'NULL', $char_d, '', '', + 'portable', 'char', 'NULL', 1, '', '', + 'lrn', 'char', 'NULL', 10, '', '', + 'lnp_desired_due_date', 'int', 'NULL', '', '', '', + '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, '', '', + 'sms_carrierid', 'int', 'NULL', '', '', '', + 'sms_account', 'varchar', 'NULL', '', '', '', + 'max_simultaneous', 'int', 'NULL', '', '', '', ], 'primary_key' => 'svcnum', - 'unique' => [], + 'unique' => [ [ 'sms_carrierid', 'sms_account'] ], 'index' => [ ['countrycode', 'phonenum'], ['pbxsvc'], ['domsvc'], - ['locationnum'], + ['locationnum'], ['sms_carrierid'], ], }, diff --git a/FS/FS/svc_phone.pm b/FS/FS/svc_phone.pm index ee25740c3..65a98d25a 100644 --- a/FS/FS/svc_phone.pm +++ b/FS/FS/svc_phone.pm @@ -173,6 +173,15 @@ sub table_info { select_label => 'domain', disable_inventory => 1, }, + 'sms_carrierid' => { label => 'SMS Carrier', + type => 'select', + select_table => 'cdr_carrier', + select_key => 'carrierid', + select_label => 'carriername', + disable_inventory => 1, + }, + 'sms_account' => { label => 'SMS Carrier Account', }, + 'max_simultaneous' => { label=>'Maximum number of simultaneous users' }, 'locationnum' => { label => 'E911 location', disable_inventory => 1, @@ -475,6 +484,9 @@ sub check { || $self->ut_textn('phone_name') || $self->ut_foreign_keyn('pbxsvc', 'svc_pbx', 'svcnum' ) || $self->ut_foreign_keyn('domsvc', 'svc_domain', 'svcnum' ) + || $self->ut_foreign_keyn('sms_carrierid', 'cdr_carrier', 'carrierid' ) + || $self->ut_alphan('sms_account') + || $self->ut_numbern('max_simultaneous') || $self->ut_foreign_keyn('locationnum', 'cust_location', 'locationnum') || $self->ut_numbern('forwarddst') || $self->ut_textn('email') @@ -635,6 +647,26 @@ sub radius_groups { (); } +=item sms_cdr_carrier + +=cut + +sub sms_cdr_carrier { + my $self = shift; + return '' unless $self->sms_carrierid; + qsearchs('cdr_carrier', { 'carrierid' => $self->sms_carrierid } ); +} + +=item sms_carriername + +=cut + +sub sms_carriername { + my $self = shift; + my $cdr_carrier = $self->sms_cdr_carrier or return ''; + $cdr_carrier->carriername; +} + =item phone_device Returns any FS::phone_device records associated with this service. diff --git a/httemplate/browse/cdr_carrier.html b/httemplate/browse/cdr_carrier.html new file mode 100644 index 000000000..3ec95f392 --- /dev/null +++ b/httemplate/browse/cdr_carrier.html @@ -0,0 +1,22 @@ +<& elements/browse.html, + 'title' => 'Carriers', + 'name_singular' => 'carrier', + 'menubar' => [ 'Add a new carrier' => + $p.'edit/cdr_carrier.html', + ], + 'query' => { 'table' => 'cdr_carrier', }, + 'count_query' => 'SELECT COUNT(*) FROM cdr_carrier', + 'header' => [ 'Carrier', ], + 'fields' => [ 'carriername', ], + 'links' => [ $link, ], + 'disableable' => 1, + 'disabled_statuspos' => 1, +&> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my $link = [ "${p}edit/cdr_carrier.html?", 'carrierid' ]; + + diff --git a/httemplate/edit/cdr_carrier.html b/httemplate/edit/cdr_carrier.html new file mode 100644 index 000000000..47a358a41 --- /dev/null +++ b/httemplate/edit/cdr_carrier.html @@ -0,0 +1,19 @@ +<& elements/edit.html, + 'table' => 'cdr_carrier', + 'name_singular' => 'carrier', + 'fields' => [ + { field=>'carriername', type=>'text', size=>20 }, + { field=>'disabled', type=>'checkbox', value=>'Y' }, + ], + 'labels' => { 'carrierid' => 'Carrier', + 'carriername' => 'Carrier', + 'disabled' => 'Disabled', + }, + 'viewall_dir' => 'browse', +&> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + + diff --git a/httemplate/edit/process/cdr_carrier.html b/httemplate/edit/process/cdr_carrier.html new file mode 100644 index 000000000..72f018609 --- /dev/null +++ b/httemplate/edit/process/cdr_carrier.html @@ -0,0 +1,10 @@ +<& elements/process.html, + 'table' => 'cdr_carrier', + 'viewall_dir' => 'browse', +&> +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + + diff --git a/httemplate/edit/svc_phone.cgi b/httemplate/edit/svc_phone.cgi index 13bbe82a1..d48e6353b 100644 --- a/httemplate/edit/svc_phone.cgi +++ b/httemplate/edit/svc_phone.cgi @@ -121,6 +121,25 @@ my $begin_callback = sub { ; } + if ( ! $bulk ) { + + push @$fields, + { + type => 'tablebreak-tr-title', + value => 'Carrier Information', + colspan => 8, + }, + { field => 'sms_carrierid', + label => 'SMS Carrier', + type => 'select-cdr_carrier', + }, + 'sms_account', + 'max_simultaneous', + ; + + } + }; + diff --git a/httemplate/elements/menu.html b/httemplate/elements/menu.html index aff55484a..f784d2faf 100644 --- a/httemplate/elements/menu.html +++ b/httemplate/elements/menu.html @@ -500,6 +500,7 @@ tie my %config_broadband, 'Tie::IxHash', tie my %config_phone, 'Tie::IxHash', 'View/Edit phone device types' => [ $fsurl.'browse/part_device.html', 'Phone device types' ], 'View/Edit bulk DID vendors' => [ $fsurl.'browse/did_vendor.html', 'Bulk DID vendors' ], + 'View/Edit Carriers' => [ $fsurl.'browse/cdr_carrier.html', 'Carriers' ], ; tie my %config_radius, 'Tie::IxHash', diff --git a/httemplate/elements/select-cdr_carrier.html b/httemplate/elements/select-cdr_carrier.html new file mode 100644 index 000000000..a9dc54f93 --- /dev/null +++ b/httemplate/elements/select-cdr_carrier.html @@ -0,0 +1,19 @@ +<% include( '/elements/select-table.html', + 'table' => 'cdr_carrier', + 'name_col' => 'carriername', + 'empty_label' => '(none)', + %opt, + ) +%> +<%init> + +my( %opt ) = @_; + +$opt{'records'} = delete $opt{'cdr_carrier'} + if $opt{'cdr_carrier'}; + +my %hash = ( 'disabled' => '', ); + +$opt{'records'} ||= [ qsearch( 'cdr_carrier', \%hash ) ]; + + diff --git a/httemplate/elements/tr-select-cdr_carrier.html b/httemplate/elements/tr-select-cdr_carrier.html new file mode 100644 index 000000000..b39a4d4aa --- /dev/null +++ b/httemplate/elements/tr-select-cdr_carrier.html @@ -0,0 +1,27 @@ +% if ( scalar(@{ $opt{'cdr_carrier'} }) == 0 ) { + + + +% } else { + + + <% $opt{'label'} || 'Carrier' %> + + <% include( '/elements/select-cdr_carrier.html', + %opt, + ) + %> + + + +% } + +<%init> + +my( %opt ) = @_; + +my %hash = ( 'disabled' => '', ); + +$opt{'cdr_carrier'} ||= [ qsearch( 'cdr_carrier', \%hash ) ]; + + diff --git a/httemplate/view/svc_phone.cgi b/httemplate/view/svc_phone.cgi index 408364aeb..ccd9ae7c7 100644 --- a/httemplate/view/svc_phone.cgi +++ b/httemplate/view/svc_phone.cgi @@ -31,15 +31,26 @@ if ( $conf->exists('showpasswords') ) { push @fields, qw( pin phone_name forwarddst email ); +push @fields, { field => 'sms_carrierid', + #type=>'cdr_carrier', + value_callback => sub { + $_[0]->sms_carriername, + }, + }, + 'sms_account', + 'max_simultaneous', +; + 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', }, - { field => 'lnp_due_date', type => 'date', }, - 'lnp_other_provider', - 'lnp_other_provider_account'; + push @fields, 'lnp_status', + 'lnp_reject_reason', + { field => 'portable', type => 'checkbox', }, + 'lrn', + { field => 'lnp_desired_due_date', type => 'date', }, + { field => 'lnp_due_date', type => 'date', }, + 'lnp_other_provider', + 'lnp_other_provider_account', + ; } my $html_foot = sub { -- 2.11.0