diff options
| author | Christopher Burger <burgerc@freeside.biz> | 2019-05-09 13:22:09 -0400 | 
|---|---|---|
| committer | Christopher Burger <burgerc@freeside.biz> | 2019-05-10 09:44:32 -0400 | 
| commit | 5d3c3ddddcb893966b45134a5d270f45ef91c591 (patch) | |
| tree | 2e1466b6184c9f35cbd47e1ebdae2730cf431953 /httemplate/edit/process/bulk-part_pkg.html | |
| parent | 2eedee9c581db67f67abee82a54ed6dc06ce8bfa (diff) | |
RT# 82949 - added the ability to bulk increase package fees (setup and/or recurring) by a percentage
Conflicts:
	httemplate/browse/part_pkg.cgi
	httemplate/elements/header-full.html
Diffstat (limited to 'httemplate/edit/process/bulk-part_pkg.html')
| -rw-r--r-- | httemplate/edit/process/bulk-part_pkg.html | 67 | 
1 files changed, 43 insertions, 24 deletions
| 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> | 
