X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_pkg%2Fagent.pm;h=49c2c8654f13b5bcc5c20a2f1bb527c756285a50;hb=b7cf1606a66cca95e3540f803ffa66d223f23a40;hp=0e89f42396caa308f9f04cbd2ed1fb9e778a0456;hpb=a81ff71c918e7a82ccd6646351734ce74e8e4dd3;p=freeside.git diff --git a/FS/FS/part_pkg/agent.pm b/FS/FS/part_pkg/agent.pm index 0e89f4239..49c2c8654 100644 --- a/FS/FS/part_pkg/agent.pm +++ b/FS/FS/part_pkg/agent.pm @@ -36,9 +36,17 @@ $me = '[FS::part_pkg::agent]'; 'type' => 'checkbox', }, + 'display_separate_cust'=> { 'name' => 'Separate customer from package display on invoices', + '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, @@ -97,12 +105,14 @@ sub calc_recur { } $cust_main->all_pkgs; + my $cust_details = 0; + foreach my $cust_pkg ( @cust_pkg ) { warn "$me billing agent charges for pkgnum ". $cust_pkg->pkgnum. "\n" if $DEBUG; - my $pkg_details = $cust_main->name_short. ': '; #name? + my $pkg_details = ''; my $cust_location = $cust_pkg->cust_location; $pkg_details .= $cust_location->locationname. ': ' @@ -118,11 +128,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 ) { @@ -159,12 +173,21 @@ sub calc_recur { $pkg_charge += $quantity * $recur_charge; - push @$details, $pkg_details - if $pkg_charge; + if ( $pkg_charge ) { + if ( $self->option('display_separate_cust') ) { + push @$details, $cust_main->name.':' unless $cust_details++; + push @$details, ' '.$pkg_details; + } else { + push @$details, $cust_main->name_short.': '. $pkg_details; + } + }; + $total_agent_charge += $pkg_charge; } #foreach $cust_pkg + push @$details, ' ' if $cust_details; + } #foreach $cust_main } #foreach $agent;