- if (!$qpd) { #can't happen
- warn "$me simulated bill returned a discount but no discount is in effect.\n";
- }
- if ($discount and $qpd) {
- if ( $i == 0 ) {
- $qpd->set('setup_amount', $discount->amount);
- } else {
- $qpd->set('recur_amount', $discount->amount);
+ if ( $discount ) {
+ # find the quotation_pkg_discount record for this billing pass...
+ my $setuprecur = $i ? 'recur' : 'setup';
+ my $qpd = $quotation_pkg_discount{$quotationpkgnum}{$setuprecur}
+ ||= qsearchs('quotation_pkg_discount', {
+ 'quotationpkgnum' => $quotationpkgnum,
+ 'setuprecur' => $setuprecur,
+ });
+
+ if (!$qpd) { #can't happen
+ warn "$me simulated bill returned a $setuprecur discount but no discount is in effect.\n";
+ }
+ if ($qpd) {
+ $qpd->set('amount', $discount->amount);