IDEMPIERE-860 Review Payment Processors
This commit is contained in:
parent
37ca5f423a
commit
9c8f5b7363
|
@ -1964,7 +1964,18 @@ public class MInvoice extends X_C_Invoice implements DocAction
|
|||
// auto delay capture authorization payment
|
||||
if (isSOTrx() && !isReversal())
|
||||
{
|
||||
int[] ids = MPaymentTransaction.getAuthorizationPaymentTransactionIDs(getC_Order_ID(), getC_Invoice_ID(), get_TrxName());
|
||||
StringBuilder whereClause = new StringBuilder();
|
||||
whereClause.append("C_Order_ID IN (");
|
||||
whereClause.append("SELECT C_Order_ID ");
|
||||
whereClause.append("FROM C_OrderLine ");
|
||||
whereClause.append("WHERE C_OrderLine_ID IN (");
|
||||
whereClause.append("SELECT C_OrderLine_ID ");
|
||||
whereClause.append("FROM C_InvoiceLine ");
|
||||
whereClause.append("WHERE C_Invoice_ID = ");
|
||||
whereClause.append(getC_Invoice_ID()).append("))");
|
||||
int[] orderIDList = MOrder.getAllIDs(MOrder.Table_Name, whereClause.toString(), get_TrxName());
|
||||
|
||||
int[] ids = MPaymentTransaction.getAuthorizationPaymentTransactionIDs(orderIDList, getC_Invoice_ID(), get_TrxName());
|
||||
if (ids.length > 0)
|
||||
{
|
||||
ArrayList<MPaymentTransaction> ptList = new ArrayList<MPaymentTransaction>();
|
||||
|
@ -1972,8 +1983,6 @@ public class MInvoice extends X_C_Invoice implements DocAction
|
|||
for (int id : ids)
|
||||
{
|
||||
MPaymentTransaction pt = new MPaymentTransaction(Env.getCtx(), id, get_TrxName());
|
||||
|
||||
|
||||
totalPayAmt = totalPayAmt.add(pt.getPayAmt());
|
||||
ptList.add(pt);
|
||||
}
|
||||
|
|
|
@ -644,4 +644,32 @@ public class MPaymentTransaction extends X_C_PaymentTransaction implements Proce
|
|||
|
||||
return MPaymentTransaction.getAllIDs(Table_Name, whereClause.toString(), trxName);
|
||||
}
|
||||
|
||||
public static int[] getAuthorizationPaymentTransactionIDs(int[] orderIDList, int C_Invoice_ID, String trxName)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
if (orderIDList != null)
|
||||
{
|
||||
for (int orderID : orderIDList)
|
||||
sb.append(orderID).append(",");
|
||||
}
|
||||
|
||||
String orderIDs = sb.toString();
|
||||
if (orderIDs.length() > 0)
|
||||
orderIDs = orderIDs.substring(0, orderIDs.length() - 1);
|
||||
|
||||
StringBuilder whereClause = new StringBuilder();
|
||||
whereClause.append("TenderType='").append(MPaymentTransaction.TENDERTYPE_CreditCard).append("' ");
|
||||
whereClause.append("AND TrxType='").append(MPaymentTransaction.TRXTYPE_Authorization).append("' ");
|
||||
if (orderIDs.length() > 0 && C_Invoice_ID > 0)
|
||||
whereClause.append(" AND (C_Order_ID IN (").append(orderIDs).append(") OR C_Invoice_ID=").append(C_Invoice_ID).append(")");
|
||||
else if (orderIDs.length() > 0)
|
||||
whereClause.append(" AND C_Order_ID IN ('").append(orderIDs).append(")");
|
||||
else if (C_Invoice_ID > 0)
|
||||
whereClause.append(" AND C_Invoice_ID=").append(C_Invoice_ID);
|
||||
whereClause.append(" AND IsApproved='Y' AND IsVoided='N' AND IsDelayedCapture='N' ");
|
||||
whereClause.append("ORDER BY DateTrx DESC");
|
||||
|
||||
return MPaymentTransaction.getAllIDs(Table_Name, whereClause.toString(), trxName);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -216,6 +216,7 @@ public abstract class PaymentForm implements IPaymentForm {
|
|||
{
|
||||
int retValue = 0;
|
||||
String sql = "SELECT C_Invoice_ID FROM C_Invoice WHERE C_Order_ID=? "
|
||||
+ "AND DocStatus NOT IN ('VO','RE') "
|
||||
+ "ORDER BY C_Invoice_ID DESC"; // last invoice
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet rs = null;
|
||||
|
|
Loading…
Reference in New Issue