1 19 package org.openbravo.erpCommon.ad_reports; 20 21 import org.openbravo.erpCommon.utility.*; 22 import org.openbravo.erpCommon.businessUtility.WindowTabs; 23 import org.openbravo.base.secureApp.HttpSecureAppServlet; 24 import org.openbravo.base.secureApp.VariablesSecureApp; 25 import org.openbravo.xmlEngine.XmlDocument; 26 import java.io.*; 27 import javax.servlet.*; 28 import javax.servlet.http.*; 29 30 import java.math.BigDecimal ; 31 import java.util.Hashtable ; 32 33 import org.openbravo.erpCommon.ad_combos.AttributeSetInstanceComboData; 34 35 public class MInOutTraceReports extends HttpSecureAppServlet { 36 37 static final BigDecimal ZERO = new BigDecimal (0.0); 38 private String strmProductIdGlobal = ""; 39 private String strmAttributesetinstanceIdGlobal = ""; 40 private Hashtable calculated = new Hashtable (); 41 42 int count = 0; 43 44 public void doPost (HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException { 45 VariablesSecureApp vars = new VariablesSecureApp(request); 46 47 if (!Utility.hasProcessAccess(this, vars, "", "RptM_InOutTraceReports")) { 48 bdError(response, "AccessTableNoView", vars.getLanguage()); 49 return; 50 } 51 52 if (vars.commandIn("DEFAULT")) { 53 strmProductIdGlobal = vars.getGlobalVariable("inpmProductId", "MInOutTraceReports|M_Product_Id", ""); 54 strmAttributesetinstanceIdGlobal = vars.getGlobalVariable("inpmAttributeSetInstanceId", "MInOutTraceReports|M_AttributeSetInstance_Id", ""); 55 String strIn = vars.getGlobalVariable("inpInOut", "MInOutTraceReports|in", "Y"); 56 printPageDataSheet(response, vars, strIn); 57 } else if (vars.commandIn("FIND")) { 58 strmProductIdGlobal = vars.getRequestGlobalVariable("inpmProductId", "MInOutTraceReports|M_Product_Id"); 59 strmAttributesetinstanceIdGlobal = vars.getRequestGlobalVariable("inpmAttributeSetInstanceId", "MInOutTraceReports|M_AttributeSetInstance_Id"); 60 String strIn = vars.getStringParameter("inpInOut").equals("")?"N":vars.getStringParameter("inpInOut"); 61 printPageDataHtml(response, vars, strIn); 62 } else if (vars.commandIn("INVERSE")) { 63 strmProductIdGlobal = vars.getRequiredStringParameter("inpmProductId2"); 64 strmAttributesetinstanceIdGlobal = vars.getRequiredStringParameter("inpmAttributeSetInstanceId2"); 65 String strIn = vars.getRequiredStringParameter("inpIn2"); 66 if ( strIn.equals("")) strIn="N"; 67 vars.setSessionValue("MInOutTraceReports|in", strIn); 68 printPageDataHtml(response, vars, strIn); 69 } else pageError(response); 70 } 71 72 void printPageDataHtml(HttpServletResponse response, VariablesSecureApp vars, String strIn) throws IOException, ServletException { 73 if (log4j.isDebugEnabled()) log4j.debug("Output: dataSheet"); 74 XmlDocument xmlDocument = xmlEngine.readXmlTemplate("/org/openbravo/erpCommon/ad_reports/MInOutTraceReportsEdit").createXmlDocument(); 75 MInOutTraceReportsData[] data=null; 76 calculated.clear(); 77 if (strmProductIdGlobal.equals("")) { 78 data = new MInOutTraceReportsData[0]; 79 } else { 80 data = MInOutTraceReportsData.select(this, strmProductIdGlobal, strmAttributesetinstanceIdGlobal); 81 } 82 83 xmlDocument.setParameter("direction", "var baseDirection = \"" + strReplaceWith + "/\";\n"); 84 xmlDocument.setParameter("paramLanguage", "LNG_POR_DEFECTO=\"" + vars.getLanguage() + "\";"); 85 86 xmlDocument.setData("structure1", processData(vars, data, strIn)); 87 if (log4j.isDebugEnabled()) log4j.debug("****FIN: "); 88 89 90 response.setContentType("text/html; charset=UTF-8"); 91 PrintWriter out = response.getWriter(); 92 out.println(xmlDocument.print()); 93 out.close(); 94 } 95 96 void printPageDataSheet(HttpServletResponse response, VariablesSecureApp vars, String strIn) throws IOException, ServletException { 97 if (log4j.isDebugEnabled()) log4j.debug("Output: dataSheet"); 98 XmlDocument xmlDocument = xmlEngine.readXmlTemplate("/org/openbravo/erpCommon/ad_reports/MInOutTraceReports").createXmlDocument(); 99 100 101 xmlDocument.setParameter("calendar", vars.getLanguage()); 102 xmlDocument.setParameter("direction", "var baseDirection = \"" + strReplaceWith + "/\";\n"); 103 xmlDocument.setParameter("mProduct", strmProductIdGlobal); 104 xmlDocument.setParameter("parameterM_ATTRIBUTESETINSTANCE_ID", strmAttributesetinstanceIdGlobal); 105 xmlDocument.setData("reportM_ATTRIBUTESETINSTANCE_ID","liststructure",AttributeSetInstanceComboData.select(this, vars.getLanguage(), strmProductIdGlobal, Utility.getContext(this, vars, "#User_Client", "MInOutTraceReports"), Utility.getContext(this, vars, "#User_Org", "MInOutTraceReports"))); 106 xmlDocument.setParameter("productDescription", MInOutTraceReportsData.selectMproduct(this, strmProductIdGlobal)); 107 xmlDocument.setParameter("paramLanguage", "LNG_POR_DEFECTO=\"" + vars.getLanguage() + "\";"); 108 xmlDocument.setParameter("in", strIn); 109 xmlDocument.setParameter("out", strIn); 110 111 if (log4j.isDebugEnabled()) log4j.debug("****FIN: "); 112 113 ToolBar toolbar = new ToolBar(this, vars.getLanguage(), "MInOutTraceReports", false, "", "", "",false, "ad_reports", strReplaceWith, false, true); 114 toolbar.prepareSimpleToolBarTemplate(); 115 xmlDocument.setParameter("toolbar", toolbar.toString()); 116 try { 117 KeyMap key = new KeyMap(this, vars, "MInOutTraceReports.html"); 118 xmlDocument.setParameter("keyMap", key.getReportKeyMaps()); 119 } catch (Exception ex) { 120 throw new ServletException(ex); 121 } 122 try { 123 WindowTabs tabs = new WindowTabs(this, vars, "org.openbravo.erpCommon.ad_reports.MInOutTraceReports"); 124 xmlDocument.setParameter("parentTabContainer", tabs.parentTabs()); 125 xmlDocument.setParameter("mainTabContainer", tabs.mainTabs()); 126 xmlDocument.setParameter("childTabContainer", tabs.childTabs()); 127 xmlDocument.setParameter("theme", vars.getTheme()); 128 NavigationBar nav = new NavigationBar(this, vars.getLanguage(), "MInOutTraceReports.html", classInfo.id, classInfo.type, strReplaceWith, tabs.breadcrumb()); 129 xmlDocument.setParameter("navigationBar", nav.toString()); 130 LeftTabsBar lBar = new LeftTabsBar(this, vars.getLanguage(), "MInOutTraceReports.html", strReplaceWith); 131 xmlDocument.setParameter("leftTabs", lBar.manualTemplate()); 132 } catch (Exception ex) { 133 throw new ServletException(ex); 134 } 135 { 136 OBError myMessage = vars.getMessage("MInOutTraceReports"); 137 vars.removeMessage("MInOutTraceReports"); 138 if (myMessage!=null) { 139 xmlDocument.setParameter("messageType", myMessage.getType()); 140 xmlDocument.setParameter("messageTitle", myMessage.getTitle()); 141 xmlDocument.setParameter("messageMessage", myMessage.getMessage()); 142 } 143 } 144 145 response.setContentType("text/html; charset=UTF-8"); 146 PrintWriter out = response.getWriter(); 147 out.println(xmlDocument.print()); 148 out.close(); 149 } 150 151 209 210 private MInOutTraceReportsData[] processData(VariablesSecureApp vars, MInOutTraceReportsData[] data, String strIn) throws ServletException { 211 if (data==null || data.length==0) return data; 212 for (int i=0;i<data.length;i++) { 213 data[i].html = processChilds(vars, data[i].mAttributesetinstanceId, data[i].mProductId, data[i].mLocatorId, strIn); 214 } 215 return data; 216 } 217 218 private String insertTabHtml() { 219 return " <td width=\"20px\" > </td>\n"; 220 } 221 222 private String insertHeaderHtml(boolean isClose, String border) { 223 if (!isClose) return "<table border=\"" + border + "\" cellspacing=0 cellpadding=0 width=\"100%\" class=\"TraceTable\">\n"; 224 else return "</table>\n"; 225 } 226 227 private String insertTotal(String strTotal, String strUnit, String strTotalPedido, String strUnitPedido) { 228 BigDecimal total, totalPedido; 229 total = new BigDecimal (strTotal); 230 totalPedido = (!strTotalPedido.equals("")?new BigDecimal (strTotalPedido):ZERO); 231 total = total.setScale(2, BigDecimal.ROUND_HALF_UP); 232 totalPedido = totalPedido.setScale(2, BigDecimal.ROUND_HALF_UP); 233 StringBuffer resultado = new StringBuffer (); 234 resultado.append("<td class=\"TraceQty\" width=\"80px\">\n"); 235 resultado.append(total.toString()).append(" ").append(strUnit); 236 resultado.append("</td>\n"); 237 if (totalPedido.intValue()!=0) { 238 resultado.append("<td class=\"TraceQtyOrder\" width=\"80px\">\n"); 239 resultado.append(totalPedido.toString()).append(" ").append(strUnitPedido); 240 resultado.append("</td>\n"); 241 } 242 return resultado.toString(); 243 } 244 245 private String processChilds(VariablesSecureApp vars, String mAttributesetinstanceId, String mProductId, String mLocatorId, String strIn) throws ServletException { 246 Double total = 0.0, totalPedido = 0.0; 247 StringBuffer strHtml = new StringBuffer (); 248 count +=1; 249 String strCalculated = mProductId + "&" + mAttributesetinstanceId + "&" + mLocatorId; 250 calculated.put(strCalculated, new Integer (count)); 251 if (log4j.isDebugEnabled()) log4j.debug("****** Hashtable.add: " + strCalculated); 252 MInOutTraceReportsData[] dataChild = MInOutTraceReportsData.selectChilds(this, vars.getLanguage(), mAttributesetinstanceId, mProductId, mLocatorId, strIn.equals("Y")?"plusQty":"minusQty", strIn.equals("N")?"minusQty":"plusQty"); 253 if (dataChild == null || dataChild.length==0) return ""; 254 255 strHtml.append(insertHeaderHtml(false, "0")); 256 for (int i=0;i<dataChild.length;i++) { 257 258 if (dataChild[i].movementtype.equalsIgnoreCase("W+")) { 259 strHtml.append("<tr class=\"rojoOscuro\">"); 260 } else if (dataChild[i].movementtype.equalsIgnoreCase("W-")) { 261 strHtml.append("<tr class=\"rojoOscuro\">"); 262 } else if (dataChild[i].movementtype.equalsIgnoreCase("C+")) { 263 strHtml.append("<tr class=\"rojoClaro\">"); 264 } else if (dataChild[i].movementtype.equalsIgnoreCase("C-")) { 265 strHtml.append("<tr class=\"rojoClaro\">"); 266 } else if (dataChild[i].movementtype.equalsIgnoreCase("V+")) { 267 strHtml.append("<tr class=\"rojoClaro\">"); 268 } else if (dataChild[i].movementtype.equalsIgnoreCase("V-")) { 269 strHtml.append("<tr class=\"rojoClaro\">"); 270 } else if (dataChild[i].movementtype.equalsIgnoreCase("I+")) { 271 strHtml.append("<tr class=\"naranjaOscuro\">"); 272 } else if (dataChild[i].movementtype.equalsIgnoreCase("I-")) { 273 strHtml.append("<tr class=\"naranjaOscuro\">"); 274 } else if (dataChild[i].movementtype.equalsIgnoreCase("M+")) { 275 strHtml.append("<tr class=\"amarillo\">"); 276 } else if (dataChild[i].movementtype.equalsIgnoreCase("M-")) { 277 strHtml.append("<tr class=\"amarillo\">"); 278 } else if (dataChild[i].movementtype.equalsIgnoreCase("P+")) { 279 strHtml.append("<tr class=\"naranjaClaro\">"); 280 } else if (dataChild[i].movementtype.equalsIgnoreCase("P-")) { 281 strHtml.append("<tr class=\"naranjaClaro\">"); 282 } else strHtml.append("<tr class=\"amarillo\">"); 283 284 285 strHtml.append("<td class=\"TraceTDSubTable\">\n"); 286 strHtml.append(getData(dataChild[i], "TraceSubTable")); 287 strHtml.append("</td>"); 288 total += Double.valueOf(dataChild[i].movementqty).doubleValue(); 289 totalPedido += (!dataChild[i].quantityorder.equals("")?Double.valueOf(dataChild[i].quantityorder).doubleValue():0.0); 290 strHtml.append(insertTotal(Double.toString(total), dataChild[i].uomName, Double.toString(totalPedido), dataChild[i].productUomName)); 291 strHtml.append(" </tr>\n"); 292 if (log4j.isDebugEnabled()) log4j.debug("****** New line, qty: " + dataChild[i].movementqty + " " + getData(dataChild[i], "TraceSubTable")); 293 strHtml.append(processExternalChilds(vars, dataChild[i], strIn)); 294 } 295 strHtml.append(insertHeaderHtml(true, "")); 296 return strHtml.toString(); 297 } 298 299 private String processExternalChilds(VariablesSecureApp vars, MInOutTraceReportsData dataChild, String strIn) throws ServletException { 300 StringBuffer strHtml = new StringBuffer (); 301 Double movementQty = Double.valueOf(dataChild.movementqty).doubleValue(); 302 if (strIn.equals("Y")) movementQty = movementQty * (-1); 304 if (log4j.isDebugEnabled()) log4j.debug("****PROCESSING EXTERNAL 2: " + movementQty.toString() + " and movementType:" + dataChild.movementtype); 305 306 if (dataChild.movementtype.startsWith("P") && movementQty > 0) { 307 String strNewId = dataChild.mProductionlineId; 308 MInOutTraceReportsData[] dataProduction; 309 if (log4j.isDebugEnabled()) log4j.debug("****PROCESSING PRODUCTIONLINE: " + strNewId + " " + strIn); 310 if (strIn.equals("Y")) { 311 dataProduction = MInOutTraceReportsData.selectProductionOut(this, vars.getLanguage(), strNewId); 312 } else { 313 dataProduction = MInOutTraceReportsData.selectProductionIn(this, vars.getLanguage(), strNewId); 314 } 315 if (dataProduction!=null && dataProduction.length>0) { 316 strHtml.append(" <tr>\n"); 317 strHtml.append(" <td colspan=\"3\">\n"); 319 strHtml.append(insertHeaderHtml(false, "1")); 320 for (int j=0;j<dataProduction.length;j++) { 321 strHtml.append(" <tr>\n"); 322 strHtml.append(insertTabHtml()); 323 strHtml.append(" <td >\n"); 324 325 String resultado2 = ""; 326 strHtml.append("<table border=\"0\" cellspacing=0 cellpadding=0 width=\"100%\">\n"); 327 strHtml.append(" <tr>\n"); 328 strHtml.append(" <td class=\"TraceDate\" width=\"70\">").append(dataProduction[j].movementdate).append("</td>\n"); 329 strHtml.append(" <td class=\"TraceMovementType\" width=\"100\">").append(dataProduction[j].movementtypeName).append("</td>\n"); 330 strHtml.append(" <td class=\"TraceLocator\" width=\"100\">").append(dataProduction[j].locatorName).append("</td>\n"); 331 strHtml.append(" <td class=\"TraceQty\" width=\"90\">").append(dataProduction[j].movementqty).append(" ").append(dataProduction[j].uomName).append("</td>\n"); 332 strHtml.append(" <td class=\"TraceQtyOrder\" width=\"90\">").append(dataProduction[j].quantityorder).append(" ").append(dataProduction[j].productUomName).append("</td>\n"); 333 resultado2 = dataProduction[j].productName; 334 strHtml.append(" <td class=\"TraceDescription\"><a HREF=\"#\" onclick=\"submitCommandForm('INVERSE', true, null, 'RptM_InOutTraceReports.html?inpmProductId2=" +dataProduction[j].mProductId+"&inpmAttributeSetInstanceId2="+dataProduction[j].mAttributesetinstanceId+"&inpIn2="+(strIn.equals("Y")?"N":"Y")+ "', '_self');return true;\">"); 335 if (!resultado2.equals("")) strHtml.append(resultado2); 336 strHtml.append(" </a></td>\n"); 337 resultado2 = dataProduction[j].attributeName; 338 strHtml.append(" <td class=\"TraceDescription\" width=\"120\">"); 339 if (!resultado2.equals("")) strHtml.append(resultado2); 340 strHtml.append(" </td>\n"); 341 strHtml.append("</tr></table>"); 342 343 strHtml.append(" </td></tr>\n"); 344 if (!dataProduction[j].mAttributesetinstanceId.equals("0")) { 345 String strCalculate = dataProduction[j].mProductId + "&" + dataProduction[j].mAttributesetinstanceId + "&" + dataProduction[j].mLocatorId; 346 if (log4j.isDebugEnabled()) log4j.debug("******** Hashtable.production: " + strCalculate); 347 if (log4j.isDebugEnabled()) log4j.debug("******** Production, hashtable calculated: " + calculated.get(strCalculate)); 348 Integer isnull = (Integer )calculated.get(strCalculate); 349 if (isnull == null){ 350 String strPartial = processChilds(vars, dataProduction[j].mAttributesetinstanceId, dataProduction[j].mProductId, dataProduction[j].mLocatorId, strIn); 351 if (!strPartial.equals("")) { 352 strHtml.append(" <tr>\n"); 353 strHtml.append(insertTabHtml()); 354 strHtml.append(" <td>\n"); 355 strHtml.append(strPartial); 356 strHtml.append(" </td>\n"); 357 strHtml.append(" </tr>\n"); 358 } 359 } 360 } 361 } 362 strHtml.append(insertHeaderHtml(true, "")); 363 strHtml.append("</td></tr>\n"); 364 } 365 } 366 367 if (dataChild.movementtype.startsWith("M") && movementQty > 0) { 368 String strNewId = dataChild.mMovementlineId; 369 MInOutTraceReportsData[] dataMovement; 370 if (log4j.isDebugEnabled()) log4j.debug("****PROCESSING MOVEMENTLINE: " + strNewId + " " + strIn); 371 dataMovement = MInOutTraceReportsData.selectMovement(this, vars.getLanguage(),strIn.equals("Y")?"M+":"M-", strNewId); 373 if (dataMovement!=null && dataMovement.length>0) { 377 strHtml.append(" <tr>\n"); 378 strHtml.append(" <td colspan=\"3\">\n"); 380 strHtml.append(insertHeaderHtml(false, "1")); 381 for (int j=0;j<dataMovement.length;j++) { 382 strHtml.append(" <tr>\n"); 383 strHtml.append(insertTabHtml()); 384 strHtml.append(" <td >\n"); 385 386 String resultado2 = ""; 387 strHtml.append("<table border=\"0\" cellspacing=0 cellpadding=0 width=\"100%\">\n"); 388 strHtml.append(" <tr>\n"); 389 strHtml.append(" <td class=\"TraceDate\" width=\"70\">").append(dataMovement[j].movementdate).append("</td>\n"); 390 strHtml.append(" <td class=\"TraceMovementType\" width=\"100\">").append(dataMovement[j].movementtypeName).append("</td>\n"); 391 strHtml.append(" <td class=\"TraceLocator\" width=\"100\">").append(dataMovement[j].locatorName).append("</td>\n"); 392 strHtml.append(" <td class=\"TraceQty\" width=\"90\">").append(dataMovement[j].movementqty).append(" ").append(dataMovement[j].uomName).append("</td>\n"); 393 strHtml.append(" <td class=\"TraceQtyOrder\" width=\"90\">").append(dataMovement[j].quantityorder).append(" ").append(dataMovement[j].productUomName).append("</td>\n"); 394 resultado2 = dataMovement[j].productName; 395 strHtml.append(" <td class=\"TraceDescription\">"); 396 if (!resultado2.equals("")) strHtml.append(resultado2); 397 strHtml.append(" </td>\n"); 398 resultado2 = dataMovement[j].attributeName; 399 strHtml.append(" <td class=\"TraceDescription\" width=\"120\">"); 400 if (!resultado2.equals("")) strHtml.append(resultado2); 401 strHtml.append(" </td>\n"); 402 strHtml.append("</tr></table>"); 403 404 strHtml.append(" </td></tr>\n"); 406 if (!dataMovement[j].mAttributesetinstanceId.equals("0")) { 407 String strPartial = ""; 408 if (!dataMovement[j].mProductId.equals(strmProductIdGlobal)) { 409 if (log4j.isDebugEnabled()) log4j.debug("******** hashtable.production: Prod: " + dataMovement[j].mProductId + " Attr " + dataMovement[j].mAttributesetinstanceId + " Loc: " + dataMovement[j].mLocatorId); 410 String strCalculate = dataMovement[j].mProductId + "&" + dataMovement[j].mAttributesetinstanceId + "&" + dataMovement[j].mLocatorId; 411 if (log4j.isDebugEnabled()) log4j.debug("******** Movement, hashtable calculated: " + calculated.get(strCalculate)); 412 Integer isnull = (Integer )calculated.get(strCalculate); 413 if (calculated.get(strCalculate) == null){ 414 strPartial = processChilds(vars, dataMovement[j].mAttributesetinstanceId, dataMovement[j].mProductId, dataMovement[j].mLocatorId, strIn); 415 } 416 } 417 if (!strPartial.equals("")) { 418 strHtml.append(" <tr>\n"); 419 strHtml.append(insertTabHtml()); 420 strHtml.append(" <td>\n"); 421 strHtml.append(strPartial); 422 strHtml.append(" </td>\n"); 423 strHtml.append(" </tr>\n"); 424 } 425 } 426 } 427 strHtml.append(insertHeaderHtml(true, "")); 428 strHtml.append("</td></tr>\n"); 429 } 430 } 431 return strHtml.toString(); 432 } 433 434 435 private String getData(MInOutTraceReportsData data, String strClassName) throws ServletException { 436 StringBuffer resultado = new StringBuffer (); 437 String resultado2 = ""; 438 resultado.append("<table border=\"0\" cellspacing=0 cellpadding=0 width=\"100%\" class=\"").append(strClassName).append("\">\n"); 439 resultado.append(" <tr>\n"); 440 resultado.append(" <td class=\"TraceDate\" width=\"70\">").append(data.movementdate).append("</td>\n"); 441 resultado.append(" <td class=\"TraceMovementType\" width=\"100\">").append(data.movementtypeName).append("</td>\n"); 442 resultado.append(" <td class=\"TraceLocator\" width=\"100\">").append(data.locatorName).append("</td>\n"); 443 resultado.append(" <td class=\"TraceQty\" width=\"90\">").append(data.movementqty).append(" ").append(data.uomName).append("</td>\n"); 444 if (!data.quantityorder.equals("")) { 445 resultado.append(" <td class=\"TraceQtyOrder\" width=\"90\">").append(data.quantityorder).append(" ").append(data.productUomName).append("</td>\n"); 446 } 447 if (data.movementtype.equalsIgnoreCase("W+")) { 448 } else if (data.movementtype.equalsIgnoreCase("W-")) { 450 } else if (data.movementtype.equalsIgnoreCase("C+")) { 452 resultado2 = data.vendorName; 453 } else if (data.movementtype.equalsIgnoreCase("C-")) { 454 resultado2 = data.vendorName; 455 } else if (data.movementtype.equalsIgnoreCase("V+")) { 456 resultado2 = data.vendorName; 457 } else if (data.movementtype.equalsIgnoreCase("V-")) { 458 resultado2 = data.vendorName; 459 } else if (data.movementtype.equalsIgnoreCase("I+")) { 460 resultado2 = data.inventoryName; 461 } else if (data.movementtype.equalsIgnoreCase("I-")) { 462 resultado2 = data.inventoryName; 463 } else if (data.movementtype.equalsIgnoreCase("M+")) { 464 resultado2 = data.movementName; 465 } else if (data.movementtype.equalsIgnoreCase("M-")) { 466 resultado2 = data.movementName; 467 } else if (data.movementtype.equalsIgnoreCase("P+")) { 468 resultado2 = data.productionName; 469 } else if (data.movementtype.equalsIgnoreCase("P-")) { 470 resultado2 = data.productionName; 471 } else resultado2 = data.name; 472 473 resultado.append(" <td class=\"TraceDescription\">"); 474 if (!resultado2.equals("")) resultado.append(resultado2); 475 resultado.append(" </td>\n"); 476 resultado.append("</tr></table>"); 477 return resultado.toString(); 478 } 479 480 481 public String getServletInfo() { 482 return "Servlet MInOutTraceReports. This Servlet was made by Fernando Iriazabal"; 483 } } 485 486 | Popular Tags |