diff options
| -rwxr-xr-x | httemplate/browse/part_pkg.cgi | 23 | ||||
| -rw-r--r-- | httemplate/edit/bulk-part_pkg.html | 84 | ||||
| -rw-r--r-- | httemplate/edit/process/bulk-part_pkg.html | 67 | 
3 files changed, 129 insertions, 45 deletions
| diff --git a/httemplate/browse/part_pkg.cgi b/httemplate/browse/part_pkg.cgi index 296449650..526aaa9f3 100755 --- a/httemplate/browse/part_pkg.cgi +++ b/httemplate/browse/part_pkg.cgi @@ -27,6 +27,15 @@                   'html_foot'             => $html_foot,               )  %> + +<%def .style> +  <SCRIPT TYPE="text/javascript"> +    $(document).ready(function(){ +      $(this).scrollTop(0); +    }); +  </SCRIPT> +</%def> +  <%init>  my $curuser = $FS::CurrentUser::CurrentUser; @@ -683,8 +692,18 @@ if ( $acl_edit_bulk ) {    $html_form = qq!<FORM ACTION="${p}edit/bulk-part_pkg.html" METHOD="POST">!;    $html_foot = include('/search/elements/checkbox-foot.html',                   actions => [ -                   { submit => 'edit report classes', }, -                   { label  => 'change customer packages', +                   { label  => 'edit packages', +                     onclick=> include('/elements/popup_link_onclick.html', +                                 'label'       => 'edit', +                                 'js_action'   => qq{ +                                   '${p}edit/bulk-part_pkg.html?' + \$('input[name=pkgpart]').serialize() +                                 }, +                                 'actionlabel' => 'Bulk edit packages', +                                 'width'       => 960, +                                 'height'      => 420, +                               ) +                   }, +                   { label  => 'change customers packages',                       onclick=> include('/elements/popup_link_onclick.html',                                   'label'       => 'change',                                   'js_action'   => qq{ 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> | 
