|| ! $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.
+$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)
+ );
+
+=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 $msg_template = qsearchs('msg_template',{ msgnum => $msgnum});
+ unless ($msg_template) {
+ return "send_receipt could not load msg_template";
+ }
my $queue = new FS::queue {
'job' => 'FS::Misc::process_send_email',
),
'msgtype' => 'receipt', # override msg_template's default
);
-
} 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 '';
+ return "can't create payment receipt template: $Text::Template::ERROR";
};
my $payby = $self->payby;
'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,
'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";
-
+ $error = "payment_receipt is on, but no payment_receipt_msgnum\n";
}
- } elsif ( ! $cust_main->invoice_noemail ) { #not manual
-
- 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;
+ return $error;
}
=item cust_bill_pay