59c914a5d796ab8643c25d4a7fccc84e5f51fd04
[freeside.git] / httemplate / edit / process / bulk-part_pkg.html
1 % if ( $error ) {
2 %  $cgi->param('error', $error);
3 <% $cgi->redirect(popurl(3).'/edit/bulk-part_pkg.html?'.$cgi->query_string) %>
4 % } else {
5 <% $cgi->redirect(popurl(3).'/browse/part_pkg.cgi') %>
6 % }
7 <%init>
8 die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Bulk edit package definitions');
9
10 my @pkgparts = $cgi->param('pkgpart')
11   or die "no package definitions selected";
12
13 my %delete = map { 'report_option_'.($_->num) => 1 }
14   qsearch('part_pkg_report_option', {});
15 my %insert;
16
17 foreach my $param (grep { /^report_option_\d+$/ } $cgi->param) {
18   if ( $cgi->param($param) == 1 ) {
19     $insert{$param} = 1;
20     delete $delete{$param};
21   } elsif ( $cgi->param($param) == -1 ) {
22     # leave it alone
23     delete $delete{$param};
24   } # else it's empty, so leave it on the delete list
25 }
26
27
28 my $error;
29 foreach my $pkgpart (@pkgparts) {
30   my $part_pkg = FS::part_pkg->by_key($pkgpart);
31   my %options = ( $part_pkg->options, %insert );
32   delete $options{$_} foreach keys(%delete);
33   $error ||= $part_pkg->replace( options => \%options );
34 }
35 </%init>