summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
Diffstat (limited to 'FS')
-rw-r--r--FS/FS/Schema.pm1
-rw-r--r--FS/FS/part_pkg/voip_cdr.pm9
-rw-r--r--FS/FS/rate_detail.pm3
3 files changed, 11 insertions, 2 deletions
diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm
index f1814b3d5..c9775fca8 100644
--- a/FS/FS/Schema.pm
+++ b/FS/FS/Schema.pm
@@ -2551,6 +2551,7 @@ sub tables_hashref {
'ratetimenum', 'int', 'NULL', '', '', '',
'classnum', 'int', 'NULL', '', '', '',
'cdrtypenum', 'int', 'NULL', '', '', '',
+ 'region_group', 'char', 'NULL', 1, '', '',
],
'primary_key' => 'ratedetailnum',
'unique' => [ [ 'ratenum', 'orig_regionnum', 'dest_regionnum' ] ],
diff --git a/FS/FS/part_pkg/voip_cdr.pm b/FS/FS/part_pkg/voip_cdr.pm
index 3b1648c86..2e165cd49 100644
--- a/FS/FS/part_pkg/voip_cdr.pm
+++ b/FS/FS/part_pkg/voip_cdr.pm
@@ -681,16 +681,21 @@ sub calc_usage {
$seconds += $charge_sec;
- $region_group_included_min -= $minutes if $region_group;
+ $region_group_included_min -= $minutes
+ if $region_group && $rate_detail->region_group;
$included_min{$regionnum}{$ratetimenum} -= $minutes;
- if ( $region_group_included_min <= 0
+ if ( ($region_group_included_min <= 0 || !$rate_detail->region_group)
&& $included_min{$regionnum}{$ratetimenum} <= 0 ) {
my $charge_min = 0 - $included_min{$regionnum}{$ratetimenum}; #XXX should preserve
#(display?) this
$included_min{$regionnum}{$ratetimenum} = 0;
$charge += ($rate_detail->min_charge * $charge_min); #still not rounded
}
+ elsif( $region_group_included_min > 0 && $region_group
+ && $rate_detail->region_group ) {
+ $included_min{$regionnum}{$ratetimenum} = 0
+ }
# choose next rate_detail
$rate_detail = $rate->dest_detail({ 'countrycode' => $countrycode,
diff --git a/FS/FS/rate_detail.pm b/FS/FS/rate_detail.pm
index 918134a3a..f3ee84c74 100644
--- a/FS/FS/rate_detail.pm
+++ b/FS/FS/rate_detail.pm
@@ -59,6 +59,8 @@ inherits from FS::Record. The following fields are currently supported:
=item cdrtypenum - CDR type (see L<FS::cdr_type>) if any for this rate
+=item region_group - Group in region group for rate plan
+
=back
=head1 METHODS
@@ -133,6 +135,7 @@ sub check {
|| $self->ut_number('sec_granularity')
|| $self->ut_foreign_keyn('classnum', 'usage_class', 'classnum' )
+ || $self->ut_enum('region_group', [ '', 'Y' ])
;
return $error if $error;