fix v3 prospect->customer conversion, RT#31965, RT#31202
[freeside.git] / FS / FS / part_pkg.pm
index 005d69d..d2f2f86 100644 (file)
@@ -1665,7 +1665,7 @@ recur_cost divided by freq (only supported for monthly and longer frequencies)
 sub recur_cost_permonth {
   my($self, $cust_pkg) = @_;
   return 0 unless $self->freq =~ /^\d+$/ && $self->freq > 0;
-  sprintf('%.2f', $self->recur_cost / $self->freq );
+  sprintf('%.2f', ($self->recur_cost || 0) / $self->freq );
 }
 
 =item cust_bill_pkg_recur CUST_PKG
@@ -1710,7 +1710,7 @@ unit_setup minus setup_cost
 
 sub setup_margin {
   my $self = shift;
-  $self->unit_setup(@_) - $self->setup_cost;
+  $self->unit_setup(@_) - ($self->setup_cost || 0);
 }
 
 =item recur_margin_permonth
@@ -1818,23 +1818,16 @@ sub _upgrade_data { # class method
        die $error if $error;
       }
 
-      foreach my $optionname( qw(
-                                 recur_hourly_%
-                                 recur_input_%
-                                 recur_output_%
-                                 recur_total_%
-                              ) ){
-       foreach my $opt (qsearch('part_pkg_option',
-                                { 'optionname'  => { op => 'LIKE',
-                                                     value => $optionname,
-                                                   },
-                                  pkgpart => $pkgpart,
-                                })){
-         $opt->optionvalue($opt->optionvalue * 1024);
-
-         my $error = $opt->replace;
-         die $error if $error;
-       }
+      foreach my $opt (qsearch('part_pkg_option',
+                              { 'optionname'  => { op => 'LIKE',
+                                                   value => 'recur_%_charge',
+                                                 },
+                                pkgpart => $pkgpart,
+                              })){
+       $opt->optionvalue($opt->optionvalue * 1024);
+
+       my $error = $opt->replace;
+       die $error if $error;
       }
 
     }