Merge 73b3af19f5b3
This commit is contained in:
commit
b0f78eac84
|
@ -20,6 +20,7 @@ import java.sql.ResultSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import org.adempiere.util.PaymentUtil;
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -179,6 +180,9 @@ public class MBPBankAccount extends X_C_BP_BankAccount
|
||||||
if (isACH() && getBank() != null)
|
if (isACH() && getBank() != null)
|
||||||
setRoutingNo(null);
|
setRoutingNo(null);
|
||||||
//
|
//
|
||||||
|
if (getCreditCardVV() != null)
|
||||||
|
setCreditCardVV(PaymentUtil.encrpytCvv(getCreditCardVV()));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} // beforeSave
|
} // beforeSave
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@ import java.util.logging.Level;
|
||||||
|
|
||||||
import org.adempiere.exceptions.AdempiereException;
|
import org.adempiere.exceptions.AdempiereException;
|
||||||
import org.adempiere.util.IProcessUI;
|
import org.adempiere.util.IProcessUI;
|
||||||
|
import org.adempiere.util.PaymentUtil;
|
||||||
import org.compiere.process.DocAction;
|
import org.compiere.process.DocAction;
|
||||||
import org.compiere.process.DocumentEngine;
|
import org.compiere.process.DocumentEngine;
|
||||||
import org.compiere.process.ProcessCall;
|
import org.compiere.process.ProcessCall;
|
||||||
|
@ -506,10 +507,10 @@ public final class MPayment extends X_C_Payment
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Validate before trying to process
|
// Validate before trying to process
|
||||||
String msg = pp.validate();
|
// String msg = pp.validate();
|
||||||
if (msg!=null && msg.trim().length()>0) {
|
// if (msg!=null && msg.trim().length()>0) {
|
||||||
setErrorMessage(Msg.getMsg(getCtx(), msg));
|
// setErrorMessage(Msg.getMsg(getCtx(), msg));
|
||||||
} else {
|
// } else {
|
||||||
// Process if validation succeeds
|
// Process if validation succeeds
|
||||||
approved = pp.processCC ();
|
approved = pp.processCC ();
|
||||||
|
|
||||||
|
@ -522,7 +523,7 @@ public final class MPayment extends X_C_Payment
|
||||||
else
|
else
|
||||||
setErrorMessage("From " + getCreditCardName() + ": " + getR_RespMsg());
|
setErrorMessage("From " + getCreditCardName() + ": " + getR_RespMsg());
|
||||||
}
|
}
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
@ -540,7 +541,9 @@ public final class MPayment extends X_C_Payment
|
||||||
|
|
||||||
setIsApproved(approved);
|
setIsApproved(approved);
|
||||||
|
|
||||||
MPaymentTransaction m_mPaymentTransaction = createPaymentTransaction();
|
Trx trx = Trx.get(Trx.createTrxName("ppt-"), true);
|
||||||
|
|
||||||
|
MPaymentTransaction m_mPaymentTransaction = createPaymentTransaction(trx.getTrxName());
|
||||||
m_mPaymentTransaction.setIsApproved(approved);
|
m_mPaymentTransaction.setIsApproved(approved);
|
||||||
if(getTrxType().equals(TRXTYPE_Void) || getTrxType().equals(TRXTYPE_CreditPayment))
|
if(getTrxType().equals(TRXTYPE_Void) || getTrxType().equals(TRXTYPE_CreditPayment))
|
||||||
m_mPaymentTransaction.setIsVoided(approved);
|
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.setC_Payment_ID(getC_Payment_ID());
|
||||||
m_mPaymentTransaction.saveEx();
|
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.setAD_Table_ID(MPaymentTransaction.Table_ID);
|
||||||
history.setRecord_ID(m_mPaymentTransaction.getC_PaymentTransaction_ID());
|
history.setRecord_ID(m_mPaymentTransaction.getC_PaymentTransaction_ID());
|
||||||
history.setIsError(!approved);
|
history.setIsError(!approved);
|
||||||
|
@ -574,6 +577,12 @@ public final class MPayment extends X_C_Payment
|
||||||
|
|
||||||
history.saveEx();
|
history.saveEx();
|
||||||
|
|
||||||
|
if (trx != null)
|
||||||
|
{
|
||||||
|
trx.commit();
|
||||||
|
trx.close();
|
||||||
|
}
|
||||||
|
|
||||||
if(getTrxType().equals(TRXTYPE_Void) || getTrxType().equals(TRXTYPE_CreditPayment))
|
if(getTrxType().equals(TRXTYPE_Void) || getTrxType().equals(TRXTYPE_CreditPayment))
|
||||||
setIsVoided(approved);
|
setIsVoided(approved);
|
||||||
|
|
||||||
|
@ -2761,9 +2770,9 @@ public final class MPayment extends X_C_Payment
|
||||||
m_processUI = processMonitor;
|
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_City(getA_City());
|
||||||
paymentTransaction.setA_Country(getA_Country());
|
paymentTransaction.setA_Country(getA_Country());
|
||||||
paymentTransaction.setA_EMail(getA_EMail());
|
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
|
// 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))
|
if (getTenderType().equals(TENDERTYPE_CreditCard))
|
||||||
{
|
{
|
||||||
// setCreditCardNumber(PaymentUtil.encrpytCreditCard(getCreditCardNumber()));
|
setCreditCardNumber(PaymentUtil.encrpytCreditCard(getCreditCardNumber()));
|
||||||
// setCreditCardVV(PaymentUtil.encrpytCvv(getCreditCardVV()));
|
setCreditCardVV(PaymentUtil.encrpytCvv(getCreditCardVV()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getC_Invoice_ID() != 0)
|
if (getC_Invoice_ID() != 0)
|
||||||
|
@ -2871,4 +2880,23 @@ public final class MPayment extends X_C_Payment
|
||||||
return this;
|
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
|
} // MPayment
|
||||||
|
|
|
@ -21,6 +21,7 @@ import java.util.Properties;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.adempiere.util.IProcessUI;
|
import org.adempiere.util.IProcessUI;
|
||||||
|
import org.adempiere.util.PaymentUtil;
|
||||||
import org.compiere.process.DocAction;
|
import org.compiere.process.DocAction;
|
||||||
import org.compiere.process.ProcessCall;
|
import org.compiere.process.ProcessCall;
|
||||||
import org.compiere.process.ProcessInfo;
|
import org.compiere.process.ProcessInfo;
|
||||||
|
@ -73,6 +74,8 @@ public class MPaymentTransaction extends X_C_PaymentTransaction implements Proce
|
||||||
@Override
|
@Override
|
||||||
protected boolean beforeSave(boolean newRecord)
|
protected boolean beforeSave(boolean newRecord)
|
||||||
{
|
{
|
||||||
|
if (getCreditCardVV() != null)
|
||||||
|
setCreditCardVV(PaymentUtil.encrpytCvv(getCreditCardVV()));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,6 +162,11 @@ public class MPaymentTransaction extends X_C_PaymentTransaction implements Proce
|
||||||
* @return true if approved
|
* @return true if approved
|
||||||
*/
|
*/
|
||||||
public boolean processOnline()
|
public boolean processOnline()
|
||||||
|
{
|
||||||
|
return processOnline(get_TrxName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean processOnline(String trxName)
|
||||||
{
|
{
|
||||||
log.info ("Amt=" + getPayAmt());
|
log.info ("Amt=" + getPayAmt());
|
||||||
//
|
//
|
||||||
|
@ -213,10 +221,10 @@ public class MPaymentTransaction extends X_C_PaymentTransaction implements Proce
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Validate before trying to process
|
// Validate before trying to process
|
||||||
String msg = pp.validate();
|
// String msg = pp.validate();
|
||||||
if (msg!=null && msg.trim().length()>0) {
|
// if (msg!=null && msg.trim().length()>0) {
|
||||||
setErrorMessage(Msg.getMsg(getCtx(), msg));
|
// setErrorMessage(Msg.getMsg(getCtx(), msg));
|
||||||
} else {
|
// } else {
|
||||||
// Process if validation succeeds
|
// Process if validation succeeds
|
||||||
approved = pp.processCC ();
|
approved = pp.processCC ();
|
||||||
setIsApproved(approved);
|
setIsApproved(approved);
|
||||||
|
@ -234,7 +242,7 @@ public class MPaymentTransaction extends X_C_PaymentTransaction implements Proce
|
||||||
&& !getTrxType().equals(MPaymentTransaction.TRXTYPE_VoiceAuthorization)
|
&& !getTrxType().equals(MPaymentTransaction.TRXTYPE_VoiceAuthorization)
|
||||||
&& !getTrxType().equals(MPaymentTransaction.TRXTYPE_Void))
|
&& !getTrxType().equals(MPaymentTransaction.TRXTYPE_Void))
|
||||||
{
|
{
|
||||||
MPayment m_mPayment = createPayment();
|
MPayment m_mPayment = createPayment(trxName);
|
||||||
m_mPayment.saveEx();
|
m_mPayment.saveEx();
|
||||||
setC_Payment_ID(m_mPayment.getC_Payment_ID());
|
setC_Payment_ID(m_mPayment.getC_Payment_ID());
|
||||||
processed = m_mPayment.processIt(DocAction.ACTION_Complete);
|
processed = m_mPayment.processIt(DocAction.ACTION_Complete);
|
||||||
|
@ -246,9 +254,14 @@ public class MPaymentTransaction extends X_C_PaymentTransaction implements Proce
|
||||||
else
|
else
|
||||||
processed = true;
|
processed = true;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(getTrxType().equals(TRXTYPE_Void) || getTrxType().equals(TRXTYPE_CreditPayment))
|
||||||
|
setErrorMessage("From " + getCreditCardName() + ": " + getR_VoidMsg());
|
||||||
else
|
else
|
||||||
setErrorMessage("From " + getCreditCardName() + ": " + getR_RespMsg());
|
setErrorMessage("From " + getCreditCardName() + ": " + getR_RespMsg());
|
||||||
}
|
}
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
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())
|
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.setIsApproved(false);
|
||||||
m_mPaymentTransaction.setIsVoided(false);
|
m_mPaymentTransaction.setIsVoided(false);
|
||||||
m_mPaymentTransaction.setIsDelayedCapture(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.setRef_PaymentTransaction_ID(getC_PaymentTransaction_ID());
|
||||||
// m_mPaymentTransaction.setCreditCardNumber(PaymentUtil.encrpytCreditCard(getCreditCardNumber()));
|
// m_mPaymentTransaction.setCreditCardNumber(PaymentUtil.encrpytCreditCard(getCreditCardNumber()));
|
||||||
// m_mPaymentTransaction.setCreditCardVV(PaymentUtil.encrpytCvv(getCreditCardVV()));
|
// m_mPaymentTransaction.setCreditCardVV(PaymentUtil.encrpytCvv(getCreditCardVV()));
|
||||||
m_mPaymentTransaction.saveEx();
|
m_mPaymentTransaction.saveEx();
|
||||||
|
|
||||||
|
if (trx != null)
|
||||||
|
{
|
||||||
|
trx.commit();
|
||||||
|
trx.close();
|
||||||
|
}
|
||||||
|
|
||||||
if (ok)
|
if (ok)
|
||||||
{
|
{
|
||||||
setIsVoided(true);
|
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())
|
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.setIsApproved(false);
|
||||||
m_mPaymentTransaction.setIsVoided(false);
|
m_mPaymentTransaction.setIsVoided(false);
|
||||||
m_mPaymentTransaction.setIsDelayedCapture(false);
|
m_mPaymentTransaction.setIsDelayedCapture(false);
|
||||||
|
@ -338,10 +361,16 @@ public class MPaymentTransaction extends X_C_PaymentTransaction implements Proce
|
||||||
if (C_Invoice_ID != 0)
|
if (C_Invoice_ID != 0)
|
||||||
m_mPaymentTransaction.setC_Invoice_ID(C_Invoice_ID);
|
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.setRef_PaymentTransaction_ID(getC_PaymentTransaction_ID());
|
||||||
m_mPaymentTransaction.saveEx();
|
m_mPaymentTransaction.saveEx();
|
||||||
|
|
||||||
|
if (trx != null)
|
||||||
|
{
|
||||||
|
trx.commit();
|
||||||
|
trx.close();
|
||||||
|
}
|
||||||
|
|
||||||
if (ok)
|
if (ok)
|
||||||
{
|
{
|
||||||
if (C_Invoice_ID != 0)
|
if (C_Invoice_ID != 0)
|
||||||
|
@ -397,9 +426,9 @@ public class MPaymentTransaction extends X_C_PaymentTransaction implements Proce
|
||||||
return m_errorMessage;
|
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_City(getA_City());
|
||||||
payment.setA_Country(getA_Country());
|
payment.setA_Country(getA_Country());
|
||||||
payment.setA_EMail(getA_EMail());
|
payment.setA_EMail(getA_EMail());
|
||||||
|
|
|
@ -29,7 +29,6 @@ import org.compiere.grid.ed.VNumber;
|
||||||
import org.compiere.model.GridTab;
|
import org.compiere.model.GridTab;
|
||||||
import org.compiere.model.MBankAccountProcessor;
|
import org.compiere.model.MBankAccountProcessor;
|
||||||
import org.compiere.model.MInvoice;
|
import org.compiere.model.MInvoice;
|
||||||
import org.compiere.model.MPaymentProcessor;
|
|
||||||
import org.compiere.swing.CButton;
|
import org.compiere.swing.CButton;
|
||||||
import org.compiere.swing.CComboBox;
|
import org.compiere.swing.CComboBox;
|
||||||
import org.compiere.swing.CLabel;
|
import org.compiere.swing.CLabel;
|
||||||
|
@ -124,6 +123,7 @@ public class VPaymentFormCreditCard extends PaymentFormCreditCard implements Act
|
||||||
|
|
||||||
if (m_C_Payment_ID != 0)
|
if (m_C_Payment_ID != 0)
|
||||||
{
|
{
|
||||||
|
m_CCType = m_mPayment.getCreditCardType();
|
||||||
kNumberField.setText(m_mPayment.getCreditCardNumber());
|
kNumberField.setText(m_mPayment.getCreditCardNumber());
|
||||||
kNameField.setText(m_mPayment.getA_Name());
|
kNameField.setText(m_mPayment.getA_Name());
|
||||||
kExpField.setText(m_mPayment.getCreditCardExp(null));
|
kExpField.setText(m_mPayment.getCreditCardExp(null));
|
||||||
|
@ -142,6 +142,7 @@ public class VPaymentFormCreditCard extends PaymentFormCreditCard implements Act
|
||||||
}
|
}
|
||||||
else if (m_mPaymentTransaction != null)
|
else if (m_mPaymentTransaction != null)
|
||||||
{
|
{
|
||||||
|
m_CCType = m_mPaymentTransaction.getCreditCardType();
|
||||||
kNumberField.setText(m_mPaymentTransaction.getCreditCardNumber());
|
kNumberField.setText(m_mPaymentTransaction.getCreditCardNumber());
|
||||||
kNameField.setText(m_mPaymentTransaction.getA_Name());
|
kNameField.setText(m_mPaymentTransaction.getA_Name());
|
||||||
kExpField.setText(PaymentUtil.getCreditCardExp(m_mPaymentTransaction.getCreditCardExpMM(), m_mPaymentTransaction.getCreditCardExpYY(), null));
|
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);
|
kOnline.setEnabled(bankAccountProcessor != null);
|
||||||
setBankAccountProcessor(bankAccountProcessor);
|
setBankAccountProcessor(bankAccountProcessor);
|
||||||
|
|
||||||
MPaymentProcessor paymentProcessor = new MPaymentProcessor(Env.getCtx(), bankAccountProcessor.getC_PaymentProcessor_ID(), null);
|
if (bankAccountProcessor != null)
|
||||||
kApprovalField.setReadWrite(paymentProcessor.isRequireVV());
|
kApprovalField.setReadWrite(bankAccountProcessor.isRequireVV());
|
||||||
|
else
|
||||||
|
kApprovalField.setReadWrite(true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -35,7 +35,6 @@ import org.compiere.grid.PaymentFormCreditCard;
|
||||||
import org.compiere.model.GridTab;
|
import org.compiere.model.GridTab;
|
||||||
import org.compiere.model.MBankAccountProcessor;
|
import org.compiere.model.MBankAccountProcessor;
|
||||||
import org.compiere.model.MInvoice;
|
import org.compiere.model.MInvoice;
|
||||||
import org.compiere.model.MPaymentProcessor;
|
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
import org.compiere.util.Msg;
|
import org.compiere.util.Msg;
|
||||||
import org.compiere.util.ValueNamePair;
|
import org.compiere.util.ValueNamePair;
|
||||||
|
@ -80,6 +79,7 @@ public class WPaymentFormCreditCard extends PaymentFormCreditCard implements Eve
|
||||||
kNumberField.setCols(16);
|
kNumberField.setCols(16);
|
||||||
kExpField.setCols(4);
|
kExpField.setCols(4);
|
||||||
kApprovalField.setCols(4);
|
kApprovalField.setCols(4);
|
||||||
|
kApprovalField.setType("password");
|
||||||
kTypeLabel.setText(Msg.translate(Env.getCtx(), "CreditCardType"));
|
kTypeLabel.setText(Msg.translate(Env.getCtx(), "CreditCardType"));
|
||||||
kNumberLabel.setText(Msg.translate(Env.getCtx(), "CreditCardNumber"));
|
kNumberLabel.setText(Msg.translate(Env.getCtx(), "CreditCardNumber"));
|
||||||
kExpLabel.setText(Msg.getMsg(Env.getCtx(), "Expires"));
|
kExpLabel.setText(Msg.getMsg(Env.getCtx(), "Expires"));
|
||||||
|
@ -142,6 +142,7 @@ public class WPaymentFormCreditCard extends PaymentFormCreditCard implements Eve
|
||||||
|
|
||||||
if (m_C_Payment_ID != 0)
|
if (m_C_Payment_ID != 0)
|
||||||
{
|
{
|
||||||
|
m_CCType = m_mPayment.getCreditCardType();
|
||||||
kNumberField.setText(m_mPayment.getCreditCardNumber());
|
kNumberField.setText(m_mPayment.getCreditCardNumber());
|
||||||
kExpField.setText(m_mPayment.getCreditCardExp(null));
|
kExpField.setText(m_mPayment.getCreditCardExp(null));
|
||||||
kApprovalField.setText(m_mPayment.getVoiceAuthCode());
|
kApprovalField.setText(m_mPayment.getVoiceAuthCode());
|
||||||
|
@ -158,6 +159,7 @@ public class WPaymentFormCreditCard extends PaymentFormCreditCard implements Eve
|
||||||
}
|
}
|
||||||
else if (m_mPaymentTransaction != null)
|
else if (m_mPaymentTransaction != null)
|
||||||
{
|
{
|
||||||
|
m_CCType = m_mPaymentTransaction.getCreditCardType();
|
||||||
kNumberField.setText(m_mPaymentTransaction.getCreditCardNumber());
|
kNumberField.setText(m_mPaymentTransaction.getCreditCardNumber());
|
||||||
kExpField.setText(PaymentUtil.getCreditCardExp(m_mPaymentTransaction.getCreditCardExpMM(), m_mPaymentTransaction.getCreditCardExpYY(), null));
|
kExpField.setText(PaymentUtil.getCreditCardExp(m_mPaymentTransaction.getCreditCardExpMM(), m_mPaymentTransaction.getCreditCardExpYY(), null));
|
||||||
kApprovalField.setText(m_mPaymentTransaction.getVoiceAuthCode());
|
kApprovalField.setText(m_mPaymentTransaction.getVoiceAuthCode());
|
||||||
|
@ -209,6 +211,8 @@ public class WPaymentFormCreditCard extends PaymentFormCreditCard implements Eve
|
||||||
|
|
||||||
if (exist)
|
if (exist)
|
||||||
updateOnlineButton();
|
updateOnlineButton();
|
||||||
|
else
|
||||||
|
kApprovalField.setReadonly(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -232,14 +236,16 @@ public class WPaymentFormCreditCard extends PaymentFormCreditCard implements Eve
|
||||||
|
|
||||||
BigDecimal PayAmt = (BigDecimal) kAmountField.getValue();
|
BigDecimal PayAmt = (BigDecimal) kAmountField.getValue();
|
||||||
|
|
||||||
if (CCType != null && PayAmt != null)
|
if (CCType != null && CCType.length() != 0 && PayAmt != null)
|
||||||
{
|
{
|
||||||
MBankAccountProcessor bankAccountProcessor = getBankAccountProcessor(CCType, PayAmt);
|
MBankAccountProcessor bankAccountProcessor = getBankAccountProcessor(CCType, PayAmt);
|
||||||
kOnline.setEnabled(bankAccountProcessor != null);
|
kOnline.setEnabled(bankAccountProcessor != null);
|
||||||
setBankAccountProcessor(bankAccountProcessor);
|
setBankAccountProcessor(bankAccountProcessor);
|
||||||
|
|
||||||
MPaymentProcessor paymentProcessor = new MPaymentProcessor(Env.getCtx(), bankAccountProcessor.getC_PaymentProcessor_ID(), null);
|
if (bankAccountProcessor != null)
|
||||||
kApprovalField.setReadonly(!paymentProcessor.isRequireVV());
|
kApprovalField.setReadonly(!bankAccountProcessor.isRequireVV());
|
||||||
|
else
|
||||||
|
kApprovalField.setReadonly(false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -16,6 +16,7 @@ package org.compiere.grid;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
import org.adempiere.exceptions.AdempiereException;
|
import org.adempiere.exceptions.AdempiereException;
|
||||||
|
import org.adempiere.util.PaymentUtil;
|
||||||
import org.compiere.model.GridTab;
|
import org.compiere.model.GridTab;
|
||||||
import org.compiere.model.MBankAccountProcessor;
|
import org.compiere.model.MBankAccountProcessor;
|
||||||
import org.compiere.model.MDocType;
|
import org.compiere.model.MDocType;
|
||||||
|
@ -106,6 +107,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)
|
if (m_mPayment == null)
|
||||||
{
|
{
|
||||||
m_mPayment = new MPayment (Env.getCtx (), 0, null);
|
m_mPayment = new MPayment (Env.getCtx (), 0, null);
|
||||||
|
@ -231,24 +296,9 @@ public abstract class PaymentFormCreditCard extends PaymentForm {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Amount sign negative, if ARC (Credit Memo) or API (AP Invoice)
|
// 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;
|
BigDecimal payAmount = m_Amount;
|
||||||
|
if (isCreditMemo)
|
||||||
|
|
||||||
if (negateAmt)
|
|
||||||
payAmount = m_Amount.negate();
|
payAmount = m_Amount.negate();
|
||||||
// Info
|
|
||||||
log.config("C_Order_ID=" + C_Order_ID + ", C_Invoice_ID=" + C_Invoice_ID + ", NegateAmt=" + negateAmt);
|
|
||||||
|
|
||||||
/***********************
|
/***********************
|
||||||
* Payments
|
* Payments
|
||||||
|
@ -268,6 +318,7 @@ public abstract class PaymentFormCreditCard extends PaymentForm {
|
||||||
}
|
}
|
||||||
else if (C_Invoice_ID != 0)
|
else if (C_Invoice_ID != 0)
|
||||||
{
|
{
|
||||||
|
MInvoice invoice = new MInvoice (Env.getCtx(), C_Invoice_ID, null);
|
||||||
if (invoice.isComplete())
|
if (invoice.isComplete())
|
||||||
m_mPayment.setTrxType(MPayment.TRXTYPE_Sales);
|
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_BPartner_ID(m_C_BPartner_ID);
|
||||||
m_mPayment.setC_Invoice_ID(C_Invoice_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)
|
if (order != null)
|
||||||
{
|
{
|
||||||
m_mPayment.setC_Order_ID(C_Order_ID);
|
m_mPayment.setC_Order_ID(C_Order_ID);
|
||||||
|
@ -311,7 +369,12 @@ public abstract class PaymentFormCreditCard extends PaymentForm {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
log.fine("NotDraft " + m_mPayment);
|
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
|
* Save Values to mTab
|
||||||
|
@ -356,10 +419,14 @@ public abstract class PaymentFormCreditCard extends PaymentForm {
|
||||||
|
|
||||||
boolean approved = false;
|
boolean approved = false;
|
||||||
|
|
||||||
|
BigDecimal payAmount = m_Amount;
|
||||||
|
if (isCreditMemo)
|
||||||
|
payAmount = m_Amount.negate();
|
||||||
|
|
||||||
MPaymentTransaction mpt = new MPaymentTransaction(Env.getCtx(), 0, null);
|
MPaymentTransaction mpt = new MPaymentTransaction(Env.getCtx(), 0, null);
|
||||||
mpt.setAD_Org_ID(m_AD_Org_ID);
|
mpt.setAD_Org_ID(m_AD_Org_ID);
|
||||||
mpt.setCreditCard(MPayment.TRXTYPE_Sales, CCType, CCNumber, "", CCExp);
|
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();
|
mpt.setPaymentProcessor();
|
||||||
|
|
||||||
if (isPOSOrder || isInvoice)
|
if (isPOSOrder || isInvoice)
|
||||||
|
@ -377,7 +444,7 @@ public abstract class PaymentFormCreditCard extends PaymentForm {
|
||||||
}
|
}
|
||||||
else
|
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)
|
if (paymentProcessor.getTrxType() != null)
|
||||||
mpt.setTrxType(paymentProcessor.getTrxType());
|
mpt.setTrxType(paymentProcessor.getTrxType());
|
||||||
}
|
}
|
||||||
|
@ -400,7 +467,7 @@ public abstract class PaymentFormCreditCard extends PaymentForm {
|
||||||
m_needSave = true;
|
m_needSave = true;
|
||||||
if (mpt.getC_Payment_ID() > 0)
|
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();
|
String info = m_mPayment.getR_RespMsg() + " (" + m_mPayment.getR_AuthCode() + ") ID=" + m_mPayment.getR_PnRef();
|
||||||
processMsg = info + "\n" + m_mPayment.getDocumentNo();
|
processMsg = info + "\n" + m_mPayment.getDocumentNo();
|
||||||
saveChanges();
|
saveChanges();
|
||||||
|
|
Loading…
Reference in New Issue