diff options
author | Mark Wells <mark@freeside.biz> | 2016-12-16 11:57:52 -0800 |
---|---|---|
committer | Mark Wells <mark@freeside.biz> | 2016-12-16 16:42:02 -0800 |
commit | 61e54f288c3b6c93bcfdf128c8117f66965f463b (patch) | |
tree | bbb69510c26a167a0541c71c72ef7224841ff560 /FS | |
parent | 1878b3def687ae22e69a314d42e24579e8d73f0f (diff) |
prevent B:BP batches from being marked in-transit if uploading the batch fails, #71837
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/pay_batch.pm | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/FS/FS/pay_batch.pm b/FS/FS/pay_batch.pm index 104975100..4aeb33169 100644 --- a/FS/FS/pay_batch.pm +++ b/FS/FS/pay_batch.pm @@ -14,6 +14,7 @@ use FS::Record qw( dbh qsearch qsearchs ); use FS::Conf; use FS::cust_pay; use FS::Log; +use Try::Tiny; =head1 NAME @@ -1086,16 +1087,21 @@ sub export_to_gateway { return ''; } - my $batch = Business::BatchPayment->create(Batch => - batch_id => $self->batchnum, - items => \@items - ); - $processor->submit($batch); + try { + my $batch = Business::BatchPayment->create(Batch => + batch_id => $self->batchnum, + items => \@items + ); + $processor->submit($batch); - if ($batch->processor_id) { - $self->set('processor_id',$batch->processor_id); - $self->replace; - } + if ($batch->processor_id) { + $self->set('processor_id',$batch->processor_id); + $self->replace; + } + } catch { + $dbh->rollback if $oldAutoCommit; + die $_; + }; $dbh->commit or die $dbh->errstr if $oldAutoCommit; ''; |