add monthly cap to daily RADIUS usage, RT#22699
authorIvan Kohler <ivan@freeside.biz>
Tue, 30 Apr 2013 01:17:03 +0000 (18:17 -0700)
committerIvan Kohler <ivan@freeside.biz>
Tue, 30 Apr 2013 01:17:03 +0000 (18:17 -0700)
FS/FS/part_pkg/sqlradacct_daily.pm

index d99def2..d0d3e10 100644 (file)
@@ -66,8 +66,13 @@ use Date::Format;
                               'default' => 0,
                             },
 
+    'monthly_cap'        => { 'name' => 'Monthly (billing frequency) cap on all overage charges'.
+                                        ' (0 means no cap)',
+                              'default' => 0,
+                            },
+
   },
-  'fieldorder' => [qw( recur_included_hours recur_hourly_charge recur_hourly_cap recur_included_input recur_input_charge recur_input_cap recur_included_output recur_output_charge recur_output_cap recur_included_total recur_total_charge recur_total_cap global_cap )],
+  'fieldorder' => [qw( recur_included_hours recur_hourly_charge recur_hourly_cap recur_included_input recur_input_charge recur_input_cap recur_included_output recur_output_charge recur_output_cap recur_included_total recur_total_charge recur_total_cap global_cap monthly_cap )],
   'weight' => 41,
 );
 
@@ -79,7 +84,7 @@ sub price_info {
 }
 
 #hacked-up false laziness w/sqlradacct_hour,
-# but keeping it separate to start  with is safer for existing folks
+# but keeping it separate to start with is safer for existing folks
 sub calc_recur {
   my($self, $cust_pkg, $sdate, $details ) = @_;
 
@@ -179,6 +184,10 @@ sub calc_recur {
     $day_start = $tomorrow;
   }
 
+  $charges = $self->option('monthly_cap')
+    if $self->option('monthly_cap')
+    && $charges > $self->option('monthly_cap');
+
   $self->option('recur_fee') + $charges;
 }