RT# 83039 - only towers with sectors shown on provisioning page when export requires...
[freeside.git] / httemplate / elements / select-tower_sector.html
index a64d886..4dfd23d 100644 (file)
@@ -1,7 +1,73 @@
+% if ( ! $opt{'multiple'} ) {
 <& /elements/select-table.html,
     table       => 'tower_sector',
     name_col    => 'description',
+    addl_from   => 'JOIN tower USING (towernum)',
+    extra_sql   => $extra_sql,
     order_by    => 'ORDER BY towernum,sectorname',
     empty_label => ' ',
     @_ 
 &>
+% }
+% else { # currently only multiple sectors, not towers
+<& /elements/select-table.html,
+    table       => 'tower',
+    name_col    => 'towername',
+    hashref     => { 'disabled' => '', },
+    id          => 'towernum',
+    field       => 'towernum',
+    onchange    => 'change_towernum(this.value);',
+    element_etc => 'STYLE="vertical-align:top"',
+&>
+<SELECT NAME="sectornum" ID="sectornum" MULTIPLE SIZE="6"></SELECT>
+<SCRIPT TYPE="text/javascript">
+var sectors_of = <% encode_json(\%sectors_of) %>;
+var select_sectornum = document.getElementById('sectornum');
+function change_towernum(towernum) {
+  select_sectornum.options.length = 0;
+  for (var sectornum in sectors_of[towernum]) {
+    var o = document.createElement('OPTION');
+    o.value = sectornum;
+    o.text = sectors_of[towernum][sectornum];
+    o.selected = true;
+    select_sectornum.add(o, null);
+  }
+  return;
+}
+change_towernum('');
+</SCRIPT>
+<BR>
+<INPUT TYPE="checkbox" VALUE="none" NAME="sectornum" CHECKED> <% $empty_label %>
+% }
+<%init>
+my %opt = @_;
+
+my %sectors_of;
+my %default_of;
+if ( $opt{'multiple'} ) {
+  foreach my $sector ( qsearch('tower_sector',{}) ) {
+    $sectors_of{$sector->towernum} ||= {};
+    $sectors_of{$sector->towernum}->{$sector->sectornum} = $sector->sectorname;
+    $sectors_of{''}->{$sector->sectornum} = $sector->description;
+    $default_of{$sector->towernum} = $sector->sectornum
+      if $sector->sectorname eq '_default';
+  }
+}
+foreach my $towernum (keys %sectors_of) {
+  # hide default sectors for towers that have real sectors defined
+  my $sectornum = $default_of{$towernum};
+  if ( keys %{ $sectors_of{$towernum} } > 1 ) {
+    delete $sectors_of{$towernum}->{$sectornum};
+    delete $sectors_of{''}->{$sectornum};
+  }
+  else {
+  # show default sectorname as '(all)'
+    $sectors_of{$towernum}->{$sectornum} = '(all)'
+  }
+}
+
+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>