From a38771cb202d6b98b34c3a4346ca144a7be03780 Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Fri, 24 Feb 2017 13:58:19 -0800 Subject: [PATCH] fix quotations w/ packages w/ add-on packages in v3, RT#74045 --- FS/FS/quotation_pkg.pm | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/FS/FS/quotation_pkg.pm b/FS/FS/quotation_pkg.pm index f4d5d5d0a..5607b9c33 100644 --- a/FS/FS/quotation_pkg.pm +++ b/FS/FS/quotation_pkg.pm @@ -258,25 +258,20 @@ on failure. sub estimate { my $self = shift; - my $part_pkg = $self->part_pkg; - my $quantity = $self->quantity || 1; - my ($unitsetup, $unitrecur); - # calculate base fees - if ( $self->waive_setup eq 'Y' || $self->{'_NO_SETUP_KLUDGE'} ) { - $unitsetup = '0.00'; - } else { - $unitsetup = $part_pkg->option('setup_fee',1) || '0.00'; # XXX 3.x only - } - if ( $self->{'_NO_RECUR_KLUDGE'} ) { - $unitrecur = '0.00'; - } else { - $unitrecur = $part_pkg->base_recur; - } - #XXX add-on packages + my( $unitsetup, $unitrecur ) = (0, 0); + foreach my $part_pkg ( $self->part_pkg->self_and_bill_linked ) { + + $unitsetup += $part_pkg->option('setup_fee',1) || '0' # 3.x only + unless $self->waive_setup eq 'Y' || $self->{'_NO_SETUP_KLUDGE'}; + + $unitrecur += $part_pkg->base_recur + unless $self->{'_NO_RECUR_KLUDGE'}; + + } - $self->set('unitsetup', $unitsetup); - $self->set('unitrecur', $unitrecur); + $self->set('unitsetup', sprintf('%.2f', $unitsetup) ); + $self->set('unitrecur', sprintf('%.2f', $unitrecur) ); my $error = $self->replace; return $error if $error; -- 2.11.0