RT# 80175 - fixed error in payment gateway where ACH cardtype was always selected.
authorChristopher Burger <burgerc@freeside.biz>
Mon, 16 Apr 2018 20:44:16 +0000 (16:44 -0400)
committerChristopher Burger <burgerc@freeside.biz>
Mon, 16 Apr 2018 20:44:16 +0000 (16:44 -0400)
FS/FS/agent.pm

index bf389de..8107093 100644 (file)
@@ -294,13 +294,15 @@ sub payment_gateway {
     }
   }
 
     }
   }
 
-  my $cardtype = '';
-  if ( $options{method} eq 'ECHECK' ) { $cardtype = 'ACH'; }
+  my $cardtype_search = "AND cardtype != 'ACH'";
+  $cardtype_search = "AND cardtype = 'ACH'" if $options{method} eq 'ECHECK';
 
   my $override =
 
   my $override =
-     qsearchs('agent_payment_gateway', { agentnum => $self->agentnum,
-                                         cardtype => $cardtype,      } )
-  || qsearchs('agent_payment_gateway', { agentnum => $self->agentnum } );
+      qsearchs({
+        "table" => 'agent_payment_gateway',
+        "hashref" => { agentnum => $self->agentnum, },
+        "extra_sql" => $cardtype_search,
+      });
 
   my $payment_gateway = FS::payment_gateway->by_key_or_default(
     gatewaynum => $override ? $override->gatewaynum : '',
 
   my $payment_gateway = FS::payment_gateway->by_key_or_default(
     gatewaynum => $override ? $override->gatewaynum : '',