summaryrefslogtreecommitdiff
path: root/FS/FS/cust_pay.pm
diff options
context:
space:
mode:
authorChristopher Burger <burgerc@freeside.biz>2018-05-03 15:40:42 -0400
committerChristopher Burger <burgerc@freeside.biz>2018-05-04 09:58:41 -0400
commitf394ef58c444b753ea9508a02593ce38f012e5d4 (patch)
tree48d2f871a27280a2f10546a43ffa8b2afd2f5be9 /FS/FS/cust_pay.pm
parent1e0b0cfabb4503438a3de0597db7562cb71327d7 (diff)
RT# 78131 - added ability to use message template for auto payment receipt and fixed NaN error when selecting nothing for config items with type select.
Diffstat (limited to 'FS/FS/cust_pay.pm')
-rw-r--r--FS/FS/cust_pay.pm72
1 files changed, 55 insertions, 17 deletions
diff --git a/FS/FS/cust_pay.pm b/FS/FS/cust_pay.pm
index 8b5e06d..5031793 100644
--- a/FS/FS/cust_pay.pm
+++ b/FS/FS/cust_pay.pm
@@ -703,27 +703,65 @@ sub send_receipt {
#not manual and no noemail flag (here or on the customer)
} elsif ( ! $opt->{'noemail'} && ! $cust_main->invoice_noemail ) {
- my $queue = new FS::queue {
- 'job' => 'FS::cust_bill::queueable_email',
- 'paynum' => $self->paynum,
- 'custnum' => $cust_main->custnum,
- };
+ # check to see if they want to send specific message template as receipt for auto payments
+ my $msgnum = $conf->config('payment_receipt_msgnum_auto', $cust_main->agentnum);
+ if ( $msgnum ) {
- my %opt = (
- 'invnum' => $cust_bill->invnum,
- 'no_coupon' => 1,
- );
+ my %substitutions = ();
+ $substitutions{invnum} = $opt->{cust_bill}->invnum if $opt->{cust_bill};
- if ( my $mode = $conf->config('payment_receipt_statement_mode') ) {
- $opt{'mode'} = $mode;
- } else {
- # backward compatibility, no good fix for this yet as some people may
- # still have "invoice_latex_statement" and such options
- $opt{'template'} = 'statement';
- $opt{'notice_name'} = 'Statement';
+ my $msg_template = qsearchs('msg_template',{ msgnum => $msgnum});
+ unless ($msg_template) {
+ warn "send_receipt could not load msg_template";
+ return;
+ }
+
+ my $cust_msg = $msg_template->prepare(
+ 'cust_main' => $cust_main,
+ 'object' => $self,
+ 'from_config' => 'payment_receipt_from',
+ 'substitutions' => \%substitutions,
+ 'msgtype' => 'receipt',
+ );
+ $error = $cust_msg ? $cust_msg->insert : 'error preparing msg_template';
+ if ($error) {
+ warn "send_receipt: $error";
+ return;
+ }
+
+ my $queue = new FS::queue {
+ 'job' => 'FS::cust_msg::process_send',
+ 'paynum' => $self->paynum,
+ 'custnum' => $cust_main->custnum,
+ };
+ $error = $queue->insert( $cust_msg->custmsgnum );
+
+ }
+ else {
+ my $queue = new FS::queue {
+ 'job' => 'FS::cust_bill::queueable_email',
+ 'paynum' => $self->paynum,
+ 'custnum' => $cust_main->custnum,
+ };
+
+ my %opt = (
+ 'invnum' => $cust_bill->invnum,
+ 'no_coupon' => 1,
+ );
+
+ if ( my $mode = $conf->config('payment_receipt_statement_mode') ) {
+ $opt{'mode'} = $mode;
+ } else {
+ # backward compatibility, no good fix for this yet as some people may
+ # still have "invoice_latex_statement" and such options
+ $opt{'template'} = 'statement';
+ $opt{'notice_name'} = 'Statement';
+ }
+
+ $error = $queue->insert(%opt);
}
- $error = $queue->insert(%opt);
+
}