X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_pkg%2Fprorate_Mixin.pm;h=29409fa7617265bb64c091e631ecdf8263950c59;hb=b5c4237a34aef94976bc343c8d9e138664fc3984;hp=7bdb666804097b6bd711f88a39f4deb5a045ec7e;hpb=cb43a46ebb3d5c5ce8b60707093a53e8bb2e8f9b;p=freeside.git diff --git a/FS/FS/part_pkg/prorate_Mixin.pm b/FS/FS/part_pkg/prorate_Mixin.pm index 7bdb66680..29409fa76 100644 --- a/FS/FS/part_pkg/prorate_Mixin.pm +++ b/FS/FS/part_pkg/prorate_Mixin.pm @@ -23,14 +23,14 @@ sub calc_recur { ... if( conditions that trigger prorate ) { # sets $$sdate and $param->{'months'}, returns the prorated charge - $charges = $self->calc_prorate($cust_pkg, $sdate, $param); + $charges = $self->calc_prorate($cust_pkg, $sdate, $param, $cutoff_day); } ... } =head METHODS -=item calc_prorate CUST_PKG SDATE DETAILS PARAM +=item calc_prorate CUST_PKG SDATE DETAILS PARAM CUTOFF_DAY Takes all the arguments of calc_recur. Calculates a prorated charge from the $sdate to the cutoff day for this package definition, and sets the $sdate @@ -48,21 +48,20 @@ day arrives. =cut sub calc_prorate { - my $self = shift; - my ($cust_pkg, $sdate, $details, $param) = @_; - my $cutoff_day = $self->cutoff_day or die "no cutoff_day"; #($cust_pkg) + my ($self, $cust_pkg, $sdate, $details, $param, $cutoff_day) = @_; + die "no cutoff_day" unless $cutoff_day; my $charge = $self->base_recur($cust_pkg, $sdate) || 0; - if ( $cutoff_day ) { + my $mnow = $$sdate; # if this is the first bill but the bill date has been set # (by prorate_defer_bill), calculate from the setup date, # and append the setup fee to @$details. - if ( $self->option('prorate_defer_bill') + if ( $self->option('prorate_defer_bill',1) and ! $cust_pkg->getfield('last_bill') and $cust_pkg->setup ) { - warn "[calc_prorate] #".$cust_pkg->pkgnum.": running deferred setup\n"; + #warn "[calc_prorate] #".$cust_pkg->pkgnum.": running deferred setup\n"; $param->{'setup_fee'} = $self->calc_setup($cust_pkg, $$sdate, $details); $mnow = $cust_pkg->setup; } @@ -86,19 +85,8 @@ sub calc_prorate { $param->{'months'} = $months; $charge = sprintf('%.2f', $permonth * $months); - } - return $charge; -} - -=item cutoff_day -Returns the value of the "cutoff_day" option, or 1. - -=cut - -sub cutoff_day { - my $self = shift; - $self->option('cutoff_day', 1) || 1; + return $charge; } =item prorate_setup CUST_PKG SDATE