fix quotations w/ packages w/ add-on packages in v3, RT#74045
authorIvan Kohler <ivan@freeside.biz>
Fri, 24 Feb 2017 21:58:19 +0000 (13:58 -0800)
committerIvan Kohler <ivan@freeside.biz>
Fri, 24 Feb 2017 21:58:19 +0000 (13:58 -0800)
FS/FS/quotation_pkg.pm

index f4d5d5d..5607b9c 100644 (file)
@@ -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;