diff --git a/org.adempiere.base/src/org/compiere/model/MBPBankAccount.java b/org.adempiere.base/src/org/compiere/model/MBPBankAccount.java index e55146f3f2..63918a2d4e 100644 --- a/org.adempiere.base/src/org/compiere/model/MBPBankAccount.java +++ b/org.adempiere.base/src/org/compiere/model/MBPBankAccount.java @@ -20,6 +20,7 @@ import java.sql.ResultSet; import java.util.List; import java.util.Properties; +import org.adempiere.util.PaymentUtil; import org.compiere.util.CLogger; /** @@ -178,7 +179,10 @@ public class MBPBankAccount extends X_C_BP_BankAccount // maintain routing on bank level if (isACH() && getBank() != null) setRoutingNo(null); - // + // + if (getCreditCardVV() != null) + setCreditCardVV(PaymentUtil.encrpytCvv(getCreditCardVV())); + return true; } // beforeSave diff --git a/org.adempiere.base/src/org/compiere/model/MPayment.java b/org.adempiere.base/src/org/compiere/model/MPayment.java index c576eb7de1..5a71c82097 100644 --- a/org.adempiere.base/src/org/compiere/model/MPayment.java +++ b/org.adempiere.base/src/org/compiere/model/MPayment.java @@ -29,6 +29,7 @@ import java.util.logging.Level; import org.adempiere.exceptions.AdempiereException; import org.adempiere.util.IProcessUI; +import org.adempiere.util.PaymentUtil; import org.compiere.process.DocAction; import org.compiere.process.DocumentEngine; import org.compiere.process.ProcessCall; @@ -506,10 +507,10 @@ public final class MPayment extends X_C_Payment else { // Validate before trying to process - String msg = pp.validate(); - if (msg!=null && msg.trim().length()>0) { - setErrorMessage(Msg.getMsg(getCtx(), msg)); - } else { +// String msg = pp.validate(); +// if (msg!=null && msg.trim().length()>0) { +// setErrorMessage(Msg.getMsg(getCtx(), msg)); +// } else { // Process if validation succeeds approved = pp.processCC (); @@ -522,7 +523,7 @@ public final class MPayment extends X_C_Payment else setErrorMessage("From " + getCreditCardName() + ": " + getR_RespMsg()); } - } +// } } } catch (Exception e) @@ -540,7 +541,9 @@ public final class MPayment extends X_C_Payment setIsApproved(approved); - MPaymentTransaction m_mPaymentTransaction = createPaymentTransaction(); + Trx trx = Trx.get(Trx.createTrxName("ppt-"), true); + + MPaymentTransaction m_mPaymentTransaction = createPaymentTransaction(trx.getTrxName()); m_mPaymentTransaction.setIsApproved(approved); if(getTrxType().equals(TRXTYPE_Void) || getTrxType().equals(TRXTYPE_CreditPayment)) m_mPaymentTransaction.setIsVoided(approved); @@ -548,7 +551,7 @@ public final class MPayment extends X_C_Payment m_mPaymentTransaction.setC_Payment_ID(getC_Payment_ID()); m_mPaymentTransaction.saveEx(); - MOnlineTrxHistory history = new MOnlineTrxHistory(getCtx(), 0, get_TrxName()); + MOnlineTrxHistory history = new MOnlineTrxHistory(getCtx(), 0, trx.getTrxName()); history.setAD_Table_ID(MPaymentTransaction.Table_ID); history.setRecord_ID(m_mPaymentTransaction.getC_PaymentTransaction_ID()); history.setIsError(!approved); @@ -574,6 +577,12 @@ public final class MPayment extends X_C_Payment history.saveEx(); + if (trx != null) + { + trx.commit(); + trx.close(); + } + if(getTrxType().equals(TRXTYPE_Void) || getTrxType().equals(TRXTYPE_CreditPayment)) setIsVoided(approved); @@ -2761,9 +2770,9 @@ public final class MPayment extends X_C_Payment m_processUI = processMonitor; } - public MPaymentTransaction createPaymentTransaction() + public MPaymentTransaction createPaymentTransaction(String trxName) { - MPaymentTransaction paymentTransaction = new MPaymentTransaction(getCtx(), 0, get_TrxName()); + MPaymentTransaction paymentTransaction = new MPaymentTransaction(getCtx(), 0, trxName); paymentTransaction.setA_City(getA_City()); paymentTransaction.setA_Country(getA_Country()); paymentTransaction.setA_EMail(getA_EMail()); @@ -2846,8 +2855,8 @@ public final class MPayment extends X_C_Payment // clear out the cc data when a Void happens since at that point we won't need the card information any longer if (getTenderType().equals(TENDERTYPE_CreditCard)) { -// setCreditCardNumber(PaymentUtil.encrpytCreditCard(getCreditCardNumber())); -// setCreditCardVV(PaymentUtil.encrpytCvv(getCreditCardVV())); + setCreditCardNumber(PaymentUtil.encrpytCreditCard(getCreditCardNumber())); + setCreditCardVV(PaymentUtil.encrpytCvv(getCreditCardVV())); } if (getC_Invoice_ID() != 0) @@ -2871,4 +2880,23 @@ public final class MPayment extends X_C_Payment return this; } + public static int[] getCompletedPaymentIDs(int C_Order_ID, int C_Invoice_ID, String trxName) + { + StringBuilder whereClause = new StringBuilder(); + whereClause.append("TenderType='").append(MPayment.TENDERTYPE_CreditCard).append("' "); + whereClause.append("AND TrxType IN ('").append(MPayment.TRXTYPE_DelayedCapture).append("', "); + whereClause.append("'").append(MPayment.TRXTYPE_Sales).append("', "); + whereClause.append("'").append(MPayment.TRXTYPE_CreditPayment).append("') "); + if (C_Order_ID > 0 && C_Invoice_ID > 0) + whereClause.append(" AND (C_Order_ID=").append(C_Order_ID).append(" OR C_Invoice_ID=").append(C_Invoice_ID).append(")"); + else if (C_Order_ID > 0) + whereClause.append(" AND C_Order_ID=").append(C_Order_ID); + else if (C_Invoice_ID > 0) + whereClause.append(" AND C_Invoice_ID=").append(C_Invoice_ID); + whereClause.append(" AND IsApproved='Y' AND DocStatus IN ('CO','CL') "); + whereClause.append("ORDER BY DateTrx DESC"); + + return MPaymentTransaction.getAllIDs(Table_Name, whereClause.toString(), trxName); + } + } // MPayment diff --git a/org.adempiere.base/src/org/compiere/model/MPaymentTransaction.java b/org.adempiere.base/src/org/compiere/model/MPaymentTransaction.java index c5e751faa1..28877897ab 100644 --- a/org.adempiere.base/src/org/compiere/model/MPaymentTransaction.java +++ b/org.adempiere.base/src/org/compiere/model/MPaymentTransaction.java @@ -21,6 +21,7 @@ import java.util.Properties; import java.util.logging.Level; import org.adempiere.util.IProcessUI; +import org.adempiere.util.PaymentUtil; import org.compiere.process.DocAction; import org.compiere.process.ProcessCall; import org.compiere.process.ProcessInfo; @@ -73,6 +74,8 @@ public class MPaymentTransaction extends X_C_PaymentTransaction implements Proce @Override protected boolean beforeSave(boolean newRecord) { + if (getCreditCardVV() != null) + setCreditCardVV(PaymentUtil.encrpytCvv(getCreditCardVV())); return true; } @@ -159,6 +162,11 @@ public class MPaymentTransaction extends X_C_PaymentTransaction implements Proce * @return true if approved */ public boolean processOnline() + { + return processOnline(get_TrxName()); + } + + public boolean processOnline(String trxName) { log.info ("Amt=" + getPayAmt()); // @@ -213,10 +221,10 @@ public class MPaymentTransaction extends X_C_PaymentTransaction implements Proce else { // Validate before trying to process - String msg = pp.validate(); - if (msg!=null && msg.trim().length()>0) { - setErrorMessage(Msg.getMsg(getCtx(), msg)); - } else { +// String msg = pp.validate(); +// if (msg!=null && msg.trim().length()>0) { +// setErrorMessage(Msg.getMsg(getCtx(), msg)); +// } else { // Process if validation succeeds approved = pp.processCC (); setIsApproved(approved); @@ -234,7 +242,7 @@ public class MPaymentTransaction extends X_C_PaymentTransaction implements Proce && !getTrxType().equals(MPaymentTransaction.TRXTYPE_VoiceAuthorization) && !getTrxType().equals(MPaymentTransaction.TRXTYPE_Void)) { - MPayment m_mPayment = createPayment(); + MPayment m_mPayment = createPayment(trxName); m_mPayment.saveEx(); setC_Payment_ID(m_mPayment.getC_Payment_ID()); processed = m_mPayment.processIt(DocAction.ACTION_Complete); @@ -247,8 +255,13 @@ public class MPaymentTransaction extends X_C_PaymentTransaction implements Proce processed = true; } else - setErrorMessage("From " + getCreditCardName() + ": " + getR_RespMsg()); - } + { + if(getTrxType().equals(TRXTYPE_Void) || getTrxType().equals(TRXTYPE_CreditPayment)) + setErrorMessage("From " + getCreditCardName() + ": " + getR_VoidMsg()); + else + setErrorMessage("From " + getCreditCardName() + ": " + getR_RespMsg()); + } +// } } } catch (Exception e) @@ -298,16 +311,24 @@ public class MPaymentTransaction extends X_C_PaymentTransaction implements Proce { if (getTenderType().equals(TENDERTYPE_CreditCard) && isOnline() && getTrxType().equals(TRXTYPE_Authorization) && !isVoided() && !isDelayedCapture()) { - MPaymentTransaction m_mPaymentTransaction = copyFrom(this, new Timestamp(System.currentTimeMillis()), TRXTYPE_Void, getR_PnRef(), get_TrxName()); + Trx trx = Trx.get(Trx.createTrxName("ppt-"), true); + + MPaymentTransaction m_mPaymentTransaction = copyFrom(this, new Timestamp(System.currentTimeMillis()), TRXTYPE_Void, getR_PnRef(), trx.getTrxName()); m_mPaymentTransaction.setIsApproved(false); m_mPaymentTransaction.setIsVoided(false); m_mPaymentTransaction.setIsDelayedCapture(false); - boolean ok = m_mPaymentTransaction.processOnline(); + boolean ok = m_mPaymentTransaction.processOnline(get_TrxName()); m_mPaymentTransaction.setRef_PaymentTransaction_ID(getC_PaymentTransaction_ID()); // m_mPaymentTransaction.setCreditCardNumber(PaymentUtil.encrpytCreditCard(getCreditCardNumber())); // m_mPaymentTransaction.setCreditCardVV(PaymentUtil.encrpytCvv(getCreditCardVV())); m_mPaymentTransaction.saveEx(); + if (trx != null) + { + trx.commit(); + trx.close(); + } + if (ok) { setIsVoided(true); @@ -330,7 +351,9 @@ public class MPaymentTransaction extends X_C_PaymentTransaction implements Proce { if (getTenderType().equals(TENDERTYPE_CreditCard) && isOnline() && getTrxType().equals(TRXTYPE_Authorization) && !isVoided() && !isDelayedCapture()) { - MPaymentTransaction m_mPaymentTransaction = copyFrom(this, new Timestamp(System.currentTimeMillis()), TRXTYPE_DelayedCapture, getR_PnRef(), get_TrxName()); + Trx trx = Trx.get(Trx.createTrxName("ppt-"), true); + + MPaymentTransaction m_mPaymentTransaction = copyFrom(this, new Timestamp(System.currentTimeMillis()), TRXTYPE_DelayedCapture, getR_PnRef(), trx.getTrxName()); m_mPaymentTransaction.setIsApproved(false); m_mPaymentTransaction.setIsVoided(false); m_mPaymentTransaction.setIsDelayedCapture(false); @@ -338,10 +361,16 @@ public class MPaymentTransaction extends X_C_PaymentTransaction implements Proce if (C_Invoice_ID != 0) m_mPaymentTransaction.setC_Invoice_ID(C_Invoice_ID); - boolean ok = m_mPaymentTransaction.processOnline(); + boolean ok = m_mPaymentTransaction.processOnline(get_TrxName()); m_mPaymentTransaction.setRef_PaymentTransaction_ID(getC_PaymentTransaction_ID()); m_mPaymentTransaction.saveEx(); + if (trx != null) + { + trx.commit(); + trx.close(); + } + if (ok) { if (C_Invoice_ID != 0) @@ -397,9 +426,9 @@ public class MPaymentTransaction extends X_C_PaymentTransaction implements Proce return m_errorMessage; } - public MPayment createPayment() + public MPayment createPayment(String trxName) { - MPayment payment = new MPayment(getCtx(), 0, get_TrxName()); + MPayment payment = new MPayment(getCtx(), 0, trxName); payment.setA_City(getA_City()); payment.setA_Country(getA_Country()); payment.setA_EMail(getA_EMail()); diff --git a/org.adempiere.ui.swing/src/org/compiere/grid/VPaymentFormCreditCard.java b/org.adempiere.ui.swing/src/org/compiere/grid/VPaymentFormCreditCard.java index bd81c7a4e8..312b4e91c8 100644 --- a/org.adempiere.ui.swing/src/org/compiere/grid/VPaymentFormCreditCard.java +++ b/org.adempiere.ui.swing/src/org/compiere/grid/VPaymentFormCreditCard.java @@ -29,7 +29,6 @@ import org.compiere.grid.ed.VNumber; import org.compiere.model.GridTab; import org.compiere.model.MBankAccountProcessor; import org.compiere.model.MInvoice; -import org.compiere.model.MPaymentProcessor; import org.compiere.swing.CButton; import org.compiere.swing.CComboBox; import org.compiere.swing.CLabel; @@ -124,6 +123,7 @@ public class VPaymentFormCreditCard extends PaymentFormCreditCard implements Act if (m_C_Payment_ID != 0) { + m_CCType = m_mPayment.getCreditCardType(); kNumberField.setText(m_mPayment.getCreditCardNumber()); kNameField.setText(m_mPayment.getA_Name()); kExpField.setText(m_mPayment.getCreditCardExp(null)); @@ -142,6 +142,7 @@ public class VPaymentFormCreditCard extends PaymentFormCreditCard implements Act } else if (m_mPaymentTransaction != null) { + m_CCType = m_mPaymentTransaction.getCreditCardType(); kNumberField.setText(m_mPaymentTransaction.getCreditCardNumber()); kNameField.setText(m_mPaymentTransaction.getA_Name()); kExpField.setText(PaymentUtil.getCreditCardExp(m_mPaymentTransaction.getCreditCardExpMM(), m_mPaymentTransaction.getCreditCardExpYY(), null)); @@ -231,8 +232,10 @@ public class VPaymentFormCreditCard extends PaymentFormCreditCard implements Act kOnline.setEnabled(bankAccountProcessor != null); setBankAccountProcessor(bankAccountProcessor); - MPaymentProcessor paymentProcessor = new MPaymentProcessor(Env.getCtx(), bankAccountProcessor.getC_PaymentProcessor_ID(), null); - kApprovalField.setReadWrite(paymentProcessor.isRequireVV()); + if (bankAccountProcessor != null) + kApprovalField.setReadWrite(bankAccountProcessor.isRequireVV()); + else + kApprovalField.setReadWrite(true); } else { diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WPaymentFormCreditCard.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WPaymentFormCreditCard.java index 306186e2d0..510db63d07 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WPaymentFormCreditCard.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WPaymentFormCreditCard.java @@ -35,7 +35,6 @@ import org.compiere.grid.PaymentFormCreditCard; import org.compiere.model.GridTab; import org.compiere.model.MBankAccountProcessor; import org.compiere.model.MInvoice; -import org.compiere.model.MPaymentProcessor; import org.compiere.util.Env; import org.compiere.util.Msg; import org.compiere.util.ValueNamePair; @@ -80,6 +79,7 @@ public class WPaymentFormCreditCard extends PaymentFormCreditCard implements Eve kNumberField.setCols(16); kExpField.setCols(4); kApprovalField.setCols(4); + kApprovalField.setType("password"); kTypeLabel.setText(Msg.translate(Env.getCtx(), "CreditCardType")); kNumberLabel.setText(Msg.translate(Env.getCtx(), "CreditCardNumber")); kExpLabel.setText(Msg.getMsg(Env.getCtx(), "Expires")); @@ -142,6 +142,7 @@ public class WPaymentFormCreditCard extends PaymentFormCreditCard implements Eve if (m_C_Payment_ID != 0) { + m_CCType = m_mPayment.getCreditCardType(); kNumberField.setText(m_mPayment.getCreditCardNumber()); kExpField.setText(m_mPayment.getCreditCardExp(null)); kApprovalField.setText(m_mPayment.getVoiceAuthCode()); @@ -158,6 +159,7 @@ public class WPaymentFormCreditCard extends PaymentFormCreditCard implements Eve } else if (m_mPaymentTransaction != null) { + m_CCType = m_mPaymentTransaction.getCreditCardType(); kNumberField.setText(m_mPaymentTransaction.getCreditCardNumber()); kExpField.setText(PaymentUtil.getCreditCardExp(m_mPaymentTransaction.getCreditCardExpMM(), m_mPaymentTransaction.getCreditCardExpYY(), null)); kApprovalField.setText(m_mPaymentTransaction.getVoiceAuthCode()); @@ -209,6 +211,8 @@ public class WPaymentFormCreditCard extends PaymentFormCreditCard implements Eve if (exist) updateOnlineButton(); + else + kApprovalField.setReadonly(false); } } @@ -232,14 +236,16 @@ public class WPaymentFormCreditCard extends PaymentFormCreditCard implements Eve BigDecimal PayAmt = (BigDecimal) kAmountField.getValue(); - if (CCType != null && PayAmt != null) + if (CCType != null && CCType.length() != 0 && PayAmt != null) { MBankAccountProcessor bankAccountProcessor = getBankAccountProcessor(CCType, PayAmt); kOnline.setEnabled(bankAccountProcessor != null); setBankAccountProcessor(bankAccountProcessor); - MPaymentProcessor paymentProcessor = new MPaymentProcessor(Env.getCtx(), bankAccountProcessor.getC_PaymentProcessor_ID(), null); - kApprovalField.setReadonly(!paymentProcessor.isRequireVV()); + if (bankAccountProcessor != null) + kApprovalField.setReadonly(!bankAccountProcessor.isRequireVV()); + else + kApprovalField.setReadonly(false); } else { diff --git a/org.adempiere.ui/src/org/compiere/grid/PaymentFormCreditCard.java b/org.adempiere.ui/src/org/compiere/grid/PaymentFormCreditCard.java index 5a0ce2a947..b47727163c 100644 --- a/org.adempiere.ui/src/org/compiere/grid/PaymentFormCreditCard.java +++ b/org.adempiere.ui/src/org/compiere/grid/PaymentFormCreditCard.java @@ -16,6 +16,7 @@ package org.compiere.grid; import java.math.BigDecimal; import org.adempiere.exceptions.AdempiereException; +import org.adempiere.util.PaymentUtil; import org.compiere.model.GridTab; import org.compiere.model.MBankAccountProcessor; import org.compiere.model.MDocType; @@ -105,6 +106,70 @@ public abstract class PaymentFormCreditCard extends PaymentForm { } } } + + if (m_mPayment == null || m_mPayment.getC_Payment_ID() == 0) + { + int C_Order_ID = Env.getContextAsInt(Env.getCtx(), getWindowNo(), "C_Order_ID"); + int C_Invoice_ID = Env.getContextAsInt(Env.getCtx(), getWindowNo(), "C_Invoice_ID"); + if (C_Invoice_ID == 0 && m_DocStatus.equals(MInvoice.DOCSTATUS_Completed)) + C_Invoice_ID = getInvoiceID (C_Order_ID); + BigDecimal grandTotal = (BigDecimal) getGridTab().getValue("GrandTotal"); + + boolean isCreditMemo = false; + int doctype = Env.getContextAsInt(Env.getCtx(), getWindowNo(), "C_DocTypeTarget_ID"); + if(doctype > 0) + { + MDocType mDocType = MDocType.get(Env.getCtx(), doctype); + if (MDocType.DOCBASETYPE_ARCreditMemo.equals(mDocType.getDocBaseType())) + isCreditMemo = true; + } + + boolean found = false; + if (C_Order_ID > 0 || C_Invoice_ID > 0) + { + int[] ids = MPayment.getCompletedPaymentIDs(C_Order_ID, C_Invoice_ID, null); + + if (ids.length > 0) + { + if (C_Invoice_ID > 0) + { + for (int id : ids) + { + MPayment p = new MPayment(Env.getCtx(), id, null); + BigDecimal payAmt = p.getPayAmt(); + if (isCreditMemo) + payAmt = payAmt.negate(); + if (p.getC_Invoice_ID() == C_Invoice_ID && payAmt.compareTo(grandTotal) >= 0) + { + m_C_Payment_ID = id; + m_mPayment = p; + m_mPaymentOriginal = new MPayment(Env.getCtx(), id, null); + found = true; + break; + } + } + } + + if (!found) + { + for (int id : ids) + { + MPayment p = new MPayment(Env.getCtx(), id, null); + BigDecimal payAmt = p.getPayAmt(); + if (isCreditMemo) + payAmt = payAmt.negate(); + if (p.getC_Order_ID() == C_Order_ID && payAmt.compareTo(grandTotal) >= 0) + { + m_C_Payment_ID = id; + m_mPayment = p; + m_mPaymentOriginal = new MPayment(Env.getCtx(), id, null); + break; + } + } + } + } + } + } if (m_mPayment == null) { @@ -231,24 +296,9 @@ public abstract class PaymentFormCreditCard extends PaymentForm { } // Amount sign negative, if ARC (Credit Memo) or API (AP Invoice) - boolean negateAmt = false; - MInvoice invoice = null; - if (C_Invoice_ID != 0) - { - invoice = new MInvoice (Env.getCtx(), C_Invoice_ID, null); - negateAmt = invoice.isCreditMemo(); - } - MOrder order = null; - if (invoice == null && C_Order_ID != 0) - order = new MOrder (Env.getCtx(), C_Order_ID, null); - BigDecimal payAmount = m_Amount; - - - if (negateAmt) + if (isCreditMemo) payAmount = m_Amount.negate(); - // Info - log.config("C_Order_ID=" + C_Order_ID + ", C_Invoice_ID=" + C_Invoice_ID + ", NegateAmt=" + negateAmt); /*********************** * Payments @@ -268,6 +318,7 @@ public abstract class PaymentFormCreditCard extends PaymentForm { } else if (C_Invoice_ID != 0) { + MInvoice invoice = new MInvoice (Env.getCtx(), C_Invoice_ID, null); if (invoice.isComplete()) m_mPayment.setTrxType(MPayment.TRXTYPE_Sales); } @@ -280,6 +331,13 @@ public abstract class PaymentFormCreditCard extends PaymentForm { m_mPayment.setC_BPartner_ID(m_C_BPartner_ID); m_mPayment.setC_Invoice_ID(C_Invoice_ID); + + MInvoice invoice = null; + if (C_Invoice_ID != 0) + invoice = new MInvoice (Env.getCtx(), C_Invoice_ID, null); + MOrder order = null; + if (invoice == null && C_Order_ID != 0) + order = new MOrder (Env.getCtx(), C_Order_ID, null); if (order != null) { m_mPayment.setC_Order_ID(C_Order_ID); @@ -311,7 +369,12 @@ public abstract class PaymentFormCreditCard extends PaymentForm { } } else + { log.fine("NotDraft " + m_mPayment); + m_mPayment.setCreditCardNumber(PaymentUtil.encrpytCreditCard(m_mPayment.getCreditCardNumber())); + m_mPayment.setCreditCardVV(PaymentUtil.encrpytCvv(m_mPayment.getCreditCardVV())); + m_mPayment.saveEx(); + } /********************** * Save Values to mTab @@ -356,10 +419,14 @@ public abstract class PaymentFormCreditCard extends PaymentForm { boolean approved = false; + BigDecimal payAmount = m_Amount; + if (isCreditMemo) + payAmount = m_Amount.negate(); + MPaymentTransaction mpt = new MPaymentTransaction(Env.getCtx(), 0, null); mpt.setAD_Org_ID(m_AD_Org_ID); mpt.setCreditCard(MPayment.TRXTYPE_Sales, CCType, CCNumber, "", CCExp); - mpt.setAmount(m_C_Currency_ID, m_Amount); + mpt.setAmount(m_C_Currency_ID, payAmount); mpt.setPaymentProcessor(); if (isPOSOrder || isInvoice) @@ -377,7 +444,7 @@ public abstract class PaymentFormCreditCard extends PaymentForm { } else { - MPaymentProcessor paymentProcessor = new MPaymentProcessor(mpt.getCtx(), mpt.getC_PaymentProcessor_ID(), mpt.get_TrxName()); + MPaymentProcessor paymentProcessor = new MPaymentProcessor(mpt.getCtx(), mpt.getC_PaymentProcessor_ID(), null); if (paymentProcessor.getTrxType() != null) mpt.setTrxType(paymentProcessor.getTrxType()); } @@ -400,7 +467,7 @@ public abstract class PaymentFormCreditCard extends PaymentForm { m_needSave = true; if (mpt.getC_Payment_ID() > 0) { - m_mPayment = new MPayment(mpt.getCtx(), mpt.getC_Payment_ID(), mpt.get_TrxName()); + m_mPayment = new MPayment(mpt.getCtx(), mpt.getC_Payment_ID(), null); String info = m_mPayment.getR_RespMsg() + " (" + m_mPayment.getR_AuthCode() + ") ID=" + m_mPayment.getR_PnRef(); processMsg = info + "\n" + m_mPayment.getDocumentNo(); saveChanges();