details:   https://code.openbravo.com/erp/devel/pi/rev/25b229f91bc6
changeset: 13953:25b229f91bc6
user:      Eduardo Argal Guibert <eduardo.argal <at> openbravo.com>
date:      Tue Oct 04 18:02:36 2011 +0200
summary:   Fixes bug 18671: you can not add transaction

details:   https://code.openbravo.com/erp/devel/pi/rev/c1ff66bd4866
changeset: 13954:c1ff66bd4866
user:      Eduardo Argal Guibert <eduardo.argal <at> openbravo.com>
date:      Thu Oct 06 09:57:26 2011 +0200
summary:   Fixes bug 18712: transaction with multi currency cannot be deleted

diffstat:

 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddTransaction.java
   |  51 +++++-
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/MatchTransaction.java
 |  38 ++++-
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/TransactionsDao.java
              |   1 +
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_ExecutePayment.java
       |  43 +++++-
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java
       |  76 +++++++++-
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_TransactionProcess.java
   |  60 +++++++
 src-db/database/model/triggers/FIN_FINACC_TRANSACTION_TRG.xml                  
                             |  78 ---------
 src-db/database/model/triggers/FIN_PAYMENT_TRG.xml                             
                             |  81 ----------
 8 files changed, 259 insertions(+), 169 deletions(-)

diffs (truncated from 640 to 300 lines):

diff -r 5782da5a0bb8 -r c1ff66bd4866 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddTransaction.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddTransaction.java
 Tue Oct 11 11:52:51 2011 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddTransaction.java
 Thu Oct 06 09:57:26 2011 +0200
@@ -36,6 +36,7 @@
 import org.hibernate.criterion.Restrictions;
 import org.openbravo.advpaymentmngt.dao.AdvPaymentMngtDao;
 import org.openbravo.advpaymentmngt.dao.TransactionsDao;
+import org.openbravo.advpaymentmngt.process.FIN_TransactionProcess;
 import org.openbravo.advpaymentmngt.utility.FIN_Utility;
 import org.openbravo.base.exception.OBException;
 import org.openbravo.base.filter.IsIDFilter;
@@ -46,6 +47,7 @@
 import org.openbravo.dal.service.OBCriteria;
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.data.FieldProvider;
+import org.openbravo.database.ConnectionProvider;
 import org.openbravo.erpCommon.utility.DateTimeData;
 import org.openbravo.erpCommon.utility.FieldProviderFactory;
 import org.openbravo.erpCommon.utility.OBError;
@@ -62,6 +64,8 @@
 import org.openbravo.model.materialmgmt.cost.ABCActivity;
 import org.openbravo.model.project.Project;
 import org.openbravo.model.sales.SalesRegion;
+import org.openbravo.scheduling.ProcessBundle;
+import org.openbravo.service.db.DalConnectionProvider;
 import org.openbravo.xmlEngine.XmlDocument;
 
 public class AddTransaction extends HttpSecureAppServlet {
@@ -162,7 +166,11 @@
                   : "PWNC", depositAmt, paymentAmt, null, null, null,
               p.isReceipt() ? "BPD" : "BPW", 
FIN_Utility.getDate(strTransactionDate), p
                   .getCurrency(), p.getFinancialTransactionConvertRate(), 
p.getAmount());
-          TransactionsDao.process(finTrans);
+          OBError processTransactionError = processTransaction(vars, new 
DalConnectionProvider(),
+              "P", finTrans);
+          if (processTransactionError != null && 
processTransactionError.getType().equals("Error")) {
+            throw new OBException(processTransactionError.getMessage());
+          }
           if (!"".equals(strFinBankStatementLineId)) {
             matchBankStatementLine(vars, finTrans, strFinBankStatementLineId);
           }
@@ -211,8 +219,11 @@
             glItemDepositAmt, glItemPaymentAmt, project, campaign, activity, 
isReceipt ? "BPD"
                 : "BPW", FIN_Utility.getDate(strTransactionDate), null, null, 
null,
             businessPartner, product, salesRegion);
-
-        TransactionsDao.process(finTrans);
+        OBError processTransactionError = processTransaction(vars, new 
DalConnectionProvider(),
+            "P", finTrans);
+        if (processTransactionError != null && 
processTransactionError.getType().equals("Error")) {
+          throw new OBException(processTransactionError.getMessage());
+        }
         strMessage = "1 " + "@RowsInserted@";
         if (!"".equals(strFinBankStatementLineId)) {
           matchBankStatementLine(vars, finTrans, strFinBankStatementLineId);
@@ -232,8 +243,11 @@
             FIN_Utility.getDate(strTransactionDate), null, isReceipt ? "RDNC" 
: "PWNC",
             feeDepositAmt, feePaymentAmt, null, null, null, "BF",
             FIN_Utility.getDate(strTransactionDate), null, null, null);
-
-        TransactionsDao.process(finTrans);
+        OBError processTransactionError = processTransaction(vars, new 
DalConnectionProvider(),
+            "P", finTrans);
+        if (processTransactionError != null && 
processTransactionError.getType().equals("Error")) {
+          throw new OBException(processTransactionError.getMessage());
+        }
         strMessage = "1 " + "@RowsInserted@";
         if (!"".equals(strFinBankStatementLineId)) {
           matchBankStatementLine(vars, finTrans, strFinBankStatementLineId);
@@ -420,6 +434,33 @@
     }
   }
 
+  /**
+   * It calls the Transaction Process for the given transaction and action.
+   * 
+   * @param vars
+   *          VariablesSecureApp with the session data.
+   * @param conn
+   *          ConnectionProvider with the connection being used.
+   * @param strAction
+   *          String with the action of the process. {P, D, R}
+   * @param transaction
+   *          FIN_FinaccTransaction that needs to be processed.
+   * @return a OBError with the result message of the process.
+   * @throws Exception
+   */
+  private OBError processTransaction(VariablesSecureApp vars, 
ConnectionProvider conn,
+      String strAction, FIN_FinaccTransaction transaction) throws Exception {
+    ProcessBundle pb = new ProcessBundle("F68F2890E96D4D85A1DEF0274D105BCE", 
vars).init(conn);
+    HashMap<String, Object> parameters = new HashMap<String, Object>();
+    parameters.put("action", strAction);
+    parameters.put("Fin_FinAcc_Transaction_ID", transaction.getId());
+    pb.setParams(parameters);
+    OBError myMessage = null;
+    new FIN_TransactionProcess().execute(pb);
+    myMessage = (OBError) pb.getResult();
+    return myMessage;
+  }
+
   public String getServletInfo() {
     return "This servlet adds transaction for a financial account";
   }
diff -r 5782da5a0bb8 -r c1ff66bd4866 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/MatchTransaction.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/MatchTransaction.java
       Tue Oct 11 11:52:51 2011 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/MatchTransaction.java
       Thu Oct 06 09:57:26 2011 +0200
@@ -38,6 +38,7 @@
 import org.openbravo.advpaymentmngt.dao.MatchTransactionDao;
 import org.openbravo.advpaymentmngt.dao.TransactionsDao;
 import org.openbravo.advpaymentmngt.process.FIN_AddPayment;
+import org.openbravo.advpaymentmngt.process.FIN_TransactionProcess;
 import org.openbravo.advpaymentmngt.utility.FIN_MatchedTransaction;
 import org.openbravo.advpaymentmngt.utility.FIN_MatchingTransaction;
 import org.openbravo.advpaymentmngt.utility.FIN_Utility;
@@ -71,15 +72,17 @@
 import org.openbravo.model.financialmgmt.payment.FIN_ReconciliationLineTemp;
 import org.openbravo.model.financialmgmt.payment.FIN_ReconciliationLine_v;
 import org.openbravo.model.financialmgmt.payment.MatchingAlgorithm;
+import org.openbravo.scheduling.ProcessBundle;
 import org.openbravo.service.db.DalConnectionProvider;
 import org.openbravo.xmlEngine.XmlDocument;
 
 public class MatchTransaction extends HttpSecureAppServlet {
   private static final long serialVersionUID = 1L;
+  VariablesSecureApp vars = null;
 
   public void doPost(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
-    VariablesSecureApp vars = new VariablesSecureApp(request);
+    vars = new VariablesSecureApp(request);
 
     if (vars.commandIn("DEFAULT")) {
       String strOrgId = vars.getRequestGlobalVariable("inpadOrgId", 
"MatchTransaction.adOrgId");
@@ -928,7 +931,13 @@
       transaction.setCreatedByAlgorithm(true);
       OBDal.getInstance().save(transaction);
       OBDal.getInstance().flush();
-      TransactionsDao.process(transaction);
+      try {
+        processTransaction(new DalConnectionProvider(), "P", transaction);
+      } catch (Exception e) {
+        OBError newError = Utility.translateError(this, vars, 
vars.getLanguage(),
+            FIN_Utility.getExceptionMessage(e));
+        throw new OBException(newError.getMessage());
+      }
       return transaction;
     }
   }
@@ -1166,6 +1175,31 @@
     }
   }
 
+  /**
+   * It calls the Transaction Process for the given transaction and action.
+   * 
+   * @param conn
+   *          ConnectionProvider with the connection being used.
+   * @param strAction
+   *          String with the action of the process. {P, D, R}
+   * @param transaction
+   *          FIN_FinaccTransaction that needs to be processed.
+   * @return a OBError with the result message of the process.
+   * @throws Exception
+   */
+  private OBError processTransaction(ConnectionProvider conn, String strAction,
+      FIN_FinaccTransaction transaction) throws Exception {
+    ProcessBundle pb = new ProcessBundle("F68F2890E96D4D85A1DEF0274D105BCE", 
vars).init(conn);
+    HashMap<String, Object> parameters = new HashMap<String, Object>();
+    parameters.put("action", strAction);
+    parameters.put("Fin_FinAcc_Transaction_ID", transaction.getId());
+    pb.setParams(parameters);
+    OBError myMessage = null;
+    new FIN_TransactionProcess().execute(pb);
+    myMessage = (OBError) pb.getResult();
+    return myMessage;
+  }
+
   public String getServletInfo() {
     return "This servlet match imported bank statement lines for a financial 
account";
   }
diff -r 5782da5a0bb8 -r c1ff66bd4866 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/TransactionsDao.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/TransactionsDao.java
    Tue Oct 11 11:52:51 2011 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/dao/TransactionsDao.java
    Thu Oct 06 09:57:26 2011 +0200
@@ -152,6 +152,7 @@
     return maxLine;
   }
 
+  @Deprecated
   public static void process(FIN_FinaccTransaction 
finFinancialAccountTransaction) {
     final FIN_FinancialAccount financialAccount = OBDal.getInstance().get(
         FIN_FinancialAccount.class, 
finFinancialAccountTransaction.getAccount().getId());
diff -r 5782da5a0bb8 -r c1ff66bd4866 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_ExecutePayment.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_ExecutePayment.java
     Tue Oct 11 11:52:51 2011 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_ExecutePayment.java
     Thu Oct 06 09:57:26 2011 +0200
@@ -28,7 +28,10 @@
 import org.openbravo.advpaymentmngt.utility.FIN_PaymentExecutionProcess;
 import org.openbravo.advpaymentmngt.utility.FIN_Utility;
 import org.openbravo.advpaymentmngt.utility.Value;
+import org.openbravo.base.secureApp.VariablesSecureApp;
+import org.openbravo.client.kernel.RequestContext;
 import org.openbravo.dal.service.OBDal;
+import org.openbravo.database.ConnectionProvider;
 import org.openbravo.erpCommon.utility.OBError;
 import org.openbravo.model.common.businesspartner.BusinessPartner;
 import org.openbravo.model.common.enterprise.Organization;
@@ -42,6 +45,8 @@
 import 
org.openbravo.model.financialmgmt.payment.PaymentExecutionProcessParameter;
 import org.openbravo.model.financialmgmt.payment.PaymentRun;
 import org.openbravo.model.financialmgmt.payment.PaymentRunPayment;
+import org.openbravo.scheduling.ProcessBundle;
+import org.openbravo.service.db.DalConnectionProvider;
 
 public class FIN_ExecutePayment {
   private AdvPaymentMngtDao dao;
@@ -124,7 +129,16 @@
                 && 
paymentRunPayment.getPayment().getAmount().compareTo(BigDecimal.ZERO) != 0) {
               FIN_FinaccTransaction transaction = TransactionsDao
                   .createFinAccTransaction(paymentRunPayment.getPayment());
-              TransactionsDao.process(transaction);
+              // VariablesSecureApp vars = new 
VariablesSecureApp(OBContext.getOBContext().getUser()
+              // .getId(), 
OBContext.getOBContext().getCurrentOrganization().getId(), OBContext
+              // .getOBContext().getRole().getId());
+              VariablesSecureApp vars = new 
VariablesSecureApp(RequestContext.get().getRequest());
+              OBError processTransactionError = processTransaction(vars,
+                  new DalConnectionProvider(), "P", transaction);
+              if (processTransactionError != null
+                  && processTransactionError.getType().equals("Error")) {
+                return processTransactionError;
+              }
             }
           }
           if ("PPM".equals(paymentStatus) || "RPR".equals(paymentStatus)
@@ -201,4 +215,31 @@
     }
   }
 
+  /**
+   * It calls the Transaction Process for the given transaction and action.
+   * 
+   * @param vars
+   *          VariablesSecureApp with the session data.
+   * @param conn
+   *          ConnectionProvider with the connection being used.
+   * @param strAction
+   *          String with the action of the process. {P, D, R}
+   * @param transaction
+   *          FIN_FinaccTransaction that needs to be processed.
+   * @return a OBError with the result message of the process.
+   * @throws Exception
+   */
+  private OBError processTransaction(VariablesSecureApp vars, 
ConnectionProvider conn,
+      String strAction, FIN_FinaccTransaction transaction) throws Exception {
+    ProcessBundle pb = new ProcessBundle("F68F2890E96D4D85A1DEF0274D105BCE", 
vars).init(conn);
+    HashMap<String, Object> parameters = new HashMap<String, Object>();
+    parameters.put("action", strAction);
+    parameters.put("Fin_FinAcc_Transaction_ID", transaction.getId());
+    pb.setParams(parameters);
+    OBError myMessage = null;
+    new FIN_TransactionProcess().execute(pb);
+    myMessage = (OBError) pb.getResult();
+    return myMessage;
+  }
+
 }
diff -r 5782da5a0bb8 -r c1ff66bd4866 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java
     Tue Oct 11 11:52:51 2011 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_PaymentProcess.java
     Thu Oct 06 09:57:26 2011 +0200
@@ -20,6 +20,7 @@
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Set;
 import java.util.TreeSet;
@@ -30,6 +31,7 @@
 import org.openbravo.advpaymentmngt.exception.NoExecutionProcessFoundException;
 import org.openbravo.advpaymentmngt.utility.FIN_Utility;
 import org.openbravo.base.exception.OBException;
+import org.openbravo.base.provider.OBProvider;
 import org.openbravo.base.secureApp.VariablesSecureApp;
 import org.openbravo.dal.core.OBContext;
 import org.openbravo.dal.service.OBCriteria;
@@ -298,7 +300,10 @@
                 && payment.getAmount().compareTo(BigDecimal.ZERO) != 0)
               triggerAutomaticFinancialAccountTransaction(vars, conProvider, 
payment);
           }
-
+          if (!payment.getAccount().getCurrency().equals(payment.getCurrency())
+              && getConversionRateDocument(payment).size() == 0) {
+            insertConversionRateDocument(payment);
+          }
         } finally {
           OBDal.getInstance().flush();
           OBContext.restorePreviousMode();
@@ -612,7 +617,12 @@
   private void triggerAutomaticFinancialAccountTransaction(VariablesSecureApp 
vars,
       ConnectionProvider connectionProvider, FIN_Payment payment) {
     FIN_FinaccTransaction transaction = 
TransactionsDao.createFinAccTransaction(payment);
-    TransactionsDao.process(transaction);

------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2d-oct
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to