summaryrefslogtreecommitdiff
path: root/httemplate/browse/part_pkg.cgi
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2013-02-14 19:16:27 -0800
committerMark Wells <mark@freeside.biz>2013-02-14 19:16:27 -0800
commit6a0458ad05422b664918b0c7a18b456c022909ba (patch)
tree156af2269c5b7a2470f29c19a1dba17a0a9a9310 /httemplate/browse/part_pkg.cgi
parent8a537c7d535a26aec3b5ae38eddc7a813a42a270 (diff)
better UI for package report classes, #13507
Diffstat (limited to 'httemplate/browse/part_pkg.cgi')
-rwxr-xr-xhttemplate/browse/part_pkg.cgi68
1 files changed, 59 insertions, 9 deletions
diff --git a/httemplate/browse/part_pkg.cgi b/httemplate/browse/part_pkg.cgi
index 5b19a309b..5dee5b8d1 100755
--- a/httemplate/browse/part_pkg.cgi
+++ b/httemplate/browse/part_pkg.cgi
@@ -1,6 +1,7 @@
<% include( 'elements/browse.html',
'title' => 'Package Definitions',
'html_init' => $html_init,
+ 'html_form' => $html_form,
'html_posttotal' => $html_posttotal,
'name' => 'package definitions',
'disableable' => 1,
@@ -21,6 +22,8 @@
'links' => \@links,
'align' => $align,
'link_field' => 'pkgpart',
+ 'html_init' => $html_init,
+ 'html_foot' => $html_foot,
)
%>
<%init>
@@ -34,6 +37,7 @@ my $acl_edit_global = $curuser->access_right($edit_global);
my $acl_config = $curuser->access_right('Configuration'); #to edit services
#and agent types
#and bulk change
+my $acl_edit_bulk = $curuser->access_right('Bulk edit package definitions');
die "access denied"
unless $acl_edit || $acl_edit_global;
@@ -131,9 +135,7 @@ $select = "
";
-my $html_init;
-#unless ( $cgi->param('active') ) {
- $html_init = qq!
+my $html_init = qq!
One or more service definitions are grouped together into a package
definition and given pricing information. Customers purchase packages
rather than purchase services directly.<BR><BR>
@@ -145,7 +147,6 @@ my $html_init;
</FORM>
<BR><BR>
!;
-#}
$cgi->param('dummy', 1);
@@ -436,6 +437,10 @@ if ( $taxclasses ) {
$align .= 'l';
}
+# make a table of report class optionnames => the actual
+my %report_optionname_name = map { 'report_option_'.$_->num, $_->name }
+ qsearch('part_pkg_report_option', { disabled => '' });
+
push @header, 'Plan options',
'Services';
#'Service', 'Quan', 'Primary';
@@ -446,8 +451,18 @@ push @fields,
if ( $part_pkg->plan ) {
my %options = $part_pkg->options;
-
- [ map {
+ # gather any options that are really report options,
+ # convert them to their user-friendly names,
+ # and sort them (I think?)
+ my @report_options =
+ sort { $a cmp $b }
+ map { $report_optionname_name{$_} }
+ grep { $options{$_}
+ and exists($report_optionname_name{$_}) }
+ keys %options;
+
+ my @rows = (
+ map {
[
{ 'data' => "$_: ",
'align' => 'right',
@@ -458,11 +473,30 @@ push @fields,
];
}
grep { $options{$_} =~ /\S/ }
- grep { $_ !~ /^(setup|recur)_fee$/ }
+ grep { $_ !~ /^(setup|recur)_fee$/
+ and $_ !~ /^report_option_\d+$/ }
keys %options
- ];
+ );
+ if ( @report_options ) {
+ push @rows,
+ [ { 'data' => 'Report classes',
+ 'align' => 'center',
+ 'style' => 'font-weight: bold',
+ 'colspan' => 2
+ } ];
+ foreach (@report_options) {
+ push @rows, [
+ { 'data' => $_,
+ 'align' => 'center',
+ 'colspan' => 2
+ }
+ ];
+ } # foreach @report_options
+ } # if @report_options
+
+ return \@rows;
- } else {
+ } else { # should never happen...
[ map { [
{ 'data' => uc($_),
@@ -540,4 +574,20 @@ $extra_count = ( $count_extra_sql ? ' AND ' : ' WHERE ' ). $extra_count
if $extra_count;
my $count_query = "SELECT COUNT(*) FROM part_pkg $count_extra_sql $extra_count";
+my $html_form = '';
+my $html_foot = '';
+if ( $acl_edit_bulk ) {
+ # insert a checkbox column
+ push @header, '';
+ push @fields, sub {
+ '<INPUT TYPE="checkbox" NAME="pkgpart" VALUE=' . $_[0]->pkgpart .'>';
+ };
+ push @links, '';
+ $align .= 'c';
+ $html_form = qq!<FORM ACTION="${p}edit/bulk-part_pkg.html" METHOD="POST">!;
+ $html_foot = include('/search/elements/checkbox-foot.html',
+ submit => 'edit report classes', # for now it's only report classes
+ ) . '</FORM>';
+}
+
</%init>