diff options
author | Ivan Kohler <ivan@freeside.biz> | 2014-12-12 16:49:49 -0800 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2014-12-12 16:49:49 -0800 |
commit | a81ff71c918e7a82ccd6646351734ce74e8e4dd3 (patch) | |
tree | 8ab1d70111f9239405023569daabe327bb82a644 | |
parent | a1c46091ebd0cc17bcbe19be266dc2efa9f2d92b (diff) |
fix agent bulk billing with quantities, RT#31610
-rw-r--r-- | FS/FS/part_pkg/agent.pm | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/FS/FS/part_pkg/agent.pm b/FS/FS/part_pkg/agent.pm index 6391fc915..0e89f4239 100644 --- a/FS/FS/part_pkg/agent.pm +++ b/FS/FS/part_pkg/agent.pm @@ -116,6 +116,8 @@ sub calc_recur { my $pkg_charge = 0; + 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'); @@ -126,14 +128,18 @@ sub calc_recur { if ( $pkg_start < $last_bill ) { $pkg_start = $last_bill; } elsif ( $pkg_setup_fee ) { - $pkg_charge += $pkg_setup_fee; - $pkg_details .= $money_char. sprintf('%.2f setup, ', $pkg_setup_fee ); + $pkg_charge += $quantity * $pkg_setup_fee; + $pkg_details .= $money_char. + sprintf('%.2f setup', $quantity * $pkg_setup_fee ); + $pkg_details .= sprintf(" ($quantity \@ $money_char". '%.2f)', + $pkg_setup_fee ) + if $quantity > 1; + $pkg_details .= ', '; } my $pkg_end = $cust_pkg->get('cancel'); $pkg_end = ( !$pkg_end || $pkg_end > $$sdate ) ? $$sdate : $pkg_end; - my $pkg_recur_charge = $prorate_ratio * $pkg_base_recur; $pkg_recur_charge *= ( $pkg_end - $pkg_start ) / ( $$sdate - $last_bill ) @@ -141,12 +147,17 @@ sub calc_recur { my $recur_charge += $pkg_recur_charge; - $pkg_details .= $money_char. sprintf('%.2f', $recur_charge ). - ' ('. time2str($date_format, $pkg_start). - ' - '. time2str($date_format, $pkg_end ). ')' - if $recur_charge; + if ( $recur_charge ) { + $pkg_details .= $money_char. + sprintf('%.2f', $quantity * $recur_charge ); + $pkg_details .= sprintf(" ($quantity \@ $money_char". '%.2f)', + $recur_charge ) + if $quantity > 1; + $pkg_details .= ' ('. time2str($date_format, $pkg_start). + ' - '. time2str($date_format, $pkg_end ). ')'; + } - $pkg_charge += $recur_charge; + $pkg_charge += $quantity * $recur_charge; push @$details, $pkg_details if $pkg_charge; |