+
+# Discounts:
+# setup_discountnum and change_discountnum may contain one of the following:
+# - "-1" Represents the 'other' option. Results in a new entry to the
+# discount table.
+# - "-2" Represents the "waive setup fee" option. Sets cust_pkg.waive_setup = Y
+# - int Represents the id for a discount row: discount.discountnum
+# my %discount;
+# $change{waive_setup} = '';
+# for my $type (qw|setup recur|) {
+# my $dnum = $cgi->param("${type}_discountnum");
+
+# if ($dnum eq '-2' && $type eq 'setup') {
+# $change{waive_setup} = 'Y';
+# } elsif ($val =~ /^-?\d+$/) {
+# $discount{$type} = {discountnum => $dnum};
+# if ($dnum eq '-1') {
+# $discount{$type}->{amount} = $cgi->param("${type}_discountnum_amount");
+# $discount{$type}->{percent} = $cgi->param("${type}_discountnum_percent");
+# }
+# } else {
+# # Shouldn't happen without funny business
+# $error = "Bad value ${type}_discountnum ($val)";
+# }
+# }
+
+
+$change{waive_setup} = '';
+for my $type (qw|setup_discountnum recur_discountnum|) {
+ my $dnum = $cgi->param($type);
+
+ if ($dnum eq '-2' && $type eq 'setup_discountnum') {
+ # Waive Discount
+ $change{waive_setup} = 'Y';
+ } elsif ($dnum =~ /^-?\d+$/) {
+ # Set discountnum
+ $change{$type} = $dnum;
+ $change{"${type}_amount"} = $cgi->param("${type}_amount");
+ $change{"${type}_percent"} = $cgi->param("${type}_percent");
+ $change{"${type}_months"} = $cgi->param("${type}_months");
+ } elsif ($dnum eq '') {
+ # Set discount as no discount
+ $change{"${type}"} = 0;
+ } else {
+ $error = "Bad value ${type}_discountnum ($dnum)";
+ }
+}
+