& /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>