better UI for package report classes, #13057
[freeside.git] / httemplate / search / report_477.html
index a36ac39..12918a1 100755 (executable)
                )
     %>
 
+    <& /elements/tr-td-label.html, 'label' => 'State' &>
+    <TD>
+      <SELECT NAME="state">
+%   foreach (@states) {
+        <OPTION VALUE="<% $_ %>"><% $_ %></OPTION>
+%   }
+      </SELECT>
+    </TD></TR>
+
     <% include( '/elements/tr-select-pkg_class.html',
                    'multiple'       => 1,
                    'empty_label' => '(empty class)',
           element.style.display = 'none';
         }
       }
+      function toggleV() {
+        document.getElementById('enableV').disabled =
+          ! (document.getElementById('enableIIA').checked ||
+             document.getElementById('enableIIB').checked);
+      }
+      function toggleVI() {
+        document.getElementById('enableVI').disabled =
+          ! document.getElementById('enableIA').checked;
+      }
     </SCRIPT>
 
     <% include( '/elements/tr-checkbox.html',
                    'label' => 'Enable part IA?',
                    'field' => 'part',
+                   'id'    => 'enableIA',
                    'value' => 'IA',
-                   'onchange' => 'partchange(this)',
+                   'onchange' => 'partchange(this); toggleVI();',
                )
     %>
 
     <% include( '/elements/tr-checkbox.html',
                    'label' => 'Enable part IIA?',
                    'field' => 'part',
+                   'id'    => 'enableIIA',
                    'value' => 'IIA',
-                   'onchange' => 'partchange(this)',
+                   'onchange' => 'partchange(this); toggleV();',
                )
     %>
 
     <% include( '/elements/tr-checkbox.html',
                    'label' => 'Enable part IIB?',
                    'field' => 'part',
+                   'id'    => 'enableIIB',
                    'value' => 'IIB',
-                   'onchange' => 'partchange(this)',
+                   'onchange' => 'partchange(this); toggleV();',
                )
     %>
 
     <% include( '/elements/tr-checkbox.html',
                    'label' => 'Enable part IV?',
                    'field' => 'part',
+                   'id'    => 'enableIV', #unused
                    'value' => 'IV',
                    'onchange' => 'partchange(this)',
                )
                    'label' => 'Enable part V?',
                    'field' => 'part',
                    'value' => 'V',
+                   'id'    => 'enableV',
                    'onchange' => 'partchange(this)',
+                   'postfix'  => 
+                    '&nbsp;<FONT SIZE="-1">(requires Part IIA or IIB)</FONT>',
                )
     %>
     <TR id='partV' style="display:none">
                      'table'        => 'part_pkg_report_option',
                      'name_col'     => 'name',
                      'hashref'      => { 'disabled' => '' },
-                     'element_name' => 'partv_report_option',
+                     'element_name' => 'part5_report_option',
+                     'curr_value'   =>
+                            FS::Report::FCC_477::restore_fcc477map("part5_report_option"),
                  )
             %>
         </TD>
     <% include( '/elements/tr-checkbox.html',
                    'label' => 'Enable part VI?',
                    'field' => 'part',
+                   'id'    => 'enableVI',
                    'value' => 'VI_census',
+                   'postfix'  =>
+                    '&nbsp;<FONT SIZE="-1">(requires part IA)</FONT>',
                )
     %>
-
+  <SCRIPT TYPE="text/javascript">
+  toggleV();
+  toggleVI();
+  </SCRIPT>
   </TABLE>
 
 <BR>
 die "access denied"
   unless $FS::CurrentUser::CurrentUser->access_right('List packages');
 
+my @states = (
+  qsearch({
+    'table'   => 'cust_main',
+    'select'  => 'DISTINCT(state)',
+    'hashref' => { 'country' => 'US' }, # 477 report isn't relevant elsewhere
+  }),
+  qsearch({
+    'table'   => 'cust_main',
+    'select'  => 'DISTINCT(ship_state) AS state',
+    'hashref' => { 'country' => 'US' },
+  }),
+  qsearch({
+    'table'   => 'cust_location',
+    'select'  => 'DISTINCT(state)',
+    'hashref' => { 'country' => 'US' },
+  }),
+);
+
+{
+  my %seen = map {$_->get('state') => 1} @states;
+  @states = grep $_, sort keys(%seen);
+}
+
 </%init>