diff options
author | Christopher Burger <burgerc@freeside.biz> | 2019-05-09 13:22:09 -0400 |
---|---|---|
committer | Christopher Burger <burgerc@freeside.biz> | 2019-05-09 13:22:09 -0400 |
commit | 9cfa3648407dc2333fb549460fed278311c5393a (patch) | |
tree | 7d540a852498184a9847b8b090d04aa896a48ac7 /httemplate/edit | |
parent | 68bbe026eecdd3deb072496993fd26e208f9b571 (diff) |
RT# 82949 - added the ability to bulk increase package fees (setup and/or recurring) by a percentage
Diffstat (limited to 'httemplate/edit')
-rw-r--r-- | httemplate/edit/bulk-part_pkg.html | 84 | ||||
-rw-r--r-- | httemplate/edit/process/bulk-part_pkg.html | 67 |
2 files changed, 108 insertions, 43 deletions
diff --git a/httemplate/edit/bulk-part_pkg.html b/httemplate/edit/bulk-part_pkg.html index 4665c9f95..3225392be 100644 --- a/httemplate/edit/bulk-part_pkg.html +++ b/httemplate/edit/bulk-part_pkg.html @@ -1,5 +1,4 @@ -<& /elements/header.html, 'Edit package report classes' &> -%# change that title if we add any other editing controls +<% include('/elements/header-popup.html', 'Bulk edit packages') %> %# this should be centralized somewhere <STYLE TYPE="text/css"> @@ -8,36 +7,83 @@ </STYLE> <& /elements/error.html &> +<SCRIPT> + function areyousure() { + var warning = 'Edit these packages?'; + if(confirm(warning)) { process(); } + } + + function toggle_section(what) { + var id = what.id; + var isDisabled; + if (document.getElementById(id).checked == true) { isDisabled = false; } + else { isDisabled = true; } + + var whatDiv = document.getElementById(id+'_div'); + if (isDisabled) { whatDiv.style.display = "none"; } + else { whatDiv.style.display = "block"; } + + } +</SCRIPT> + <FORM ACTION="process/bulk-part_pkg.html" METHOD="POST"> -<DIV> -The following packages will be changed:<BR> -% foreach my $pkgpart (sort keys(%part_pkg)) { -<INPUT TYPE="hidden" NAME="pkgpart" VALUE="<% $pkgpart %>"> -<% $part_pkg{$pkgpart}->pkg_comment |h %><BR> -% } -</DIV> +<TABLE> + <TR> + <TD VALIGN="top"> +<B>Select the package information to change</B><BR> +<INPUT TYPE="checkbox" ID="report_class" NAME="report_class" VALUE="1" onChange='toggle_section(this);'> +Edit report classes <BR> -<& /elements/table-grid.html &>\ -<& /elements/tr-justtitle.html, value => mt('Report classes') &> +<DIV ID="report_class_div" STYLE="display: none;"> + <& /elements/table-grid.html &>\ + <& /elements/tr-justtitle.html, value => mt('Report classes') &> % my $row = 0; % foreach my $num (sort keys %report_class) { - <TR CLASS="row<%$row % 2%>"> - <TD> + <TR CLASS="row<%$row % 2%>"> + <TD> % if ( $initial_state{$num} == -1 ) { % # needs to be a tristate so that you can say "don't change it" <& /elements/checkbox-tristate.html, field => 'report_option_'.$num &> % } else { %# for visual consistency - <INPUT TYPE="checkbox" CLASS="partial" NAME="report_option_<%$num%>" VALUE="1" <% $initial_state{$num} ? 'CHECKED':'' %>><LABEL /> + <INPUT TYPE="checkbox" CLASS="partial" ID="report_option_<%$num%>" NAME="report_option_<%$num%>" VALUE="1" <% $initial_state{$num} ? 'CHECKED':'' %>><LABEL /> % } - </TD> - <TD><% $report_class{$num}->name %></TD> - </TR> + </TD> + <TD><% $report_class{$num}->name %></TD> + </TR> % $row++; % } -</TABLE> + </TABLE> +</DIV> +<BR> +<INPUT TYPE="checkbox" ID="package_fees" NAME="package_fees" VALUE="1" onChange='toggle_section(this);'> +Edit package fees. +<BR> +<DIV ID="package_fees_div" STYLE="display: none;"> + <& /elements/table-grid.html &>\ + <& /elements/tr-justtitle.html, value => mt('Package fees') &> + <TR> + <TD>Percentage of setup fee increase </TD> + <TD><INPUT TYPE="text" ID="setup_fee_increase" NAME="setup_fee_increase">%</TD> + </TR> + <TD>Percentage of recurring fee increase </TD> + <TD><INPUT TYPE="text" ID="recurring_fee_increase" NAME="recurring_fee_increase">%</TD> + </TR> + </TABLE> +</DIV> <BR> -<INPUT TYPE="submit"> +<INPUT TYPE="submit" VALUE="Bulk change packages" onclick="areyousure()"> + </TD> + <TD WIDTH="5"> </TD> + <TD VALIGN="top"> + <B>The following packages will be changed:</B><BR> +% foreach my $pkgpart (sort keys(%part_pkg)) { + <INPUT TYPE="hidden" NAME="pkgpart" VALUE="<% $pkgpart %>"> + <% $part_pkg{$pkgpart}->pkg_comment |h %><BR> +% } + </TD> + </TR> +</TABLE> </FORM> <& /elements/footer.html &> <%init> diff --git a/httemplate/edit/process/bulk-part_pkg.html b/httemplate/edit/process/bulk-part_pkg.html index 59c914a5d..ac542cc14 100644 --- a/httemplate/edit/process/bulk-part_pkg.html +++ b/httemplate/edit/process/bulk-part_pkg.html @@ -1,35 +1,54 @@ -% if ( $error ) { -% $cgi->param('error', $error); -<% $cgi->redirect(popurl(3).'/edit/bulk-part_pkg.html?'.$cgi->query_string) %> -% } else { -<% $cgi->redirect(popurl(3).'/browse/part_pkg.cgi') %> -% } +<& /elements/popup-topreload.html, emt($message) &> + <%init> die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Bulk edit package definitions'); my @pkgparts = $cgi->param('pkgpart') or die "no package definitions selected"; -my %delete = map { 'report_option_'.($_->num) => 1 } - qsearch('part_pkg_report_option', {}); -my %insert; - -foreach my $param (grep { /^report_option_\d+$/ } $cgi->param) { - if ( $cgi->param($param) == 1 ) { - $insert{$param} = 1; - delete $delete{$param}; - } elsif ( $cgi->param($param) == -1 ) { - # leave it alone - delete $delete{$param}; - } # else it's empty, so leave it on the delete list +my $error; + +if ($cgi->param('report_class')) { + my %delete = map { 'report_option_'.($_->num) => 1 } + qsearch('part_pkg_report_option', {}); + my %insert; + + foreach my $param (grep { /^report_option_\d+$/ } $cgi->param) { + if ( $cgi->param($param) == 1 ) { + $insert{$param} = 1; + delete $delete{$param}; + } elsif ( $cgi->param($param) == -1 ) { + # leave it alone + delete $delete{$param}; + } # else it's empty, so leave it on the delete list + } + + foreach my $pkgpart (@pkgparts) { + my $part_pkg = FS::part_pkg->by_key($pkgpart); + my %options = ( $part_pkg->options, %insert ); + delete $options{$_} foreach keys(%delete); + $error ||= $part_pkg->replace( options => \%options ); + } } +if ($cgi->param('package_fees')) { + my $setup_fee_increase = $cgi->param('setup_fee_increase'); + my $recurring_fee_increase = $cgi->param('recurring_fee_increase'); -my $error; -foreach my $pkgpart (@pkgparts) { - my $part_pkg = FS::part_pkg->by_key($pkgpart); - my %options = ( $part_pkg->options, %insert ); - delete $options{$_} foreach keys(%delete); - $error ||= $part_pkg->replace( options => \%options ); + foreach my $pkgpart (@pkgparts) { + my $part_pkg = FS::part_pkg->by_key($pkgpart); + my %options = $part_pkg->options; + if ($recurring_fee_increase) { + $options{'recur_fee'} = $options{'recur_fee'} + ($options{'recur_fee'} * ($recurring_fee_increase / 100)); + } + if ($setup_fee_increase) { + $options{'setup_fee'} = $options{'setup_fee'} + ($options{'setup_fee'} * ($setup_fee_increase / 100)); + } + $error ||= $part_pkg->replace( options => \%options ); + } } + +my $message = "Packages updated successfully"; +$message = $error."=error" if $error; + </%init> |