backup the schema for tables we don't need the data from. RT#85959
[freeside.git] / FS / FS / cust_svc.pm
index 3f73483..cc5f4bf 100644 (file)
@@ -17,6 +17,7 @@ use FS::part_export;
 use FS::cdr;
 use FS::UI::Web;
 use FS::export_cust_svc;
+use FS::DBI;
 
 #most FS::svc_ classes are autoloaded in svc_x emthod
 use FS::svc_acct;  #this one is used in the cache stuff
@@ -453,8 +454,10 @@ sub replace {
   #my $error = $new->SUPER::replace($old, @_);
   my $error = $new->SUPER::replace($old);
 
-  #trigger a relocate export on location changes
-  if ( $new->cust_pkg->locationnum != $old->cust_pkg->locationnum ) {
+  #trigger a relocate export on location changes (NENA2 and Northern 911 export)
+  my $old_pkg = $old->cust_pkg;
+  my $new_pkg = $new->cust_pkg;
+  if ( $old_pkg && $new_pkg && $new_pkg->locationnum != $old_pkg->locationnum ) {
     my $svc_x = $new->svc_x;
     if ( $svc_x->locationnum ) {
       if ( $svc_x->locationnum == $old->cust_pkg->locationnum ) {
@@ -702,10 +705,10 @@ sub pkg_cancel_date {
   return $cust_pkg->getfield('cancel') || '';
 }
 
-=item label
+=item label [ LOCALE ]
 
 Returns a list consisting of:
-- The name of this service (from part_svc)
+- The name of this service (from part_svc), optionally localized
 - A meaningful identifier (username, domain, or mail alias)
 - The table name (i.e. svc_domain) for this service
 - svcnum
@@ -714,7 +717,7 @@ Usage example:
 
   my($label, $value, $svcdb) = $cust_svc->label;
 
-=item label_long
+=item label_long [ LOCALE ]
 
 Like the B<label> method, except the second item in the list ("meaningful
 identifier") may be longer - typically, a full name is included.
@@ -727,20 +730,25 @@ sub label_long { shift->_label('svc_label_long', @_); }
 sub _label {
   my $self = shift;
   my $method = shift;
+  my $locale = shift;
   my $svc_x = $self->svc_x
     or return "can't find ". $self->part_svc->svcdb. '.svcnum '. $self->svcnum;
 
-  $self->$method($svc_x);
+  $self->$method($svc_x, undef, undef, $locale);
 }
 
+# svc_label(_long) takes three arguments: end date, start date, locale
+# and FS::svc_*::label methods must accept those also, if they even care
+
 sub svc_label      { shift->_svc_label('label',      @_); }
 sub svc_label_long { shift->_svc_label('label_long', @_); }
 
 sub _svc_label {
   my( $self, $method, $svc_x ) = ( shift, shift, shift );
+  my ($end, $start, $locale) = @_;
 
   (
-    $self->part_svc->svc,
+    $self->part_svc->svc_locale($locale),
     $svc_x->$method(@_),
     $self->part_svc->svcdb,
     $self->svcnum
@@ -850,9 +858,9 @@ sub seconds_since_sqlradacct {
     warn "$mes connecting to sqlradius database\n"
       if $DEBUG;
 
-    my $dbh = DBI->connect( map { $part_export->option($_) }
+    my $dbh = FS::DBI->connect( map { $part_export->option($_) }
                             qw(datasrc username password)    )
-      or die "can't connect to sqlradius database: ". $DBI::errstr;
+      or die "can't connect to sqlradius database: ". $FS::DBI::errstr;
 
     warn "$mes connected to sqlradius database\n"
       if $DEBUG;
@@ -995,9 +1003,9 @@ sub attribute_since_sqlradacct {
     warn "$mes connecting to sqlradius database\n"
       if $DEBUG;
 
-    my $dbh = DBI->connect( map { $part_export->option($_) }
+    my $dbh = FS::DBI->connect( map { $part_export->option($_) }
                             qw(datasrc username password)    )
-      or die "can't connect to sqlradius database: ". $DBI::errstr;
+      or die "can't connect to sqlradius database: ". $FS::DBI::errstr;
 
     warn "$mes connected to sqlradius database\n"
       if $DEBUG;
@@ -1066,9 +1074,9 @@ sub attribute_last_sqlradacct {
     warn "$mes connecting to sqlradius database\n"
       if $DEBUG;
 
-    my $dbh = DBI->connect( map { $part_export->option($_) }
+    my $dbh = FS::DBI->connect( map { $part_export->option($_) }
                             qw(datasrc username password)    )
-      or die "can't connect to sqlradius database: ". $DBI::errstr;
+      or die "can't connect to sqlradius database: ". $FS::DBI::errstr;
 
     warn "$mes connected to sqlradius database\n"
       if $DEBUG;
@@ -1192,7 +1200,7 @@ sub API_getinfo {
   my $self = shift;
   my $svc_x = $self->svc_x;
  +{ ( map { $_=>$self->$_ } $self->fields ),
-    ( map { $svc_x=>$svc_x->$_ } $svc_x->fields ),
+    ( map { $_=>$svc_x->$_ } $svc_x->fields ),
   };
 }