X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fpart_pkg%2Fagent.pm;h=1a5b6154e759910af3d137fda0f91e6dd234dfaa;hp=37e7d9d3fa184529147725b5dab72528661a0057;hb=674cb2d9d7105f4cc2871539b2e9f7088cdaa750;hpb=6bab3cf66992f581d35ae57c633a81e8503d5c35 diff --git a/FS/FS/part_pkg/agent.pm b/FS/FS/part_pkg/agent.pm index 37e7d9d3f..1a5b6154e 100644 --- a/FS/FS/part_pkg/agent.pm +++ b/FS/FS/part_pkg/agent.pm @@ -14,8 +14,8 @@ $DEBUG = 0; $me = '[FS::part_pkg::agent]'; %info = ( - 'name' => 'Wholesale bulk billing, for master customers of an agent.', - 'shortname' => 'Wholesale bulk billing for agent.', + 'name' => 'Wholesale billing based on package prices, for master customers of an agent.', + 'shortname' => 'Wholesale billing for agent (package prices)', 'inherit_fields' => [qw( prorate global_Mixin)], 'fields' => { #'recur_method' => { 'name' => 'Recurring fee method', @@ -40,9 +40,13 @@ $me = '[FS::part_pkg::agent]'; 'type' => 'checkbox', }, + 'cost_only' => { 'name' => 'Bill wholesale on cost only, disabling the price fallback', + 'type' => 'checkbox' + }, + }, - 'fieldorder' => [qw( cutoff_day add_full_period no_pkg_prorate ) ], + 'fieldorder' => [qw( cutoff_day add_full_period no_pkg_prorate display_separate_cust cost_only) ], 'weight' => 52, @@ -90,12 +94,13 @@ sub calc_recur { if $DEBUG; #make sure setup dates are filled in - my $error = $cust_main->bill; #options don't propogate from freeside-daily + my $error = $cust_main->bill( time => $$sdate ); die "Error pre-billing agent customer: $error" if $error; my @cust_pkg = grep { my $setup = $_->get('setup'); my $cancel = $_->get('cancel'); + #$setup <= $$sdate # ? $setup < $$sdate # END && ( ! $cancel || $cancel > $last_bill ) #START } @@ -124,11 +129,15 @@ sub calc_recur { my $quantity = $cust_pkg->quantity || 1; - #option to not fallback? via options above - my $pkg_setup_fee = - $part_pkg->setup_cost || $part_pkg->option('setup_fee'); - my $pkg_base_recur = - $part_pkg->recur_cost || $part_pkg->base_recur_permonth($cust_pkg); + my $pkg_setup_fee = $part_pkg->setup_cost; + $pkg_setup_fee ||= $part_pkg->option('setup_fee') + unless $self->option('cost_only'); + $pkg_setup_fee ||= 0; + + my $pkg_base_recur = $part_pkg->recur_cost; + $pkg_base_recur ||= $part_pkg->base_recur_permonth($cust_pkg) + unless $self->option('cost_only'); + $pkg_base_recur ||= 0; my $pkg_start = $cust_pkg->get('setup'); if ( $pkg_start < $last_bill ) {