fix invoicing prorate packages when bill date is edited manually before first billing...
[freeside.git] / FS / FS / part_pkg / prorate_Mixin.pm
index a89b54d..7eac2af 100644 (file)
@@ -30,7 +30,7 @@ tie our %prorate_round_day_opts, 'Tie::IxHash',
     },
     'prorate_defer_bill' => {
                 'name' => 'When prorating, defer the first bill until the '.
-                          'billing day',
+                          'billing day or customers next bill date if synchronizing.',
                 'type' => 'checkbox',
     },
     'prorate_verbose' => {
@@ -108,7 +108,8 @@ sub calc_prorate {
      )
   {
     #warn "[calc_prorate] #".$cust_pkg->pkgnum.": running deferred setup\n";
-    $param->{'setup_fee'} = $self->calc_setup($cust_pkg, $$sdate, $details);
+    $param->{'setup_fee'} = $self->calc_setup($cust_pkg, $$sdate, $details)
+      unless $cust_pkg->{'Hash'}->{'waive_setup'};
     $mnow = $cust_pkg->setup;
     $add_period = 1;
   }
@@ -189,8 +190,7 @@ set, in which case it postpones the next bill to the cutoff day.
 =cut
 
 sub prorate_setup {
-  my $self = shift;
-  my ($cust_pkg, $sdate) = @_;
+  my ($self, $cust_pkg, $time) = @_;
   my @cutoff_days = $self->cutoff_day($cust_pkg);
   if ( @cutoff_days and $self->option('prorate_defer_bill', 1) ) {
     if ( $cust_pkg->setup ) {
@@ -204,11 +204,11 @@ sub prorate_setup {
         # For some reason (probably user override), the bill date has been set even
         # though the package isn't billing yet. Start billing as though that was the
         # start date.
-        $sdate = $cust_pkg->bill;
+        $time = $cust_pkg->bill;
         $cust_pkg->setup($cust_pkg->bill);
       }
       # Now figure the start and end of the period that contains the start date.
-      my ($mnow, $mend, $mstart) = $self->_endpoints($sdate, @cutoff_days);
+      my ($mnow, $mend, $mstart) = $self->_endpoints($time, @cutoff_days);
       # If today is the cutoff day, set the next bill and setup both to 
       # midnight today, so that the customer will be billed normally for a 
       # month starting today.