details:   https://code.openbravo.com/erp/devel/pi/rev/82d330104113
changeset: 15174:82d330104113
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Mon Jan 23 09:29:23 2012 +0100
summary:   fixed bug 19322: Refresh subject and body when changing poc template

diffstat:

 src/org/openbravo/erpCommon/utility/reporting/printing/EmailOptions.html    |  
35 +++++-
 src/org/openbravo/erpCommon/utility/reporting/printing/PrintController.java |  
52 +++++++++-
 2 files changed, 81 insertions(+), 6 deletions(-)

diffs (155 lines):

diff -r b05447dc9ed7 -r 82d330104113 
src/org/openbravo/erpCommon/utility/reporting/printing/EmailOptions.html
--- a/src/org/openbravo/erpCommon/utility/reporting/printing/EmailOptions.html  
Fri Jan 20 12:03:26 2012 +0100
+++ b/src/org/openbravo/erpCommon/utility/reporting/printing/EmailOptions.html  
Mon Jan 23 09:29:23 2012 +0100
@@ -13,7 +13,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) 2008-2011 Openbravo SLU 
+ * All portions are Copyright (C) 2008-2012 Openbravo SLU
  * All Rights Reserved. 
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -135,8 +135,35 @@
     }
     object.style.display = '';
   }
-       
-  </script>
+
+  function templateChanged() {
+    var callback = function (paramXMLParticular, XMLHttpRequestObj) {
+        var o, fileName;
+        if (getReadyStateHandler(XMLHttpRequestObj)) {
+          try {
+            if (XMLHttpRequestObj.responseText) {
+              strText = XMLHttpRequestObj.responseText;
+            }
+          } catch (e) {}
+          o = eval('('+strText+')');
+          if (!o.error) {
+            document.getElementById('emailSubject').value = o.subject;
+            document.getElementById('emailBody').innerHTML = o.body;
+
+            if (o.filename){
+              fileName = document.getElementById('fileDocName');
+              fileName.removeChild(fileName.childNodes[0]);
+              fileName.appendChild(document.createTextNode(o.filename));
+            }
+          }
+        }
+        return true;
+      },
+    frm = document.frmMain;
+
+    return submitXmlHttpRequest(callback, frm, 'UPDATE_TEMPLATE', 
'PrintOptions.html', false);
+  }
+</script>
 
 </head>
 
@@ -269,7 +296,7 @@
                                        <tr id="discardSelect">
                                                <td class="TitleCell"><span 
class="LabelText">Template to use</span></td>
                                                <td colspan="2">
-                                               <select style="width: 55%;" 
name="templates" id="templates" class="ComboKey Combo_TwoCells_width" 
required="true" onchange="displayLogic();return true;">
+                                               <select style="width: 55%;" 
name="templates" id="templates" class="ComboKey Combo_TwoCells_width" 
required="true" onchange="templateChanged();return true;">
                                <div id="reportEmail"></div>
                                        </select>
                                                </td>
diff -r b05447dc9ed7 -r 82d330104113 
src/org/openbravo/erpCommon/utility/reporting/printing/PrintController.java
--- 
a/src/org/openbravo/erpCommon/utility/reporting/printing/PrintController.java   
    Fri Jan 20 12:03:26 2012 +0100
+++ 
b/src/org/openbravo/erpCommon/utility/reporting/printing/PrintController.java   
    Mon Jan 23 09:29:23 2012 +0100
@@ -54,6 +54,8 @@
 import net.sf.jasperreports.engine.JasperPrint;
 
 import org.apache.commons.fileupload.FileItem;
+import org.codehaus.jettison.json.JSONException;
+import org.codehaus.jettison.json.JSONObject;
 import org.openbravo.base.exception.OBException;
 import org.openbravo.base.secureApp.HttpSecureAppServlet;
 import org.openbravo.base.secureApp.VariablesSecureApp;
@@ -334,8 +336,13 @@
           if (log4j.isDebugEnabled())
             log4j.debug("Processing document with id: " + documentId);
 
+          String templateInUse = "default";
+          if (differentDocTypes.size() == 1) {
+            templateInUse = vars.getRequestGlobalVariable("templates", 
"templates");
+          }
+
           final Report report = buildReport(response, vars, documentId, 
reportManager,
-              documentType, OutputTypeEnum.EMAIL);
+              documentType, OutputTypeEnum.EMAIL, templateInUse);
 
           // if there is only one document type id the user should be
           // able to choose between different templates
@@ -349,6 +356,7 @@
               throw new ServletException("Error trying to get template 
information", e);
             }
           }
+
           if (report == null)
             throw new ServletException(Utility.messageBD(this, "NoDataReport", 
vars.getLanguage())
                 + documentId);
@@ -387,6 +395,39 @@
         }
         request.getSession().removeAttribute("files");
         createPrintStatusPage(response, vars, nrOfEmailsSend);
+      } else if (vars.commandIn("UPDATE_TEMPLATE")) {
+        JSONObject o = new JSONObject();
+        try {
+          final String templateId = vars.getRequestGlobalVariable("templates", 
"templates");
+          final String documentId = pocData[0].documentId;
+          for (final PocData documentData : pocData) {
+            final Report report = new Report(this, documentType, documentId, 
vars.getLanguage(),
+                templateId, multiReports, OutputTypeEnum.DEFAULT);
+            o.put("templateId", templateId);
+            o.put("subject", report.getEmailDefinition().getSubject());
+            o.put("body", report.getEmailDefinition().getBody());
+            if (!multiReports) {
+              o.put("filename", report.getFilename());
+            }
+            reports = new HashMap<String, Report>();
+            reports.put(documentId, report);
+          }
+          vars.setSessionObject(sessionValuePrefix + ".Documents", reports);
+
+        } catch (Exception e) {
+          log4j.error("Error in change template ajax", e);
+          o = new JSONObject();
+          try {
+            o.put("error", true);
+          } catch (JSONException e1) {
+            log4j.error("Error in change template ajax", e1);
+          }
+        }
+
+        response.setContentType("application/json");
+        final PrintWriter out = response.getWriter();
+        out.println(o.toString());
+        out.close();
       }
 
       pageError(response);
@@ -508,12 +549,19 @@
   private Report buildReport(HttpServletResponse response, VariablesSecureApp 
vars,
       String strDocumentId, final ReportManager reportManager, DocumentType 
documentType,
       OutputTypeEnum outputType) {
+    return buildReport(response, vars, strDocumentId, reportManager, 
documentType, outputType,
+        "default");
+  }
+
+  private Report buildReport(HttpServletResponse response, VariablesSecureApp 
vars,
+      String strDocumentId, final ReportManager reportManager, DocumentType 
documentType,
+      OutputTypeEnum outputType, String templateId) {
     Report report = null;
     if (strDocumentId != null) {
       strDocumentId = strDocumentId.replaceAll("\\(|\\)|'", "");
     }
     try {
-      report = new Report(this, documentType, strDocumentId, 
vars.getLanguage(), "default",
+      report = new Report(this, documentType, strDocumentId, 
vars.getLanguage(), templateId,
           multiReports, outputType);
     } catch (final ReportingException e) {
       log4j.error(e);

------------------------------------------------------------------------------
Try before you buy = See our experts in action!
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-dev2
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to