Option to ignore old CDRs, RT#81480
authorIvan Kohler <ivan@freeside.biz>
Tue, 13 Nov 2018 03:00:36 +0000 (19:00 -0800)
committerIvan Kohler <ivan@freeside.biz>
Tue, 13 Nov 2018 03:00:36 +0000 (19:00 -0800)
FS/FS/part_pkg/voip_cdr.pm
httemplate/edit/part_pkg.cgi

index 587a8c5..522e4aa 100644 (file)
@@ -4,6 +4,7 @@ use base qw( FS::part_pkg::recur_Common );
 use strict;
 use vars qw( $DEBUG %info );
 use Tie::IxHash;
 use strict;
 use vars qw( $DEBUG %info );
 use Tie::IxHash;
+use Date::Parse;
 use Date::Format;
 use Text::CSV_XS;
 use FS::Conf;
 use Date::Format;
 use Text::CSV_XS;
 use FS::Conf;
@@ -294,6 +295,9 @@ tie my %accountcode_tollfree_field, 'Tie::IxHash',
     'bill_only_pkg_dates' => { 'name' => 'Only bill CDRs with a date during the package billing period',
                                'type' => 'checkbox',
                              },
     'bill_only_pkg_dates' => { 'name' => 'Only bill CDRs with a date during the package billing period',
                                'type' => 'checkbox',
                              },
+    'skip_old' => { 'name' => 'Do not charge for CDRs older than: ',
+                    'type' => 'date',
+                  },
 
     #XXX also have option for an external db?  these days we suck them into ours
 #    'cdr_location' => { 'name' => 'CDR database location'
 
     #XXX also have option for an external db?  these days we suck them into ours
 #    'cdr_location' => { 'name' => 'CDR database location'
@@ -355,7 +359,7 @@ tie my %accountcode_tollfree_field, 'Tie::IxHash',
                        selfservice_format selfservice_inbound_format
                        usage_mandate usage_section summarize_usage 
                        usage_showzero bill_every_call bill_inactive_svcs
                        selfservice_format selfservice_inbound_format
                        usage_mandate usage_section summarize_usage 
                        usage_showzero bill_every_call bill_inactive_svcs
-                       bill_only_pkg_dates
+                       bill_only_pkg_dates skip_old
                        suspend_bill 
                      )
                   ],
                        suspend_bill 
                      )
                   ],
@@ -670,6 +674,10 @@ sub check_chargable {
       and length($cdr->max_callers)
       and $cdr->max_callers <= $self->option_cacheable('skip_max_callers');
 
       and length($cdr->max_callers)
       and $cdr->max_callers <= $self->option_cacheable('skip_max_callers');
 
+  return "calldate < ". str2time($self->option_cacheable('skip_old'))
+    if $self->option_cacheable('skip_old')
+    && $self->calldate_unix < str2time($self->option_cacheable('skip_old')); 
+
   #all right then, rate it
   '';
 }
   #all right then, rate it
   '';
 }
index a6a2a89..dd8cb13 100755 (executable)
@@ -9,6 +9,7 @@
      #'viewall_dir'           => 'browse',
      'viewall_url'           => $p.'browse/part_pkg.cgi',
      'html_init'             => include('/elements/init_overlib.html').
      #'viewall_dir'           => 'browse',
      'viewall_url'           => $p.'browse/part_pkg.cgi',
      'html_init'             => include('/elements/init_overlib.html').
+                                include('/elements/init_calendar.html').
                                 $javascript,
      'html_bottom'           => $html_bottom,
      'body_etc'              =>
                                 $javascript,
      'html_bottom'           => $html_bottom,
      'body_etc'              =>
@@ -1003,6 +1004,13 @@ my $html_bottom = sub {
                    : ''
                  ). '>';
 
                    : ''
                  ). '>';
 
+      } elsif ( $href->{$field}{'type'} eq 'date' ) {
+
+        $html .= include('/elements/input-date-field.html', {
+                           'name'  => $layer.'__'.$field,
+                           'value' => $options{$field},
+                        });
+
       } elsif ( $href->{$field}{'type'} =~ /^select-rt-/ ) {
 
         $html .= include('/elements/'.$href->{$field}{'type'}.'.html',
       } elsif ( $href->{$field}{'type'} =~ /^select-rt-/ ) {
 
         $html .= include('/elements/'.$href->{$field}{'type'}.'.html',