summaryrefslogtreecommitdiff
path: root/httemplate/edit/process/bulk-part_pkg.html
blob: 4153ffc13f8360cfb9fa5c95ef89e65d5a0c24d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<& /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 $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('pricing')) {
  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>