From b71b1576c68bc40ad26592b354feace37a029f0e Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Mon, 12 Nov 2018 19:00:36 -0800 Subject: [PATCH] Option to ignore old CDRs, RT#81480 --- FS/FS/part_pkg/voip_cdr.pm | 10 +++++++++- httemplate/edit/part_pkg.cgi | 8 ++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/FS/FS/part_pkg/voip_cdr.pm b/FS/FS/part_pkg/voip_cdr.pm index 587a8c530..522e4aa6f 100644 --- a/FS/FS/part_pkg/voip_cdr.pm +++ b/FS/FS/part_pkg/voip_cdr.pm @@ -4,6 +4,7 @@ use base qw( FS::part_pkg::recur_Common ); use strict; use vars qw( $DEBUG %info ); use Tie::IxHash; +use Date::Parse; 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', }, + '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' @@ -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 - bill_only_pkg_dates + bill_only_pkg_dates skip_old suspend_bill ) ], @@ -670,6 +674,10 @@ sub check_chargable { 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 ''; } diff --git a/httemplate/edit/part_pkg.cgi b/httemplate/edit/part_pkg.cgi index a6a2a89c5..dd8cb13a2 100755 --- a/httemplate/edit/part_pkg.cgi +++ b/httemplate/edit/part_pkg.cgi @@ -9,6 +9,7 @@ #'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' => @@ -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', -- 2.11.0