so Search.tsf and Search.rdf work
[freeside.git] / FS / FS / cust_main.pm
index b6f5a79..1edd319 100644 (file)
@@ -1,7 +1,8 @@
 package FS::cust_main;
 
 use strict;
-use vars qw( @ISA @EXPORT_OK $conf $DEBUG $import @encrypted_fields);
+use vars qw( @ISA @EXPORT_OK $DEBUG $conf @encrypted_fields
+             $import $skip_fuzzyfiles );
 use vars qw( $realtime_bop_decline_quiet ); #ugh
 use Safe;
 use Carp;
@@ -53,6 +54,7 @@ $DEBUG = 0;
 #$DEBUG = 1;
 
 $import = 0;
+$skip_fuzzyfiles = 0;
 
 @encrypted_fields = ('payinfo', 'paycvv');
 
@@ -420,10 +422,12 @@ sub insert {
     }
   }
 
-  $error = $self->queue_fuzzyfiles_update;
-  if ( $error ) {
-    $dbh->rollback if $oldAutoCommit;
-    return "updating fuzzy search cache: $error";
+  unless ( $import || $skip_fuzzyfiles ) {
+    $error = $self->queue_fuzzyfiles_update;
+    if ( $error ) {
+      $dbh->rollback if $oldAutoCommit;
+      return "updating fuzzy search cache: $error";
+    }
   }
 
   $dbh->commit or die $dbh->errstr if $oldAutoCommit;
@@ -735,10 +739,12 @@ sub replace {
     }
   }
 
-  $error = $self->queue_fuzzyfiles_update;
-  if ( $error ) {
-    $dbh->rollback if $oldAutoCommit;
-    return "updating fuzzy search cache: $error";
+  unless ( $import || $skip_fuzzyfiles ) {
+    $error = $self->queue_fuzzyfiles_update;
+    if ( $error ) {
+      $dbh->rollback if $oldAutoCommit;
+      return "updating fuzzy search cache: $error";
+    }
   }
 
   $dbh->commit or die $dbh->errstr if $oldAutoCommit;
@@ -827,7 +833,7 @@ sub check {
   return "Unknown refnum"
     unless qsearchs( 'part_referral', { 'refnum' => $self->refnum } );
 
-  return "Unknown referring custnum ". $self->referral_custnum
+  return "Unknown referring custnum: ". $self->referral_custnum
     unless ! $self->referral_custnum 
            || qsearchs( 'cust_main', { 'custnum' => $self->referral_custnum } );
 
@@ -1259,7 +1265,7 @@ If there is an error, returns the error, otherwise returns false.
 sub bill {
   my( $self, %options ) = @_;
   return '' if $self->payby eq 'COMP';
-  warn "bill customer ". $self->custnum if $DEBUG;
+  warn "bill customer ". $self->custnum. "\n" if $DEBUG;
 
   my $time = $options{'time'} || time;
 
@@ -1298,7 +1304,7 @@ sub bill {
     #NO!! next if $cust_pkg->cancel;  
     next if $cust_pkg->getfield('cancel');  
 
-    warn "  bill package ". $cust_pkg->pkgnum if $DEBUG;
+    warn "  bill package ". $cust_pkg->pkgnum. "\n" if $DEBUG;
 
     #? to avoid use of uninitialized value errors... ?
     $cust_pkg->setfield('bill', '')
@@ -1315,7 +1321,7 @@ sub bill {
     my $setup = 0;
     if ( !$cust_pkg->setup || $options{'resetup'} ) {
     
-      warn "    bill setup" if $DEBUG;
+      warn "    bill setup\n" if $DEBUG;
 
       $setup = eval { $cust_pkg->calc_setup( $time ) };
       if ( $@ ) {
@@ -1334,7 +1340,7 @@ sub bill {
          ( $cust_pkg->getfield('bill') || 0 ) <= $time
     ) {
 
-      warn "    bill recur" if $DEBUG;
+      warn "    bill recur\n" if $DEBUG;
 
       # XXX shared with $recur_prog
       $sdate = $cust_pkg->bill || $cust_pkg->setup || $time;
@@ -1667,7 +1673,7 @@ sub collect {
   $self->select_for_update; #mutex
 
   my $balance = $self->balance;
-  warn "collect customer ". $self->custnum. ": balance $balance" if $DEBUG;
+  warn "collect customer ". $self->custnum. ": balance $balance\n" if $DEBUG;
   unless ( $balance > 0 ) { #redundant?????
     $dbh->rollback if $oldAutoCommit; #hmm
     return '';
@@ -1692,7 +1698,7 @@ sub collect {
 
     last if $self->balance <= 0;
 
-    warn "invnum ". $cust_bill->invnum. " (owed ". $cust_bill->owed. ")"
+    warn "invnum ". $cust_bill->invnum. " (owed ". $cust_bill->owed. ")\n"
       if $DEBUG;
 
     foreach my $part_bill_event (
@@ -1907,7 +1913,10 @@ sub realtime_bop {
        || ( $conf->exists('emailinvoiceonly') && ! @invoicing_list ) ) {
     push @invoicing_list, $self->all_emails;
   }
-  my $email = $invoicing_list[0];
+
+  my $email = ($conf->exists('business-onlinepayment-email-override'))
+              ? $conf->config('business-onlinepayment-email-override')
+              : $invoicing_list[0];
 
   my $payinfo = exists($options{'payinfo'})
                   ? $options{'payinfo'}
@@ -3057,9 +3066,15 @@ Returns an SQL expression identifying active cust_main records.
 
 =cut
 
+my $recurring_sql = "
+  '0' != ( select freq from part_pkg
+             where cust_pkg.pkgpart = part_pkg.pkgpart )
+";
+
 sub active_sql { "
   0 < ( SELECT COUNT(*) FROM cust_pkg
           WHERE cust_pkg.custnum = cust_main.custnum
+            AND $recurring_sql
             AND ( cust_pkg.cancel IS NULL OR cust_pkg.cancel = 0 )
             AND ( cust_pkg.susp   IS NULL OR cust_pkg.susp   = 0 )
       )
@@ -3076,10 +3091,12 @@ sub suspended_sql { susp_sql(@_); }
 sub susp_sql { "
     0 < ( SELECT COUNT(*) FROM cust_pkg
             WHERE cust_pkg.custnum = cust_main.custnum
+              AND $recurring_sql
               AND ( cust_pkg.cancel IS NULL OR cust_pkg.cancel = 0 )
         )
     AND 0 = ( SELECT COUNT(*) FROM cust_pkg
                 WHERE cust_pkg.custnum = cust_main.custnum
+                  AND $recurring_sql
                   AND ( cust_pkg.susp IS NULL OR cust_pkg.susp = 0 )
                   AND ( cust_pkg.cancel IS NULL OR cust_pkg.cancel = 0 )
             )
@@ -3099,6 +3116,7 @@ sub cancel_sql { "
       )
   AND 0 = ( SELECT COUNT(*) FROM cust_pkg
               WHERE cust_pkg.custnum = cust_main.custnum
+                AND $recurring_sql
                 AND ( cust_pkg.cancel IS NULL OR cust_pkg.cancel = 0 )
           )
 "; }