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
