summaryrefslogtreecommitdiff
path: root/httemplate/edit/process/bulk-part_pkg.html
blob: bc5137cdd2956aacd9e353591274db464942996b (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
% 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') %>
% }
<%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;
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 );
}
</%init>