fix introrate/prorate interaction, RT#11018
authormark <mark>
Sat, 8 Jan 2011 01:40:20 +0000 (01:40 +0000)
committermark <mark>
Sat, 8 Jan 2011 01:40:20 +0000 (01:40 +0000)
FS/FS/part_pkg/flat.pm
FS/FS/part_pkg/prorate_Mixin.pm
FS/FS/part_pkg/subscription.pm

index b5e0fa0..f9d1b4e 100644 (file)
@@ -107,7 +107,7 @@ sub calc_recur {
   return 0
     if $self->option('recur_temporality', 1) eq 'preceding' && $last_bill == 0;
 
-  my $charge = $self->base_recur($cust_pkg);
+  my $charge = $self->base_recur($cust_pkg, $sdate);
   if ( $self->option('sync_bill_date',1) ) {
     my $next_bill = $cust_pkg->cust_main->next_bill_date;
     if ( defined($next_bill) ) {
@@ -127,7 +127,7 @@ sub calc_recur {
 }
 
 sub base_recur {
-  my($self, $cust_pkg) = @_;
+  my($self, $cust_pkg, $sdate) = @_;
   $self->option('recur_fee', 1) || 0;
 }
 
@@ -151,7 +151,7 @@ sub calc_remain {
 
   my $next_bill = $cust_pkg->getfield('bill') || 0;
 
-  return 0 if    ! $self->base_recur($cust_pkg)
+  return 0 if    ! $self->base_recur($cust_pkg, \$time)
               || ! $next_bill
               || $next_bill < $time;
 
index 3f3d86f..139568d 100644 (file)
@@ -49,7 +49,7 @@ sub calc_prorate {
   my $self  = shift;
   my ($cust_pkg, $sdate, $details, $param, $cutoff_day) = @_;
  
-  my $charge = $self->option('recur_fee',1) || 0;
+  my $charge = $self->base_recur($cust_pkg, $sdate) || 0;
   if($cutoff_day) {
     # only works for freq >= 1 month; probably can't be fixed
     my $mnow = $$sdate;
index 3c5f96b..bf88f51 100644 (file)
@@ -98,7 +98,7 @@ sub calc_recur {
 
   $$sdate = timelocal(0,0,0,$cutoff_day,$mon,$year);
 
-  my $br = $self->base_recur($cust_pkg);
+  my $br = $self->base_recur($cust_pkg, $sdate);
 
   my $discount = $self->calc_discount($cust_pkg, $sdate, $details, $param);