From: Christopher Burger Date: Sun, 21 Apr 2019 20:14:13 +0000 (-0400) Subject: RT# 83039 - only towers with sectors shown on provisioning page when export requires... X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=66fc0c9ba5d3f460a26a51ee72ee25923d644da8 RT# 83039 - only towers with sectors shown on provisioning page when export requires sectors --- diff --git a/FS/FS/part_export/saisei.pm b/FS/FS/part_export/saisei.pm index 6fb504f82..61aa12d2b 100644 --- a/FS/FS/part_export/saisei.pm +++ b/FS/FS/part_export/saisei.pm @@ -197,6 +197,7 @@ sub _export_insert { 'sector_name' => $sector_name, 'sector_uprate_limit' => $tower_sector->{Hash}->{sector_upratelimit}, 'sector_downrate_limit' => $tower_sector->{Hash}->{sector_downratelimit}, + 'rateplan' => $rateplan_name, }; my $accesspoint = process_sector($self, $sector_opt); return $self->api_error if $self->{'__saisei_error'}; @@ -828,6 +829,11 @@ sub process_tower { sub process_sector { my ($self, $opt) = @_; + if (!$opt->{sector_name} || $opt->{sector_name} eq '_default') { + $self->{'__saisei_error'} = "No sector attached to Tower (".$opt->{tower_name}.") for service ".$opt->{'rateplan'}.". Saisei requires a tower sector to be attached to each service that is exported to Saisei."; + return { error => $self->api_error, }; + } + if (!$opt->{sector_uprate_limit} || !$opt->{sector_downrate_limit}) { $self->{'__saisei_error'} = "Could not export sector ".$opt->{tower_name}." because there was no up or down rates attached to the sector. Saisei requires a up and down rate be attached to each sector."; return { error => $self->api_error, }; @@ -864,6 +870,16 @@ sub process_sector { return $accesspoint; } +=head2 require_tower_and_sector + +sets whether the service export requires a sector with it's tower. + +=cut + +sub require_tower_and_sector { + 1; +} + sub process_virtual_ap { my ($self, $opt) = @_; diff --git a/httemplate/edit/svc_broadband.cgi b/httemplate/edit/svc_broadband.cgi index 374af4770..5a3692e14 100644 --- a/httemplate/edit/svc_broadband.cgi +++ b/httemplate/edit/svc_broadband.cgi @@ -101,7 +101,21 @@ END my @fields = ( qw( description speed_down speed_up speed_test_down speed_test_up speed_test_latency), - { field=>'sectornum', type=>'select-tower_sector', }, + { field=>'sectornum', type=>'select-tower_sector', + include_opt_callback => sub { + my $svc_broadband = shift; + my $part_svc = $svc_broadband->part_svc; + my $sectors_only; + foreach ($part_svc->part_export()) { + $sectors_only = '1' if $_->can('require_tower_and_sector'); + } + ## incase export requires a sector and service only has tower attached it will not show on edit. + my $non_option_label; + my $sector = qsearchs({'table' => 'tower_sector', 'hashref' => { 'sectornum' => $svc_broadband->sectornum }, }); + $non_option_label = $sector->description if $sector; + return ('sectorsonly' => $sectors_only, 'non_option_label' => $non_option_label); + }, + }, { field=>'routernum', type=>'select-router_block_ip', include_opt_callback => sub { my $svc_broadband = shift; diff --git a/httemplate/elements/select-table.html b/httemplate/elements/select-table.html index d86b7ee43..ecac7f765 100644 --- a/httemplate/elements/select-table.html +++ b/httemplate/elements/select-table.html @@ -90,6 +90,7 @@ Example: % } +% my $curr_option_found; % foreach my $record ( % # we have the order_by parameter for this % #sort { $a->$name_col() cmp $b->$name_col() @@ -108,6 +109,7 @@ Example: % $selected = ( ref($value) && $value->{$recvalue} ) % || ( $value && $value eq $recvalue ); #not == because of value_col % } +% $curr_option_found = $selected unless $curr_option_found; +% } + +% my $non_option_label = $opt{'non_option_label'}; +% if (!$curr_option_found && $non_option_label && $value) { + % } diff --git a/httemplate/elements/select-tower_sector.html b/httemplate/elements/select-tower_sector.html index 76ff25223..4dfd23dcc 100644 --- a/httemplate/elements/select-tower_sector.html +++ b/httemplate/elements/select-tower_sector.html @@ -3,7 +3,7 @@ table => 'tower_sector', name_col => 'description', addl_from => 'JOIN tower USING (towernum)', - extra_sql => q(WHERE disabled = '' OR disabled IS NULL), + extra_sql => $extra_sql, order_by => 'ORDER BY towernum,sectorname', empty_label => ' ', @_ @@ -67,4 +67,7 @@ foreach my $towernum (keys %sectors_of) { } my $empty_label = $opt{'empty_label'} || 'Include services with no sector'; + +my $extra_sql = q(WHERE (disabled = '' OR disabled IS NULL)); +$extra_sql .= q( AND sectorname != '_default') if $opt{'sectorsonly'};