X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_pkg%2Fflat.pm;h=cc231050337d265cc9ba1e2e50ffe6c71bfc0cae;hb=39a2828f29728d34af96fc6e0aef23ea01f7a7a2;hp=e25c28c72b9e65cc0b19420a7d3383be5ca5ec16;hpb=2b33f138c2a795a4e49967b2f4bcc13c56531087;p=freeside.git diff --git a/FS/FS/part_pkg/flat.pm b/FS/FS/part_pkg/flat.pm index e25c28c72..cc2310503 100644 --- a/FS/FS/part_pkg/flat.pm +++ b/FS/FS/part_pkg/flat.pm @@ -158,8 +158,7 @@ sub unit_setup { } sub calc_recur { - my $self = shift; - my($cust_pkg) = @_; + my($self, $cust_pkg, $sdate, $details, $param ) = @_; #my $last_bill = $cust_pkg->last_bill; my $last_bill = $cust_pkg->get('last_bill'); #->last_bill falls back to setup @@ -167,22 +166,22 @@ sub calc_recur { return 0 if $self->option('recur_temporality', 1) eq 'preceding' && $last_bill == 0; - my $br = $self->base_recur(@_); + my $br = $self->base_recur($cust_pkg); - my $discount = $self->calc_discount(@_); + my $discount = $self->calc_discount($cust_pkg, $sdate, $details, $param); sprintf('%.2f', $br - $discount); } sub calc_discount { - my $self = shift; - my($cust_pkg, $sdate, $details, $param ) = @_; + my($self, $cust_pkg, $sdate, $details, $param ) = @_; - my $br = $self->base_recur(@_); + my $br = $self->base_recur($cust_pkg); my $tot_discount = 0; #UI enforces just 1 for now, will need ordering when they can be stacked - foreach my $cust_pkg_discount ( $cust_pkg->cust_pkg_discount_active ) { + my @cust_pkg_discount = $cust_pkg->cust_pkg_discount_active; + foreach my $cust_pkg_discount ( @cust_pkg_discount ) { my $discount = $cust_pkg_discount->discount; #UI enforces one or the other (for now? probably for good) my $amount = 0; @@ -193,7 +192,7 @@ sub calc_discount { my $months = $discount->months ? min( $chg_months, - $discount->months - $cust_pkg->months_used ) + $discount->months - $cust_pkg_discount->months_used ) : $chg_months; my $error = $cust_pkg_discount->increment_months_used($months);