option to charge the next full period when prorating, RT#9874
[freeside.git] / FS / FS / part_pkg / voip_cdr.pm
index e067af5..5b83cc7 100644 (file)
@@ -70,7 +70,10 @@ tie my %granularity, 'Tie::IxHash', FS::rate_detail::granularities();
                                    'subscription',
                          'default' => '1',
                        },
-
+    'add_full_period'=> { 'name' => 'When prorating first month, also bill '.
+                                    'for one full period after that',
+                          'type' => 'checkbox',
+                        },
     'recur_method'  => { 'name' => 'Recurring fee method',
                          #'type' => 'radio',
                          #'options' => \%recur_method,
@@ -253,6 +256,7 @@ tie my %granularity, 'Tie::IxHash', FS::rate_detail::granularities();
   'fieldorder' => [qw(
                        setup_fee recur_fee recur_temporality unused_credit
                        recur_method cutoff_day
+                       add_full_period
                        cdr_svc_method
                        rating_method ratenum min_charge sec_granularity
                        ignore_unrateable
@@ -561,7 +565,9 @@ sub calc_usage {
 
         @call_details = ($cdr->downstream_csv( 'format'  => $output_format,
                                                'charge'  => $charge,
-                                               'seconds' => $seconds,
+                                               'seconds' => ($use_duration ? 
+                                                             $cdr->duration : 
+                                                             $cdr->billsec),
                                                'granularity' => $granularity,
                                              )
                         );
@@ -685,7 +691,9 @@ sub calc_usage {
           @call_details = (
             $cdr->downstream_csv( 'format'         => $output_format,
                                   'granularity'    => $rate_detail->sec_granularity, 
-                                  'seconds'        => $seconds,
+                                  'seconds'        => ($use_duration ?
+                                                       $cdr->duration :
+                                                       $cdr->billsec),
                                   'charge'         => $charge,
                                   'pretty_dst'     => $pretty_destnum,
                                   'dst_regionname' => $regionname,
@@ -847,7 +855,7 @@ sub check_chargable {
   return "destination less than $dst_length digits"
     if $dst_length && length($cdr->dst) < $dst_length
     && ! ( $opt{'noskip_dst_length_accountcode_tollfree'}
-            && $cdr->is_tollfree
+            && $cdr->is_tollfree('accountcode')
          );
 
   return "lastapp is $opt{'skip_lastapp'}"