default to a session cookie instead of setting an explicit timeout, weird timezone...
[freeside.git] / FS / FS / rate_detail.pm
index 918134a..8933354 100644 (file)
@@ -1,14 +1,13 @@
 package FS::rate_detail;
+use base qw(FS::Record);
 
 use strict;
-use vars qw( @ISA $DEBUG $me );
+use vars qw( $DEBUG $me );
+use Tie::IxHash;
 use FS::Record qw( qsearch qsearchs dbh );
 use FS::rate;
 use FS::rate_region;
 use FS::rate_time;
-use Tie::IxHash;
-
-@ISA = qw(FS::Record);
 
 $DEBUG = 0;
 $me = '[FS::rate_detail]';
@@ -59,6 +58,15 @@ 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
+
+=item upstream_mult_charge - the multiplier to apply to the upstream price. 
+Defaults to zero, and should stay zero unless this rate is intended to include
+a markup on pre-rated CDRs.
+
+=item upstream_mult_cost - the multiplier to apply to the upstream price to
+calculate the wholesale cost.
+
 =back
 
 =head1 METHODS
@@ -123,16 +131,24 @@ sub check {
        $self->ut_numbern('ratedetailnum')
     || $self->ut_foreign_key('ratenum', 'rate', 'ratenum')
     || $self->ut_foreign_keyn('orig_regionnum', 'rate_region', 'regionnum' )
-    || $self->ut_foreign_key('dest_regionnum', 'rate_region', 'regionnum' )
+    || $self->ut_foreign_keyn('dest_regionnum', 'rate_region', 'regionnum' )
+    || $self->ut_foreign_keyn('cdrtypenum', 'cdr_type', 'cdrtypenum' )
     || $self->ut_number('min_included')
 
     #|| $self->ut_money('min_charge')
     #good enough for now...
+    || $self->ut_floatn('conn_charge')
+    || $self->ut_floatn('conn_cost')
     || $self->ut_float('min_charge')
+    || $self->ut_floatn('min_cost')
 
     || $self->ut_number('sec_granularity')
 
     || $self->ut_foreign_keyn('classnum', 'usage_class', 'classnum' )
+    || $self->ut_enum('region_group',    [ '', 'Y' ])
+
+    || $self->ut_floatn('upstream_mult_charge')
+    || $self->ut_floatn('upstream_mult_cost')
   ;
   return $error if $error;
 
@@ -144,13 +160,6 @@ sub check {
 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
@@ -184,10 +193,13 @@ with this call plan rate.
 
 sub dest_regionname {
   my $self = shift;
-  $self->dest_region->regionname;
+  my $dest_region = $self->dest_region;
+  $dest_region ? $dest_region->regionname : 'Global default';
+    # should be 'Anywhere' or something, to indicate that it's the
+    # cross-region default
 }
 
-=item dest_regionname
+=item dest_prefixes_short
 
 Returns a short list of the prefixes for the destination region
 (see L<FS::rate_region>) associated with this call plan rate.
@@ -196,7 +208,8 @@ Returns a short list of the prefixes for the destination region
 
 sub dest_prefixes_short {
   my $self = shift;
-  $self->dest_region->prefixes_short;
+  my $dest_region = $self->dest_region;
+  $dest_region ? $dest_region->prefixes_short : '';
 }
 
 =item rate_time
@@ -220,7 +233,7 @@ associated with this rate plan.
 
 sub rate_time_name {
   my $self = shift;
-  $self->ratetimenum ? $self->rate_time->ratetimename : '(default)';
+  $self->ratetimenum ? $self->rate_time->ratetimename : '(any time)';
 }
 
 =item classname
@@ -300,9 +313,7 @@ sub conn_secs {
 
 =cut
 
-use Storable qw(thaw);
 use Data::Dumper;
-use MIME::Base64;
 sub process_edit_import {
   my $job = shift;
 
@@ -341,7 +352,7 @@ sub process_edit_import {
   my @pass_params = @{ $opt->{params} };
   my %formats = %{ $opt->{formats} };
 
-  my $param = thaw(decode_base64(shift));
+  my $param = shift;
   warn Dumper($param) if $DEBUG;
   
   my $files = $param->{'uploaded_files'}