Merge branch 'master' of ssh://git.freeside.biz/home/git/freeside
authorChristopher Burger <burgerc@freeside.biz>
Thu, 16 Nov 2017 03:27:47 +0000 (22:27 -0500)
committerChristopher Burger <burgerc@freeside.biz>
Thu, 16 Nov 2017 03:27:47 +0000 (22:27 -0500)
FS/FS/Misc.pm
FS/FS/cust_bill_pkg.pm
FS/FS/part_event/Condition/has_referral_custnum.pm

index 4d9d57b..0e366e8 100644 (file)
@@ -109,8 +109,7 @@ use vars qw( $conf );
 use Date::Format;
 use MIME::Entity;
 use Email::Sender::Simple qw(sendmail);
-use Email::Sender::Transport::SMTP;
-use Email::Sender::Transport::SMTP::TLS 0.11;
+use Email::Sender::Transport::SMTP 1.300027; #for SSL/TLS support
 use FS::UID;
 
 FS::UID->install_callback( sub {
@@ -249,18 +248,18 @@ sub send_email {
   my($port, $enc) = split('-', ($conf->config('smtp-encryption') || '25') );
   $smtp_opt{'port'} = $port;
 
-  my $transport;
   if ( defined($enc) && $enc eq 'starttls' ) {
-    $smtp_opt{$_} = $conf->config("smtp-$_") for qw(username password);
-    $transport = Email::Sender::Transport::SMTP::TLS->new( %smtp_opt );
-  } else {
-    if ( $conf->exists('smtp-username') && $conf->exists('smtp-password') ) {
-      $smtp_opt{"sasl_$_"} = $conf->config("smtp-$_") for qw(username password);
-    }
-    $smtp_opt{'ssl'} = 1 if defined($enc) && $enc eq 'tls';
-    $transport = Email::Sender::Transport::SMTP->new( %smtp_opt );
+    $smtp_opt{'ssl'} = 'starttls';
+  } elsif ( defined($enc) && $enc eq 'tls' ) {
+    $smtp_opt{'ssl'} = 'ssl';
+  }
+
+  if ( $conf->exists('smtp-username') && $conf->exists('smtp-password') ) {
+    $smtp_opt{"sasl_$_"} = $conf->config("smtp-$_") for qw(username password);
   }
   
+  my $transport = Email::Sender::Transport::SMTP->new( %smtp_opt );
+  
   push @to, $options{bcc} if defined($options{bcc});
   # fully unpack all addresses found in @to (including Bcc) to make the
   # envelope list
@@ -732,6 +731,8 @@ sub generate_ps {
 
   my $papersize = $conf->config('papersize') || 'letter';
 
+  local($SIG{CHLD}) = sub {};
+
   system('dvips', '-q', '-t', $papersize, "$file.dvi", '-o', "$file.ps" ) == 0
     or die "dvips failed";
 
@@ -789,6 +790,8 @@ sub generate_pdf {
   #system('dvipdf', "$file.dvi", "$file.pdf" );
   my $papersize = $conf->config('papersize') || 'letter';
 
+  local($SIG{CHLD}) = sub {};
+
   system(
     "dvips -q -f $sfile.dvi -t $papersize ".
     "| gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$sfile.pdf ".
@@ -871,6 +874,7 @@ sub do_print {
               : $conf->config('lpr', $opt{'agentnum'} );
 
   my $outerr = '';
+  local($SIG{CHLD}) = sub {};
   run3 $lpr, $data, \$outerr, \$outerr;
   if ( $? ) {
     $outerr = ": $outerr" if length($outerr);
@@ -960,6 +964,8 @@ sub ocr_image {
   print $fh $logo_data;
   close $fh;
 
+  local($SIG{CHLD}) = sub {};
+
   run( [qw(ocroscript recognize), $filename], '>'=>"$filename.hocr" )
     or die "ocroscript recognize failed\n";
 
index a1762e4..e44a847 100644 (file)
@@ -1189,9 +1189,12 @@ sub tax_location {
   if ( $self->pkgnum ) { # normal sales
     return $self->cust_pkg->tax_location;
   } elsif ( $self->feepart ) { # fees
-    my $custnum = $self->fee_origin->custnum;
-    if ( $custnum ) {
-      return FS::cust_main->by_key($custnum)->ship_location;
+    my $fee_origin = $self->fee_origin;
+    if ( $fee_origin ) {
+      my $custnum = $fee_origin->custnum;
+      if ( $custnum ) {
+        return FS::cust_main->by_key($custnum)->ship_location;
+      }
     }
   } else { # taxes
     return;
index 564c652..007ce45 100644 (file)
@@ -1,6 +1,5 @@
 package FS::part_event::Condition::has_referral_custnum;
 
-use v5.14;
 use strict;
 use FS::cust_main;
 
@@ -61,14 +60,19 @@ sub condition {
 sub condition_sql {
   my( $class, $table, %opt ) = @_;
 
-  my $age              = $class->condition_sql_option_age_from('age', $opt{'time'});
-  my $balance_sql      = FS::cust_main->balance_sql( $age ) =~ s/cust_main.custnum/cust_main.referral_custnum/r;
-  my $balance_date_sql = FS::cust_main->balance_date_sql    =~ s/cust_main.custnum/cust_main.referral_custnum/r;
-  my $active_sql       = FS::cust_main->active_sql          =~ s/cust_main.custnum/cust_main.referral_custnum/r;
+  my $age = $class->condition_sql_option_age_from('age', $opt{'time'});
+  my $balance_sql      = FS::cust_main->balance_sql( $age );
+  my $balance_date_sql = FS::cust_main->balance_date_sql;
+  my $active_sql       = FS::cust_main->active_sql;
+  $balance_sql      =~ s/cust_main.custnum/cust_main.referral_custnum/;
+  $balance_date_sql =~ s/cust_main.custnum/cust_main.referral_custnum/;
+  $active_sql       =~ s/cust_main.custnum/cust_main.referral_custnum/;
 
   my $sql = "cust_main.referral_custnum IS NOT NULL".
-    " AND ( ". $class->condition_sql_option('active') . " IS NULL OR $active_sql )".
-    " AND ( $balance_date_sql <= $balance_sql )";
+    " AND (".$class->condition_sql_option('active')." IS NULL OR $active_sql)".
+    " AND ($balance_date_sql <= $balance_sql)";
+
+  return $sql;
 }
 
 1;