summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkhoff <khoff>2007-06-06 19:59:21 +0000
committerkhoff <khoff>2007-06-06 19:59:21 +0000
commit5d94787d261653677b64bda02166d59aadf98e9a (patch)
treee01a81ff7e3d3510526898349f89a3186f3cf8c6
parent2ef0947ad899d67b8d34a5d3519f22f4e40b42ec (diff)
Added 'disable_void_after' config option to disable the VOID-before-credit behavior of FS::cust_main::realtime_refund_bop after n seconds, if set. For broken gateways like SkipJack that a
pprove VOIDs for settled transactions.
-rw-r--r--FS/FS/Conf.pm7
-rw-r--r--FS/FS/cust_main.pm13
2 files changed, 19 insertions, 1 deletions
diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm
index a867648..bcfa5f6 100644
--- a/FS/FS/Conf.pm
+++ b/FS/FS/Conf.pm
@@ -1797,6 +1797,13 @@ httemplate/docs/config.html
'type' => 'text',
},
+ {
+ 'key' => 'disable_void_after',
+ 'section' => 'billing',
+ 'description' => 'Number of seconds after which freeside won\'t attempt to VOID a payment first when performing a refund.',
+ 'type' => 'text',
+ },
+
);
1;
diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm
index 708f014..252a5ca 100644
--- a/FS/FS/cust_main.pm
+++ b/FS/FS/cust_main.pm
@@ -3025,8 +3025,19 @@ sub realtime_refund_bop {
if length($auth); #echeck/ACH transactions have an order # but no auth
#(at least with authorize.net)
+ my $disable_void_after;
+ if ($conf->exists('disable_void_after')
+ && $conf->config('disable_void_after') =~ /^(\d+)$/) {
+ $disable_void_after = $1;
+ }
+
#first try void if applicable
- if ( $cust_pay && $cust_pay->paid == $amount ) { #and check dates?
+ if ( $cust_pay && $cust_pay->paid == $amount
+ && (
+ ( not defined($disable_void_after) )
+ || ( time < ($cust_pay->_date + $disable_void_after ) )
+ )
+ ) {
warn " attempting void\n" if $DEBUG > 1;
my $void = new Business::OnlinePayment( $processor, @bop_options );
$void->content( 'action' => 'void', %content );