summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2014-05-15 14:59:14 -0700
committerIvan Kohler <ivan@freeside.biz>2014-05-15 14:59:14 -0700
commit881215feafc01aeee19864c39f0d98d3d6909e65 (patch)
tree2b050555839739dfa3ab1180ebd08217c9127096 /FS
parentfb03e9179814686b5c3665ce35b90cfeadb16fb9 (diff)
agent-virtualize VoIP rates, RT#29183
Diffstat (limited to 'FS')
-rw-r--r--FS/FS/AccessRight.pm3
-rw-r--r--FS/FS/Schema.pm10
-rw-r--r--FS/FS/part_pkg/voip_cdr.pm14
-rw-r--r--FS/FS/part_pkg/voip_sqlradacct.pm5
-rw-r--r--FS/FS/rate.pm15
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;