'ratetimenum', 'int', 'NULL', '', '', '',
'classnum', 'int', 'NULL', '', '', '',
'cdrtypenum', 'int', 'NULL', '', '', '',
+ 'region_group', 'char', 'NULL', 1, '', '',
],
'primary_key' => 'ratedetailnum',
'unique' => [ [ 'ratenum', 'orig_regionnum', 'dest_regionnum' ] ],
$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,
=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
|| $self->ut_number('sec_granularity')
|| $self->ut_foreign_keyn('classnum', 'usage_class', 'classnum' )
+ || $self->ut_enum('region_group', [ '', 'Y' ])
;
return $error if $error;
'dest_prefixes_short' => 'Prefix(es)',
'rate_time_name' => 'Time period',
'min_included' => 'Included minutes/calls',
+ 'region_group' => 'Region Group',
'conn_charge' => 'Connection charge',
'conn_sec' => 'For',
'min_charge' => 'Charge per minute/call',
{ field=>'dest_regionname', type=>'fixed', },
{ field=>'dest_prefixes_short', type=>'fixed', },
{ field=>'rate_time_name', type=>'fixed', },
+ { field => 'region_group',
+ type => 'checkbox',
+ value => 'Y',
+ },
{ field=>'min_included', type=>'text', size=>5 },
{ field=>'conn_charge', type=>'money', size=>4 },
{ field =>'conn_sec',