[freeside-commits] branch FREESIDE_4_BRANCH updated. f394ef58c444b753ea9508a02593ce38f012e5d4
Christopher Burger
burgerc at freeside.biz
Fri May 4 08:10:13 PDT 2018
The branch, FREESIDE_4_BRANCH has been updated
via f394ef58c444b753ea9508a02593ce38f012e5d4 (commit)
from 1e0b0cfabb4503438a3de0597db7562cb71327d7 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit f394ef58c444b753ea9508a02593ce38f012e5d4
Author: Christopher Burger <burgerc at freeside.biz>
Date: Thu May 3 15:40:42 2018 -0400
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.
diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm
index cacbf670b..281266221 100644
--- a/FS/FS/Conf.pm
+++ b/FS/FS/Conf.pm
@@ -1715,6 +1715,13 @@ and customer address. Include units.',
'description' => 'Template to use for manual payment receipts.',
%msg_template_options,
},
+
+ {
+ 'key' => 'payment_receipt_msgnum_auto',
+ 'section' => 'notification',
+ 'description' => 'Automatic payments will cause a post-payment to use a message template for automatic payment receipts rather than a post payment statement.',
+ %msg_template_options,
+ },
{
'key' => 'payment_receipt_from',
diff --git a/FS/FS/cust_pay.pm b/FS/FS/cust_pay.pm
index 8b5e06db2..5031793ff 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);
+
}
diff --git a/httemplate/config/config-process.cgi b/httemplate/config/config-process.cgi
index 3d57b310c..d84edce00 100644
--- a/httemplate/config/config-process.cgi
+++ b/httemplate/config/config-process.cgi
@@ -75,7 +75,7 @@
configCell.innerHTML = <% $value |js_string %>;
% } elsif ( $type eq 'select-sub' && ! $i->multiple ) {
configCell.innerHTML =
- <% $conf->config($i->key, $agentnum) |js_string %> + ': ' +
+ <% $conf->exists($i->key, $agentnum) ? $conf->config($i->key, $agentnum) : '' |js_string %> + ': ' +
<% &{ $i->option_sub }( $conf->config($i->key, $agentnum) ) |js_string %>;
% } else {
//alert('unknown type <% $type %>');
@@ -164,7 +164,7 @@ foreach my $type ( ref($i->type) ? @{$i->type} : $i->type ) {
or ( $type =~ /^select(-(sub|part_svc|part_pkg|pkg_class|agent))?$/
|| $i->multiple )
) {
- if ( scalar(@{[ $cgi->param($i->key.$n) ]}) ) {
+ if ( scalar(@{[ $cgi->param($i->key.$n) ]}) && $cgi->param($i->key.$n) ne '' ) {
my $error = &{$i->validate}([ $cgi->param($i->key.$n) ], $n) if $i->validate;
push @error, $error if $error;
$conf->set($i->key, join("\n", @{[ $cgi->param($i->key.$n) ]} ), $agentnum);
-----------------------------------------------------------------------
Summary of changes:
FS/FS/Conf.pm | 7 ++++
FS/FS/cust_pay.pm | 72 +++++++++++++++++++++++++++---------
httemplate/config/config-process.cgi | 4 +-
3 files changed, 64 insertions(+), 19 deletions(-)
More information about the freeside-commits
mailing list