details:   https://code.openbravo.com/erp/devel/pi/rev/9644db90eb37
changeset: 15698:9644db90eb37
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Thu Mar 01 12:34:27 2012 +0100
summary:   fixed bug 17821: Improved performance in ad_parent_tree function

Proper exit recursivity instead of waiting for an exception to be thrown

details:   https://code.openbravo.com/erp/devel/pi/rev/6efaffed3b3f
changeset: 15699:6efaffed3b3f
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Fri Mar 02 15:25:09 2012 +0100
summary:   fixed bug 19275: Old Error message

  Fixed PrintController popup error messages

details:   https://code.openbravo.com/erp/devel/pi/rev/eff2ac473db7
changeset: 15700:eff2ac473db7
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Mon Mar 05 10:36:32 2012 +0100
summary:   fixed bug 16928: Tab name validation didn't work in PG

diffstat:

 src-db/database/model/functions/AD_PARENT_TREE.xml                          |  
  8 +-
 src-db/database/model/triggers/AD_TAB_TRG.xml                               |  
  4 +-
 src/org/openbravo/erpCommon/utility/reporting/printing/PrintController.java |  
479 +++++----
 3 files changed, 252 insertions(+), 239 deletions(-)

diffs (truncated from 566 to 300 lines):

diff -r 48882fb553e9 -r eff2ac473db7 
src-db/database/model/functions/AD_PARENT_TREE.xml
--- a/src-db/database/model/functions/AD_PARENT_TREE.xml        Mon Mar 05 
21:09:46 2012 +0100
+++ b/src-db/database/model/functions/AD_PARENT_TREE.xml        Mon Mar 05 
10:36:32 2012 +0100
@@ -19,7 +19,7 @@
 * under the License.
 * The Original Code is Openbravo ERP.
 * The Initial Developer of the Original Code is Openbravo SLU
-* All portions are Copyright (C) 2001-2008 Openbravo SLU
+* All portions are Copyright (C) 2001-2012 Openbravo SLU
 * All Rights Reserved.
 * Contributor(s):  ______________________________________.
 ************************************************************************/
@@ -33,8 +33,12 @@
    WHERE node_id = p_node_id
      AND ad_tree_id = p_tree_id;
 
+    IF vp IS NULL THEN
+      RETURN ' ';
+    ELSE
+      p := ad_parent_tree(p_tree_id, vp);
+    END IF;
 
-    p := ad_parent_tree(p_tree_id, vp);
     IF p != ' ' THEN
       RETURN '|'||vp||'|'||p;
     END IF;
diff -r 48882fb553e9 -r eff2ac473db7 
src-db/database/model/triggers/AD_TAB_TRG.xml
--- a/src-db/database/model/triggers/AD_TAB_TRG.xml     Mon Mar 05 21:09:46 
2012 +0100
+++ b/src-db/database/model/triggers/AD_TAB_TRG.xml     Mon Mar 05 10:36:32 
2012 +0100
@@ -17,7 +17,7 @@
     * parts created by ComPiere are Copyright (C) ComPiere, Inc.;
     * All Rights Reserved.
     * Contributor(s): Openbravo SLU
-    * Contributions are Copyright (C) 2001-2011 Openbravo, S.L.U.
+    * Contributions are Copyright (C) 2001-2012 Openbravo, S.L.U.
     *
     * Specifically, this derivative work is based upon the following Compiere
     * file and version.
@@ -30,7 +30,7 @@
 
 
    --Check tab name starts with a upper case letter
-   IF (not (substr(:new.Name,1,1) between 'A' and 'Z')) THEN
+   IF (not (ascii(substr(:new.Name,1,1)) between ascii('A') and ascii('Z'))) 
THEN
      RAISE_APPLICATION_ERROR(-20000, '@TabName1stCharUpper@') ;
    END IF;
 
diff -r 48882fb553e9 -r eff2ac473db7 
src/org/openbravo/erpCommon/utility/reporting/printing/PrintController.java
--- 
a/src/org/openbravo/erpCommon/utility/reporting/printing/PrintController.java   
    Mon Mar 05 21:09:46 2012 +0100
+++ 
b/src/org/openbravo/erpCommon/utility/reporting/printing/PrintController.java   
    Mon Mar 05 10:36:32 2012 +0100
@@ -156,271 +156,280 @@
   void post(HttpServletRequest request, HttpServletResponse response, 
VariablesSecureApp vars,
       DocumentType documentType, String sessionValuePrefix, String 
strDocumentId)
       throws IOException, ServletException {
+    try {
 
-    Map<String, Report> reports;
+      Map<String, Report> reports;
 
-    // Checks are maintained in this way for mulithread safety
-    HashMap<String, Boolean> checks = new HashMap<String, Boolean>();
-    checks.put("moreThanOneCustomer", Boolean.FALSE);
-    checks.put("moreThanOnesalesRep", Boolean.FALSE);
+      // Checks are maintained in this way for mulithread safety
+      HashMap<String, Boolean> checks = new HashMap<String, Boolean>();
+      checks.put("moreThanOneCustomer", Boolean.FALSE);
+      checks.put("moreThanOnesalesRep", Boolean.FALSE);
 
-    String documentIds[] = null;
-    if (log4j.isDebugEnabled())
-      log4j.debug("strDocumentId: " + strDocumentId);
-    // normalize the string of ids to a comma separated list
-    strDocumentId = strDocumentId.replaceAll("\\(|\\)|'", "");
-    if (strDocumentId.length() == 0)
-      throw new ServletException(Utility.messageBD(this, "NoDocument", 
vars.getLanguage()));
+      String documentIds[] = null;
+      if (log4j.isDebugEnabled())
+        log4j.debug("strDocumentId: " + strDocumentId);
+      // normalize the string of ids to a comma separated list
+      strDocumentId = strDocumentId.replaceAll("\\(|\\)|'", "");
+      if (strDocumentId.length() == 0)
+        throw new ServletException(Utility.messageBD(this, "NoDocument", 
vars.getLanguage()));
 
-    documentIds = strDocumentId.split(",");
+      documentIds = strDocumentId.split(",");
 
-    if (log4j.isDebugEnabled())
-      log4j.debug("Number of documents selected: " + documentIds.length);
+      if (log4j.isDebugEnabled())
+        log4j.debug("Number of documents selected: " + documentIds.length);
 
-    multiReports = (documentIds.length > 1);
+      multiReports = (documentIds.length > 1);
 
-    reports = (Map<String, Report>) vars.getSessionObject(sessionValuePrefix + 
".Documents");
-    final ReportManager reportManager = new ReportManager(this, 
globalParameters.strFTPDirectory,
-        strReplaceWithFull, globalParameters.strBaseDesignPath,
-        globalParameters.strDefaultDesignPath, globalParameters.prefix, 
multiReports);
+      reports = (Map<String, Report>) vars.getSessionObject(sessionValuePrefix 
+ ".Documents");
+      final ReportManager reportManager = new ReportManager(this, 
globalParameters.strFTPDirectory,
+          strReplaceWithFull, globalParameters.strBaseDesignPath,
+          globalParameters.strDefaultDesignPath, globalParameters.prefix, 
multiReports);
 
-    if (vars.commandIn("PRINT")) {
-      archivedReports = false;
-      // Order documents by Document No.
-      if (multiReports)
-        documentIds = orderByDocumentNo(documentType, documentIds);
+      if (vars.commandIn("PRINT")) {
+        archivedReports = false;
+        // Order documents by Document No.
+        if (multiReports)
+          documentIds = orderByDocumentNo(documentType, documentIds);
 
-      /*
-       * PRINT option will print directly to the UI for a single report. For 
multiple reports the
-       * documents will each be saved individually and the concatenated in the 
same manner as the
-       * saved reports. After concatenating the reports they will be deleted.
-       */
-      Report report = null;
-      JasperPrint jasperPrint = null;
-      Collection<JasperPrint> jrPrintReports = new ArrayList<JasperPrint>();
-      final Collection<Report> savedReports = new ArrayList<Report>();
-      for (int i = 0; i < documentIds.length; i++) {
-        String documentId = documentIds[i];
-        report = buildReport(response, vars, documentId, reportManager, 
documentType,
-            Report.OutputTypeEnum.PRINT);
-        try {
-          jasperPrint = reportManager.processReport(report, vars);
-          jrPrintReports.add(jasperPrint);
-        } catch (final ReportingException e) {
-          advisePopUp(request, response, "Report processing failed",
-              "Unable to process report selection");
-          log4j.error(e.getMessage());
-          e.getStackTrace();
+        /*
+         * PRINT option will print directly to the UI for a single report. For 
multiple reports the
+         * documents will each be saved individually and the concatenated in 
the same manner as the
+         * saved reports. After concatenating the reports they will be deleted.
+         */
+        Report report = null;
+        JasperPrint jasperPrint = null;
+        Collection<JasperPrint> jrPrintReports = new ArrayList<JasperPrint>();
+        final Collection<Report> savedReports = new ArrayList<Report>();
+        for (int i = 0; i < documentIds.length; i++) {
+          String documentId = documentIds[i];
+          report = buildReport(response, vars, documentId, reportManager, 
documentType,
+              Report.OutputTypeEnum.PRINT);
+          try {
+            jasperPrint = reportManager.processReport(report, vars);
+            jrPrintReports.add(jasperPrint);
+          } catch (final ReportingException e) {
+            advisePopUp(request, response, "Report processing failed",
+                "Unable to process report selection");
+            log4j.error(e.getMessage());
+            e.getStackTrace();
+          }
+          savedReports.add(report);
+          if (multiReports) {
+            reportManager.saveTempReport(report, vars);
+          }
         }
-        savedReports.add(report);
-        if (multiReports) {
+        printReports(response, jrPrintReports, savedReports);
+      } else if (vars.commandIn("ARCHIVE")) {
+        // Order documents by Document No.
+        if (multiReports)
+          documentIds = orderByDocumentNo(documentType, documentIds);
+
+        /*
+         * ARCHIVE will save each report individually and then print the 
reports in a single
+         * printable (concatenated) format.
+         */
+        archivedReports = true;
+        Report report = null;
+        final Collection<Report> savedReports = new ArrayList<Report>();
+        for (int index = 0; index < documentIds.length; index++) {
+          String documentId = documentIds[index];
+          report = buildReport(response, vars, documentId, reportManager, 
documentType,
+              OutputTypeEnum.ARCHIVE);
+          buildReport(response, vars, documentId, reports, reportManager);
+          try {
+            reportManager.processReport(report, vars);
+          } catch (final ReportingException e) {
+            log4j.error(e);
+          }
           reportManager.saveTempReport(report, vars);
+          savedReports.add(report);
         }
-      }
-      printReports(response, jrPrintReports, savedReports);
-    } else if (vars.commandIn("ARCHIVE")) {
-      // Order documents by Document No.
-      if (multiReports)
-        documentIds = orderByDocumentNo(documentType, documentIds);
+        printReports(response, null, savedReports);
+      } else {
+        if (vars.commandIn("DEFAULT")) {
 
-      /*
-       * ARCHIVE will save each report individually and then print the reports 
in a single printable
-       * (concatenated) format.
-       */
-      archivedReports = true;
-      Report report = null;
-      final Collection<Report> savedReports = new ArrayList<Report>();
-      for (int index = 0; index < documentIds.length; index++) {
-        String documentId = documentIds[index];
-        report = buildReport(response, vars, documentId, reportManager, 
documentType,
-            OutputTypeEnum.ARCHIVE);
-        buildReport(response, vars, documentId, reports, reportManager);
-        try {
-          reportManager.processReport(report, vars);
-        } catch (final ReportingException e) {
-          log4j.error(e);
-        }
-        reportManager.saveTempReport(report, vars);
-        savedReports.add(report);
-      }
-      printReports(response, null, savedReports);
-    } else {
-      if (vars.commandIn("DEFAULT")) {
+          reports = new HashMap<String, Report>();
+          for (int index = 0; index < documentIds.length; index++) {
+            final String documentId = documentIds[index];
+            if (log4j.isDebugEnabled())
+              log4j.debug("Processing document with id: " + documentId);
 
-        reports = new HashMap<String, Report>();
-        for (int index = 0; index < documentIds.length; index++) {
-          final String documentId = documentIds[index];
-          if (log4j.isDebugEnabled())
-            log4j.debug("Processing document with id: " + documentId);
+            try {
+              final Report report = new Report(this, documentType, documentId, 
vars.getLanguage(),
+                  "default", multiReports, OutputTypeEnum.DEFAULT);
+              reports.put(documentId, report);
 
-          try {
-            final Report report = new Report(this, documentType, documentId, 
vars.getLanguage(),
-                "default", multiReports, OutputTypeEnum.DEFAULT);
-            reports.put(documentId, report);
+              final String senderAddress = EmailData.getSenderAddress(this, 
vars.getClient(),
+                  report.getOrgId());
+              boolean moreThanOnesalesRep = 
checks.get("moreThanOnesalesRep").booleanValue();
 
-            final String senderAddress = EmailData.getSenderAddress(this, 
vars.getClient(),
-                report.getOrgId());
-            boolean moreThanOnesalesRep = 
checks.get("moreThanOnesalesRep").booleanValue();
+              if (request.getServletPath().toLowerCase().indexOf("print.html") 
== -1) {
+                if ("".equals(senderAddress) || senderAddress == null) {
+                  final OBError on = new OBError();
+                  on.setMessage(Utility.messageBD(this, "No sender defined: 
Please go to client "
+                      + "configuration to complete the email configuration", 
vars.getLanguage()));
+                  on.setTitle(Utility.messageBD(this, "Email Configuration 
Error",
+                      vars.getLanguage()));
+                  on.setType("Error");
+                  final String tabId = vars.getSessionValue("inpTabId");
+                  vars.getStringParameter("tab");
+                  vars.setMessage(tabId, on);
+                  vars.getRequestGlobalVariable("inpTabId", 
"AttributeSetInstance.tabId");
+                  printPageClosePopUpAndRefreshParent(response, vars);
+                  throw new ServletException("Configuration Error no sender 
defined");
+                }
+              }
 
-            if (request.getServletPath().toLowerCase().indexOf("print.html") 
== -1) {
-              if ("".equals(senderAddress) || senderAddress == null) {
-                final OBError on = new OBError();
-                on.setMessage(Utility.messageBD(this, "No sender defined: 
Please go to client "
-                    + "configuration to complete the email configuration", 
vars.getLanguage()));
-                on.setTitle(Utility.messageBD(this, "Email Configuration 
Error", vars.getLanguage()));
-                on.setType("Error");
-                final String tabId = vars.getSessionValue("inpTabId");
-                vars.getStringParameter("tab");
-                vars.setMessage(tabId, on);
-                vars.getRequestGlobalVariable("inpTabId", 
"AttributeSetInstance.tabId");
-                printPageClosePopUpAndRefreshParent(response, vars);
-                throw new ServletException("Configuration Error no sender 
defined");
+              // check the different doc typeId's if all the selected
+              // doc's
+              // has the same doc typeId the template selector should
+              // appear
+              if (!differentDocTypes.containsKey(report.getDocTypeId())) {
+                differentDocTypes.put(report.getDocTypeId(), 
report.getTemplate());
+              }
+            } catch (final ReportingException exception) {
+              throw new ServletException(exception);
+            }
+
+          }
+
+          vars.setSessionObject(sessionValuePrefix + ".Documents", reports);
+
+          if (request.getServletPath().toLowerCase().indexOf("print.html") != 
-1)
+            createPrintOptionsPage(request, response, vars, documentType,
+                getComaSeparatedString(documentIds), reports);
+          else
+            createEmailOptionsPage(request, response, vars, documentType,

------------------------------------------------------------------------------
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to