die 'unknown pkgnum' unless $cust_pkg;
my %change = map { $_ => scalar($cgi->param($_)) }
- qw( locationnum pkgpart quantity );
+ qw( locationnum pkgpart quantity waive_setup);
$change{'keep_dates'} = 1;
$change{'cust_location'} = $cust_location;
}
-if ( $cgi->param('setup_discountnum') =~ /^(-?\d+)$/ ) {
- if ( $1 == -2 ) {
- $change{waive_setup} = 'Y';
- } else {
- $change{setup_discountnum} = $1;
- $change{setup_discountnum_amount} = $cgi->param('setup_discountnum_amount');
- $change{setup_discountnum_percent} = $cgi->param('setup_discountnum_percent');
- }
+my %discount = (discountnum => $cgi->param('discountnum'));
+if (%discount) {
+ $discount{$_} = $cgi->param("discountnum_$_")
+ for qw(_type amount months percent setup);
}
my $error;
} else {
# schedule the change
$change{'start_date'} = $date;
+ $change{discount} = \%discount if %discount;
$error = $cust_pkg->change_later(\%change);
}
} else {
$change_to->locationnum == $change{'locationnum'} and
$change_to->quantity == $change{'quantity'} and
$change_to->contract_end == $change{'contract_end'} and
- $change_to->waive_setup == $change{'waive_setup'} and
- !$usagechanged
+ $change_to->waive_setup == $change{'waive_setup'}
) {
%change = ( 'cust_pkg' => $change_to );
}
}
-
+
# do a package change right now
my $pkg_or_error = $cust_pkg->change( \%change );
+ $pkg_or_error->change_discount(\%discount)
+ if ref $pkg_or_error && $discount{discountnum} =~ /$-?\d+$/;
$error = ref($pkg_or_error) ? '' : $pkg_or_error;
}
}