select multiple package classes (or report classes) on sales report, RT#24776
[freeside.git] / httemplate / graph / report_cust_bill_pkg.html
index 664aab7..c9e2567 100644 (file)
 
 <FORM ACTION="cust_bill_pkg.cgi" METHOD="GET">
 
-<TABLE>
+<TABLE BGCOLOR="#cccccc" CELLSPACING=0>
+
+<TR>
+  <TH CLASS="background" COLSPAN=2 ALIGN="left"><FONT SIZE="+1"><% mt('Search options') |h %></FONT></TH>
+</TR>
 
 <% include('/elements/tr-select-from_to.html' ) %>
 
-<% include('/elements/tr-select-agent.html', 'label' => 'For agent: ' ) %>
+<TR>
+  <TD ALIGN="right"><INPUT TYPE="checkbox" NAME="projection" VALUE="1"></TD>
+  <TD>Show projected data for future months</TD>
+</TR>
+
+<SCRIPT TYPE="text/javascript">
+function enable_agent_totals(obj) {
+%# enable it iff we are breaking down by agent AND something else
+  obj.form.agent_totals.disabled = !(
+    obj.form.agentnum.value == '' && (
+      obj.form.refnum.value == ''   ||
+      document.getElementById('class_agg_break_breakdown').checked ||
+      obj.form.use_setup.value == 1 ||
+      obj.form.use_usage.value == 1
+    )
+  );
+}
+
+function class_mode_changed() {
+  var options = document.getElementsByName('class_mode');
+  var mode;
+  for(var i=0; i < options.length; i++) {
+    if (options[i].checked) {
+      mode = options[i].value;
+    }
+  }
+    
+  var div_pkg = document.getElementById('pkg_class');
+  var div_report = document.getElementById('report_class');
+  if (mode == 'pkg') {
+    div_pkg.style.display = '';
+    div_report.style.display = 'none';
+  } else if (mode == 'report') {
+    div_pkg.style.display = 'none';
+    div_report.style.display = '';
+  }
+}
+window.onload = class_mode_changed;
+</SCRIPT>
+
+<& /elements/tr-select-agent.html,
+  'field'         => 'agentnum',
+  'label'         => 'Agent ',
+  'disable_empty' => 0,
+  'pre_options'   => [ 'all' => 'all (aggregate)' ],
+  'empty_label'   => 'all (breakdown)',
+  'onchange'      => 'enable_agent_totals',
+&>
+
+<& /elements/tr-select-cust_class.html,
+  'field'         => 'cust_classnum',
+  'label'         => 'Customer class',
+  'multiple'      => 1,
+&>
+
+<& /elements/tr-select-part_referral.html,
+  'field'         => 'refnum',
+  'label'         => 'Advertising source ',
+  'disable_empty' => 0,
+  'pre_options'   => [ 'all' => 'all (aggregate)' ],
+  'empty_label'   => 'all (breakdown)',
+  'onchange'      => 'enable_agent_totals'
+&>
+
+<TR>
+
+  <TD>
+    <INPUT TYPE="radio" NAME="class_mode" VALUE="pkg" onchange="class_mode_changed('pkg')" CHECKED>
+    <% emt('Package class') %>
+    <BR>
+    <INPUT TYPE="radio" NAME="class_mode" VALUE="report" onchange="class_mode_changed('report')">
+    <% emt('Report class') %>
+  </TD>
+
+  <TD>
+    <TABLE>
+      <TR>
+
+        <TD>
+          <DIV ID="pkg_class">
+          <& /elements/select-pkg_class.html,
+            'field'         => 'classnum',
+            'multiple'      => 1,
+            'all_selected'  => 1,
+            'pre_options'   => [ #'all'  => 'all (aggregate)',
+                                #   ''  => 'all (breakdown)',
+                                  '0'  => '(empty class)' ],
+            'disable_empty' => 1,
+            'onchange'      => 'enable_agent_totals',
+          &>
+          </DIV>
+          <DIV ID="report_class" STYLE="display: none">
+          <& /elements/select-table.html,
+            'field'         => 'report_optionnum',
+            'table'         => 'part_pkg_report_option',
+            'name_col'      => 'name',
+            'value_col'     => 'num',
+            'multiple'      => 1,
+            'all_selected'  => 1,
+            'pre_options'   => [ #'all' => 'all (aggregate)',
+                               #   '' => 'all (breakdown)', 
+                                 '0'  => '(empty class)' ],
+            'disable_empty' => 1,
+            'onchange'      => 'enable_agent_totals',
+          &>
+          </DIV>
+        </TD>
+
+        <TD>
+          <INPUT TYPE="radio" NAME="class_agg_break" ID="class_agg_break_aggregate" VALUE="aggregate" CHECKED>
+          <% emt('Aggregate') %>
+          <BR>
+          <INPUT TYPE="radio" NAME="class_agg_break" VALUE="breakdown">
+          <% emt('Breakdown') %>
+        </TD>
+
+      </TR>
+    </TABLE>
+  </TD>
+
+</TR>
+
 
-<% include('/elements/tr-select-pkg_class.html', '',
-              'pre_options' => [ '0' => 'all' ],
-              'empty_label' => '(empty class)',
-           )
-%>
+<TR>
+  <TH CLASS="background" COLSPAN=2>&nbsp;</TH>
+</TR>
+
+<TR>
+  <TH CLASS="background" COLSPAN=2 ALIGN="left"><FONT SIZE="+1"><% mt('Display options') |h %></FONT></TH>
+</TR>
 
 <!--
 <TR>
 </TR>
 -->
 
+% foreach ( qw(Setup Usage) ) {
+<& /elements/tr-select.html,
+    'label'   => "$_ fees",
+    'field'   => 'use_'.lc($_),
+    'options' => [ 0, 1, 2 ],
+    'labels'  => { 0 => 'Combine', 1 => 'Separate', 2 => 'Do not show' },
+    'onchange'=> 'enable_agent_totals',
+&>
+% }
+
+<TR>
+  <TD ALIGN="right"><INPUT TYPE="checkbox" NAME="agent_totals" VALUE="1" DISABLED="1"></TD>
+  <TD>Show per-agent subtotals</TD>
+</TR>
+
+<TR>
+  <TD ALIGN="right"><INPUT TYPE="checkbox" NAME="use_override" VALUE="1"></TD>
+  <TD>Separate sub-packages from parents</TD>
+</TR>
+
+<TR>
+  <TD ALIGN="right"><INPUT TYPE="checkbox" NAME="average_per_cust_pkg" VALUE="1"></TD>
+  <TD>Average per customer package</TD>
+</TR>
+
+<TR>
+  <TD ALIGN="right"><INPUT TYPE="checkbox" NAME="distribute" VALUE="1"></TD>
+  <TD>Distribute recurring fees over billing period</TD>
+</TR>
+
 </TABLE>
 
 <BR><INPUT TYPE="submit" VALUE="Display">
 </FORM>
 
 <% include('/elements/footer.html') %>
+<%init>
+
+die "access denied"
+  unless $FS::CurrentUser::CurrentUser->access_right('Financial reports');
+
+</%init>