summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Burger <burgerc@freeside.biz>2018-05-15 13:32:46 -0400
committerChristopher Burger <burgerc@freeside.biz>2018-05-16 14:17:04 -0400
commit0bc6f2a95309807cc9372a6be3a36d5e8b3485d8 (patch)
tree4edb43ffd180f82643ecaa3d9f8e9838995d5479
parent8286d9921bf88afd0ddd367f3894f12fc2347f09 (diff)
RT78131 - Created new method to send message receipts so code does not have to be duplicated. Updated for V3 backport
Conflicts: FS/FS/cust_pay.pm
-rw-r--r--FS/FS/cust_pay.pm139
1 files changed, 73 insertions, 66 deletions
diff --git a/FS/FS/cust_pay.pm b/FS/FS/cust_pay.pm
index 7739203c4..285ab3f3c 100644
--- a/FS/FS/cust_pay.pm
+++ b/FS/FS/cust_pay.pm
@@ -664,11 +664,75 @@ sub send_receipt {
|| ! $cust_bill
)
{
- my $msgnum = $conf->config('payment_receipt_msgnum', $cust_main->agentnum);
+ $error = $self->send_message_receipt(
+ 'cust_main' => $cust_main,
+ 'cust_bill' => $opt->{cust_bill},
+ 'cust_pkg' => $opt->{cust_pkg},
+ 'invoicing_list' => @invoicing_list,
+ 'msgnum' => $conf->config('payment_receipt_msgnum', $cust_main->agentnum)
+ );
+
+ } elsif ( ! $cust_main->invoice_noemail ) { #not manual
+
+ # check to see if they want to send specific message template as receipt for auto payments
+ if ( $conf->config('payment_receipt_msgnum_auto', $cust_main->agentnum) ) {
+ $error = $self->send_message_receipt(
+ 'cust_main' => $cust_main,
+ 'cust_bill' => $opt->{cust_bill},
+ 'msgnum' => $conf->config('payment_receipt_msgnum_auto', $cust_main->agentnum),
+ );
+ }
+ 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);
+ }
+
+
+
+ }
+
+ warn "send_receipt: $error\n" if $error;
+}
+
+=item send_message_receipt
+
+sends out a message receipt.
+send_message_receipt($cust_main, $msgnum);
+
+=cut
+
+sub send_message_receipt {
+ my ($self, %opt) = @_;
+ my $cust_main = $opt{'cust_main'};
+ my $cust_bill = $opt{'cust_bill'};
+ my $cust_pkg = $opt{'cust_pkg'};
+ my @invoicing_list = $opt{'invoicing_list'};
+ my $msgnum = $opt{'msgnum'};
+ my $error = '';
+
if ( $msgnum ) {
my %substitutions = ();
- $substitutions{invnum} = $opt->{cust_bill}->invnum if $opt->{cust_bill};
+ $substitutions{invnum} = $cust_bill->invnum if $cust_bill;
my $queue = new FS::queue {
'job' => 'FS::Misc::process_send_email',
@@ -684,7 +748,6 @@ sub send_receipt {
),
'msgtype' => 'receipt', # override msg_template's default
);
-
} elsif ( $conf->exists('payment_receipt_email') ) {
my $receipt_template = new Text::Template (
@@ -716,13 +779,13 @@ sub send_receipt {
'company_name' => $conf->config('company_name', $cust_main->agentnum),
);
- $fill_in{'invnum'} = $opt->{cust_bill}->invnum if $opt->{cust_bill};
+ $fill_in{'invnum'} = $cust_bill->invnum if $cust_bill;
- if ( $opt->{'cust_pkg'} ) {
- $fill_in{'pkg'} = $opt->{'cust_pkg'}->part_pkg->pkg;
+ if ( $cust_pkg ) {
+ $fill_in{'pkg'} = $cust_pkg->part_pkg->pkg;
#setup date, other things?
}
-
+
my $queue = new FS::queue {
'job' => 'FS::Misc::process_send_generated_email',
'paynum' => $self->paynum,
@@ -735,69 +798,13 @@ sub send_receipt {
'to' => \@invoicing_list,
'subject' => 'Payment receipt',
'body' => [ $receipt_template->fill_in( HASH => \%fill_in ) ],
- );
-
+ );
} else {
-
warn "payment_receipt is on, but no payment_receipt_msgnum\n";
-
- }
-
- } elsif ( ! $cust_main->invoice_noemail ) { #not manual
-
- # 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 %substitutions = ();
- $substitutions{invnum} = $opt->{cust_bill}->invnum if $opt->{cust_bill};
-
- my $queue = new FS::queue {
- 'job' => 'FS::Misc::process_send_email',
- 'paynum' => $self->paynum,
- 'custnum' => $cust_main->custnum,
- };
-
- $error = $queue->insert(
- FS::msg_template->by_key($msgnum)->prepare(
- 'cust_main' => $cust_main,
- 'object' => $self,
- 'from_config' => 'payment_receipt_from',
- 'substitutions' => \%substitutions,
- ),
- 'msgtype' => 'receipt', # override msg_template's default
- );
-
- }
- 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 = "payment_receipt is on, but no payment_receipt_msgnum";
}
-
-
- }
-
- warn "send_receipt: $error\n" if $error;
+ return $error;
}
=item cust_bill_pay