X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpay_batch.pm;h=850335e843db821a2053a862758827f97f37b21a;hb=b49c1bd5510a5f10b05bffacc6cc8b6a1b2153e8;hp=7db123c10bb1fa171ce11a2490fa2674f44894eb;hpb=8ce6ed212e593c9bfe4834e981b4e987cabe4e8d;p=freeside.git diff --git a/FS/FS/pay_batch.pm b/FS/FS/pay_batch.pm index 7db123c10..850335e84 100644 --- a/FS/FS/pay_batch.pm +++ b/FS/FS/pay_batch.pm @@ -231,17 +231,12 @@ sub import_results { my $reself = $self->select_for_update; - unless ( $reself->status eq 'I' ) { + if ( $reself->status ne 'I' + and !$conf->exists('batch-manual_approval') ) { $dbh->rollback if $oldAutoCommit; return "batchnum ". $self->batchnum. "no longer in transit"; } - my $error = $self->set_status('R'); - if ( $error ) { - $dbh->rollback if $oldAutoCommit; - return $error; - } - my $total = 0; my $line; @@ -352,13 +347,16 @@ sub import_results { my $custnum = $cust_pay_batch->custnum, my $payby = $cust_pay_batch->payby, - my $new_cust_pay_batch = new FS::cust_pay_batch { $cust_pay_batch->hash }; - &{$hook}(\%hash, $cust_pay_batch->hashref); + my $new_cust_pay_batch = new FS::cust_pay_batch { $cust_pay_batch->hash }; + my $error = ''; if ( &{$approved_condition}(\%hash) ) { + foreach ('paid', '_date', 'payinfo') { + $new_cust_pay_batch->$_($hash{$_}) if $hash{$_}; + } $error = $new_cust_pay_batch->approve($hash{'paybatch'} || $self->batchnum); $total += $hash{'paid'}; @@ -393,7 +391,13 @@ sub import_results { $dbh->rollback; die $@; } - $self->set_status('I') if !$close; + if ( $close ) { + my $error = $self->set_status('R'); + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return $error; + } + } } $dbh->commit or die $dbh->errstr if $oldAutoCommit; @@ -535,6 +539,7 @@ sub manual_approve { my $date = time; my %opt = @_; my $paybatch = $opt{'paybatch'} || $self->batchnum; + my $usernum = $opt{'usernum'} || die "manual approval requires a usernum"; my $conf = FS::Conf->new; return 'manual batch approval disabled' if ( ! $conf->exists('batch-manual_approval') ); @@ -559,8 +564,9 @@ sub manual_approve { ) { my $new_cust_pay_batch = new FS::cust_pay_batch { $cust_pay_batch->hash, - 'paid' => $cust_pay_batch->amount, - '_date' => $date, + 'paid' => $cust_pay_batch->amount, + '_date' => $date, + 'usernum' => $usernum, }; my $error = $new_cust_pay_batch->approve($paybatch); if ( $error ) { @@ -569,9 +575,7 @@ sub manual_approve { } $payments++; } - return 'no unresolved payments in batch' if $payments == 0; $self->set_status('R'); - $dbh->commit; return; }