summaryrefslogtreecommitdiff
path: root/FS/FS/part_pkg/agent.pm
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2014-12-12 18:37:47 -0800
committerIvan Kohler <ivan@freeside.biz>2014-12-12 18:37:47 -0800
commite2213aaeab76983c26d92c1e1d928fe4e062accf (patch)
tree37e32464dc621d1b026a09fddf06ca43afdba164 /FS/FS/part_pkg/agent.pm
parent6bab3cf66992f581d35ae57c633a81e8503d5c35 (diff)
agent wholesale bulk billing: option to use cost only, disabling fallback to price, RT#32481
Diffstat (limited to 'FS/FS/part_pkg/agent.pm')
-rw-r--r--FS/FS/part_pkg/agent.pm18
1 files changed, 13 insertions, 5 deletions
diff --git a/FS/FS/part_pkg/agent.pm b/FS/FS/part_pkg/agent.pm
index 37e7d9d..d926997 100644
--- a/FS/FS/part_pkg/agent.pm
+++ b/FS/FS/part_pkg/agent.pm
@@ -40,6 +40,10 @@ $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 ) ],
@@ -124,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 ) {