diff options
author | Ivan Kohler <ivan@freeside.biz> | 2014-05-15 14:59:14 -0700 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2014-05-15 14:59:14 -0700 |
commit | 881215feafc01aeee19864c39f0d98d3d6909e65 (patch) | |
tree | 2b050555839739dfa3ab1180ebd08217c9127096 /FS | |
parent | fb03e9179814686b5c3665ce35b90cfeadb16fb9 (diff) |
agent-virtualize VoIP rates, RT#29183
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/AccessRight.pm | 3 | ||||
-rw-r--r-- | FS/FS/Schema.pm | 10 | ||||
-rw-r--r-- | FS/FS/part_pkg/voip_cdr.pm | 14 | ||||
-rw-r--r-- | FS/FS/part_pkg/voip_sqlradacct.pm | 5 | ||||
-rw-r--r-- | FS/FS/rate.pm | 15 |
5 files changed, 27 insertions, 20 deletions
diff --git a/FS/FS/AccessRight.pm b/FS/FS/AccessRight.pm index ecbaa64..de0a557 100644 --- a/FS/FS/AccessRight.pm +++ b/FS/FS/AccessRight.pm @@ -359,6 +359,9 @@ tie my %rights, 'Tie::IxHash', 'Bulk edit package definitions', + 'Edit CDR rates', + #{ rightname=>'Edit global CDR rates', global=>1, }, + 'Edit fee definitions', { rightname=>'Edit global fee definitions', global=>1 }, diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index 94d7f36..416587d 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -4750,12 +4750,18 @@ sub tables_hashref { 'rate' => { 'columns' => [ - 'ratenum', 'serial', '', '', '', '', - 'ratename', 'varchar', '', $char_d, '', '', + 'ratenum', 'serial', '', '', '', '', + 'ratename', 'varchar', '', $char_d, '', '', + 'agentnum', 'int', 'NULL', '', '', '', ], 'primary_key' => 'ratenum', 'unique' => [], 'index' => [], + 'foreign_keys' => [ + { columns => [ 'agentnum' ], + table => 'agent', + }, + ], }, 'rate_detail' => { diff --git a/FS/FS/part_pkg/voip_cdr.pm b/FS/FS/part_pkg/voip_cdr.pm index 7e21b0f..b8f1eee 100644 --- a/FS/FS/part_pkg/voip_cdr.pm +++ b/FS/FS/part_pkg/voip_cdr.pm @@ -12,7 +12,7 @@ use FS::cdr; use FS::detail_format; #use FS::rate; #use FS::rate_prefix; -#use FS::rate_detail; +#use FS::rate_detail; #for ::granularities $DEBUG = 0; @@ -108,19 +108,13 @@ tie my %accountcode_tollfree_field, 'Tie::IxHash', }, 'ratenum' => { 'name' => 'Rate plan', - 'type' => 'select', - 'select_table' => 'rate', - 'select_key' => 'ratenum', - 'select_label' => 'ratename', + 'type' => 'select-rate', }, 'intrastate_ratenum' => { 'name' => 'Optional alternate intrastate rate plan', - 'type' => 'select', - 'select_table' => 'rate', - 'select_key' => 'ratenum', - 'select_label' => 'ratename', + 'type' => 'select-rate', 'disable_empty' => 0, - 'empty_label' => '', + 'empty_label' => ' ', }, 'calls_included' => { 'name' => 'Number of calls included at no usage charge', }, diff --git a/FS/FS/part_pkg/voip_sqlradacct.pm b/FS/FS/part_pkg/voip_sqlradacct.pm index f58194f..a205f9f 100644 --- a/FS/FS/part_pkg/voip_sqlradacct.pm +++ b/FS/FS/part_pkg/voip_sqlradacct.pm @@ -19,10 +19,7 @@ $DEBUG = 1; 'inherit_fields' => [ 'global_Mixin' ], 'fields' => { 'ratenum' => { 'name' => 'Rate plan', - 'type' => 'select', - 'select_table' => 'rate', - 'select_key' => 'ratenum', - 'select_label' => 'ratename', + 'type' => 'select-rate', }, }, 'fieldorder' => [qw( ratenum ignore_unrateable )], diff --git a/FS/FS/rate.pm b/FS/FS/rate.pm index 4052807..b2348ca 100644 --- a/FS/FS/rate.pm +++ b/FS/FS/rate.pm @@ -4,6 +4,7 @@ use base qw(FS::Record); use strict; use vars qw( $DEBUG ); use FS::Record qw( qsearch qsearchs dbh fields ); +#use FS::agent; #causes a weird dep loop in freeside-cdrrated, only needed for v3-style manual FK-checking, so, probably not bother use FS::rate_detail; $DEBUG = 0; @@ -34,10 +35,18 @@ FS::Record. The following fields are currently supported: =over 4 -=item ratenum - primary key +=item ratenum + +primary key =item ratename +Rate name + +=item agentnum + +Optional agent (see L<FS::agent>) for agent-virtualized rates. + =back =head1 METHODS @@ -253,15 +262,13 @@ and replace methods. =cut -# the check method should currently be supplied - FS::Record contains some -# data checking routines - sub check { my $self = shift; my $error = $self->ut_numbern('ratenum') || $self->ut_text('ratename') + #|| $self->ut_foreign_keyn('agentnum', 'agent', 'agentnum') ; return $error if $error; |