1 19 package org.openbravo.wad; 20 21 import org.openbravo.data.Sqlc; 22 import java.io.*; 23 import java.util.Vector ; 24 import org.openbravo.database.ConnectionProvider; 25 import javax.servlet.ServletException ; 26 import org.openbravo.xmlEngine.XmlDocument; 27 import org.openbravo.xmlEngine.XmlEngine; 28 import org.openbravo.utils.FormatUtilities; 29 import org.openbravo.wad.controls.*; 30 import java.util.Enumeration ; 31 import java.util.Properties ; 32 33 34 public class WadActionButton { 35 static final int IMAGE_EDITION_WIDTH = 16; 36 static final int IMAGE_EDITION_HEIGHT = 16; 37 38 public static boolean isNumericType (String reference) { 39 if (reference==null || reference.equals("")) return false; 40 if (WadUtility.isGeneralNumber(reference) || WadUtility.isDecimalNumber(reference) || WadUtility.isPriceNumber(reference) || WadUtility.isIntegerNumber(reference) || WadUtility.isQtyNumber(reference) || reference.equals("18") || reference.equals("19") || reference.equals("21") || reference.equals("23") || reference.equals("25") || reference.equals("26") || reference.equals("27") || reference.equals("28") || reference.equals("30") || reference.equals("31") || reference.equals("35") || reference.equals("32") || reference.equals("33") || reference.equals("800011")) { 41 return true; 42 } 43 return false; 44 } 45 46 public static boolean isDateType (String reference) { 47 if (reference==null || reference.equals("")) return false; 48 if (WadUtility.isDateTimeField(reference)) { 49 return true; 50 } 51 return false; 52 } 53 54 public static ActionButtonRelationData[] buildActionButtonCall(ConnectionProvider conn, String strTab, String tabName, String keyName, String isSOTrx, String window) { 55 ActionButtonRelationData[] fab = null; 56 try { 57 fab = ActionButtonRelationData.select(conn, strTab); 58 } catch (ServletException e) { 59 return null; 60 } 61 if (fab!=null) { 62 for (int i=0;i<fab.length;i++) { 63 Vector <Object > vecFields = new Vector <Object >(); 64 Vector <Object > vecParams = new Vector <Object >(); 65 Vector <Object > vecTotalFields = new Vector <Object >(); 66 if (fab[i].realname.equalsIgnoreCase("DocAction") || fab[i].realname.equalsIgnoreCase("PaymentRule") || (fab[i].realname.equalsIgnoreCase("Posted") && fab[i].adProcessId.equals("")) || (fab[i].realname.equalsIgnoreCase("CreateFrom") && fab[i].adProcessId.equals("")) || fab[i].realname.equalsIgnoreCase("ChangeProjectStatus")) fab[i].xmlid = ""; 67 fab[i].realname = FormatUtilities.replace(fab[i].realname); 68 fab[i].columnname = Sqlc.TransformaNombreColumna(fab[i].columnname); 69 fab[i].htmltext = getFieldsLoad(fab[i], vecFields, vecTotalFields); 70 fab[i].javacode = getPrintPageJavaCode(conn, fab[i], vecFields, vecParams, isSOTrx, window, tabName); 71 StringBuffer fields = new StringBuffer (); 72 StringBuffer fieldsHeader = new StringBuffer (); 73 for (int j=0;j<vecFields.size();j++) { 74 fields.append(", " + vecFields.elementAt(j)); 75 fieldsHeader.append(", String " + vecFields.elementAt(j)); 76 } 77 fab[i].htmlfields = fields.toString(); 78 fab[i].htmlfieldsHeader = fieldsHeader.toString(); 79 ProcessRelationData[] data=null; 80 if (!fab[i].adProcessId.equals("") && !fab[i].adProcessId.equals("177")) { 81 try { 82 data = ProcessRelationData.selectParameters(conn, "", fab[i].adProcessId); 83 } catch (ServletException e) {} 84 if (fab[i].realname.equalsIgnoreCase("ChangeProjectStatus")) { 85 fab[i].processParams = "PInstanceProcessData.insertPInstanceParam(this, pinstance, \"0\", \"ChangeProjectStatus\", strchangeprojectstatus, vars.getClient(), vars.getOrg(), vars.getUser());\n"; 86 vecParams.addElement("changeprojectstatus"); 87 } else fab[i].processParams = ""; 88 fab[i].processParams += getProcessParamsJava(data, fab[i], vecParams); 89 fab[i].processCode = "ActionButtonData.process" + fab[i].adProcessId + "(this, pinstance);\n"; 90 } 91 fab[i].additionalCode = getAdditionalCode(fab[i], tabName, keyName); 92 } 93 } 94 return fab; 95 } 96 97 public static ActionButtonRelationData[] buildActionButtonCallGenerics(ConnectionProvider conn) { 98 ActionButtonRelationData[] fab = null; 99 try { 100 fab = ActionButtonRelationData.selectGenerics(conn); 101 } catch (ServletException e) { 102 return null; 103 } 104 if (fab!=null) { 105 for (int i=0;i<fab.length;i++) { 106 Vector <Object > vecFields = new Vector <Object >(); 107 Vector <Object > vecParams = new Vector <Object >(); 108 Vector <Object > vecTotalFields = new Vector <Object >(); 109 if (fab[i].realname.equalsIgnoreCase("DocAction") || fab[i].realname.equalsIgnoreCase("PaymentRule") || (fab[i].realname.equalsIgnoreCase("Posted") && fab[i].adProcessId.equals("")) || (fab[i].realname.equalsIgnoreCase("CreateFrom") && fab[i].adProcessId.equals("")) || fab[i].realname.equalsIgnoreCase("ChangeProjectStatus")) fab[i].xmlid = ""; 110 fab[i].realname = FormatUtilities.replace(fab[i].realname); 111 fab[i].columnname = Sqlc.TransformaNombreColumna(fab[i].columnname); 112 fab[i].htmltext = getFieldsLoad(fab[i], vecFields, vecTotalFields); 113 fab[i].javacode = getPrintPageJavaCode(conn, fab[i], vecFields, vecParams, "", "", ""); 114 StringBuffer fields = new StringBuffer (); 115 StringBuffer fieldsHeader = new StringBuffer (); 116 for (int j=0;j<vecFields.size();j++) { 117 fields.append(", " + vecFields.elementAt(j)); 118 fieldsHeader.append(", String " + vecFields.elementAt(j)); 119 } 120 fab[i].htmlfields = fields.toString(); 121 fab[i].htmlfieldsHeader = fieldsHeader.toString(); 122 ProcessRelationData[] data=null; 123 if (!fab[i].adProcessId.equals("") && !fab[i].adProcessId.equals("177")) { 124 try { 125 data = ProcessRelationData.selectParameters(conn, "", fab[i].adProcessId); 126 } catch (ServletException e) {} 127 if (fab[i].realname.equalsIgnoreCase("ChangeProjectStatus")) { 128 fab[i].processParams = "PInstanceProcessData.insertPInstanceParam(this, pinstance, \"0\", \"ChangeProjectStatus\", strchangeprojectstatus, vars.getClient(), vars.getOrg(), vars.getUser());\n"; 129 vecParams.addElement("changeprojectstatus"); 130 } else fab[i].processParams = ""; 131 fab[i].processParams += getProcessParamsJava(data, fab[i], vecParams); 132 fab[i].processCode = "ActionButtonData.process" + fab[i].adProcessId + "(this, pinstance);\n"; 133 } 134 fab[i].additionalCode = getAdditionalCode(fab[i], "", ""); 135 } 136 } 137 return fab; 138 } 139 140 public static void getFieldsLoad(String columnname, Vector <Object > vecFields) { 141 if (columnname.equalsIgnoreCase("DocAction")) { 142 vecFields.addElement("DocStatus"); 143 vecFields.addElement("AD_Table_ID"); 144 } else if (columnname.equalsIgnoreCase("CreateFrom")) { 145 vecFields.addElement("AD_Table_ID"); 146 } else if (columnname.equalsIgnoreCase("Posted")) { 147 vecFields.addElement("AD_Table_ID"); 148 vecFields.addElement("Posted"); 149 } else if (columnname.equalsIgnoreCase("ChangeProjectStatus")) { 150 vecFields.addElement("ProjectStatus"); 151 } 152 } 153 154 public static String getFieldsLoad(ActionButtonRelationData fd, Vector <Object > vecFields, Vector <Object > vecTotalFields) { 155 if (fd==null) return ""; 156 StringBuffer html = new StringBuffer (); 157 if (fd.columnname.equalsIgnoreCase("DocAction")) { 158 html.append("String strdocstatus = vars.getRequiredStringParameter(\"inpdocstatus\");\n"); 159 vecFields.addElement("strdocstatus"); 160 vecTotalFields.addElement("DocStatus"); 161 html.append("String stradTableId = \"" + fd.adTableId + "\";\n"); 162 vecFields.addElement("stradTableId"); 163 vecTotalFields.addElement("AD_Table_ID"); 164 } else if (fd.columnname.equalsIgnoreCase("CreateFrom") && fd.adProcessId.equals("")) { 165 html.append("String stradTableId = \"" + fd.adTableId + "\";\n"); 166 vecFields.addElement("stradTableId"); 167 vecTotalFields.addElement("AD_Table_ID"); 168 } else if (fd.columnname.equalsIgnoreCase("Posted") && fd.adProcessId.equals("")) { 169 html.append("String stradTableId = \"" + fd.adTableId + "\";\n"); 170 vecFields.addElement("stradTableId"); 171 vecTotalFields.addElement("AD_Table_ID"); 172 } else if (fd.columnname.equalsIgnoreCase("ChangeProjectStatus")) { 173 html.append("String strprojectstatus = vars.getRequiredStringParameter(\"inpprojectstatus\");\n"); 174 vecFields.addElement("strprojectstatus"); 175 vecTotalFields.addElement("ProjectStatus"); 176 } 177 return html.toString(); 178 } 179 180 public static String getPrintPageJavaCode(ConnectionProvider conn, ActionButtonRelationData fd, Vector <Object > vecFields, Vector <Object > vecParams, String isSOTrx, String window, String tabName) { 181 if (fd==null) return ""; 182 StringBuffer html = new StringBuffer (); 183 for (int i=0;i<vecFields.size();i++) { 184 String field = vecFields.elementAt(i).toString(); 185 field = field.substring(3); 186 html.append("xmlDocument.setParameter(\"" + field + "\", str" + field + ");\n"); 187 } 188 189 if (!fd.adProcessId.equals("")) { 190 try { 191 ProcessRelationData[] data = ProcessRelationData.selectParameters(conn, "", fd.adProcessId); 192 html.append(" try {\n"); 193 html.append(" ComboTableData comboTableData = null;\n"); 194 for (int i=0;i<data.length;i++) { 195 String strDefault = ""; 196 html.append(" xmlDocument.setParameter(\""); 197 html.append(data[i].columnname); 199 html.append("\", "); 200 if (data[i].defaultvalue.equals("") || data[i].defaultvalue.indexOf("@")==-1) { 201 strDefault = "\"" + data[i].defaultvalue + "\""; 202 } else if (data[i].defaultvalue.startsWith("@SQL=")) { 203 strDefault = tabName + "Data.selectActP"+ data[i].id + "_" + FormatUtilities.replace(data[i].columnname); 204 strDefault += "(this" + WadUtility.getWadContext(data[i].defaultvalue, vecFields, vecParams, null, false, isSOTrx, window); 205 strDefault += ")"; 206 } else { 207 strDefault = WadUtility.getTextWadContext(data[i].defaultvalue, vecFields, vecParams, null, false, isSOTrx, window); 208 } 209 html.append(strDefault).append(");\n"); 210 if (data[i].adReferenceId.equals("17") || data[i].adReferenceId.equals("18") || data[i].adReferenceId.equals("19")) { 211 html.append(" comboTableData = new ComboTableData(vars, this, \""); 212 html.append(data[i].adReferenceId).append("\", \""); 213 html.append(data[i].columnname).append("\", \""); 214 html.append(data[i].adReferenceValueId).append("\", \""); 215 html.append(data[i].adValRuleId).append("\", "); 216 html.append("Utility.getContext(this, vars, \"#User_Org\", \"\"), "); 217 html.append("Utility.getContext(this, vars, \"#User_Client\", \"\"), 0"); 218 html.append(");\n"); 219 html.append(" Utility.fillSQLParameters(this, vars, null, comboTableData, \"\", ").append(strDefault).append(");\n"); 220 html.append(" xmlDocument.setData(\"report"); 221 html.append(data[i].columnname); 223 html.append("\", \"liststructure\", comboTableData.select(false));\n"); 224 html.append("comboTableData = null;\n"); 225 } else if (data[i].adReferenceId.equals("15")) { 226 html.append(" xmlDocument.setParameter(\"").append(data[i].columnname).append("_Format\", vars.getSessionValue(\"#AD_SqlDateFormat\"));\n"); 227 } else if (data[i].adReferenceId.equals("30") || data[i].adReferenceId.equals("35") || data[i].adReferenceId.equals("25") || data[i].adReferenceId.equals("31") || data[i].adReferenceId.equals("800011")) { 228 html.append(" xmlDocument.setParameter(\""); 229 html.append(data[i].columnname); 231 html.append("R\", "); 232 if (!tabName.equals("")) { 233 html.append(tabName); 234 html.append("Data.selectActDef"); 235 html.append(FormatUtilities.replace(data[i].columnname)); 236 html.append("(this, "); 237 html.append(((data[i].defaultvalue.equals("") || data[i].defaultvalue.indexOf("@")==-1)? "\"" + data[i].defaultvalue + "\"" : WadUtility.getWadContext(data[i].defaultvalue, vecFields, vecParams, null, false, isSOTrx, window))); 238 html.append(")"); 239 } else { 240 html.append("\"\""); 241 } 242 html.append(");\n"); 243 } 244 vecParams.addElement(data[i].columnname); 245 } 246 html.append(" } catch (Exception ex) {\n"); 247 html.append(" throw new ServletException(ex);\n"); 248 html.append(" }\n"); 249 } catch (ServletException e) {} 250 } 251 if (fd.columnname.equalsIgnoreCase("DocAction")) { 252 html.append("xmlDocument.setParameter(\"processId\", \"" + fd.adProcessId + "\");\n"); 253 String strAux=""; 254 try { 255 strAux=ActionButtonRelationData.processDescription(conn, fd.adProcessId); 256 } catch (ServletException e) {} 257 html.append("xmlDocument.setParameter(\"processDescription\", \"" + strAux + "\");\n"); 258 html.append("xmlDocument.setParameter(\"docaction\", (strdocaction.equals(\"--\")?\"CL\":strdocaction));\n"); 259 html.append("FieldProvider[] dataDocAction = ActionButtonUtility.docAction(this, vars, strdocaction, \"" + fd.adReferenceValueId + "\", strdocstatus, strProcessing, stradTableId);\n"); 260 html.append("xmlDocument.setData(\"reportdocaction\", \"liststructure\", dataDocAction);\n"); 261 html.append("StringBuffer dact = new StringBuffer();\n"); 262 html.append("if (dataDocAction!=null) {\n"); 263 html.append(" dact.append(\"var arrDocAction = new Array(\\n\");\n"); 264 html.append(" for (int i=0;i<dataDocAction.length;i++) {\n"); 265 html.append(" dact.append(\"new Array(\\\"\" + dataDocAction[i].getField(\"id\") + \"\\\", \\\"\" + dataDocAction[i].getField(\"name\") + \"\\\", \\\"\" + dataDocAction[i].getField(\"description\") + \"\\\")\\n\");\n"); 266 html.append(" if (i<dataDocAction.length-1) dact.append(\",\\n\");\n"); 267 html.append(" }\n"); 268 html.append(" dact.append(\");\");\n"); 269 html.append("} else dact.append(\"var arrDocAction = null\");\n"); 270 html.append("xmlDocument.setParameter(\"array\", dact.toString());\n"); 271 } else if (fd.columnname.equalsIgnoreCase("ChangeProjectStatus")) { 272 String strAux=""; 273 html.append("xmlDocument.setParameter(\"processId\", \"" + fd.adProcessId + "\");\n"); 274 try { 275 strAux=ActionButtonRelationData.processDescription(conn, fd.adProcessId); 276 } catch (ServletException e) {} 277 html.append("xmlDocument.setParameter(\"processDescription\", \"" + strAux + "\");\n"); 278 html.append("xmlDocument.setParameter(\"projectaction\", strchangeprojectstatus);\n"); 279 html.append("FieldProvider[] dataProjectAction = ActionButtonUtility.projectAction(this, vars, strchangeprojectstatus, \"" + fd.adReferenceValueId + "\", strprojectstatus);\n"); 280 html.append("xmlDocument.setData(\"reportprojectaction\", \"liststructure\", dataProjectAction);\n"); 281 html.append("StringBuffer dact = new StringBuffer();\n"); 282 html.append("if (dataProjectAction!=null) {\n"); 283 html.append(" dact.append(\"var arrProjectAction = new Array(\\n\");\n"); 284 html.append(" for (int i=0;i<dataProjectAction.length;i++) {\n"); 285 html.append(" dact.append(\"new Array(\\\"\" + dataProjectAction[i].getField(\"id\") + \"\\\", \\\"\" + dataProjectAction[i].getField(\"name\") + \"\\\", \\\"\" + dataProjectAction[i].getField(\"description\") + \"\\\")\\n\");\n"); 286 html.append(" if (i<dataProjectAction.length-1) dact.append(\",\\n\");\n"); 287 html.append(" }\n"); 288 html.append(" dact.append(\");\");\n"); 289 html.append("} else dact.append(\"var arrProjectAction = null\");\n"); 290 html.append("xmlDocument.setParameter(\"array\", dact.toString());\n"); 291 } else if (fd.columnname.equalsIgnoreCase("PaymentRule")) { 292 } 293 return html.toString(); 294 } 295 296 public static String getProcessParamsJava(ProcessRelationData[] data, ActionButtonRelationData fd, Vector <Object > vecParams) { 297 if (fd==null) return ""; 298 StringBuffer html = new StringBuffer (); 299 300 if (data!=null) { 301 for (int i=0;i<data.length;i++) { 302 html.append("String str" + Sqlc.TransformaNombreColumna(data[i].columnname) + " = vars.getStringParameter(\"inp" + Sqlc.TransformaNombreColumna(data[i].columnname) + "\""); 303 if (data[i].adReferenceId.equals("20")) html.append(", \"N\""); 304 html.append(");\n"); 305 html.append("PInstanceProcessData.insertPInstanceParam" + (isNumericType(data[i].adReferenceId)?"Number":(isDateType(data[i].adReferenceId)?"Date":"")) + "(this, pinstance, \"" + data[i].seqno + "\", \"" + data[i].columnname + "\", str" + Sqlc.TransformaNombreColumna(data[i].columnname) + ", vars.getClient(), vars.getOrg(), vars.getUser());\n"); 306 vecParams.addElement(Sqlc.TransformaNombreColumna(data[i].columnname)); 307 } 308 } 309 return html.toString(); 310 } 311 312 public static String getAdditionalCode(ActionButtonRelationData fd, String tabName, String keyName) { 313 if (fd==null) return ""; 314 StringBuffer html = new StringBuffer (); 315 if (fd.columnname.equalsIgnoreCase("DocAction")) { 316 html.append(tabName + "Data.updateDocAction(this, strdocaction, str" + keyName + ");\n"); 317 319 } else if (fd.columnname.equalsIgnoreCase("PaymentRule")) { 320 } 321 return html.toString(); 322 } 323 324 public static ActionButtonRelationData[] buildActionButtonSQL(ConnectionProvider conn, String strTab) { 325 ActionButtonRelationData[] fab = null; 326 try { 327 fab = ActionButtonRelationData.selectDocAction(conn, strTab); 328 } catch (ServletException e) { 329 return null; 330 } 331 if (fab==null) return null; 332 for (int i=0;i<fab.length;i++) { 333 fab[i].realname = FormatUtilities.replace(fab[i].realname); 334 fab[i].columnname = Sqlc.TransformaNombreColumna(fab[i].columnname); 335 } 336 return fab; 337 } 338 339 public static void buildXml(ConnectionProvider conn, XmlEngine xmlEngine, File fileDir, FieldsData fd, Vector <Object > vecFields, int max_textbox_length) throws ServletException , IOException { 340 XmlDocument xmlDocument = xmlEngine.readXmlTemplate("org/openbravo/wad/Configuration_ActionButton").createXmlDocument(); 341 xmlDocument.setParameter("class", (fd.columnname + fd.reference) + ".html"); 342 ProcessRelationData[] data = ProcessRelationData.selectParameters(conn, "", fd.reference); 343 344 { 345 StringBuffer html = new StringBuffer (); 346 if (vecFields!=null) { 347 for (int i=0;i<vecFields.size();i++) { 348 html.append("<PARAMETER id=\"" + vecFields.elementAt(i) + "\" name=\"" + vecFields.elementAt(i) + "\" attribute=\"value\"/>\n"); 349 } 350 } 351 xmlDocument.setParameter("additionalFields", html.toString()); 352 } 353 354 StringBuffer html = new StringBuffer (); 355 if (data!=null) { 356 for (int i=0;i< data.length; i++) { 357 WADControl auxControl = null; 358 try { 359 auxControl = WadUtility.getControl(conn, data[i], false, (fd.columnname + fd.reference), "", xmlEngine, false, false); 360 auxControl.setData("IsParameter", "Y"); 361 } catch (Exception ex) { 362 throw new ServletException (ex); 363 } 364 html.append(auxControl.toXml()).append("\n"); 365 } 366 } 367 368 xmlDocument.setParameter("column", html.toString()); 369 WadUtility.writeFile(fileDir, (fd.columnname + fd.reference) + ".xml", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xmlDocument.print()); 370 } 371 372 public static void buildHtml(ConnectionProvider conn, XmlEngine xmlEngine, File fileDir, FieldsData fd, Vector <Object > vecFields, int max_textbox_length, int max_size_edition_1_columns, String strLanguage, boolean isGeneric, String calendarDescription, String clockDescription, String calculatorDescription, String jsDateFormat) throws ServletException , IOException { 373 String [] discard = {"", "isGeneric", "fieldDiscardProcess"}; 374 if (fd.xmltext.equals("")) discard[0] = new String ("helpDiscard"); 375 if (isGeneric) discard[1] = new String ("isNotGeneric"); 376 if (fd.isjasper.equals("Y")) discard[2] = new String ("fieldDiscardJasper"); 377 XmlDocument xmlDocument = xmlEngine.readXmlTemplate("org/openbravo/wad/Template_ActionButton", discard).createXmlDocument(); 378 ProcessRelationData[] efd = ProcessRelationData.selectParameters(conn, strLanguage, fd.reference); 379 xmlDocument.setParameter("tab", fd.realname); 380 xmlDocument.setParameter("columnname", fd.columnname + fd.reference); 381 xmlDocument.setParameter("processDescription", fd.tablename); 382 xmlDocument.setParameter("processHelp", fd.xmltext); 383 xmlDocument.setParameter("adProcessId", fd.reference); 384 385 { 386 StringBuffer html = new StringBuffer (); 387 xmlDocument.setParameter("additionalFields", html.toString()); 388 } 389 390 if (efd!=null) { 391 vecFields.addElement(fd.columnname); 392 for (int i=0;i<efd.length;i++) vecFields.addElement(efd[i].columnname); 393 394 Properties importsCSS = new Properties (); 395 Properties importsJS = new Properties (); 396 Properties javaScriptFunctions = new Properties (); 397 StringBuffer validations = new StringBuffer (); 398 StringBuffer onload = new StringBuffer (); 399 StringBuffer html = new StringBuffer (); 400 for (int i=0;i< efd.length; i++) { 401 WADControl auxControl = null; 402 try { 403 auxControl = WadUtility.getControl(conn, efd[i], false, (fd.columnname + fd.reference), strLanguage, xmlEngine, false, false); 404 } catch (Exception ex) { 405 throw new ServletException (ex); 406 } 407 auxControl.setData("IsComboReload", "N"); 408 409 html.append("<tr><td class=\"TitleCell\">").append(auxControl.toLabel().replace("\n", "")).append("</td>\n"); 410 html.append("<td class=\"").append(auxControl.getType()).append("_ContentCell\""); 411 if (Integer.valueOf(auxControl.getData("DisplayLength")).intValue() > (max_size_edition_1_columns/2)) { 412 html.append(" colspan=\"2\""); 413 auxControl.setData("CssSize", "TwoCells"); 414 } else { 415 auxControl.setData("CssSize", "OneCell"); 416 } 417 html.append(">"); 418 html.append(auxControl.toString()); 419 html.append("</td>\n"); 420 if (auxControl.getData("CssSize").equals("OneCell")) html.append("<td></td>\n"); 421 html.append("<td></td>\n"); 422 html.append("</tr>\n"); 423 { 425 Vector <String []> auxJavaScript = auxControl.getJSCode(); 426 if (auxJavaScript!=null) { 427 for (int j=0;j<auxJavaScript.size();j++) { 428 String [] auxObj = auxJavaScript.elementAt(j); 429 javaScriptFunctions.setProperty(auxObj[0], auxObj[1]); 430 } 431 } 432 } { 435 Vector <String []> auxCss = auxControl.getCSSImport(); 436 if (auxCss!=null) { 437 for (int j=0;j<auxCss.size();j++) { 438 String [] auxObj = auxCss.elementAt(j); 439 importsCSS.setProperty(auxObj[0], auxObj[1]); 440 } 441 } 442 } { 445 Vector <String []> auxJs = auxControl.getImport(); 446 if (auxJs!=null) { 447 for (int j=0;j<auxJs.size();j++) { 448 String [] auxObj = auxJs.elementAt(j); 449 importsJS.setProperty(auxObj[0], auxObj[1]); 450 } 451 } 452 } if (!auxControl.getValidation().equals("")) validations.append(auxControl.getValidation()).append("\n"); 454 if (!auxControl.getOnLoad().equals("")) onload.append(auxControl.getOnLoad()).append("\n"); 455 } 456 xmlDocument.setParameter("fields", html.toString()); 457 StringBuffer sbImportCSS = new StringBuffer (); 458 for (Enumeration e = importsCSS.propertyNames();e.hasMoreElements();) { 459 String _name = (String )e.nextElement(); 460 sbImportCSS.append("<link rel=\"stylesheet\" type=\"text/css\" HREF=\"").append(importsCSS.getProperty(_name)).append("\"/>\n"); 461 } 462 xmlDocument.setParameter("importCSS", sbImportCSS.toString()); 463 StringBuffer sbImportJS = new StringBuffer (); 464 boolean hasCalendar = false; 465 boolean calendarInserted = false; 466 boolean calendarLangInserted = false; 467 for (Enumeration e = importsJS.propertyNames();e.hasMoreElements();) { 468 String _name = (String )e.nextElement(); 469 if (_name.startsWith("calendar")) hasCalendar = true; 470 if (!_name.equals("calendarLang") || calendarInserted) { 471 sbImportJS.append("<script language=\"JavaScript\" SRC=\"").append(importsJS.getProperty(_name)).append("\" type=\"text/javascript\"></script>\n"); 472 if (_name.equals("calendarLang")) calendarLangInserted = true; 473 } 474 if (_name.equals("calendar")) calendarInserted = true; 475 } 476 if (hasCalendar && !calendarLangInserted) sbImportJS.append("<script language=\"JavaScript\" SRC=\"").append(importsJS.getProperty("calendarLang")).append("\" type=\"text/javascript\"></script>\n"); 477 xmlDocument.setParameter("importJS", sbImportJS.toString()); 478 StringBuffer script = new StringBuffer (); 479 for (Enumeration e = javaScriptFunctions.propertyNames();e.hasMoreElements();) { 480 String _name = (String )e.nextElement(); 481 script.append(javaScriptFunctions.getProperty(_name)).append("\n"); 482 } 483 script.append("\nfunction depurarClient(action, Formulario, valor) {\n"); 484 script.append(" var frm=document.frmMain;\n"); 485 script.append(validations); 486 script.append(" return true;\n"); 487 script.append("}\n"); 488 489 script.append("\nfunction onloadClient() {\n"); 490 script.append(" var frm=document.frmMain;\n"); 491 script.append(" var key = frm.inpKey;"); 492 script.append(onload); 493 script.append(" return true;\n"); 494 script.append("}\n"); 495 496 xmlDocument.setParameter("script", script.toString()); 497 } 498 WadUtility.writeFile(fileDir, (fd.columnname + fd.reference) + ".html", xmlDocument.print()); 499 } 500 501 502 503 public static void xmlFormatAttribute(ProcessRelationData data) { 504 if (data==null) return; 505 if (WadUtility.isIntegerNumber(data.adReferenceId)) data.xmlFormat = "INTEGER"; 506 else if (WadUtility.isDecimalNumber(data.adReferenceId)) data.xmlFormat = "EURO"; 507 else if (WadUtility.isQtyNumber(data.adReferenceId)) data.xmlFormat = "QTY"; 508 else if (WadUtility.isPriceNumber(data.adReferenceId)) data.xmlFormat = "PRICE"; 509 } 510 511 public static String xmlFields(ProcessRelationData fd, String completeName, int maxTextboxLength, boolean forcedAttribute) { 512 StringBuffer html = new StringBuffer (); 513 String strSystemSeparator = System.getProperty("file.separator"); 514 515 if (forcedAttribute) { 516 html.append("<PARAMETER "); 517 html.append("id=\"" + Sqlc.TransformaNombreColumna(fd.columnname) + completeName + "\" "); 518 html.append("name=\"" + Sqlc.TransformaNombreColumna(fd.columnname) + completeName + "\" "); 519 html.append("attribute=\"value\""); 520 if (WadUtility.isDecimalNumber(fd.adReferenceId)) html.append(" format=\"euroEdition\""); 521 else if (WadUtility.isQtyNumber(fd.adReferenceId)) html.append(" format=\"qtyEdition\""); 522 else if (WadUtility.isPriceNumber(fd.adReferenceId)) html.append(" format=\"priceEdition\""); 523 else if (WadUtility.isIntegerNumber(fd.adReferenceId)) html.append(" format=\"integerEdition\""); 524 else if (WadUtility.isGeneralNumber(fd.adReferenceId)) html.append(" format=\"generalQtyEdition\""); 525 html.append(">"); 526 html.append("</PARAMETER>"); 527 } else if (fd.adReferenceId.equals("17") || fd.adReferenceId.equals("18") || fd.adReferenceId.equals("19")) { html.append(xmlFields(fd, completeName, maxTextboxLength, true)); 529 if (fd.isdisplayed.equals("Y")) { 530 html.append("\n<SUBREPORT id=\"report" + Sqlc.TransformaNombreColumna(fd.columnname) + completeName + "\" name=\"report" + Sqlc.TransformaNombreColumna(fd.columnname) + completeName + "\""); 531 html.append(" report=\"org" + strSystemSeparator + "openbravo" + strSystemSeparator + "erpCommon" + strSystemSeparator + "reference" + strSystemSeparator + "List\">\n"); 532 html.append(" <ARGUMENT name=\"parameterListSelected\" withId=\"" + Sqlc.TransformaNombreColumna(fd.columnname) + completeName + "\"/>\n"); 533 html.append("</SUBREPORT>\n"); 534 } 535 } else if (fd.adReferenceId.equals("20") && fd.isdisplayed.equals("Y")) { html.append("<PARAMETER "); 537 html.append("id=\"" + Sqlc.TransformaNombreColumna(fd.columnname) + completeName + "\" "); 538 html.append("name=\"" + Sqlc.TransformaNombreColumna(fd.columnname) + completeName + "\" "); 539 html.append("boolean=\"checked\" withId=\"paramCheck\""); 540 html.append(">"); 541 html.append("</PARAMETER>"); 542 } else if (fd.adReferenceId.equals("28") && fd.isdisplayed.equals("Y") && !fd.adReferenceValueId.equals("")) { html.append("<PARAMETER "); 544 html.append("id=\"" + Sqlc.TransformaNombreColumna(fd.columnname) + completeName + "\" "); 545 html.append("name=\"" + Sqlc.TransformaNombreColumna(fd.columnname) + completeName + "\" "); 546 html.append(" attribute=\"value\">"); 547 html.append(Sqlc.TransformaNombreColumna(fd.columnname) + completeName + "</PARAMETER>"); 548 html.append("<PARAMETER "); 549 html.append("id=\"" + Sqlc.TransformaNombreColumna(fd.columnname) + completeName + "_BTN\" "); 550 html.append("name=\"" + Sqlc.TransformaNombreColumna(fd.columnname) + completeName + "\">"); 551 html.append("</PARAMETER>"); 552 } else if ((fd.adReferenceId.equals("34") || fd.adReferenceId.equals("14")) && fd.isdisplayed.equals("Y")) { 553 html.append("<PARAMETER "); 554 html.append("id=\"" + Sqlc.TransformaNombreColumna(fd.columnname) + completeName + "\" "); 555 html.append("name=\"" + Sqlc.TransformaNombreColumna(fd.columnname) + completeName + "\" "); 556 html.append(">"); 557 html.append("</PARAMETER>"); 558 } else if (Integer.valueOf(fd.fieldlength).intValue()>maxTextboxLength && fd.isdisplayed.equals("Y")) { 559 html.append("<PARAMETER "); 560 html.append("id=\"" + Sqlc.TransformaNombreColumna(fd.columnname) + completeName + "\" "); 561 html.append("name=\"" + Sqlc.TransformaNombreColumna(fd.columnname) + completeName + "\" "); 562 if (WadUtility.isDecimalNumber(fd.adReferenceId)) html.append(" format=\"euroEdition\""); 563 else if (WadUtility.isQtyNumber(fd.adReferenceId)) html.append(" format=\"qtyEdition\""); 564 else if (WadUtility.isPriceNumber(fd.adReferenceId)) html.append(" format=\"priceEdition\""); 565 else if (WadUtility.isIntegerNumber(fd.adReferenceId)) html.append(" format=\"integerEdition\""); 566 else if (WadUtility.isGeneralNumber(fd.adReferenceId)) html.append(" format=\"generalQtyEdition\""); 567 html.append(">"); 568 html.append("</PARAMETER>"); 569 } else { 570 html.append("<PARAMETER "); 571 html.append("id=\"" + Sqlc.TransformaNombreColumna(fd.columnname) + completeName + "\" "); 572 html.append("name=\"" + Sqlc.TransformaNombreColumna(fd.columnname) + completeName + "\" "); 573 html.append("attribute=\"value\""); 574 if (WadUtility.isDecimalNumber(fd.adReferenceId)) html.append(" format=\"euroEdition\""); 575 else if (WadUtility.isQtyNumber(fd.adReferenceId)) html.append(" format=\"qtyEdition\""); 576 else if (WadUtility.isPriceNumber(fd.adReferenceId)) html.append(" format=\"priceEdition\""); 577 else if (WadUtility.isIntegerNumber(fd.adReferenceId)) html.append(" format=\"integerEdition\""); 578 else if (WadUtility.isGeneralNumber(fd.adReferenceId)) html.append(" format=\"generalQtyEdition\""); 579 html.append(">"); 580 html.append("</PARAMETER>"); 581 } 582 583 return html.toString(); 584 } 585 586 public static String classRequiredUpdateable(ProcessRelationData efd) { 587 StringBuffer htmltext = new StringBuffer (); 588 String strAux=""; 589 if (WadUtility.isGeneralNumber(efd.adReferenceId) || WadUtility.isDecimalNumber(efd.adReferenceId) || WadUtility.isQtyNumber(efd.adReferenceId) || WadUtility.isPriceNumber(efd.adReferenceId) || WadUtility.isIntegerNumber(efd.adReferenceId)) { 590 strAux=" number"; 591 } 592 String strType = "dojoValidateValid"; 593 String classType = "TextBox"; 594 if (WadUtility.isSelectType(efd.adReferenceId)) { 595 strType = "Combo"; 596 classType = "Combo"; 597 } 598 if (efd.required.equals("Y")) htmltext.append(" class=\"").append(strType).append(" required").append(strAux).append(" ").append(classType).append("_OneCell_width\" "); 599 else if (!strAux.equals("")) htmltext.append(" class=\"").append(strType).append(strAux).append(" ").append(classType).append("_OneCell_width\" "); 600 601 return htmltext.toString(); 602 } 603 604 public static String htmlFields(ProcessRelationData efd, String completeName, String completeID, boolean isupdateable, int maxTextboxLength, boolean forcedAttribute, boolean isdesigne) { 605 StringBuffer html = new StringBuffer (); 606 607 if (forcedAttribute) { 608 html.append("<input type=\"hidden\""); 609 html.append(" name=\"inp" + Sqlc.TransformaNombreColumna(efd.columnname) + completeName); 610 html.append("\" id=\"" + Sqlc.TransformaNombreColumna(efd.columnname) + completeID + "\" value=\""); 611 if (!isdesigne) html.append("xxV"); 612 if (WadUtility.isGeneralNumber(efd.adReferenceId) || WadUtility.isDecimalNumber(efd.adReferenceId) || WadUtility.isQtyNumber(efd.adReferenceId) || WadUtility.isPriceNumber(efd.adReferenceId)) html.append("\" onkeydown=\"auto_completar_numero(this, true, true);return true;"); 613 else if (WadUtility.isIntegerNumber(efd.adReferenceId)) html.append("\" onkeydown=\"auto_completar_numero(this, false, true);return true;"); 614 html.append("\">"); 615 } else if ((efd.adReferenceId.equals("17") || efd.adReferenceId.equals("18") || efd.adReferenceId.equals("19")) && efd.isdisplayed.equals("Y")) { html.append("<select name=\"inp" + Sqlc.TransformaNombreColumna(efd.columnname) + completeName + "\""); 617 html.append(classRequiredUpdateable(efd)); 618 html.append(" id=\"report"); 619 html.append(efd.columnname + completeID + "_S\""); 620 html.append(">"); 621 if (!efd.required.equals("Y")) html.append("<option value=\"\"></option>"); 622 html.append("<div id=\"report"); 623 html.append(Sqlc.TransformaNombreColumna(efd.columnname) + completeID + "\"></div>"); 624 html.append("</select>"); 625 } else if ((efd.adReferenceId.equals("34") || efd.adReferenceId.equals("14") || (!efd.adReferenceId.equals("20") && (Integer.valueOf(efd.fieldlength).intValue() > maxTextboxLength))) && efd.isdisplayed.equals("Y")){ html.append("<textarea cols=\"" + efd.fieldlength + "\" rows=\"3\" name=\"inp" + Sqlc.TransformaNombreColumna(efd.columnname)); 627 html.append(completeName + "\" id=\"" + Sqlc.TransformaNombreColumna(efd.columnname) + completeID + "\" "); 628 html.append(classRequiredUpdateable(efd)); 629 html.append(">"); 630 if (!isdesigne) html.append("xxV"); 631 html.append("</textarea>"); 632 } else { 633 html.append("<input type=\""); 634 if (efd.isdisplayed.equals("N")) { 635 html.append("hidden\""); 636 } else if (efd.adReferenceId.equals("20")) { html.append("checkbox\""); 638 } else { 639 html.append("text\""); 640 if (WadUtility.isGeneralNumber(efd.adReferenceId) || WadUtility.isDecimalNumber(efd.adReferenceId) || WadUtility.isQtyNumber(efd.adReferenceId) || WadUtility.isPriceNumber(efd.adReferenceId)) html.append(" onkeydown=\"auto_completar_numero(this, true, true);return true;\""); 641 else if (WadUtility.isIntegerNumber(efd.adReferenceId)) html.append(" onkeydown=\"auto_completar_numero(this, false, true);return true;\""); 642 html.append(" size=\"" + efd.fieldlength + "\" "); 643 html.append(classRequiredUpdateable(efd)); 644 if (!WadUtility.isSearchType(efd.adReferenceId)) html.append(" maxlength=\"" + efd.fieldlength + "\""); 645 } 646 html.append(" name=\"inp" + Sqlc.TransformaNombreColumna(efd.columnname) + completeName); 647 html.append("\" id=\"" + Sqlc.TransformaNombreColumna(efd.columnname) + completeID + "\" "); 648 html.append("value=\""); 649 if (efd.isdisplayed.equals("N")) { 650 if (!isdesigne) html.append("xxV"); 651 } else if (efd.adReferenceId.equals("20")) { 652 html.append("Y"); 653 } else { 654 if (!isdesigne) html.append("xxV"); 655 } 656 html.append("\""); 657 if (efd.isdisplayed.equals("Y") && isupdateable && WadUtility.isDateField(efd.adReferenceId)) { html.append(" onkeyup=\"auto_completar_fecha(this);return true;\""); 659 } else if (efd.isdisplayed.equals("Y") && isupdateable && WadUtility.isTimeField(efd.adReferenceId)) { html.append(" onkeyup=\"auto_completar_hora(this, true);return true;\""); 661 } 662 html.append(">"); 663 } 664 665 return html.toString(); 666 } 667 668 public static String findField(Vector <Object > vecFields, String token) { 669 if (vecFields==null) return ""; 670 for (int i=0;i<vecFields.size();i++) { 671 String field = vecFields.elementAt(i).toString(); 672 if (field.equalsIgnoreCase(token)) return field; 673 } 674 return ""; 675 } 676 677 public static String searchsCommand(ProcessRelationData efd, boolean fromButton, Vector <Object > vecFields, ConnectionProvider conn) { 678 StringBuffer params = new StringBuffer (); 679 StringBuffer html = new StringBuffer (); 680 String strName = FormatUtilities.replace(efd.searchname.trim()); 681 if (!fromButton) { 682 params.append(", 'Command'"); 683 params.append(", 'KEY'"); 684 } 685 params.append(", 'WindowID'"); 686 params.append(", document.frmMain.inpwindowId.value"); 687 String searchName = ((efd.reference!=null && efd.reference.equals("31"))?"/info/Locator":"/info/" + strName) + "_FS.html"; 688 EditionFieldsData[] fieldsSearch = null; 689 try { 690 if (efd.reference!=null && efd.reference.equals("30") && efd.adReferenceValueId!=null && !efd.adReferenceValueId.equals("")) fieldsSearch = EditionFieldsData.selectSearchs(conn, "I", efd.adReferenceValueId); 691 } catch (ServletException ex) { 692 ex.printStackTrace(); 693 } 694 if (fieldsSearch!=null && fieldsSearch.length>0) { 695 searchName = fieldsSearch[0].mappingname; 696 if (!fieldsSearch[0].referencevalue.equals("")) { 697 for (int i=0;i<fieldsSearch.length;i++) { 698 String field=findField(vecFields, fieldsSearch[i].referencevalue); 699 if (!field.equals("")) { 700 params.append(", 'inp").append(fieldsSearch[i].columnnameinp).append("'"); 701 params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ".value"); 702 } 703 } 704 } 705 } else { 706 if (efd.name.equalsIgnoreCase("PRODUCT")) { 707 String field=findField(vecFields, "m_pricelist_id"); 708 if (!field.equals("")) { 709 params.append(", 'inpPriceList'"); 710 params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ".value"); 711 } 712 field=findField(vecFields, "m_warehouse_id"); 713 if (!field.equals("")) { 714 params.append(", 'inpWarehouse'"); 715 params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ".value"); 716 } 717 field=findField(vecFields, "dateordered"); 718 if (!field.equals("")) { 719 params.append(", 'inpDate'"); 720 params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ".value"); 721 } 722 } 723 } 724 html.append("openSearch(null, null, '..").append(searchName).append("', null, false, 'frmMain', 'inp").append(Sqlc.TransformaNombreColumna(efd.columnname)).append("', 'inp").append(Sqlc.TransformaNombreColumna(efd.columnname)).append("_R', document.frmMain.inp").append(Sqlc.TransformaNombreColumna(efd.columnname)).append("_R.value").append(params.toString()).append(");"); 725 return html.toString(); 726 } 727 728 public static String searchs(ProcessRelationData efd, int maxTextboxLength, Vector <Object > vecFields, ConnectionProvider conn) { 729 StringBuffer html = new StringBuffer (); 730 String strName = FormatUtilities.replace(efd.searchname.trim()); 731 if (efd.adReferenceId.equals("31")) { 732 strName = "Locator"; 733 } else if (efd.name.toUpperCase().indexOf("BUSINESS")!=-1) { 734 html.append(htmlFields(efd, "_LOC", "_LOC", true, maxTextboxLength, true, true)); 735 html.append(htmlFields(efd, "_CON", "_CON", true, maxTextboxLength, true, true)); 736 } else if (efd.name.equalsIgnoreCase("PRODUCT")) { 737 html.append(htmlFields(efd, "_PLIST", "_PLIST", true, maxTextboxLength, true, true)); 738 html.append(htmlFields(efd, "_PSTD", "_PSTD", true, maxTextboxLength, true, true)); 739 html.append(htmlFields(efd, "_UOM", "_UOM", true, maxTextboxLength, true, true)); 740 html.append(htmlFields(efd, "_PLIM", "_PLIM", true, maxTextboxLength, true, true)); 741 html.append(htmlFields(efd, "_CURR", "_CURR", true, maxTextboxLength, true, true)); 742 } 743 html.append("<a HREF=\"#\""); 744 html.append("onClick=\"" + searchsCommand(efd, true, vecFields, conn) + "return false;\" "); 745 html.append("onMouseOut=\"window.status='';return true;\""); 746 html.append("onMouseOver=\"window.status='").append(efd.referenceName).append("';return true;\" class=\"windowbutton\"><img width=\"").append(IMAGE_EDITION_WIDTH).append("\" height=\"").append(IMAGE_EDITION_HEIGHT).append("\" alt=\"").append(efd.name).append("\" title=\"").append(efd.name).append("\""); 747 html.append(" border=\"0\" SRC=\"../../../../../web/images/" + strName + ".jpg\" id=\"button" + strName + "\"></a>"); 748 return html.toString(); 749 } 750 751 public static String productSearch(ProcessRelationData efd, int maxTextboxLength, Vector <Object > vecFields, ConnectionProvider conn) { 752 StringBuffer html = new StringBuffer (); 753 efd.searchname = "Product Complete"; 754 html.append(htmlFields(efd, "_LOC", "_LOC", true, maxTextboxLength, true, true)); 755 html.append(htmlFields(efd, "_ATR", "_ATR", true, maxTextboxLength, true, true)); 756 html.append(htmlFields(efd, "_PQTY", "_PQTY", true, maxTextboxLength, true, true)); 757 html.append(htmlFields(efd, "_PUOM", "_PUOM", true, maxTextboxLength, true, true)); 758 html.append(htmlFields(efd, "_QTY", "_QTY", true, maxTextboxLength, true, true)); 759 html.append(htmlFields(efd, "_UOM", "_UOM", true, maxTextboxLength, true, true)); 760 761 html.append("<a HREF=\"#\""); 762 html.append("onClick=\"" + searchsCommand(efd, true, vecFields, conn) + "return false;\" "); 763 html.append("onMouseOut=\"window.status='';return true;\""); 764 html.append("onMouseOver=\"window.status='").append(efd.referenceName).append("';return true;\" class=\"windowbutton\"><img width=\"").append(IMAGE_EDITION_WIDTH).append("\" height=\"").append(IMAGE_EDITION_HEIGHT).append("\" alt=\"").append(efd.name).append("\" title=\"").append(efd.name).append("\""); 765 html.append(" border=\"0\" SRC=\"../../../../../web/images/" + FormatUtilities.replace(efd.searchname.trim()) + ".jpg\" id=\"button" + FormatUtilities.replace(efd.searchname.trim()) + "\"></a>"); 766 return html.toString(); 767 } 768 } 769 | Popular Tags |