X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_pay.pm;h=6dad3d702d0ba0e304bfaf9f7eb1556b81889356;hb=055fa6decdbd89e00f2b6e3faf77b068eea38c93;hp=a78cb5de022c51c3ecf062497df4d603b91d2bbb;hpb=5e99c8bf1671bcfdf3597f8bbdaf49621141d237;p=freeside.git diff --git a/FS/FS/cust_pay.pm b/FS/FS/cust_pay.pm index a78cb5de0..6dad3d702 100644 --- a/FS/FS/cust_pay.pm +++ b/FS/FS/cust_pay.pm @@ -446,76 +446,94 @@ sub send_receipt { my $conf = new FS::Conf; - return '' - unless $conf->exists('payment_receipt_email') - && grep { $_ !~ /^(POST|FAX)$/ } $cust_main->invoicing_list; + return '' unless $conf->exists('payment_receipt'); + + my @invoicing_list = $cust_main->invoicing_list_emailonly; + return '' unless @invoicing_list; $cust_bill ||= ($cust_main->cust_bill)[-1]; #rather inefficient though? + my $error = ''; + if ( ( exists($opt->{'manual'}) && $opt->{'manual'} ) || ! $conf->exists('invoice_html_statement') || ! $cust_bill - ) { - - my $receipt_template = new Text::Template ( - TYPE => 'ARRAY', - SOURCE => [ map "$_\n", $conf->config('payment_receipt_email') ], - ) or do { - warn "can't create payment receipt template: $Text::Template::ERROR"; - return ''; - }; + ) + { + + if ( $conf->exists('payment_receipt_msgnum') + && $conf->config('payment_receipt_msgnum') + ) + { + my $msg_template = + FS::msg_template->by_key($conf->config('payment_receipt_msgnum')); + $error = $msg_template->send('cust_main'=> $cust_main, 'object'=> $self); + + } elsif ( $conf->exists('payment_receipt_email') ) { + + my $receipt_template = new Text::Template ( + TYPE => 'ARRAY', + SOURCE => [ map "$_\n", $conf->config('payment_receipt_email') ], + ) or do { + warn "can't create payment receipt template: $Text::Template::ERROR"; + return ''; + }; - my @invoicing_list = grep { $_ !~ /^(POST|FAX)$/ } - $cust_main->invoicing_list; + my $payby = $self->payby; + my $payinfo = $self->payinfo; + $payby =~ s/^BILL$/Check/ if $payinfo; + if ( $payby eq 'CARD' || $payby eq 'CHEK' ) { + $payinfo = $self->paymask + } else { + $payinfo = $self->decrypt($payinfo); + } + $payby =~ s/^CHEK$/Electronic check/; + + my %fill_in = ( + 'date' => time2str("%a %B %o, %Y", $self->_date), + 'name' => $cust_main->name, + 'paynum' => $self->paynum, + 'paid' => sprintf("%.2f", $self->paid), + 'payby' => ucfirst(lc($payby)), + 'payinfo' => $payinfo, + 'balance' => $cust_main->balance, + 'company_name' => $conf->config('company_name', $cust_main->agentnum), + ); + + if ( $opt->{'cust_pkg'} ) { + $fill_in{'pkg'} = $opt->{'cust_pkg'}->part_pkg->pkg; + #setup date, other things? + } + + $error = send_email( + 'from' => $conf->config('invoice_from', $cust_main->agentnum), + #invoice_from??? well as good as any + 'to' => \@invoicing_list, + 'subject' => 'Payment receipt', + 'body' => [ $receipt_template->fill_in( HASH => \%fill_in ) ], + ); - my $payby = $self->payby; - my $payinfo = $self->payinfo; - $payby =~ s/^BILL$/Check/ if $payinfo; - if ( $payby eq 'CARD' || $payby eq 'CHEK' ) { - $payinfo = $self->paymask } else { - $payinfo = $self->decrypt($payinfo); - } - $payby =~ s/^CHEK$/Electronic check/; - - my %fill_in = ( - 'date' => time2str("%a %B %o, %Y", $self->_date), - 'name' => $cust_main->name, - 'paynum' => $self->paynum, - 'paid' => sprintf("%.2f", $self->paid), - 'payby' => ucfirst(lc($payby)), - 'payinfo' => $payinfo, - 'balance' => $cust_main->balance, - 'company_name' => $conf->config('company_name', $cust_main->agentnum), - ); - if ( $opt->{'cust_pkg'} ) { - $fill_in{'pkg'} = $opt->{'cust_pkg'}->part_pkg->pkg; - #setup date, other things? - } + warn "payment_receipt is on, but no payment_receipt_msgnum or invoice_html_statement is configured\n"; - send_email( - 'from' => $conf->config('invoice_from', $cust_main->agentnum), - #invoice_from??? well as good as any - 'to' => \@invoicing_list, - 'subject' => 'Payment receipt', - 'body' => [ $receipt_template->fill_in( HASH => \%fill_in ) ], - ); + } - } else { + } else { #not manual my $queue = new FS::queue { 'paynum' => $self->paynum, 'job' => 'FS::cust_bill::queueable_email', }; - $queue->insert( + $error = $queue->insert( 'invnum' => $cust_bill->invnum, 'template' => 'statement', ); } - + + warn "send_receipt: $error\n" if $error; } =item cust_bill_pay