diff options
author | ivan <ivan> | 2009-10-25 23:30:27 +0000 |
---|---|---|
committer | ivan <ivan> | 2009-10-25 23:30:27 +0000 |
commit | 05419e3838b401019fed034f97e63e3d7e83b539 (patch) | |
tree | b1035d562d61312a1b6657786e9ad8bebf78c88a | |
parent | 1b2a96a59001c6f1935c92de52352c887924a622 (diff) |
add apply option to realtime_collect, RT#5071
-rw-r--r-- | FS/FS/ClientAPI/MyAccount.pm | 2 | ||||
-rw-r--r-- | FS/FS/cust_main.pm | 31 |
2 files changed, 29 insertions, 4 deletions
diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm index 0a2b0fd22..e0ca7bf46 100644 --- a/FS/FS/ClientAPI/MyAccount.pm +++ b/FS/FS/ClientAPI/MyAccount.pm @@ -485,7 +485,7 @@ sub realtime_collect { my $error = $cust_main->realtime_collect( 'method' => $p->{'method'}, - 'session_id' => $p->{'session_id'}, + 'apply' => 1, ); return { 'error' => $error } unless ref( $error ); diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm index cbbfc4858..2559cd3e8 100644 --- a/FS/FS/cust_main.pm +++ b/FS/FS/cust_main.pm @@ -2674,7 +2674,9 @@ I<description> is a free-text field passed to the gateway. It defaults to If an I<invnum> is specified, this payment (if successful) is applied to the specified invoice. If you don't specify an I<invnum> you might want to -call the B<apply_payments> method. +call the B<apply_payments> method or set the I<apply> option. + +I<apply> can be set to true to apply a resulting payment. I<quiet> can be set true to surpress email decline notices. @@ -2690,7 +2692,18 @@ I<payunique> is a unique identifier for this payment. =cut sub realtime_bop { - my( $self, $method, $amount, %options ) = @_; + my $self = shift; + + my($method, $amount); + my %options = (); + if (ref($_[0]) eq 'HASH') { + %options = %{$_[0]}; + $method = $options{method}; + $amount = $options{amount}; + } else { + ( $method, $amount ) = ( shift, shift ); + %options = @_; + } if ( $DEBUG ) { warn "$me realtime_bop: $method $amount\n"; warn " $_ => $options{$_}\n" foreach keys %options; @@ -3135,6 +3148,16 @@ sub realtime_bop { } else { $dbh->commit or die $dbh->errstr if $oldAutoCommit; + + if ( $options{'apply'} ) { + my $apply_error = $self->apply_payments_and_credits; + if ( $apply_error ) { + warn "WARNING: error applying payment: $apply_error\n"; + #but we still should return no error cause the payment otherwise went + #through... + } + } + return ''; #no error } @@ -3636,7 +3659,9 @@ I<description> is a free-text field passed to the gateway. It defaults to If an I<invnum> is specified, this payment (if successful) is applied to the specified invoice. If you don't specify an I<invnum> you might want to -call the B<apply_payments> method. +call the B<apply_payments> method or set the I<apply> option. + +I<apply> can be set to true to apply a resulting payment. I<quiet> can be set true to surpress email decline notices. |