fixup per call billing
[freeside.git] / FS / FS / rate_detail.pm
index 1964be2..533fb1e 100644 (file)
@@ -5,6 +5,7 @@ use vars qw( @ISA );
 use FS::Record qw( qsearch qsearchs );
 use FS::rate;
 use FS::rate_region;
+use Tie::IxHash;
 
 @ISA = qw(FS::Record);
 
@@ -46,7 +47,7 @@ inherits from FS::Record.  The following fields are currently supported:
 
 =item min_charge - charge per minute
 
-=item sec_granularity - granularity in seconds, i.e. 6 or 60
+=item sec_granularity - granularity in seconds, i.e. 6 or 60; 0 for per-call
 
 =back
 
@@ -114,7 +115,11 @@ sub check {
     || $self->ut_foreign_keyn('orig_regionnum', 'rate_region', 'regionnum' )
     || $self->ut_foreign_key('dest_regionnum', 'rate_region', 'regionnum' )
     || $self->ut_number('min_included')
-    || $self->ut_money('min_charge')
+
+    #|| $self->ut_money('min_charge')
+    #good enough for now...
+    || $self->ut_float('min_charge')
+
     || $self->ut_number('sec_granularity')
   ;
   return $error if $error;
@@ -122,6 +127,92 @@ sub check {
   $self->SUPER::check;
 }
 
+=item rate 
+
+Returns the parent call plan (see L<FS::rate>) associated with this call plan
+rate.
+
+=cut
+
+sub rate {
+  my $self = shift;
+  qsearchs('rate', { 'ratenum' => $self->ratenum } );
+}
+
+=item orig_region 
+
+Returns the origination region (see L<FS::rate_region>) associated with this
+call plan rate.
+
+=cut
+
+sub orig_region {
+  my $self = shift;
+  qsearchs('rate_region', { 'regionnum' => $self->orig_regionnum } );
+}
+
+=item dest_region 
+
+Returns the destination region (see L<FS::rate_region>) associated with this
+call plan rate.
+
+=cut
+
+sub dest_region {
+  my $self = shift;
+  qsearchs('rate_region', { 'regionnum' => $self->dest_regionnum } );
+}
+
+=item dest_regionname
+
+Returns the name of the destination region (see L<FS::rate_region>) associated
+with this call plan rate.
+
+=cut
+
+sub dest_regionname {
+  my $self = shift;
+  $self->dest_region->regionname;
+}
+
+=item dest_regionname
+
+Returns a short list of the prefixes for the destination region
+(see L<FS::rate_region>) associated with this call plan rate.
+
+=cut
+
+sub dest_prefixes_short {
+  my $self = shift;
+  $self->dest_region->prefixes_short;
+}
+
+
+=back
+
+=head1 SUBROUTINES
+
+=over 4
+
+=item granularities
+
+  Returns an (ordered) hash of granularity => name pairs
+
+=cut
+
+tie my %granularities, 'Tie::IxHash',
+  '1', => '1 second',
+  '6'  => '6 second',
+  '30' => '30 second', # '1/2 minute',
+  '60' => 'minute',
+  '0'  => 'call',
+;
+
+sub granularities {
+  %granularities;
+}
+
+
 =back
 
 =head1 BUGS