/**
  * Does Payment Processor accepts tender / CC
  *
  * @param TenderType tender type
  * @param CreditCardType credit card type
  * @return true if acceptes
  */
 public boolean accepts(String TenderType, String CreditCardType) {
   if ((MPayment.TENDERTYPE_DirectDeposit.equals(TenderType) && isAcceptDirectDeposit())
       || (MPayment.TENDERTYPE_DirectDebit.equals(TenderType) && isAcceptDirectDebit())
       || (MPayment.TENDERTYPE_Check.equals(TenderType) && isAcceptCheck())
       //
       || (MPayment.CREDITCARDTYPE_ATM.equals(CreditCardType) && isAcceptATM())
       || (MPayment.CREDITCARDTYPE_Amex.equals(CreditCardType) && isAcceptAMEX())
       || (MPayment.CREDITCARDTYPE_PurchaseCard.equals(CreditCardType) && isAcceptCorporate())
       || (MPayment.CREDITCARDTYPE_Diners.equals(CreditCardType) && isAcceptDiners())
       || (MPayment.CREDITCARDTYPE_Discover.equals(CreditCardType) && isAcceptDiscover())
       || (MPayment.CREDITCARDTYPE_MasterCard.equals(CreditCardType) && isAcceptMC())
       || (MPayment.CREDITCARDTYPE_Visa.equals(CreditCardType) && isAcceptVisa())) return true;
   return false;
 } //	accepts
 /**
  * Get BankAccount & PaymentProcessor
  *
  * @param ctx context
  * @param tender optional Tender see TENDER_
  * @param CCType optional CC Type see CC_
  * @param AD_Client_ID Client
  * @param C_Currency_ID Currency (ignored)
  * @param Amt Amount (ignored)
  * @param trxName transaction
  * @return Array of BankAccount[0] & PaymentProcessor[1] or null
  */
 protected static MPaymentProcessor[] find(
     Properties ctx,
     String tender,
     String CCType,
     int AD_Client_ID,
     int C_Currency_ID,
     BigDecimal Amt,
     String trxName) {
   ArrayList<MPaymentProcessor> list = new ArrayList<MPaymentProcessor>();
   StringBuffer sql =
       new StringBuffer(
           "SELECT * "
               + "FROM C_PaymentProcessor "
               + "WHERE AD_Client_ID=? AND IsActive='Y'" //	#1
               + " AND (C_Currency_ID IS NULL OR C_Currency_ID=?)" //	#2
               + " AND (MinimumAmt IS NULL OR MinimumAmt = 0 OR MinimumAmt <= ?)"); //	#3
   if (MPayment.TENDERTYPE_DirectDeposit.equals(tender))
     sql.append(" AND AcceptDirectDeposit='Y'");
   else if (MPayment.TENDERTYPE_DirectDebit.equals(tender))
     sql.append(" AND AcceptDirectDebit='Y'");
   else if (MPayment.TENDERTYPE_Check.equals(tender)) sql.append(" AND AcceptCheck='Y'");
   //  CreditCards
   else if (MPayment.CREDITCARDTYPE_ATM.equals(CCType)) sql.append(" AND AcceptATM='Y'");
   else if (MPayment.CREDITCARDTYPE_Amex.equals(CCType)) sql.append(" AND AcceptAMEX='Y'");
   else if (MPayment.CREDITCARDTYPE_Visa.equals(CCType)) sql.append(" AND AcceptVISA='Y'");
   else if (MPayment.CREDITCARDTYPE_MasterCard.equals(CCType)) sql.append(" AND AcceptMC='Y'");
   else if (MPayment.CREDITCARDTYPE_Diners.equals(CCType)) sql.append(" AND AcceptDiners='Y'");
   else if (MPayment.CREDITCARDTYPE_Discover.equals(CCType)) sql.append(" AND AcceptDiscover='Y'");
   else if (MPayment.CREDITCARDTYPE_PurchaseCard.equals(CCType))
     sql.append(" AND AcceptCORPORATE='Y'");
   //
   try {
     PreparedStatement pstmt = DB.prepareStatement(sql.toString(), trxName);
     pstmt.setInt(1, AD_Client_ID);
     pstmt.setInt(2, C_Currency_ID);
     pstmt.setBigDecimal(3, Amt);
     ResultSet rs = pstmt.executeQuery();
     while (rs.next()) list.add(new MPaymentProcessor(ctx, rs, trxName));
     rs.close();
     pstmt.close();
   } catch (SQLException e) {
     s_log.error("find - " + sql, e);
     return null;
   }
   //
   if (list.size() == 0)
     s_log.warn(
         "find - not found - AD_Client_ID="
             + AD_Client_ID
             + ", C_Currency_ID="
             + C_Currency_ID
             + ", Amt="
             + Amt);
   else
     s_log.debug(
         "find - #"
             + list.size()
             + " - AD_Client_ID="
             + AD_Client_ID
             + ", C_Currency_ID="
             + C_Currency_ID
             + ", Amt="
             + Amt);
   MPaymentProcessor[] retValue = new MPaymentProcessor[list.size()];
   list.toArray(retValue);
   return retValue;
 } //  find