RT# 82949 - added the ability to bulk increase package fees (setup and/or recurring...
[freeside.git] / httemplate / edit / process / bulk-part_pkg.html
index 4775a93..ac542cc 100644 (file)
@@ -1,30 +1,54 @@
-% if ( $error ) {
-%  $cgi->param('error', $error);
-<% $cgi->redirect(popurl(3).'/edit/bulk-part_pkg.cgi?', $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 %changes;
-foreach my $param (grep { /^report_option_\d+$/ } $cgi->param) {
-  if ( length($cgi->param($param)) ) {
+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 ) {
-      $changes{$param} = 1;
-    } else {
-      $changes{$param} = '';
-    }
+      $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 );
   }
 }
 
-my $error;
-foreach my $pkgpart (@pkgparts) {
-  my $part_pkg = FS::part_pkg->by_key($pkgpart);
-  my %options = ( $part_pkg->options, %changes );
-  $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');
+
+  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>