X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_pkg%2Fbulk.pm;h=4ac73892c582b52dd93d96a8d0e6d7fc30ffbe89;hb=b49c1bd5510a5f10b05bffacc6cc8b6a1b2153e8;hp=b28fd30465caae3f4038547255694a5f1020b98b;hpb=eb5ca274dd4f5d76e71e295dcb55fcccae060fa5;p=freeside.git diff --git a/FS/FS/part_pkg/bulk.pm b/FS/FS/part_pkg/bulk.pm index b28fd3046..4ac73892c 100644 --- a/FS/FS/part_pkg/bulk.pm +++ b/FS/FS/part_pkg/bulk.pm @@ -4,6 +4,7 @@ use strict; use vars qw(@ISA $DEBUG $me %info); use Date::Format; use FS::part_pkg::flat; +use FS::Conf; @ISA = qw(FS::part_pkg::flat); @@ -12,23 +13,14 @@ $me = '[FS::part_pkg::bulk]'; %info = ( 'name' => 'Bulk billing based on number of active services', + 'inherit_fields' => [ 'global_Mixin' ], 'fields' => { - 'setup_fee' => { 'name' => 'Setup fee for the entire bulk package', - 'default' => 0, - }, - 'recur_fee' => { 'name' => 'Recurring fee for the entire bulk package', - 'default' => 0, - }, 'svc_setup_fee' => { 'name' => 'Setup fee for each new service', 'default' => 0, }, 'svc_recur_fee' => { 'name' => 'Recurring fee for each service', 'default' => 0, }, - 'unused_credit' => { 'name' => 'Credit the customer for the unused portion'. - ' of service at cancellation', - 'type' => 'checkbox', - }, 'summarize_svcs'=> { 'name' => 'Show a count of services on the invoice, '. 'instead of a detailed list', 'type' => 'checkbox', @@ -38,11 +30,27 @@ $me = '[FS::part_pkg::bulk]'; 'type' => 'checkbox', }, }, - 'fieldorder' => [ 'setup_fee', 'recur_fee', 'svc_setup_fee', 'svc_recur_fee', - 'unused_credit', 'summarize_svcs', 'no_prorate' ], + 'fieldorder' => [ 'svc_setup_fee', 'svc_recur_fee', + 'summarize_svcs', 'no_prorate' ], 'weight' => 50, ); +sub price_info { + my $self = shift; + my $str = $self->SUPER::price_info; + my $svc_setup_fee = $self->option('svc_setup_fee'); + my $svc_recur_fee = $self->option('svc_recur_fee'); + my $conf = new FS::Conf; + my $money_char = $conf->config('money_char') || '$'; + $str .= " , bulk" if $str; + $str .= ": $money_char" . $svc_setup_fee . " one-time per service" + if $svc_setup_fee; + $str .= ", " if ($svc_setup_fee && $svc_recur_fee); + $str .= $money_char . $svc_recur_fee . " recurring per service" + if $svc_recur_fee; + $str; +} + #some false laziness-ish w/agent.pm... not a lot sub calc_recur { my($self, $cust_pkg, $sdate, $details ) = @_; @@ -54,7 +62,7 @@ sub calc_recur { my $last_bill = $cust_pkg->last_bill; - return sprintf("%.2f", $self->base_recur($cust_pkg) ) + return sprintf("%.2f", $self->base_recur($cust_pkg, $sdate) ) unless $$sdate > $last_bill; my $total_svc_charge = 0; @@ -122,7 +130,7 @@ sub calc_recur { } } - sprintf('%.2f', $self->base_recur($cust_pkg) + $total_svc_charge ); + sprintf('%.2f', $self->base_recur($cust_pkg, $sdate) + $total_svc_charge ); } sub can_discount { 0; }