default to a session cookie instead of setting an explicit timeout, weird timezone...
[freeside.git] / FS / FS / svc_phone.pm
index 3a58b46..d8f48f8 100644 (file)
@@ -16,6 +16,7 @@ use FS::Conf;
 use FS::Record qw( qsearch qsearchs dbh );
 use FS::PagedSearch qw( psearch );
 use FS::Msgcat qw(gettext);
+use FS::Password_Mixin; # for pw_set
 use FS::part_svc;
 use FS::svc_pbx;
 use FS::svc_domain;
@@ -25,15 +26,13 @@ use FS::phone_avail;
 $me = '[' . __PACKAGE__ . ']';
 $DEBUG = 0;
 
-#avoid l 1 and o O 0
-@pw_set = ( 'a'..'k', 'm','n', 'p-z', 'A'..'N', 'P'..'Z' , '2'..'9' );
-
 #ask FS::UID to run this stuff for us later
 FS::UID->install_callback( sub { 
   $conf = new FS::Conf;
   $phone_name_max = $conf->config('svc_phone-phone_name-max_length');
   $passwordmin = $conf->config('sip_passwordmin') || 0;
   $passwordmax = $conf->config('sip_passwordmax') || 80;
+  @pw_set = FS::Password_Mixin->pw_set;
 }
 );
 
@@ -133,6 +132,19 @@ Account number of other provider. See lnp_other_provider.
 See lnp_status. If lnp_status is portin-reject or portout-reject, this is an
 optional reject reason.
 
+=item lnp_portid
+
+Port identifier from porting provider, for checking status
+
+=item lnp_signature
+
+Boolean (empty or `Y') indicating if a signature is required for the port
+
+=item lnp_bill
+
+Boolean (empty or `Y') indicating if a copy of an existing bill is required for
+the port
+
 =item e911_class
 
 Class of Service for E911 service (per the NENA 2.1 standard).
@@ -274,7 +286,7 @@ sub table_info {
                         },
         'sip_server'  => {
                                 label => 'SIP Host',
-                                %dis2,
+                                disable_inventory => 1,
                          },
     },
   };
@@ -550,6 +562,9 @@ sub check {
                                'native', 'portin-reject', 'portout-reject'])
     || $self->ut_enumn('portable', ['','Y'])
     || $self->ut_textn('lnp_reject_reason')
+    || $self->ut_textn('lnp_portid')
+    || $self->ut_enumn('lnp_signature', ['','Y'])
+    || $self->ut_enumn('lnp_bill', ['','Y'])
     || $self->ut_domainn('sip_server')
   ;
   return $error if $error;
@@ -798,7 +813,7 @@ sub phone_name_or_cust {
   }
   my $cust_pkg = $self->cust_svc->cust_pkg or return '';
   if ( $cust_pkg->contactnum ) {
-    return $cust_pkg->contact->firstlast;
+    return $cust_pkg->contact_obj->firstlast;
   } else {
     return $cust_pkg->cust_main->name_short;
   }
@@ -812,10 +827,10 @@ either the "src" or the "charged_party" field of the CDR matches the
 "phonenum" field of the service.  To access the CDRs themselves, call
 "->fetch" on the resulting object.
 
-=over 2
-
 Accepts the following options:
 
+=over 2
+
 =item for_update => 1: SELECT the CDRs "FOR UPDATE".
 
 =item status => "" (or "processing-tiered", "done"): Return only CDRs with that processing status.
@@ -849,8 +864,15 @@ the entire result set.
 =cut
 
 sub psearch_cdrs {
-
   my($self, %options) = @_;
+
+  unless ( $options{'billsec_sum'} ) {
+    #fixes a weird sequential scan of the whole cdr table on startdate, but only
+    # for a few charged_party values here and there.
+    # Pg 9.1 only?  need to retest on 9.4, 9.6
+    dbh->do('SET enable_indexscan TO OFF');
+  }
+
   my @fields;
   my %hash;
   my @where;