} );
$cust_pay_void->reason(shift) if scalar(@_);
my $error = $cust_pay_void->insert;
- if ( $error ) {
- $dbh->rollback if $oldAutoCommit;
- return $error;
+
+ my $cust_pay_pending =
+ qsearchs('cust_pay_pending', { paynum => $self->paynum });
+ if ( $cust_pay_pending ) {
+ $cust_pay_pending->set('void_paynum', $self->paynum);
+ $cust_pay_pending->set('paynum', '');
+ $error ||= $cust_pay_pending->replace;
}
- $error = $self->delete;
+ $error ||= $self->delete;
+
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
return $error;
my $msgnum = $conf->config('payment_receipt_msgnum', $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,
};
$error = $queue->insert(
FS::msg_template->by_key($msgnum)->prepare(
- 'cust_main' => $cust_main,
- 'object' => $self,
- 'from_config' => 'payment_receipt_from',
+ 'cust_main' => $cust_main,
+ 'object' => $self,
+ 'from_config' => 'payment_receipt_from',
+ 'substitutions' => \%substitutions,
),
'msgtype' => 'receipt', # override msg_template's default
);