diff --git a/migration/i1.0a-release/oracle/201304021807_TICKET-1001984.sql b/migration/i1.0a-release/oracle/201304021807_TICKET-1001984.sql new file mode 100644 index 0000000000..1121d4d4af --- /dev/null +++ b/migration/i1.0a-release/oracle/201304021807_TICKET-1001984.sql @@ -0,0 +1,32 @@ +-- Mar 25, 2013 6:11:15 PM SGT +-- Ticket #1001984: Avoiding Payment profile ID mess +INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,Updated,CreatedBy,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID,IsToolbarButton,IsAlwaysUpdateable,IsEncrypted) VALUES (0,'N',0,298,210214,'D','N','N','N',0,'N',10,'N',19,'N',1385,'N','Y','93cbf467-dbe3-4c00-b105-959b405e6106','Y','C_PaymentProcessor_ID','Payment processor for electronic payments','The Payment Processor indicates the processor to be used for electronic payments','Payment Processor','Y',TO_DATE('2013-03-25 18:11:13','YYYY-MM-DD HH24:MI:SS'),100,0,'Y',TO_DATE('2013-03-25 18:11:13','YYYY-MM-DD HH24:MI:SS'),100,0,'N','N','N') +; + +-- Mar 25, 2013 6:11:16 PM SGT +-- Ticket #1001984: Avoiding Payment profile ID mess +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=210214 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Mar 25, 2013 6:11:21 PM SGT +-- Ticket #1001984: Avoiding Payment profile ID mess +ALTER TABLE C_BP_BankAccount ADD C_PaymentProcessor_ID NUMBER(10) DEFAULT NULL +; + +-- Mar 25, 2013 6:11:53 PM SGT +-- Ticket #1001984: Avoiding Payment profile ID mess +INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,Help,EntityType,Description,Name,AD_Field_UU,IsDisplayed,IsFieldOnly,UpdatedBy,AD_Org_ID,Created,AD_Client_ID,CreatedBy,Updated,IsActive) VALUES ('N',226,10,'N','N',210214,'Y',201894,'N','The Payment Processor indicates the processor to be used for electronic payments','D','Payment processor for electronic payments','Payment Processor','bb23275a-069d-4436-8af3-d612e42dd4e6','Y','N',100,0,TO_DATE('2013-03-25 18:11:53','YYYY-MM-DD HH24:MI:SS'),0,100,TO_DATE('2013-03-25 18:11:53','YYYY-MM-DD HH24:MI:SS'),'Y') +; + +-- Mar 25, 2013 6:11:54 PM SGT +-- Ticket #1001984: Avoiding Payment profile ID mess +INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=201894 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID) +; + +-- Mar 25, 2013 6:12:32 PM SGT +-- Ticket #1001984: Avoiding Payment profile ID mess +UPDATE AD_Field SET ColumnSpan=2, IsSameLine='Y', IsReadOnly='Y', XPosition=4,Updated=TO_DATE('2013-03-25 18:12:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=201894 +; + +SELECT register_migration_script('201304021807_TICKET-1001984.sql') FROM dual +; \ No newline at end of file diff --git a/migration/i1.0a-release/postgresql/201304021807_TICKET-1001984.sql b/migration/i1.0a-release/postgresql/201304021807_TICKET-1001984.sql new file mode 100644 index 0000000000..adee98a1f1 --- /dev/null +++ b/migration/i1.0a-release/postgresql/201304021807_TICKET-1001984.sql @@ -0,0 +1,32 @@ +-- Mar 25, 2013 6:11:15 PM SGT +-- Ticket #1001984: Avoiding Payment profile ID mess +INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,Updated,CreatedBy,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID,IsToolbarButton,IsAlwaysUpdateable,IsEncrypted) VALUES (0,'N',0,298,210214,'D','N','N','N',0,'N',10,'N',19,'N',1385,'N','Y','93cbf467-dbe3-4c00-b105-959b405e6106','Y','C_PaymentProcessor_ID','Payment processor for electronic payments','The Payment Processor indicates the processor to be used for electronic payments','Payment Processor','Y',TO_TIMESTAMP('2013-03-25 18:11:13','YYYY-MM-DD HH24:MI:SS'),100,0,'Y',TO_TIMESTAMP('2013-03-25 18:11:13','YYYY-MM-DD HH24:MI:SS'),100,0,'N','N','N') +; + +-- Mar 25, 2013 6:11:16 PM SGT +-- Ticket #1001984: Avoiding Payment profile ID mess +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=210214 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Mar 25, 2013 6:11:21 PM SGT +-- Ticket #1001984: Avoiding Payment profile ID mess +ALTER TABLE C_BP_BankAccount ADD COLUMN C_PaymentProcessor_ID NUMERIC(10) DEFAULT NULL +; + +-- Mar 25, 2013 6:11:53 PM SGT +-- Ticket #1001984: Avoiding Payment profile ID mess +INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,Help,EntityType,Description,Name,AD_Field_UU,IsDisplayed,IsFieldOnly,UpdatedBy,AD_Org_ID,Created,AD_Client_ID,CreatedBy,Updated,IsActive) VALUES ('N',226,10,'N','N',210214,'Y',201894,'N','The Payment Processor indicates the processor to be used for electronic payments','D','Payment processor for electronic payments','Payment Processor','bb23275a-069d-4436-8af3-d612e42dd4e6','Y','N',100,0,TO_TIMESTAMP('2013-03-25 18:11:53','YYYY-MM-DD HH24:MI:SS'),0,100,TO_TIMESTAMP('2013-03-25 18:11:53','YYYY-MM-DD HH24:MI:SS'),'Y') +; + +-- Mar 25, 2013 6:11:54 PM SGT +-- Ticket #1001984: Avoiding Payment profile ID mess +INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=201894 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID) +; + +-- Mar 25, 2013 6:12:32 PM SGT +-- Ticket #1001984: Avoiding Payment profile ID mess +UPDATE AD_Field SET ColumnSpan=2, IsSameLine='Y', IsReadOnly='Y', XPosition=4,Updated=TO_TIMESTAMP('2013-03-25 18:12:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=201894 +; + +SELECT register_migration_script('201304021807_TICKET-1001984.sql') FROM dual +; \ No newline at end of file diff --git a/org.adempiere.base/src/org/adempiere/util/PaymentUtil.java b/org.adempiere.base/src/org/adempiere/util/PaymentUtil.java index 83454bf8d7..aeb711bfdf 100644 --- a/org.adempiere.base/src/org/adempiere/util/PaymentUtil.java +++ b/org.adempiere.base/src/org/adempiere/util/PaymentUtil.java @@ -36,16 +36,16 @@ public class PaymentUtil { private static final CLogger logger = CLogger.getCLogger(PaymentUtil.class); - public static MBPBankAccount[] getBankAccounts(MBPartner bpartner, - String creditCardNo) { + public static MBPBankAccount[] getBankAccounts(MBPartner bpartner, String creditCardNo, int C_PaymentProcessor_ID) { ArrayList list = new ArrayList(); - String sql = "SELECT * FROM C_BP_BankAccount WHERE C_BPartner_ID=? AND CREDITCARDNUMBER=? AND IsActive='Y' order by created"; + String sql = "SELECT * FROM C_BP_BankAccount WHERE C_BPartner_ID=? AND CreditCardNumber=? AND C_PaymentProcessor_ID = ? AND IsActive='Y' ORDER BY Created"; PreparedStatement pstmt = null; ResultSet rs = null; try { pstmt = DB.prepareStatement(sql, bpartner.get_TrxName()); pstmt.setInt(1, bpartner.getC_BPartner_ID()); pstmt.setString(2, creditCardNo); + pstmt.setInt(3, C_PaymentProcessor_ID); rs = pstmt.executeQuery(); while (rs.next()) list.add(new MBPBankAccount(bpartner.getCtx(), rs, bpartner diff --git a/org.adempiere.base/src/org/compiere/model/I_C_BP_BankAccount.java b/org.adempiere.base/src/org/compiere/model/I_C_BP_BankAccount.java index d92228a445..7885657903 100644 --- a/org.adempiere.base/src/org/compiere/model/I_C_BP_BankAccount.java +++ b/org.adempiere.base/src/org/compiere/model/I_C_BP_BankAccount.java @@ -41,19 +41,6 @@ public interface I_C_BP_BankAccount /** Load Meta Data */ - /** Column name AccountNo */ - public static final String COLUMNNAME_AccountNo = "AccountNo"; - - /** Set Account No. - * Account Number - */ - public void setAccountNo (String AccountNo); - - /** Get Account No. - * Account Number - */ - public String getAccountNo(); - /** Column name A_City */ public static final String COLUMNNAME_A_City = "A_City"; @@ -80,42 +67,6 @@ public interface I_C_BP_BankAccount */ public String getA_Country(); - /** Column name AD_Client_ID */ - public static final String COLUMNNAME_AD_Client_ID = "AD_Client_ID"; - - /** Get Client. - * Client/Tenant for this installation. - */ - public int getAD_Client_ID(); - - /** Column name AD_Org_ID */ - public static final String COLUMNNAME_AD_Org_ID = "AD_Org_ID"; - - /** Set Organization. - * Organizational entity within client - */ - public void setAD_Org_ID (int AD_Org_ID); - - /** Get Organization. - * Organizational entity within client - */ - public int getAD_Org_ID(); - - /** Column name AD_User_ID */ - public static final String COLUMNNAME_AD_User_ID = "AD_User_ID"; - - /** Set User/Contact. - * User within the system - Internal or Business Partner Contact - */ - public void setAD_User_ID (int AD_User_ID); - - /** Get User/Contact. - * User within the system - Internal or Business Partner Contact - */ - public int getAD_User_ID(); - - public org.compiere.model.I_AD_User getAD_User() throws RuntimeException; - /** Column name A_EMail */ public static final String COLUMNNAME_A_EMail = "A_EMail"; @@ -207,6 +158,55 @@ public interface I_C_BP_BankAccount */ public String getA_Zip(); + /** Column name AccountNo */ + public static final String COLUMNNAME_AccountNo = "AccountNo"; + + /** Set Account No. + * Account Number + */ + public void setAccountNo (String AccountNo); + + /** Get Account No. + * Account Number + */ + public String getAccountNo(); + + /** Column name AD_Client_ID */ + public static final String COLUMNNAME_AD_Client_ID = "AD_Client_ID"; + + /** Get Client. + * Client/Tenant for this installation. + */ + public int getAD_Client_ID(); + + /** Column name AD_Org_ID */ + public static final String COLUMNNAME_AD_Org_ID = "AD_Org_ID"; + + /** Set Organization. + * Organizational entity within client + */ + public void setAD_Org_ID (int AD_Org_ID); + + /** Get Organization. + * Organizational entity within client + */ + public int getAD_Org_ID(); + + /** Column name AD_User_ID */ + public static final String COLUMNNAME_AD_User_ID = "AD_User_ID"; + + /** Set User/Contact. + * User within the system - Internal or Business Partner Contact + */ + public void setAD_User_ID (int AD_User_ID); + + /** Get User/Contact. + * User within the system - Internal or Business Partner Contact + */ + public int getAD_User_ID(); + + public org.compiere.model.I_AD_User getAD_User() throws RuntimeException; + /** Column name BankAccountType */ public static final String COLUMNNAME_BankAccountType = "BankAccountType"; @@ -248,21 +248,6 @@ public interface I_C_BP_BankAccount public org.compiere.model.I_C_Bank getC_Bank() throws RuntimeException; - /** Column name C_BPartner_ID */ - public static final String COLUMNNAME_C_BPartner_ID = "C_BPartner_ID"; - - /** Set Business Partner . - * Identifies a Business Partner - */ - public void setC_BPartner_ID (int C_BPartner_ID); - - /** Get Business Partner . - * Identifies a Business Partner - */ - public int getC_BPartner_ID(); - - public org.compiere.model.I_C_BPartner getC_BPartner() throws RuntimeException; - /** Column name C_BP_BankAccount_ID */ public static final String COLUMNNAME_C_BP_BankAccount_ID = "C_BP_BankAccount_ID"; @@ -285,6 +270,36 @@ public interface I_C_BP_BankAccount /** Get C_BP_BankAccount_UU */ public String getC_BP_BankAccount_UU(); + /** Column name C_BPartner_ID */ + public static final String COLUMNNAME_C_BPartner_ID = "C_BPartner_ID"; + + /** Set Business Partner . + * Identifies a Business Partner + */ + public void setC_BPartner_ID (int C_BPartner_ID); + + /** Get Business Partner . + * Identifies a Business Partner + */ + public int getC_BPartner_ID(); + + public org.compiere.model.I_C_BPartner getC_BPartner() throws RuntimeException; + + /** Column name C_PaymentProcessor_ID */ + public static final String COLUMNNAME_C_PaymentProcessor_ID = "C_PaymentProcessor_ID"; + + /** Set Payment Processor. + * Payment processor for electronic payments + */ + public void setC_PaymentProcessor_ID (int C_PaymentProcessor_ID); + + /** Get Payment Processor. + * Payment processor for electronic payments + */ + public int getC_PaymentProcessor_ID(); + + public org.compiere.model.I_C_PaymentProcessor getC_PaymentProcessor() throws RuntimeException; + /** Column name Created */ public static final String COLUMNNAME_Created = "Created"; diff --git a/org.adempiere.base/src/org/compiere/model/MPayment.java b/org.adempiere.base/src/org/compiere/model/MPayment.java index 038e8b41c9..d19ffd1160 100644 --- a/org.adempiere.base/src/org/compiere/model/MPayment.java +++ b/org.adempiere.base/src/org/compiere/model/MPayment.java @@ -546,44 +546,54 @@ public final class MPayment extends X_C_Payment 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); - m_mPaymentTransaction.setProcessed(approved); - m_mPaymentTransaction.setC_Payment_ID(getC_Payment_ID()); - m_mPaymentTransaction.saveEx(); - - 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); - history.setProcessed(approved); - - StringBuilder msg = new StringBuilder(); - if (approved) + try { + MPaymentTransaction m_mPaymentTransaction = createPaymentTransaction(trx.getTrxName()); + m_mPaymentTransaction.setIsApproved(approved); if(getTrxType().equals(TRXTYPE_Void) || getTrxType().equals(TRXTYPE_CreditPayment)) - msg.append(getR_VoidMsg() + "\n"); - else + m_mPaymentTransaction.setIsVoided(approved); + m_mPaymentTransaction.setProcessed(approved); + m_mPaymentTransaction.setC_Payment_ID(getC_Payment_ID()); + m_mPaymentTransaction.saveEx(); + + 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); + history.setProcessed(approved); + + StringBuilder msg = new StringBuilder(); + if (approved) { - msg.append("Result: " + getR_Result() + "\n"); - msg.append("Response Message: " + getR_RespMsg() + "\n"); - msg.append("Reference: " + getR_PnRef() + "\n"); - msg.append("Authorization Code: " + getR_AuthCode() + "\n"); + if(getTrxType().equals(TRXTYPE_Void) || getTrxType().equals(TRXTYPE_CreditPayment)) + msg.append(getR_VoidMsg() + "\n"); + else + { + msg.append("Result: " + getR_Result() + "\n"); + msg.append("Response Message: " + getR_RespMsg() + "\n"); + msg.append("Reference: " + getR_PnRef() + "\n"); + msg.append("Authorization Code: " + getR_AuthCode() + "\n"); + } } + else + msg.append("ERROR: " + getErrorMessage() + "\n"); + msg.append("Transaction Type: " + getTrxType()); + history.setTextMsg(msg.toString()); + + history.saveEx(); } - else - msg.append("ERROR: " + getErrorMessage() + "\n"); - msg.append("Transaction Type: " + getTrxType()); - history.setTextMsg(msg.toString()); - - history.saveEx(); - - if (trx != null) + catch (Exception e) { - trx.commit(); - trx.close(); + log.log(Level.SEVERE, "processOnline", e); + setErrorMessage(Msg.getMsg(Env.getCtx(), "PaymentNotProcessed") + ": " + e.getMessage()); + } + finally + { + if (trx != null) + { + trx.commit(); + trx.close(); + } } if(getTrxType().equals(TRXTYPE_Void) || getTrxType().equals(TRXTYPE_CreditPayment)) @@ -916,7 +926,7 @@ public final class MPayment extends X_C_Payment */ public boolean setPaymentProcessor () { - return setPaymentProcessor (getTenderType(), getCreditCardType()); + return setPaymentProcessor (getTenderType(), getCreditCardType(), getC_PaymentProcessor_ID()); } // setPaymentProcessor /** @@ -925,7 +935,7 @@ public final class MPayment extends X_C_Payment * @param CCType CC Type see CC_ * @return true if found */ - public boolean setPaymentProcessor (String tender, String CCType) + public boolean setPaymentProcessor (String tender, String CCType, int C_PaymentProcessor_ID) { m_mBankAccountProcessor = null; // Get Processor List @@ -945,8 +955,11 @@ public final class MPayment extends X_C_Payment MBankAccountProcessor bankAccountProcessor = m_mBankAccountProcessors[i]; if (bankAccountProcessor.accepts(tender, CCType)) { - m_mBankAccountProcessor = m_mBankAccountProcessors[i]; - break; + if (C_PaymentProcessor_ID == 0 || bankAccountProcessor.getC_PaymentProcessor_ID() == C_PaymentProcessor_ID) + { + m_mBankAccountProcessor = m_mBankAccountProcessors[i]; + break; + } } } if (m_mBankAccountProcessor != null) diff --git a/org.adempiere.base/src/org/compiere/model/MPaymentTransaction.java b/org.adempiere.base/src/org/compiere/model/MPaymentTransaction.java index 6dd107eddb..7a21a9c088 100644 --- a/org.adempiere.base/src/org/compiere/model/MPaymentTransaction.java +++ b/org.adempiere.base/src/org/compiere/model/MPaymentTransaction.java @@ -121,7 +121,7 @@ public class MPaymentTransaction extends X_C_PaymentTransaction implements Proce public boolean setPaymentProcessor () { - return setPaymentProcessor (getTenderType(), getCreditCardType()); + return setPaymentProcessor (getTenderType(), getCreditCardType(), getC_PaymentProcessor_ID()); } /** Temporary Bank Account Processors */ @@ -129,7 +129,7 @@ public class MPaymentTransaction extends X_C_PaymentTransaction implements Proce /** Temporary Bank Account Processor */ private MBankAccountProcessor m_mBankAccountProcessor = null; - public boolean setPaymentProcessor (String tender, String CCType) + public boolean setPaymentProcessor (String tender, String CCType, int C_PaymentProcessor_ID) { m_mBankAccountProcessor = null; // Get Processor List @@ -149,8 +149,11 @@ public class MPaymentTransaction extends X_C_PaymentTransaction implements Proce MBankAccountProcessor bankAccountProcessor = m_mBankAccountProcessors[i]; if (bankAccountProcessor.accepts(tender, CCType)) { - m_mBankAccountProcessor = m_mBankAccountProcessors[i]; - break; + if (C_PaymentProcessor_ID == 0 || bankAccountProcessor.getC_PaymentProcessor_ID() == C_PaymentProcessor_ID) + { + m_mBankAccountProcessor = m_mBankAccountProcessors[i]; + break; + } } } if (m_mBankAccountProcessor != null) @@ -320,28 +323,39 @@ public class MPaymentTransaction extends X_C_PaymentTransaction implements Proce { 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(get_TrxName()); - m_mPaymentTransaction.setRef_PaymentTransaction_ID(getC_PaymentTransaction_ID()); - m_mPaymentTransaction.saveEx(); - - if (trx != null) + boolean ok = false; + try { - trx.commit(); - trx.close(); + 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); + ok = m_mPaymentTransaction.processOnline(get_TrxName()); + m_mPaymentTransaction.setRef_PaymentTransaction_ID(getC_PaymentTransaction_ID()); + m_mPaymentTransaction.saveEx(); + + if (ok) + { + setIsVoided(true); + setR_VoidMsg(m_mPaymentTransaction.getR_VoidMsg()); + setRef_PaymentTransaction_ID(m_mPaymentTransaction.getC_PaymentTransaction_ID()); + } + else + setErrorMessage(m_mPaymentTransaction.getErrorMessage()); } - - if (ok) + catch (Exception e) { - setIsVoided(true); - setR_VoidMsg(m_mPaymentTransaction.getR_VoidMsg()); - setRef_PaymentTransaction_ID(m_mPaymentTransaction.getC_PaymentTransaction_ID()); + log.log(Level.SEVERE, "voidOnlineAuthorizationPaymentTransaction", e); + setErrorMessage(Msg.getMsg(Env.getCtx(), "PaymentNotProcessed") + ": " + e.getMessage()); + } + finally + { + if (trx != null) + { + trx.commit(); + trx.close(); + } } - else - setErrorMessage(m_mPaymentTransaction.getErrorMessage()); return ok; } @@ -355,33 +369,44 @@ public class MPaymentTransaction extends X_C_PaymentTransaction implements Proce { 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); - - if (C_Invoice_ID != 0) - m_mPaymentTransaction.setC_Invoice_ID(C_Invoice_ID); - - 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) + boolean ok = false; + try { + 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); + if (C_Invoice_ID != 0) - setC_Invoice_ID(C_Invoice_ID); - setIsDelayedCapture(true); - setRef_PaymentTransaction_ID(m_mPaymentTransaction.getC_PaymentTransaction_ID()); + m_mPaymentTransaction.setC_Invoice_ID(C_Invoice_ID); + + ok = m_mPaymentTransaction.processOnline(get_TrxName()); + m_mPaymentTransaction.setRef_PaymentTransaction_ID(getC_PaymentTransaction_ID()); + m_mPaymentTransaction.saveEx(); + + if (ok) + { + if (C_Invoice_ID != 0) + setC_Invoice_ID(C_Invoice_ID); + setIsDelayedCapture(true); + setRef_PaymentTransaction_ID(m_mPaymentTransaction.getC_PaymentTransaction_ID()); + } + else + setErrorMessage(m_mPaymentTransaction.getErrorMessage()); + } + catch (Exception e) + { + log.log(Level.SEVERE, "delayCaptureOnlineAuthorizationPaymentTransaction", e); + setErrorMessage(Msg.getMsg(Env.getCtx(), "PaymentNotProcessed") + ": " + e.getMessage()); + } + finally + { + if (trx != null) + { + trx.commit(); + trx.close(); + } } - else - setErrorMessage(m_mPaymentTransaction.getErrorMessage()); return ok; } diff --git a/org.adempiere.base/src/org/compiere/model/X_C_BP_BankAccount.java b/org.adempiere.base/src/org/compiere/model/X_C_BP_BankAccount.java index 74f237b106..38ec0eeee8 100644 --- a/org.adempiere.base/src/org/compiere/model/X_C_BP_BankAccount.java +++ b/org.adempiere.base/src/org/compiere/model/X_C_BP_BankAccount.java @@ -30,7 +30,7 @@ public class X_C_BP_BankAccount extends PO implements I_C_BP_BankAccount, I_Pers /** * */ - private static final long serialVersionUID = 20121031L; + private static final long serialVersionUID = 20130325L; /** Standard Constructor */ public X_C_BP_BankAccount (Properties ctx, int C_BP_BankAccount_ID, String trxName) @@ -39,8 +39,8 @@ public class X_C_BP_BankAccount extends PO implements I_C_BP_BankAccount, I_Pers /** if (C_BP_BankAccount_ID == 0) { setA_Name (null); - setC_BPartner_ID (0); setC_BP_BankAccount_ID (0); + setC_BPartner_ID (0); setIsACH (false); } */ } @@ -73,23 +73,6 @@ public class X_C_BP_BankAccount extends PO implements I_C_BP_BankAccount, I_Pers return sb.toString(); } - /** Set Account No. - @param AccountNo - Account Number - */ - public void setAccountNo (String AccountNo) - { - set_Value (COLUMNNAME_AccountNo, AccountNo); - } - - /** Get Account No. - @return Account Number - */ - public String getAccountNo () - { - return (String)get_Value(COLUMNNAME_AccountNo); - } - /** Set Account City. @param A_City City or the Credit Card or Account Holder @@ -124,34 +107,6 @@ public class X_C_BP_BankAccount extends PO implements I_C_BP_BankAccount, I_Pers return (String)get_Value(COLUMNNAME_A_Country); } - public org.compiere.model.I_AD_User getAD_User() throws RuntimeException - { - return (org.compiere.model.I_AD_User)MTable.get(getCtx(), org.compiere.model.I_AD_User.Table_Name) - .getPO(getAD_User_ID(), get_TrxName()); } - - /** Set User/Contact. - @param AD_User_ID - User within the system - Internal or Business Partner Contact - */ - public void setAD_User_ID (int AD_User_ID) - { - if (AD_User_ID < 1) - set_Value (COLUMNNAME_AD_User_ID, null); - else - set_Value (COLUMNNAME_AD_User_ID, Integer.valueOf(AD_User_ID)); - } - - /** Get User/Contact. - @return User within the system - Internal or Business Partner Contact - */ - public int getAD_User_ID () - { - Integer ii = (Integer)get_Value(COLUMNNAME_AD_User_ID); - if (ii == null) - return 0; - return ii.intValue(); - } - /** Set Account EMail. @param A_EMail Email Address @@ -279,6 +234,51 @@ public class X_C_BP_BankAccount extends PO implements I_C_BP_BankAccount, I_Pers return (String)get_Value(COLUMNNAME_A_Zip); } + /** Set Account No. + @param AccountNo + Account Number + */ + public void setAccountNo (String AccountNo) + { + set_Value (COLUMNNAME_AccountNo, AccountNo); + } + + /** Get Account No. + @return Account Number + */ + public String getAccountNo () + { + return (String)get_Value(COLUMNNAME_AccountNo); + } + + public org.compiere.model.I_AD_User getAD_User() throws RuntimeException + { + return (org.compiere.model.I_AD_User)MTable.get(getCtx(), org.compiere.model.I_AD_User.Table_Name) + .getPO(getAD_User_ID(), get_TrxName()); } + + /** Set User/Contact. + @param AD_User_ID + User within the system - Internal or Business Partner Contact + */ + public void setAD_User_ID (int AD_User_ID) + { + if (AD_User_ID < 1) + set_Value (COLUMNNAME_AD_User_ID, null); + else + set_Value (COLUMNNAME_AD_User_ID, Integer.valueOf(AD_User_ID)); + } + + /** Get User/Contact. + @return User within the system - Internal or Business Partner Contact + */ + public int getAD_User_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_AD_User_ID); + if (ii == null) + return 0; + return ii.intValue(); + } + /** BankAccountType AD_Reference_ID=216 */ public static final int BANKACCOUNTTYPE_AD_Reference_ID=216; /** Checking = C */ @@ -363,34 +363,6 @@ public class X_C_BP_BankAccount extends PO implements I_C_BP_BankAccount, I_Pers return ii.intValue(); } - public org.compiere.model.I_C_BPartner getC_BPartner() throws RuntimeException - { - return (org.compiere.model.I_C_BPartner)MTable.get(getCtx(), org.compiere.model.I_C_BPartner.Table_Name) - .getPO(getC_BPartner_ID(), get_TrxName()); } - - /** Set Business Partner . - @param C_BPartner_ID - Identifies a Business Partner - */ - public void setC_BPartner_ID (int C_BPartner_ID) - { - if (C_BPartner_ID < 1) - set_ValueNoCheck (COLUMNNAME_C_BPartner_ID, null); - else - set_ValueNoCheck (COLUMNNAME_C_BPartner_ID, Integer.valueOf(C_BPartner_ID)); - } - - /** Get Business Partner . - @return Identifies a Business Partner - */ - public int getC_BPartner_ID () - { - Integer ii = (Integer)get_Value(COLUMNNAME_C_BPartner_ID); - if (ii == null) - return 0; - return ii.intValue(); - } - /** Set Partner Bank Account. @param C_BP_BankAccount_ID Bank Account of the Business Partner @@ -428,6 +400,62 @@ public class X_C_BP_BankAccount extends PO implements I_C_BP_BankAccount, I_Pers return (String)get_Value(COLUMNNAME_C_BP_BankAccount_UU); } + public org.compiere.model.I_C_BPartner getC_BPartner() throws RuntimeException + { + return (org.compiere.model.I_C_BPartner)MTable.get(getCtx(), org.compiere.model.I_C_BPartner.Table_Name) + .getPO(getC_BPartner_ID(), get_TrxName()); } + + /** Set Business Partner . + @param C_BPartner_ID + Identifies a Business Partner + */ + public void setC_BPartner_ID (int C_BPartner_ID) + { + if (C_BPartner_ID < 1) + set_ValueNoCheck (COLUMNNAME_C_BPartner_ID, null); + else + set_ValueNoCheck (COLUMNNAME_C_BPartner_ID, Integer.valueOf(C_BPartner_ID)); + } + + /** Get Business Partner . + @return Identifies a Business Partner + */ + public int getC_BPartner_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_C_BPartner_ID); + if (ii == null) + return 0; + return ii.intValue(); + } + + public org.compiere.model.I_C_PaymentProcessor getC_PaymentProcessor() throws RuntimeException + { + return (org.compiere.model.I_C_PaymentProcessor)MTable.get(getCtx(), org.compiere.model.I_C_PaymentProcessor.Table_Name) + .getPO(getC_PaymentProcessor_ID(), get_TrxName()); } + + /** Set Payment Processor. + @param C_PaymentProcessor_ID + Payment processor for electronic payments + */ + public void setC_PaymentProcessor_ID (int C_PaymentProcessor_ID) + { + if (C_PaymentProcessor_ID < 1) + set_Value (COLUMNNAME_C_PaymentProcessor_ID, null); + else + set_Value (COLUMNNAME_C_PaymentProcessor_ID, Integer.valueOf(C_PaymentProcessor_ID)); + } + + /** Get Payment Processor. + @return Payment processor for electronic payments + */ + public int getC_PaymentProcessor_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_C_PaymentProcessor_ID); + if (ii == null) + return 0; + return ii.intValue(); + } + /** Set Exp. Month. @param CreditCardExpMM Expiry Month