X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_pkg%2Fflat.pm;h=7bc44e17670af8089969a18eeffa8179c113dbdf;hb=87a59b1bdf236765177c27ab18390ef1317cc34c;hp=6118fd2ed09b7f340dc2cc67a16c0bb2d2c56dc7;hpb=8a7eec7b683294a15aab0b2bf1710e10fa80b4c5;p=freeside.git diff --git a/FS/FS/part_pkg/flat.pm b/FS/FS/part_pkg/flat.pm index 6118fd2ed..7bc44e176 100644 --- a/FS/FS/part_pkg/flat.pm +++ b/FS/FS/part_pkg/flat.pm @@ -98,12 +98,16 @@ tie my %contract_years, 'Tie::IxHash', ( sub price_info { my $self = shift; + my %opt = @_; my $conf = new FS::Conf; my $money_char = $conf->config('money_char') || '$'; - my $setup = $self->option('setup_fee') || 0; - my $recur = $self->option('recur_fee', 1) || 0; + my $setup = $opt{cust_pkg} ? $self->base_setup( $opt{cust_pkg} ) + : ($self->option('setup_fee') || 0); + my $recur = $opt{cust_pkg} ? $self->base_recur( $opt{cust_pkg} ) + : ($self->option('recur_fee', 1) || 0); + $recur += $self->usageprice_recur( $opt{cust_pkg} ) if $opt{cust_pkg}; my $str = ''; - $str = $money_char . $setup . ($recur ? ' setup ' : ' one-time') if $setup; + $str = $money_char . $setup . ($recur ? ' setup' : ' one-time') if $setup; $str .= ', ' if ($setup && $recur); $str .= $money_char. $recur. '/'. $self->freq_pretty if $recur; $str; @@ -160,6 +164,9 @@ sub calc_recur { $charge *= $param->{freq_override} if $param->{freq_override}; } + $charge += $self->usageprice_recur($cust_pkg, $sdate); + $cust_pkg->apply_usageprice(); #$sdate for prorating? + my $discount = $self->calc_discount($cust_pkg, $sdate, $details, $param); sprintf( '%.2f', ($cust_pkg->quantity || 1) * ($charge - $discount) ); @@ -190,6 +197,15 @@ sub base_recur_permonth { sprintf('%.2f', $self->base_recur($cust_pkg) / $self->freq ); } +sub usageprice_recur { + my($self, $cust_pkg, $sdate) = @_; + + my $recur = 0; + $recur += $_->price foreach $cust_pkg->cust_pkg_usageprice; + + sprintf('%.2f', $recur); +} + sub calc_cancel { my $self = shift; my $conf = new FS::Conf; @@ -257,6 +273,8 @@ sub can_start_date { ! shift->option('start_1st', 1) } sub can_discount { 1; } +sub can_usageprice { 1; } + sub recur_temporality { my $self = shift; $self->option('recur_temporality', 1);