diff options
author | Mark Wells <mark@freeside.biz> | 2015-08-25 01:40:21 -0700 |
---|---|---|
committer | Mark Wells <mark@freeside.biz> | 2015-08-25 01:40:30 -0700 |
commit | e6796fcb87b17c937eacfacacd933da7bc5f0996 (patch) | |
tree | 735bc83875a9d610e48969f6b78303fa2bf92df4 | |
parent | 33b89d345f9f3f687c958056aeb85471f7f4c8f5 (diff) |
RBC download script: option to avoid closing the batch, #35228
-rw-r--r-- | FS/FS/pay_batch.pm | 40 | ||||
-rwxr-xr-x | FS/bin/freeside-rbc-download | 9 |
2 files changed, 28 insertions, 21 deletions
diff --git a/FS/FS/pay_batch.pm b/FS/FS/pay_batch.pm index df969a00f..2a522b46e 100644 --- a/FS/FS/pay_batch.pm +++ b/FS/FS/pay_batch.pm @@ -222,6 +222,8 @@ I<format> - an L<FS::pay_batch> module I<gateway> - an L<FS::payment_gateway> object for a batch gateway. This takes precedence over I<format>. +I<no_close> - do not try to close batches + Supported format keys (defined in the specified FS::pay_batch module) are: I<filetype> - required, can be CSV, fixed, variable, XML @@ -456,26 +458,28 @@ sub import_results { } # foreach (@all_values) # decide whether to close batches that had payments posted - foreach my $batchnum (keys %target_batches) { - my $pay_batch = FS::pay_batch->by_key($batchnum); - my $close = 1; - if ( defined($close_condition) ) { - # Allow the module to decide whether to close the batch. - # $close_condition can also die() to abort the whole import. - $close = eval { $close_condition->($pay_batch) }; - if ( $@ ) { - $dbh->rollback; - die $@; + if ( !$param->{no_close} ) { + foreach my $batchnum (keys %target_batches) { + my $pay_batch = FS::pay_batch->by_key($batchnum); + my $close = 1; + if ( defined($close_condition) ) { + # Allow the module to decide whether to close the batch. + # $close_condition can also die() to abort the whole import. + $close = eval { $close_condition->($pay_batch) }; + if ( $@ ) { + $dbh->rollback; + die $@; + } } - } - if ( $close ) { - my $error = $pay_batch->set_status('R'); - if ( $error ) { - $dbh->rollback if $oldAutoCommit; - return $error; + if ( $close ) { + my $error = $pay_batch->set_status('R'); + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return $error; + } } - } - } + } # foreach $batchnum + } # if (!$param->{no_close}) $dbh->commit or die $dbh->errstr if $oldAutoCommit; ''; diff --git a/FS/bin/freeside-rbc-download b/FS/bin/freeside-rbc-download index 376b839e1..3f692fa0f 100755 --- a/FS/bin/freeside-rbc-download +++ b/FS/bin/freeside-rbc-download @@ -10,13 +10,13 @@ use FS::Record qw(qsearch qsearchs); use FS::pay_batch; use FS::Conf; -use vars qw( $opt_v $opt_a $opt_f ); -getopts('va:f:'); +use vars qw( $opt_v $opt_a $opt_f $opt_n ); +getopts('va:f:n'); #$Net::SFTP::Foreign::debug = -1; sub usage { " Usage: - freeside-rbc-download [ -v ] [ -a archivedir ] [ -f filename ] user\n + freeside-rbc-download [ -v ] [ -n ] [ -a archivedir ] [ -f filename ] user\n " } sub debug { @@ -102,6 +102,7 @@ for my $dir ( $ftp->nlst ) { my $error = FS::pay_batch->import_results( filehandle => $fh, format => 'RBC', + no_close => ($opt_n ? 1 : 0), ); if ( $error ) { @@ -146,6 +147,8 @@ matching the pattern. This can be used to reprocess a specific file. -a directory: Archive the files in the specified directory. +-n: Do not try to close batches after applying results. + user: freeside username =head1 BUGS |