diff options
-rw-r--r-- | FS/FS/Misc.pm | 28 | ||||
-rw-r--r-- | FS/FS/cust_bill_pkg.pm | 9 | ||||
-rw-r--r-- | FS/FS/part_event/Condition/has_referral_custnum.pm | 18 |
3 files changed, 34 insertions, 21 deletions
diff --git a/FS/FS/Misc.pm b/FS/FS/Misc.pm index 4d9d57beb..0e366e8c7 100644 --- a/FS/FS/Misc.pm +++ b/FS/FS/Misc.pm @@ -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"; diff --git a/FS/FS/cust_bill_pkg.pm b/FS/FS/cust_bill_pkg.pm index a1762e471..e44a84709 100644 --- a/FS/FS/cust_bill_pkg.pm +++ b/FS/FS/cust_bill_pkg.pm @@ -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; diff --git a/FS/FS/part_event/Condition/has_referral_custnum.pm b/FS/FS/part_event/Condition/has_referral_custnum.pm index 564c6524b..007ce4548 100644 --- a/FS/FS/part_event/Condition/has_referral_custnum.pm +++ b/FS/FS/part_event/Condition/has_referral_custnum.pm @@ -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; |