diff options
author | Ivan Kohler <ivan@freeside.biz> | 2014-12-12 16:49:51 -0800 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2014-12-12 16:49:51 -0800 |
commit | e4278a4de86f87a4a25c6cbdd93fd9f650bbccf0 (patch) | |
tree | 42b222d971a66079af59d867a19ac2ae1c5d17f3 /FS | |
parent | c50ac2e99690064ac74868f076cc5590448d95aa (diff) |
fix agent bulk billing with quantities, RT#31610
Diffstat (limited to 'FS')
-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 e24ebe11e..99b77494f 100644 --- a/FS/FS/part_pkg/agent.pm +++ b/FS/FS/part_pkg/agent.pm @@ -119,6 +119,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'); @@ -129,14 +131,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 ) @@ -144,12 +150,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; |