📄 vpayment.java
字号:
} // have invoice
}
/***********************
* Payments
*/
if ("KTSD".indexOf(newPaymentRule) != -1)
{
log.fine("Payment - " + newPaymentRule);
// Set Amount
m_mPayment.setAmount(m_C_Currency_ID, payAmount);
if (newPaymentRule.equals(MOrder.PAYMENTRULE_CreditCard))
{
m_mPayment.setCreditCard(MPayment.TRXTYPE_Sales, newCCType,
kNumberField.getText(), "", kExpField.getText());
m_mPayment.setPaymentProcessor();
}
else if (newPaymentRule.equals(MOrder.PAYMENTRULE_DirectDeposit)
|| newPaymentRule.equals(MOrder.PAYMENTRULE_DirectDebit))
{
m_mPayment.setBankACH(newC_BankAccount_ID, m_isSOTrx, newPaymentRule,
tRoutingField.getText(), tNumberField.getText());
}
else if (newPaymentRule.equals(MOrder.PAYMENTRULE_Check))
{
m_mPayment.setBankCheck(newC_BankAccount_ID, m_isSOTrx, sRoutingField.getText(),
sNumberField.getText(), sCheckField.getText());
}
m_mPayment.setC_BPartner_ID(m_C_BPartner_ID);
m_mPayment.setC_Invoice_ID(C_Invoice_ID);
if (order != null)
{
m_mPayment.setC_Order_ID(C_Order_ID);
m_needSave = true;
}
m_mPayment.setDateTrx(m_DateAcct);
m_mPayment.setDateAcct(m_DateAcct);
m_mPayment.save();
// Save/Post
if (MPayment.DOCSTATUS_Drafted.equals(m_mPayment.getDocStatus()))
{
boolean ok = m_mPayment.processIt(DocAction.ACTION_Complete);
m_mPayment.save();
if (ok)
ADialog.info(m_WindowNo, this, "PaymentCreated", m_mPayment.getDocumentNo());
else
ADialog.error(m_WindowNo, this, "PaymentError", "PaymentNotCreated");
}
else
log.fine("NotDraft " + m_mPayment);
}
/**********************
* Save Values to mTab
*/
log.config("Saving changes");
//
if (!newPaymentRule.equals(m_PaymentRule))
m_mTab.setValue("PaymentRule", newPaymentRule);
//
if (!newDateAcct.equals(m_DateAcct))
m_mTab.setValue("DateAcct", newDateAcct);
//
if (newC_PaymentTerm_ID != m_C_PaymentTerm_ID)
m_mTab.setValue("C_PaymentTerm_ID", new Integer(newC_PaymentTerm_ID));
// Set Payment
if (m_mPayment.getC_Payment_ID() != m_C_Payment_ID)
{
if (m_mPayment.getC_Payment_ID() == 0)
m_mTab.setValue("C_Payment_ID", null);
else
m_mTab.setValue("C_Payment_ID", new Integer(m_mPayment.getC_Payment_ID()));
}
// Set Cash
if (newC_CashLine_ID != m_C_CashLine_ID)
{
if (newC_CashLine_ID == 0)
m_mTab.setValue("C_CashLine_ID", null);
else
m_mTab.setValue("C_CashLine_ID", new Integer(newC_CashLine_ID));
}
return true;
} // saveChanges
/**
* Check Mandatory
* @return true if all mandatory items are OK
*/
private boolean checkMandatory()
{
// log.config( "VPayment.checkMandatory");
ValueNamePair vp = (ValueNamePair)paymentCombo.getSelectedItem();
String PaymentRule = vp.getValue();
// only Payment Rule
if (m_onlyRule)
return true;
Timestamp DateAcct = m_DateAcct;
int C_PaymentTerm_ID = m_C_PaymentTerm_ID;
int C_CashBook_ID = m_C_CashBook_ID;
String CCType = m_CCType;
//
int C_BankAccount_ID = 0;
/***********************
* Mandatory Data Check
*/
boolean dataOK = true;
// B (Cash) (Currency)
if (PaymentRule.equals(MOrder.PAYMENTRULE_Cash))
{
KeyNamePair kp = (KeyNamePair)bCashBookCombo.getSelectedItem();
if (kp != null)
C_CashBook_ID = kp.getKey();
DateAcct = (Timestamp)bDateField.getValue();
}
// K (CreditCard) Type, Number, Exp, Approval
else if (PaymentRule.equals(MOrder.PAYMENTRULE_CreditCard))
{
vp = (ValueNamePair)kTypeCombo.getSelectedItem();
if (vp != null)
CCType = vp.getValue();
//
String error = MPaymentValidate.validateCreditCardNumber(kNumberField.getText(), CCType);
if (error.length() != 0)
{
kNumberField.setBackground(CompierePLAF.getFieldBackground_Error());
if (error.indexOf("?") == -1)
{
ADialog.error(m_WindowNo, this, error);
dataOK = false;
}
else // warning
{
if (!ADialog.ask(m_WindowNo, this, error))
dataOK = false;
}
}
error = MPaymentValidate.validateCreditCardExp(kExpField.getText());
if(error.length() != 0)
{
kExpField.setBackground(CompierePLAF.getFieldBackground_Error());
ADialog.error(m_WindowNo, this, error);
dataOK = false;
}
}
// T (Transfer) BPartner_Bank
else if (PaymentRule.equals(MOrder.PAYMENTRULE_DirectDeposit)
|| PaymentRule.equals(MOrder.PAYMENTRULE_DirectDebit))
{
tAccountCombo.getSelectedItem();
String error = MPaymentValidate.validateRoutingNo(tRoutingField.getText());
if (error.length() != 0)
{
tRoutingField.setBackground(CompierePLAF.getFieldBackground_Error());
ADialog.error(m_WindowNo, this, error);
dataOK = false;
}
error = MPaymentValidate.validateAccountNo(tNumberField.getText());
if (error.length() != 0)
{
tNumberField.setBackground(CompierePLAF.getFieldBackground_Error());
ADialog.error(m_WindowNo, this, error);
dataOK = false;
}
}
// P (PaymentTerm) PaymentTerm
else if (PaymentRule.equals(MOrder.PAYMENTRULE_OnCredit))
{
KeyNamePair kp = (KeyNamePair)pTermCombo.getSelectedItem();
if (kp != null)
C_PaymentTerm_ID = kp.getKey();
}
// S (Check) (Currency) CheckNo, Routing
else if (PaymentRule.equals(MOrder.PAYMENTRULE_Check))
{
// sCurrencyCombo.getSelectedItem();
KeyNamePair kp = (KeyNamePair)sBankAccountCombo.getSelectedItem();
if (kp != null)
C_BankAccount_ID = kp.getKey();
String error = MPaymentValidate.validateRoutingNo(sRoutingField.getText());
if (error.length() != 0)
{
sRoutingField.setBackground(CompierePLAF.getFieldBackground_Error());
ADialog.error(m_WindowNo, this, error);
dataOK = false;
}
error = MPaymentValidate.validateAccountNo(sNumberField.getText());
if (error.length() != 0)
{
sNumberField.setBackground(CompierePLAF.getFieldBackground_Error());
ADialog.error(m_WindowNo, this, error);
dataOK = false;
}
error = MPaymentValidate.validateCheckNo(sCheckField.getText());
if (error.length() != 0)
{
sCheckField.setBackground(CompierePLAF.getFieldBackground_Error());
ADialog.error(m_WindowNo, this, error);
dataOK = false;
}
}
else
{
log.log(Level.SEVERE, "Unknown PaymentRule " + PaymentRule);
return false;
}
// find Bank Account if not qualified yet
if ("KTSD".indexOf(PaymentRule) != -1 && C_BankAccount_ID == 0)
{
String tender = MPayment.TENDERTYPE_CreditCard;
if (PaymentRule.equals(MOrder.PAYMENTRULE_DirectDeposit))
tender = MPayment.TENDERTYPE_DirectDeposit;
else if (PaymentRule.equals(MOrder.PAYMENTRULE_DirectDebit))
tender = MPayment.TENDERTYPE_DirectDebit;
else if (PaymentRule.equals(MOrder.PAYMENTRULE_Check))
tender = MPayment.TENDERTYPE_Check;
// ACH & Check must have a bank account
if (C_BankAccount_ID == 0 && "TS".indexOf(PaymentRule) != -1)
{
ADialog.error(m_WindowNo, this, "PaymentNoProcessor");
dataOK = false;
}
}
//
log.config("OK=" + dataOK);
return dataOK;
} // checkMandatory
/**
* Get Invoice ID for Order
* @param C_Order_ID order
* @return C_Invoice_ID or 0 if not found
*/
private static int getInvoiceID (int C_Order_ID)
{
int retValue = 0;
String sql = "SELECT C_Invoice_ID FROM C_Invoice WHERE C_Order_ID=? "
+ "ORDER BY C_Invoice_ID DESC"; // last invoice
try
{
PreparedStatement pstmt = DB.prepareStatement(sql, null);
pstmt.setInt(1, C_Order_ID);
ResultSet rs = pstmt.executeQuery();
if (rs.next())
retValue = rs.getInt(1);
rs.close();
pstmt.close();
}
catch (SQLException e)
{
log.log(Level.SEVERE, sql, e);
}
return retValue;
} // getInvoiceID
/**************************************************************************
* Process Online (sales only) - if approved - exit
*/
private void processOnline()
{
log.config("");
if (!checkMandatory())
return;
boolean approved = false;
String info = "";
//
ValueNamePair vp = (ValueNamePair)paymentCombo.getSelectedItem();
String PaymentRule = vp.getValue();
// -- CreditCard
if (PaymentRule.equals(X_C_Order.PAYMENTRULE_CreditCard))
{
vp = (ValueNamePair)kTypeCombo.getSelectedItem();
String CCType = vp.getValue();
m_mPayment.setCreditCard(MPayment.TRXTYPE_Sales, CCType,
kNumberField.getText(), "", kExpField.getText());
m_mPayment.setAmount(m_C_Currency_ID, m_Amount);
m_mPayment.setPaymentProcessor();
m_mPayment.setC_BPartner_ID(m_C_BPartner_ID);
//
int C_Invoice_ID = Env.getContextAsInt(Env.getCtx(), m_WindowNo, "C_Invoice_ID");
if (C_Invoice_ID == 0 && m_DocStatus.equals("CO"))
{
int C_Order_ID = Env.getContextAsInt(Env.getCtx(), m_WindowNo, "C_Order_ID");
C_Invoice_ID = getInvoiceID (C_Order_ID);
}
m_mPayment.setC_Invoice_ID(C_Invoice_ID);
m_mPayment.setDateTrx(m_DateAcct);
// Set Amount
m_mPayment.setAmount(m_C_Currency_ID, m_Amount);
approved = m_mPayment.processOnline();
info = m_mPayment.getR_RespMsg() + " (" + m_mPayment.getR_AuthCode()
+ ") ID=" + m_mPayment.getR_PnRef();
boolean saved = m_mPayment.save();
if (approved)
{
boolean ok = m_mPayment.processIt(DocAction.ACTION_Complete);
m_mPayment.save();
if (ok)
ADialog.info(m_WindowNo, this, "PaymentProcessed", info + "\n" + m_mPayment.getDocumentNo());
else
ADialog.error(m_WindowNo, this, "PaymentError", "PaymentNotCreated");
saveChanges();
dispose();
}
else
{
ADialog.error(m_WindowNo, this, "PaymentNotProcessed", info);
}
}
else
ADialog.error(m_WindowNo, this, "PaymentNoProcessor");
} // online
/**
* Need Save record (payment with waiting order)
* @return true if payment with waiting order
*/
public boolean needSave()
{
return m_needSave;
} // needSave
} // VPayment
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -