projects
/
freeside.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix skip_old when date has leading 0, RT#81480
[freeside.git]
/
FS
/
FS
/
part_pkg
/
voip_cdr.pm
diff --git
a/FS/FS/part_pkg/voip_cdr.pm
b/FS/FS/part_pkg/voip_cdr.pm
index
1fb3bec
..
87c3247
100644
(file)
--- 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 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;
@@
-165,9
+166,13
@@
tie my %accountcode_tollfree_field, 'Tie::IxHash',
},
'use_cdrtypenum' => { 'name' => 'Only charge for CDRs where the CDR Type is set to this cdrtypenum: ',
},
'use_cdrtypenum' => { 'name' => 'Only charge for CDRs where the CDR Type is set to this cdrtypenum: ',
+ 'validate' => \&FS::part_pkg::validate_number_blank,
+ 'js_validate' => 'digits: true',
},
'ignore_cdrtypenum' => { 'name' => 'Do not charge for CDRs where the CDR Type is set to this cdrtypenum: ',
},
'ignore_cdrtypenum' => { 'name' => 'Do not charge for CDRs where the CDR Type is set to this cdrtypenum: ',
+ 'validate' => \&FS::part_pkg::validate_number_blank,
+ 'js_validate' => 'digits: true',
},
'use_calltypenum' => { 'name' => 'Only charge for CDRs where the CDR Call Type is set to this calltypenum: ',
},
'use_calltypenum' => { 'name' => 'Only charge for CDRs where the CDR Call Type is set to this calltypenum: ',
@@
-294,6
+299,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
+363,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
)
],
@@
-363,8
+371,8
@@
tie my %accountcode_tollfree_field, 'Tie::IxHash',
'validate' => sub {
# Validation function for FS::part_pkg::check_options()
my $options = shift;
'validate' => sub {
# Validation function for FS::part_pkg::check_options()
my $options = shift;
- return "Please
select a rate plan for price plan VoIP/telco CDR rating (standard)
"
-
unless
$options->{ratenum};
+ return "Please
choose a Rate Plan for use with selected Rating Method
"
+
if $options->{rating_method} eq 'prefix' && !
$options->{ratenum};
return;
},
);
return;
},
);
@@
-670,6
+678,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 < ". $self->option_cacheable('skip_old')
+ if length($self->option_cacheable('skip_old'))
+ && $cdr->calldate_unix < str2time($self->option_cacheable('skip_old'));
+
#all right then, rate it
'';
}
#all right then, rate it
'';
}