[freeside-commits] branch master updated. 66fc0c9ba5d3f460a26a51ee72ee25923d644da8

Christopher Burger burgerc at freeside.biz
Sun Apr 21 13:19:11 PDT 2019


The branch, master has been updated
       via  66fc0c9ba5d3f460a26a51ee72ee25923d644da8 (commit)
      from  73fc1e4f3a2100fdccbc5eace399b604c5645b5e (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 66fc0c9ba5d3f460a26a51ee72ee25923d644da8
Author: Christopher Burger <burgerc at freeside.biz>
Date:   Sun Apr 21 16:14:13 2019 -0400

    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:
     <OPTION VALUE=""><% $opt{'empty_label'} || 'all' %></OPTION>
 % }
 
+% 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;
     <OPTION VALUE="<% $recvalue %>"
             <% $selected ? ' SELECTED' : '' %>
 %           foreach my $att ( @{ $opt{'extra_option_attributes'} } ) {
@@ -129,6 +131,11 @@ Example:
     <OPTION VALUE="<% $post_opt %>"
             <% $selected ? 'SELECTED' : '' %>
     ><% $post_label %></OPTION>
+% }
+
+% my $non_option_label = $opt{'non_option_label'};
+% if (!$curr_option_found && $non_option_label && $value) {
+    <OPTION VALUE="<% $value %>" SELECTED><% $non_option_label %></OPTION>
 % } 
 
 </SELECT>
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'};
 </%init>

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/part_export/saisei.pm                  | 16 ++++++++++++++++
 httemplate/edit/svc_broadband.cgi            | 16 +++++++++++++++-
 httemplate/elements/select-table.html        |  7 +++++++
 httemplate/elements/select-tower_sector.html |  5 ++++-
 4 files changed, 42 insertions(+), 2 deletions(-)




More information about the freeside-commits mailing list