1 19 package org.openbravo.wad; 20 21 import org.openbravo.data.Sqlc; 22 import org.openbravo.utils.FormatUtilities; 23 import org.openbravo.utils.Replace; 24 import java.io.*; 25 import javax.servlet.*; 26 import java.util.*; 27 import org.openbravo.database.ConnectionProvider; 28 import org.openbravo.wad.controls.*; 29 import org.openbravo.data.FieldProvider; 30 import org.apache.log4j.Logger; 31 import org.apache.log4j.PropertyConfigurator; 32 import org.openbravo.xmlEngine.XmlEngine; 33 34 public class WadUtility { 35 static Logger log4j = Logger.getLogger(WadUtility.class); 36 static final int IMAGE_EDITION_WIDTH = 200; 37 static final int IMAGE_EDITION_HEIGHT = 200; 38 static final int IMAGE_BUTTON_WIDTH = 16; 39 static final int IMAGE_BUTTON_HEIGHT = 16; 40 static String [][] comparations = {{"==", " == "}, 41 {"=", " == "}, 42 {"!", " != "}, 43 {"^", " != "}, 44 {"-", " != "}}; 45 static String [][] unions = {{"|", " || "}, 46 {"&", " && "}}; 47 48 public WadUtility() { 49 PropertyConfigurator.configure("log4j.lcf"); 50 } 51 52 public static String columnIdentifier (ConnectionProvider conn, String tableName, boolean required, FieldsData fields, int ilist, int itable, boolean translated, Vector<Object > vecFields, Vector<Object > vecTable, Vector<Object > vecWhere, Vector<Object > vecParameters, Vector<Object > vecTableParameters, String sqlDateFormat) throws ServletException { 53 if (fields==null) return ""; 54 StringBuffer texto = new StringBuffer (); 55 if (fields.reference.equals("17")) { ilist++; 57 if (tableName!=null && tableName.length()!=0) { 58 vecTable.addElement("left join ad_ref_list_v list" + ilist + " on (" + tableName + "." + fields.name + " = list" + ilist + ".value and list" + ilist + ".ad_reference_id = " + fields.referencevalue + " and list" + ilist + ".ad_language = ?) "); 59 vecTableParameters.addElement("<Parameter name=\"paramLanguage\"/>"); 60 } else { 61 vecTable.addElement("ad_ref_list_v list" + ilist); 62 vecWhere.addElement(fields.referencevalue + " = " + "list" + ilist + ".ad_reference_id"); 63 vecWhere.addElement("list" + ilist + ".ad_language = ? "); 64 vecParameters.addElement("<Parameter name=\"paramLanguage\"/>"); 65 } 66 texto.append("list").append(ilist).append(".name"); 67 vecFields.addElement(texto.toString()); 68 } else if (fields.reference.equals("18")) { itable++; 70 TableRelationData trd[] = TableRelationData.selectRefTable(conn, fields.referencevalue); 71 if (log4j.isDebugEnabled()) log4j.debug(" number of TableRelationData: " + trd.length); 72 vecTable.addElement("left join (select " + trd[0].keyname + ((trd[0].isvaluedisplayed.equals("Y") && !trd[0].keyname.equalsIgnoreCase("value"))?", value":"") + (!trd[0].keyname.equalsIgnoreCase(trd[0].name)?(", " + trd[0].name):"") + " from " + trd[0].tablename + ") table" + itable + " on (" + tableName + "." + fields.name + " = table" + itable + "." + trd[0].keyname + ") "); 73 FieldsData fieldsAux = new FieldsData(); 74 fieldsAux.name = trd[0].name; 75 fieldsAux.tablename = trd[0].tablename; 76 fieldsAux.reference = trd[0].reference; 77 fieldsAux.referencevalue = trd[0].referencevalue; 78 fieldsAux.required = trd[0].required; 79 fieldsAux.istranslated = trd[0].istranslated; 80 if (trd[0].isvaluedisplayed.equals("Y")) texto.append("table" + itable + ".value || ' - ' || "); 81 texto.append(columnIdentifier(conn, "table" + itable, required, fieldsAux, ilist, itable, translated, vecFields, vecTable, vecWhere, vecParameters, vecTableParameters, sqlDateFormat)); 82 } else if (fields.reference.equals("19")) { itable++; 84 int ilength = fields.name.length(); 85 String tableDirName = fields.name.substring(0,ilength-3); 86 FieldsData fdi[] = FieldsData.identifierColumns(conn, tableDirName); 87 vecTable.addElement("left join " + tableDirName + " on (" + tableName + "." + fields.name + " = " + tableDirName + "." + fields.name + ") "); 88 for (int i=0;i< fdi.length; i++) { 89 if (i>0) texto.append(" || ' - ' || "); 90 texto.append(columnIdentifier(conn, tableDirName, required, fdi[i], ilist, itable, translated, vecFields, vecTable, vecWhere, vecParameters, vecTableParameters, sqlDateFormat)); 91 } 92 } else if (fields.reference.equals("30")) { 93 itable++; 94 EditionFieldsData[] dataSearchs = EditionFieldsData.selectSearchs(conn, "", fields.referencevalue); 95 String tableDirName = "", fieldId = ""; 96 if (dataSearchs==null || dataSearchs.length==0) { 97 int ilength = fields.name.length(); 98 if (fields.reference.equals("25")) tableDirName = "C_ValidCombination"; 99 else if (fields.reference.equals("31")) tableDirName = "M_Locator"; 100 else if (fields.reference.equals("800011")) tableDirName = "M_Product"; 101 else tableDirName = fields.name.substring(0,ilength-3); 102 if (fields.reference.equals("25")) fieldId = "C_ValidCombination_ID"; 103 else if (fields.reference.equals("31")) fieldId = "M_Locator_ID"; 104 else if (fields.reference.equals("800011")) fieldId = "M_Product_ID"; 105 else fieldId = fields.name; 106 } else { 107 tableDirName = dataSearchs[0].reference; 108 fieldId = dataSearchs[0].columnname; 109 } 110 FieldsData fdi[] = FieldsData.identifierColumns(conn, tableDirName); 111 vecTable.addElement("left join " + tableDirName + " on (" + tableName + "." + fields.name + " = " + tableDirName + "." + fieldId + ")"); 112 for (int i=0;i< fdi.length; i++) { 113 if (i>0) texto.append(" || ' - ' || "); 114 texto.append(columnIdentifier(conn, tableDirName, required, fdi[i], ilist, itable, translated, vecFields, vecTable, vecWhere, vecParameters, vecTableParameters, sqlDateFormat)); 115 } 116 } else if (fields.reference.equals("31") || fields.reference.equals("35") || fields.reference.equals("25") || fields.reference.equals("800011")) { itable++; 118 int ilength = fields.name.length(); 119 String tableDirName = ""; 120 if (fields.reference.equals("25")) tableDirName = "C_ValidCombination"; 121 else if (fields.reference.equals("31")) tableDirName = "M_Locator"; 122 else if (fields.reference.equals("800011")) tableDirName = "M_Product"; 123 else tableDirName = fields.name.substring(0,ilength-3); 124 String fieldId = ""; 125 if (fields.reference.equals("25")) fieldId = "C_ValidCombination_ID"; 126 else if (fields.reference.equals("31")) fieldId = "M_Locator_ID"; 127 else if (fields.reference.equals("800011")) fieldId = "M_Product_ID"; 128 else fieldId = fields.name; 129 FieldsData fdi[] = FieldsData.identifierColumns(conn, tableDirName); 130 vecTable.addElement("left join " + tableDirName + " on (" + tableName + "." + fields.name + " = " + tableDirName + "." + fieldId + ")"); 131 for (int i=0;i< fdi.length; i++) { 132 if (i>0) texto.append(" || ' - ' || "); 133 texto.append(columnIdentifier(conn, tableDirName, required, fdi[i], ilist, itable, translated, vecFields, vecTable, vecWhere, vecParameters, vecTableParameters, sqlDateFormat)); 134 } 135 } else { 136 if (fields.istranslated.equals("Y") && TableRelationData.existsTableColumn(conn, fields.tablename + "_TRL", fields.name)) { 137 FieldsData fdi[] = FieldsData.tableKeyColumnName(conn, fields.tablename); 138 if (fdi==null || fdi.length==0) { 139 vecFields.addElement(applyFormat(tableName + "." + fields.name, fields.reference, sqlDateFormat)); 140 texto.append(applyFormat(tableName + "." + fields.name, fields.reference, sqlDateFormat)); 141 } else { 142 vecTable.addElement("left join (select " + fdi[0].name + ", AD_Language" + (!fdi[0].name.equalsIgnoreCase(fields.name)?(", " + fields.name):"") + " from " + fields.tablename + "_TRL) tableTRL" + itable + " on (" + tableName + "." + fdi[0].name + " = tableTRL" + itable + "." + fdi[0].name + " and tableTRL" + itable + ".AD_Language = ?) "); 143 vecTableParameters.addElement("<Parameter name=\"paramLanguage\"/>"); 144 vecFields.addElement(applyFormat("(CASE WHEN tableTRL" + itable + "." + fields.name + " IS NULL THEN TO_CHAR(" + tableName + "." + fields.name + ") ELSE TO_CHAR(tableTRL" + itable + "." + fields.name + ") END)", fields.reference, sqlDateFormat)); 145 texto.append(applyFormat("(CASE WHEN tableTRL" + itable + "." + fields.name + " IS NULL THEN TO_CHAR(" + tableName + "." + fields.name + ") ELSE TO_CHAR(tableTRL" + itable + "." + fields.name + ") END)", fields.reference, sqlDateFormat)); 146 } 147 } else { 148 vecFields.addElement(applyFormat(tableName + "." + fields.name, fields.reference, sqlDateFormat)); 149 texto.append(applyFormat(tableName + "." + fields.name, fields.reference, sqlDateFormat)); 150 } 151 } 152 return texto.toString(); 153 } 154 155 public static String applyFormat(String text, String reference, String sqlDateFormat) { 156 if (isDateField(reference)) return "TO_CHAR(" + text + ", '"+sqlDateFormat+"')"; 157 else if (isTimeField(reference)) return "TO_CHAR(" + text + ", 'HH24:MM:SS')"; 158 else if (isDateTimeField(reference)) return "TO_CHAR(" + text + ", '"+sqlDateFormat+" HH24:MM:SS')"; 159 return text; 160 } 161 162 public static String columnIdentifier (ConnectionProvider conn, String tableName, boolean required, FieldsData fields, Vector<Object > vecCounters, boolean translated, Vector<Object > vecFields, Vector<Object > vecTable, Vector<Object > vecWhere, Vector<Object > vecParameters, Vector<Object > vecTableParameters, String sqlDateFormat) throws ServletException { 163 if (fields==null) return ""; 164 StringBuffer texto = new StringBuffer (); 165 int ilist = Integer.valueOf(vecCounters.elementAt(1).toString()).intValue(); 166 int itable = Integer.valueOf(vecCounters.elementAt(0).toString()).intValue(); 167 if (fields.reference.equals("13")) { FieldsData fdi[] = FieldsData.identifierColumns(conn, tableName); 169 for (int i=0;i< fdi.length; i++) { 170 if (i>0) texto.append(" || ' - ' || "); 171 vecCounters.set(0, Integer.toString(itable)); 172 vecCounters.set(1, Integer.toString(ilist)); 173 texto.append(columnIdentifier(conn, tableName, required, fdi[i], vecCounters, translated, vecFields, vecTable, vecWhere, vecParameters, vecTableParameters, sqlDateFormat)); 174 ilist = Integer.valueOf(vecCounters.elementAt(1).toString()).intValue(); 175 itable = Integer.valueOf(vecCounters.elementAt(0).toString()).intValue(); 176 } 177 if (texto.toString().equals("")) { 178 vecFields.addElement(((tableName!=null && tableName.length()!=0)?(tableName + "."):"") + fields.name); 179 texto.append(((tableName!=null && tableName.length()!=0)?(tableName + "."):"") + fields.name); 180 } 181 } else if (fields.reference.equals("17")) { ilist++; 183 if (tableName!=null && tableName.length()!=0) { 184 vecTable.addElement("left join ad_ref_list_v list" + ilist + " on (" + tableName + "." + fields.name + " = list" + ilist + ".value and list" + ilist + ".ad_reference_id = " + fields.referencevalue + " and list" + ilist + ".ad_language = ?) "); 185 vecTableParameters.addElement("<Parameter name=\"paramLanguage\"/>"); 186 } else { 187 vecTable.addElement("ad_ref_list_v list" + ilist); 188 vecWhere.addElement(fields.referencevalue + " = " + "list" + ilist + ".ad_reference_id "); 189 vecWhere.addElement("list" + ilist + ".ad_language = ? "); 190 vecParameters.addElement("<Parameter name=\"paramLanguage\"/>"); 191 } 192 texto.append("list").append(ilist).append(".name"); 193 vecFields.addElement(texto.toString()); 194 vecCounters.set(0, Integer.toString(itable)); 195 vecCounters.set(1, Integer.toString(ilist)); 196 } else if (fields.reference.equals("18")) { itable++; 198 TableRelationData trd[] = TableRelationData.selectRefTable(conn, fields.referencevalue); 199 if (log4j.isDebugEnabled()) log4j.debug(" number of TableRelationData: " + trd.length); 200 if (tableName!=null && tableName.length()!=0) { 201 vecTable.addElement("left join (select " + trd[0].keyname + ((trd[0].isvaluedisplayed.equals("Y") && !trd[0].keyname.equalsIgnoreCase("value"))?", value":"") + (!trd[0].keyname.equalsIgnoreCase(trd[0].name)?(", " + trd[0].name):"") + " from " + trd[0].tablename + ") table" + itable + " on (" + tableName + "." + fields.name + " = " + " table" + itable + "." + trd[0].keyname + ")"); 202 } else { 203 vecTable.addElement(trd[0].tablename + " table" + itable); 204 } 205 FieldsData fieldsAux = new FieldsData(); 206 fieldsAux.name = trd[0].name; 207 fieldsAux.tablename = trd[0].tablename; 208 fieldsAux.reference = trd[0].reference; 209 fieldsAux.referencevalue = trd[0].referencevalue; 210 fieldsAux.required = trd[0].required; 211 fieldsAux.istranslated = trd[0].istranslated; 212 vecCounters.set(0, Integer.toString(itable)); 213 vecCounters.set(1, Integer.toString(ilist)); 214 if (trd[0].isvaluedisplayed.equals("Y")) texto.append("table" + itable + ".value || ' - ' || "); 215 texto.append(columnIdentifier(conn, "table" + itable, required, fieldsAux, vecCounters, translated, vecFields, vecTable, vecWhere, vecParameters, vecTableParameters, sqlDateFormat)); 216 ilist = Integer.valueOf(vecCounters.elementAt(1).toString()).intValue(); 217 itable = Integer.valueOf(vecCounters.elementAt(0).toString()).intValue(); 218 } else if (fields.reference.equals("32")) { ilist++; 220 if (tableName!=null && tableName.length()!=0) { 221 vecTable.addElement("left join (select AD_Image_ID, ImageURL from AD_Image) list" + ilist + " on (" + tableName + "." + fields.name + " = list" + ilist + ".AD_Image_ID) "); 222 } else { 223 vecTable.addElement("AD_Image list" + ilist); 224 } 225 texto.append("list").append(ilist).append(".ImageURL"); 226 vecFields.addElement(texto.toString()); 227 vecCounters.set(0, Integer.toString(itable)); 228 vecCounters.set(1, Integer.toString(ilist)); 229 } else if (fields.reference.equals("19") || fields.reference.equals("30") || fields.reference.equals("31") || fields.reference.equals("35") || fields.reference.equals("25") || fields.reference.equals("800011")) { itable++; 231 EditionFieldsData[] dataSearchs = null; 232 if (fields.reference.equals("30")) dataSearchs = EditionFieldsData.selectSearchs(conn, "", fields.referencevalue); 233 String tableDirName = "", fieldId=""; 234 if (dataSearchs==null || dataSearchs.length==0) { 235 int ilength = fields.name.length(); 236 if (fields.reference.equals("25")) tableDirName = "C_ValidCombination"; 237 else if (fields.reference.equals("31")) tableDirName = "M_Locator"; 238 else if (fields.reference.equals("800011")) tableDirName = "M_Product"; 239 else if (fields.name.equalsIgnoreCase("C_SETTLEMENT_CANCEL_ID")) tableDirName = "C_Settlement"; 240 else if (fields.name.equalsIgnoreCase("SUBSTITUTE_ID")) tableDirName = "M_Product"; 241 else tableDirName = fields.name.substring(0,ilength-3); 242 if (fields.reference.equals("25")) fieldId = "C_ValidCombination_ID"; 243 else if (fields.reference.equals("31")) fieldId = "M_Locator_ID"; 244 else if (fields.reference.equals("800011")) fieldId = "M_Product_ID"; 245 else if (fields.name.equalsIgnoreCase("C_SETTLEMENT_CANCEL_ID")) fieldId = "C_Settlement_ID"; 246 else if (fields.name.equalsIgnoreCase("SUBSTITUTE_ID")) fieldId = "M_Product_ID"; 247 else fieldId = fields.name; 248 } else { 249 tableDirName = dataSearchs[0].reference; 250 fieldId = dataSearchs[0].columnname; 251 } 252 FieldsData fdi[] = FieldsData.identifierColumns(conn, tableDirName); 253 if (tableName!=null && tableName.length()!=0) { 254 StringBuffer fieldsAux = new StringBuffer (); 255 for (int i=0;i< fdi.length; i++) { 256 if (!fdi[i].name.equalsIgnoreCase(fieldId)) fieldsAux.append(", ").append(fdi[i].name); 257 } 258 vecTable.addElement("left join (select " + fieldId + fieldsAux.toString() + " from " + tableDirName + ") table" + itable + " on (" + tableName + "." + fields.name + " = table" + itable + "." + fieldId + ")"); 259 } else { 260 vecTable.addElement(tableDirName + " table" + itable); 261 } 262 int tableId=itable; 263 for (int i=0;i< fdi.length; i++) { 264 if (i>0) texto.append(" || ' - ' || "); 265 vecCounters.set(0, Integer.toString(itable)); 266 vecCounters.set(1, Integer.toString(ilist)); 267 texto.append(columnIdentifier(conn, "table" + tableId, required, fdi[i], vecCounters, translated, vecFields, vecTable, vecWhere, vecParameters, vecTableParameters, sqlDateFormat)); 268 ilist = Integer.valueOf(vecCounters.elementAt(1).toString()).intValue(); 269 itable = Integer.valueOf(vecCounters.elementAt(0).toString()).intValue(); 270 } 271 } else { 272 if (fields.istranslated.equals("Y") && TableRelationData.existsTableColumn(conn, fields.tablename + "_TRL", fields.name)) { 273 FieldsData fdi[] = FieldsData.tableKeyColumnName(conn, fields.tablename); 274 if (fdi==null || fdi.length==0) { 275 vecFields.addElement(applyFormat(((tableName!=null && tableName.length()!=0)?(tableName + "."):"") + fields.name, fields.reference, sqlDateFormat)); 276 texto.append(applyFormat(((tableName!=null && tableName.length()!=0)?(tableName + "."):"") + fields.name, fields.reference, sqlDateFormat)); 277 } else { 278 vecTable.addElement("left join (select " + fdi[0].name + ",AD_Language" + (!fdi[0].name.equalsIgnoreCase(fields.name)?(", " + fields.name):"") + " from " + fields.tablename + "_TRL) tableTRL" + itable + " on (" + tableName + "." + fdi[0].name + " = tableTRL" + itable + "." + fdi[0].name + " and tableTRL" + itable + ".AD_Language = ?) "); 279 vecTableParameters.addElement("<Parameter name=\"paramLanguage\"/>"); 280 vecFields.addElement(applyFormat("(CASE WHEN tableTRL" + itable + "." + fields.name + " IS NULL THEN TO_CHAR(" + tableName + "." + fields.name + ") ELSE TO_CHAR(tableTRL" + itable + "." + fields.name + ") END)", fields.reference, sqlDateFormat)); 281 texto.append(applyFormat("(CASE WHEN tableTRL" + itable + "." + fields.name + " IS NULL THEN TO_CHAR(" + tableName + "." + fields.name + ") ELSE TO_CHAR(tableTRL" + itable + "." + fields.name + ") END)", fields.reference, sqlDateFormat)); 282 } 283 } else { 284 vecFields.addElement(applyFormat(((tableName!=null && tableName.length()!=0)?(tableName + "."):"") + fields.name, fields.reference, sqlDateFormat)); 285 texto.append(applyFormat(((tableName!=null && tableName.length()!=0)?(tableName + "."):"") + fields.name, fields.reference, sqlDateFormat)); 286 } 287 } 288 vecCounters.set(0, Integer.toString(itable)); 289 vecCounters.set(1, Integer.toString(ilist)); 290 return texto.toString(); 291 } 292 293 299 public static String classRequiredUpdateable(EditionFieldsData efd, boolean isupdateable, boolean tabIsReadOnly) { 300 StringBuffer htmltext = new StringBuffer (); 301 String strAux=""; 302 try { 303 if (isDecimalNumber(efd.reference) || isPriceNumber(efd.reference) || isIntegerNumber(efd.reference) || isGeneralNumber(efd.reference) || isQtyNumber(efd.reference)) { 304 strAux=" number"; 305 } 306 String strType = "dojoValidateValid"; 307 String classType = "TextBox"; 308 if (isSelectType(efd.reference)) { 309 strType = "Combo"; 310 classType = "Combo"; 311 } 312 313 if (efd.required.equals("Y") && !efd.columnname.equalsIgnoreCase("Value")){ 314 if (efd.isreadonly.equals("Y") || tabIsReadOnly) { 315 htmltext.append(" class=\"").append(strType).append(" required ").append(classType).append("_OneCell_width").append(strAux).append(" readonly\" "); 316 } else if (!isupdateable) { 317 htmltext.append(" class=\"").append(strType).append(" required ").append(classType).append("_OneCell_width").append(strAux).append(" readonly\" "); 318 } else { 319 htmltext.append(" class=\"").append(strType).append(" required ").append(classType).append("_OneCell_width").append(strAux).append("\" "); 320 } 321 } else if (efd.isreadonly.equals("Y") || tabIsReadOnly) { 322 htmltext.append(" class=\"").append(strType).append(" ").append(classType).append("_OneCell_width").append(strAux).append(" readonly\" "); 323 } else if (!isupdateable) { 324 htmltext.append(" class=\"").append(strType).append(" ").append(classType).append("_OneCell_width").append(strAux).append(" readonly\" "); 325 } else { 326 htmltext.append(" class=\"").append(strType).append(" ").append(classType).append("_OneCell_width").append(strAux).append("\" "); 327 } 328 } catch (Exception e) { 329 return ""; 330 } 331 return htmltext.toString(); 332 } 333 334 public static String buildSQL(String clause, Vector<Object > vecParameters) { 335 StringBuffer where = new StringBuffer (); 336 if (!clause.equals("")) { 337 if (clause.indexOf('@') > -1) { 338 where.append(getSQLWadContext(clause, vecParameters)); 339 } else { 340 where.append(clause); 341 } 342 } 343 return where.toString(); 344 } 345 346 public static String columnRelationType(String reference) { 347 if (isDateField(reference)) return "DATE"; 348 else if (isTimeField(reference)) return "TIME"; 349 else if (isDateTimeField(reference)) return "DATETIME"; 350 else if (reference.equals("20")) return "YN"; 351 else if (isDecimalNumber(reference)) return "DECIMAL"; 352 else if (isQtyNumber(reference)) return "DECIMAL"; 353 else if (isPriceNumber(reference)) return "DECIMAL"; 354 else if (isIntegerNumber(reference)) return "INTEGER"; 355 else if (isGeneralNumber(reference)) return "NUMBER"; 356 else if (reference.equals("32")) return "IMAGE"; 357 else if (isLinkType(reference)) return "LINK"; 358 else return "TEXT"; 359 } 360 361 362 public static boolean columnRelationFormat(FieldsData data, boolean header, int maxColSize) throws IOException, ServletException { 363 if (data==null) return false; 364 if (data.reference.equals("28")) return false; 365 if (maxColSize>0) { 366 if (Integer.valueOf(data.displaylength).intValue()>maxColSize) data.displaylength=Integer.toString(maxColSize); 367 if (header && data.name.length()>Integer.valueOf(data.displaylength).intValue()) { 368 data.name = data.name.substring(0, Integer.valueOf(data.displaylength).intValue()); 369 } 370 } 371 return true; 372 } 373 374 public static void xmlFormatAttribute(FieldsData data) { 375 if (data==null) return; 376 if (data.isdisplayed.equals("Y")) { 377 if (isIntegerNumber(data.reference)) data.xmlFormat="INTEGER"; 378 else if (isDecimalNumber(data.reference)) data.xmlFormat="EURO"; 379 else if (isQtyNumber(data.reference)) data.xmlFormat="QTY"; 380 else if (isPriceNumber(data.reference)) data.xmlFormat="PRICE"; 381 else if (isGeneralNumber(data.reference)) data.xmlFormat="GENERALQTY"; 382 else data.xmlFormat="REPLACECHARACTERS"; 383 } 384 } 385 386 public static String xmlFields(FieldsData fd, String completeName, int maxTextboxLength, boolean forcedAttribute, boolean tabIsReadOnly) { 387 StringBuffer html = new StringBuffer (); 388 String strSystemSeparator = System.getProperty("file.separator"); 389 390 if (forcedAttribute) { 391 html.append("<FIELD "); 392 html.append("id=\"" + fd.name + completeName + "\" "); 393 html.append("attribute=\"value\""); 394 if (isDecimalNumber(fd.reference)) html.append(" format=\"euroEdition\""); 395 else if (isQtyNumber(fd.reference)) html.append(" format=\"qtyEdition\""); 396 else if (isPriceNumber(fd.reference)) html.append(" format=\"priceEdition\""); 397 else if (isIntegerNumber(fd.reference)) html.append(" format=\"integerEdition\""); 398 else if (isGeneralNumber(fd.reference)) html.append(" format=\"generalQtyEdition\""); 399 else html.append(" replaceCharacters=\"htmlPreformated\""); 400 html.append(">"); 401 html.append(fd.name + completeName + "</FIELD>"); 402 } else if (fd.reference.equals("17") || fd.reference.equals("18") || fd.reference.equals("19")) { html.append(xmlFields(fd, completeName, maxTextboxLength, true, tabIsReadOnly)); 404 if (fd.isdisplayed.equals("Y")) { 405 html.append("\n<SUBREPORT id=\"report" + fd.name + completeName + "\" name=\"report" + fd.name + completeName + "\""); 406 html.append(" report=\"org" + strSystemSeparator + "openbravo" + strSystemSeparator + "erpCommon" + strSystemSeparator + "reference" + strSystemSeparator + "List\">\n"); 407 html.append(" <ARGUMENT name=\"parameterListSelected\" withId=\"" + fd.name + completeName + "\"/>\n"); 408 html.append("</SUBREPORT>\n"); 409 } 410 if (fd.isreadonly.equals("Y") || !fd.isupdateable.equals("Y") || tabIsReadOnly) { 411 html.append("<FIELD "); 412 html.append("id=\"report" + fd.name + completeName + "_S\" "); 413 html.append(" attribute=\"onchange\" replace=\"xx\""); 414 html.append(">"); 415 html.append(fd.name + completeName + "</FIELD>"); 416 } 417 } else if (fd.reference.equals("32")) { html.append(xmlFields(fd, "", maxTextboxLength, true, tabIsReadOnly)); 419 if (fd.isdisplayed.equals("Y")) { 420 html.append("<FIELD id=\"" + fd.name + completeName + "\" name=\"" + fd.name + completeName + "\" attribute=\"src\" replace=\"xx\">"); 421 html.append(fd.name).append(completeName); 422 html.append("</FIELD>"); 423 } 424 } else if (isLinkType(fd.reference)) { 425 html.append("<FIELD "); 426 html.append("id=\"" + fd.name + completeName + "\" "); 427 html.append("attribute=\"value\""); 428 html.append(" replaceCharacters=\"htmlPreformated\""); 429 html.append(">"); 430 html.append(fd.name + completeName + "</FIELD>"); 431 } else if (fd.reference.equals("20") && fd.isdisplayed.equals("Y")) { html.append("<FIELD "); 433 html.append("id=\"" + fd.name + completeName + "\" "); 434 html.append("boolean=\"checked\" withId=\"paramCheck\""); 435 html.append(">"); 436 html.append(fd.name + completeName + "</FIELD>"); 437 } else if (fd.reference.equals("28") && fd.isdisplayed.equals("Y") && !fd.referencevalue.equals("") && !fd.columnname.equals("ChangeProjectStatus")) { html.append("<FIELD "); 439 html.append("id=\"" + fd.name + completeName + "\" "); 440 html.append("replaceCharacters=\"htmlPreformated\" "); 441 html.append(" attribute=\"value\">"); 442 html.append(fd.name + completeName + "</FIELD>"); 443 html.append("<FIELD "); 444 html.append("replaceCharacters=\"htmlPreformated\" "); 445 html.append("id=\"" + fd.name + completeName + "_BTN\">"); 446 html.append(fd.name + completeName + "_BTN</FIELD>"); 447 } else if (Integer.valueOf(fd.fieldlength).intValue()>maxTextboxLength && fd.isdisplayed.equals("Y")) { 448 html.append("<FIELD "); 449 html.append("id=\"" + fd.name + completeName + "\" "); 450 if (isDecimalNumber(fd.reference)) html.append(" format=\"euroEdition\""); 451 else if (isQtyNumber(fd.reference)) html.append(" format=\"qtyEdition\""); 452 else if (isPriceNumber(fd.reference)) html.append(" format=\"priceEdition\""); 453 else if (isIntegerNumber(fd.reference)) html.append(" format=\"integerEdition\""); 454 else if (isGeneralNumber(fd.reference)) html.append(" format=\"generalQtyEdition\""); 455 else html.append(" replaceCharacters=\"htmlPreformatedTextarea\""); 456 html.append(">"); 457 html.append(fd.name + completeName + "</FIELD>"); 458 } else { 459 html.append("<FIELD "); 460 html.append("id=\"" + fd.name + completeName + "\" "); 461 html.append("attribute=\"value\""); 462 if (isDecimalNumber(fd.reference)) html.append(" format=\"euroEdition\""); 463 else if (isQtyNumber(fd.reference)) html.append(" format=\"qtyEdition\""); 464 else if (isPriceNumber(fd.reference)) html.append(" format=\"priceEdition\""); 465 else if (isIntegerNumber(fd.reference)) html.append(" format=\"integerEdition\""); 466 else if (isGeneralNumber(fd.reference)) html.append(" format=\"generalQtyEdition\""); 467 else html.append(" replaceCharacters=\"htmlPreformated\""); 468 html.append(">"); 469 html.append(fd.name + completeName + "</FIELD>"); 470 } 471 472 return html.toString(); 473 } 474 475 public static String htmlFields(EditionFieldsData efd, String completeName, String completeID, boolean isupdateable, int maxTextboxLength, boolean forcedAttribute, boolean isdesigne, Vector<Object > vecCallOuts, String tabName, Vector<Object > vecDisplayLogic, Vector<Object > vecReloads, boolean tabIsReadOnly, int textareaLength) { 476 StringBuffer html = new StringBuffer (); 477 String onChange = ((isInVector(vecDisplayLogic, efd.columnname) && !tabIsReadOnly)?"displayLogic();":""); 478 String logChanges = "logChanges(this);"; 479 if (vecReloads!=null && vecReloads.size()>0 && efd.calloutname.equals("") && !tabIsReadOnly && isInVector(vecReloads, efd.columnname)) { 480 efd.calloutname="ComboReloads" + efd.tabid; 481 onChange += callouts(efd, vecCallOuts, maxTextboxLength, true); 482 } 484 if (!forcedAttribute && efd.isdisplayed.equals("Y") && !efd.displaylogic.equals("")) { 485 html.append("<span id=\"" + efd.columnname + "_inp\">"); 486 } 487 if (forcedAttribute) { 488 html.append("<INPUT type=\"hidden\""); 489 html.append(" name=\"inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + completeName); 490 html.append("\" id=\"" + efd.columnname + completeID + "\" value=\""); 491 if (!isdesigne) html.append("xxV"); 492 if (isDecimalNumber(efd.reference) || isPriceNumber(efd.reference) || isGeneralNumber(efd.reference) || isQtyNumber(efd.reference)) html.append("\" onkeydown=\"auto_completar_numero(this, true, true);return true;"); 493 else if (isIntegerNumber(efd.reference)) html.append("\" onkeydown=\"auto_completar_numero(this, false, true);return true;"); 494 html.append("\""); 495 html.append(classRequiredUpdateable(efd, isupdateable, tabIsReadOnly)); 496 html.append(" ></INPUT>"); 497 } else if ((efd.reference.equals("17") || efd.reference.equals("18") || efd.reference.equals("19")) && efd.isdisplayed.equals("Y")) { StringBuffer html1 = new StringBuffer (); 499 html.append("<select name=\"inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + completeName + "\""); 500 onChange =callouts(efd, vecCallOuts, maxTextboxLength) + onChange; 501 if (log4j.isDebugEnabled()) log4j.debug("column: " + efd.columnname + "isUpdateable: " + isupdateable + " tabReadOnly: " + tabIsReadOnly + " isUpdateable field: " + efd.isupdateable); 503 if (!isupdateable || tabIsReadOnly) { 504 html.append(" readonly=\"true\""); 505 onChange = "selectCombo(this, 'xx');"; 506 } 507 html.append(" onchange=\"").append(logChanges).append(onChange).append("return true;\""); 508 html.append(classRequiredUpdateable(efd, isupdateable, tabIsReadOnly)); 509 html.append(" id=\"report"); 510 html.append(efd.columnname + completeID + "_S\""); 511 html.append(">"); 512 if (!efd.required.equals("Y")) html.append("<option value=\"\"></option>"); 513 html.append("<div id=\"report"); 514 html.append(efd.columnname + completeID + "\"></div>"); 515 html.append("</select>"); 516 html.append(html1); 517 } else if (efd.reference.equals("23")) { 518 html.append("<INPUT type=\"file\" "); 519 html.append(" size=\"" + efd.displaysize + "\" "); 520 html.append(classRequiredUpdateable(efd, isupdateable, tabIsReadOnly)); 521 html.append(" name=\"inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + completeName); 522 html.append("\" id=\"" + efd.columnname + completeID + "\" "); 523 html.append("value=\""); 524 if (!isdesigne) html.append("xxV"); 525 html.append("\""); 526 if (!tabIsReadOnly) onChange =callouts(efd, vecCallOuts, maxTextboxLength) + onChange; 527 if (!onChange.equals("")) onChange = onChange + "return true;"; 528 html.append(" onchange=\"").append(logChanges).append(onChange).append("\""); 529 if (!isupdateable || tabIsReadOnly) { 530 html.append(" readonly=\"true\""); 531 } 532 html.append("></INPUT>"); 533 } else if (efd.reference.equals("32")) { 534 if (!tabIsReadOnly && isupdateable) { 535 html.append("<a HREF=\"#\" onclick=\""); 536 html.append("openSearch(null, null, '../info/ImageInfo_FS.html', null, false, 'frmMain', 'inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + "', 'inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + "_R', document.frmMain.inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + ".value);"); 537 html.append("return false;\" onmouseover=\"window.status='").append(efd.referenceName).append("';return true;\" onmouseout=\"window.status='';return true;\">"); 538 } 539 html.append("<img SRC=\"../../../../../web/images/xx\" border=\"0\""); 540 html.append(" width=\"").append((efd.displaysize.equals("") || IMAGE_EDITION_WIDTH<Integer.valueOf(efd.displaysize).intValue())?Integer.toString(IMAGE_EDITION_WIDTH):efd.displaysize).append("\""); 541 html.append(" height=\"").append((efd.displaysize.equals("") || IMAGE_EDITION_HEIGHT<Integer.valueOf(efd.displaysize).intValue())?Integer.toString(IMAGE_EDITION_HEIGHT):efd.displaysize).append("\" "); 542 html.append(classRequiredUpdateable(efd, isupdateable, tabIsReadOnly)); 543 html.append(" name=\"inp").append(Sqlc.TransformaNombreColumna(efd.columnnameinp)).append(completeName); 544 html.append("\" id=\"").append(efd.columnname).append(completeID).append("\" alt=\"").append(efd.name).append("\" title=\"").append(efd.name).append("\""); 545 if (!tabIsReadOnly) onChange =callouts(efd, vecCallOuts, maxTextboxLength) + onChange; 546 if (!onChange.equals("")) onChange = onChange + "return true;"; 547 html.append(" onchange=\"").append(logChanges).append(onChange).append("\""); 548 if (!isupdateable || tabIsReadOnly) { 549 html.append(" readonly=\"true\""); 550 } 551 html.append("></img>"); 552 if (!tabIsReadOnly && isupdateable) { 553 html.append("</a>"); 554 } 555 } else if (efd.reference.equals("34") && efd.isdisplayed.equals("Y")){ StringBuffer html1 = new StringBuffer (); 557 double rowLength = ((Integer.valueOf(efd.fieldlength).intValue() *20)/ 4000); 558 if (rowLength<3.0) rowLength = 3.0; 559 html.append("<TEXTAREA cols=\"").append(textareaLength).append("\" rows=\"").append(Double.toString(rowLength)).append("\" name=\"inp").append(Sqlc.TransformaNombreColumna(efd.columnnameinp)); 560 html.append(completeName).append("\" id=\"").append(efd.columnname).append(completeID).append("\" "); 561 onChange =callouts(efd, vecCallOuts, maxTextboxLength) + onChange; 562 html.append(" onclick=\"").append(logChanges).append(onChange).append("return true;\""); 563 html.append(classRequiredUpdateable(efd, isupdateable, tabIsReadOnly)); 564 if (!isupdateable || tabIsReadOnly) { 565 html.append(" readonly=\"true\""); 566 } 567 html.append(" onkeypress=\"return tamanoMaximo(this, ").append(efd.fieldlength).append(");").append("\""); 568 html.append(">"); 569 if (!isdesigne) html.append("xxV"); 570 html.append("</TEXTAREA>"); 571 html.append(html1); 572 } else if (isLinkType(efd.reference)) { 573 html.append("<input type=\"text\" name=\"inp").append(Sqlc.TransformaNombreColumna(efd.columnnameinp)); 574 html.append(completeName).append("\" id=\"").append(efd.columnname).append(completeID).append("\" "); 575 onChange =callouts(efd, vecCallOuts, maxTextboxLength) + onChange; 576 html.append(" onchange=\"").append(logChanges).append(onChange).append("return true;\""); 577 html.append(classRequiredUpdateable(efd, isupdateable, tabIsReadOnly)); 578 if (!isupdateable || tabIsReadOnly) { 579 html.append(" readonly=\"true\""); 580 } 581 html.append(" size=\"").append(efd.displaysize).append("\" "); 582 html.append(" maxlength=\"").append(efd.fieldlength).append("\" "); 583 html.append("value=\""); 584 if (!isdesigne) html.append("xxV"); 585 html.append("\">"); 586 } else if (!efd.reference.equals("20") && (Integer.valueOf(efd.fieldlength).intValue() > maxTextboxLength) && efd.isdisplayed.equals("Y")){ StringBuffer html1 = new StringBuffer (); 588 double rowLength = ((Integer.valueOf(efd.fieldlength).intValue() *20)/ 4000); 589 if (rowLength<3.0) rowLength = 3.0; 590 html.append("<TEXTAREA cols=\"").append(textareaLength).append("\" rows=\"").append(Double.toString(rowLength)).append("\" name=\"inp").append(Sqlc.TransformaNombreColumna(efd.columnnameinp)); 591 html.append(completeName).append("\" id=\"").append(efd.columnname).append(completeID).append("\" "); 592 onChange =callouts(efd, vecCallOuts, maxTextboxLength) + onChange; 593 html.append(" onclick=\"").append(logChanges).append(onChange).append("return true;\""); 594 html.append(classRequiredUpdateable(efd, isupdateable, tabIsReadOnly)); 595 if (!isupdateable || tabIsReadOnly) { 596 html.append(" readonly=\"true\""); 597 } 598 html.append(" onkeypress=\"return tamanoMaximo(this, ").append(efd.fieldlength).append(");").append("\""); 599 html.append(">"); 600 if (!isdesigne) html.append("xxV"); 601 html.append("</TEXTAREA>"); 602 html.append(html1); 603 } else if (efd.reference.equals("28") && efd.isdisplayed.equals("Y")) { 604 html.append("<TABLE border=\"1\" cellpadding=\"0\" cellspacing=\"0\" summary=\"\" class=\"ActionButton\" onClick=\""); 605 html.append(buttonsCommand(efd, tabName + "_Edition.html") + "\">"); 606 html.append("<TR class=\"ActionButton\"><TD>"); 607 html.append("<img SRC=\"../../../../../web/images/ButtonProcess.gif\" border=\"0\" height=\"25\" width=\"25\" id=\"buttonProcess\"></TD>"); 608 html.append("<TD class=\"Medio\">"); 609 html.append(htmlFields(efd, completeName, completeID, isupdateable, maxTextboxLength, true, isdesigne, vecCallOuts, tabName, vecDisplayLogic, vecReloads, tabIsReadOnly, textareaLength)); 610 html.append("<span id=\"" + efd.columnname + completeID + "_BTN\">"); 611 html.append((efd.referencevalue.equals("") || efd.columnname.equals("ChangeProjectStatus"))? efd.name : "xx"); 612 html.append("</span> </TD>"); 613 html.append("</TR></TABLE>"); 614 } else { 615 StringBuffer html1 = new StringBuffer (); 616 html.append("<INPUT type=\""); 617 if (efd.isdisplayed.equals("N")) { 618 html.append("hidden\""); 619 } else if (efd.reference.equals("20")) { html.append("checkbox\""); 621 } else { 622 if (efd.isencrypted.equals("Y") || efd.iscolumnencrypted.equals("Y")) html.append("password\""); 623 else html.append("text\""); 624 if (isDecimalNumber(efd.reference) || isPriceNumber(efd.reference) || isGeneralNumber(efd.reference) || isQtyNumber(efd.reference)) html.append(" onkeydown=\"auto_completar_numero(this, true, true);return true;\""); 625 else if (isIntegerNumber(efd.reference)) html.append(" onkeydown=\"auto_completar_numero(this, false, true);return true;\""); 626 html.append(" size=\"" + efd.displaysize + "\" "); 627 html.append(classRequiredUpdateable(efd, isupdateable, tabIsReadOnly)); 628 if (!isSearchType(efd.reference)) html.append(" maxlength=\"" + efd.fieldlength + "\""); 629 } 630 html.append(" name=\"inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + completeName); 631 html.append("\" id=\"" + efd.columnname + completeID + "\" "); 632 html.append("value=\""); 633 if (efd.isdisplayed.equals("N")) { 634 if (!isdesigne) html.append("xxV"); 635 } else if (efd.reference.equals("20")) { 636 html.append("Y"); 637 } else { 638 if (!isdesigne) html.append("xxV"); 639 } 640 html.append("\""); 641 if (!tabIsReadOnly) onChange =callouts(efd, vecCallOuts, maxTextboxLength) + onChange; 642 onChange = logChanges + onChange + "return true;"; 643 644 if (efd.reference.equals("14") && Integer.valueOf(efd.fieldlength).intValue() > maxTextboxLength) { 645 html.append((!onChange.equals("")?(" onblur=\"" + onChange + "\""):"")); 646 } else if (efd.reference.equals("20")) { 647 if (!isupdateable || tabIsReadOnly) onChange = "return false;"; 648 html.append((!onChange.equals("")?(" onclick=\"" + onChange + "\""):"")); 649 } else { 650 html.append((!onChange.equals("")?(" onchange=\"" + onChange + "\""):"")); 651 } 652 if (efd.isdisplayed.equals("Y") && isupdateable && (isDateField(efd.reference) || isTimeField(efd.reference))) { html.append(" onkeyup=\"auto_completar_"); 654 if (isDateField(efd.reference)) html.append("fecha(this"); 655 else html.append("hora(this, true"); 656 html.append(");return true;\""); 657 } 658 if (!isupdateable || tabIsReadOnly) { 659 html.append(" readonly=\"true\""); 660 } 661 html.append("></INPUT>"); 662 html.append(html1); 663 } 664 665 if (!forcedAttribute && efd.isdisplayed.equals("Y") && !efd.displaylogic.equals("")) { 666 html.append("</span>"); 667 } 668 669 return html.toString(); 670 } 671 672 public static void setLabel(ConnectionProvider conn, WADControl auxControl, boolean isSOTrx, String keyName) throws ServletException { 673 if (log4j.isDebugEnabled()) log4j.debug("processing WadUtility.setLabel() - field name: " + auxControl.getData("Name")); 674 String strTableID="", strColumnName="", strTableName=""; 675 if (auxControl.getData("AD_Reference_ID").equals("18")) { 676 strTableID = TableLinkData.tableId(conn, auxControl.getData("AD_Reference_Value_ID")); 677 strColumnName = TableLinkData.columnName(conn, auxControl.getData("AD_Reference_Value_ID")); 678 } else if (auxControl.getData("AD_Reference_ID").equals("19") || auxControl.getData("AD_Reference_ID").equals("30") || auxControl.getData("AD_Reference_ID").equals("800011")) { 679 EditionFieldsData[] dataSearchs = null; 680 if (auxControl.getData("AD_Reference_ID").equals("30")) dataSearchs = EditionFieldsData.selectSearchs(conn, "", auxControl.getData("AD_Reference_Value_ID")); 681 if (auxControl.getData("AD_Reference_ID").equals("800011")) { 682 strTableName = "M_Product"; 683 strColumnName = TableLinkData.keyColumnName(conn, strTableName); 684 } else if (dataSearchs!=null && dataSearchs.length!=0) { 685 strTableName = dataSearchs[0].reference; 686 strColumnName = dataSearchs[0].columnname; 687 } else { 688 strTableName = auxControl.getData("ColumnNameSearch"); 689 strTableName = strTableName.substring(0,(strTableName.length()-3)); 690 strColumnName = TableLinkData.keyColumnName(conn, strTableName); 691 } 692 strTableID = TableLinkData.tableNameId(conn, strTableName); 693 } else { 694 auxControl.setData("IsLinkable", "N"); 695 return; 696 } 697 698 if (strTableID.equals("") || strColumnName.equals("")) { 699 log4j.warn("There're no table name or column name for: " + auxControl.getData("ColumnName") + " - TABLE_NAME: " + strTableName + " - COLUMN_NAME: " + strColumnName); 700 } 701 702 TableLinkData[] data1 = TableLinkData.selectWindow(conn, strTableID); 703 if (data1 == null || data1.length==0) { 704 auxControl.setData("IsLinkable", "N"); 705 return; 706 } 707 708 String strWindowId = data1[0].adWindowId; 709 if (!isSOTrx && !data1[0].poWindowId.equals("")) strWindowId = data1[0].poWindowId; 710 TableLinkData[] data = TableLinkData.select(conn, strWindowId, strTableID); 711 if (data == null || data.length==0) { 712 auxControl.setData("IsLinkable", "N"); 713 return; 714 } 715 auxControl.setData("IsLinkable", "Y"); 716 auxControl.setData("ColumnNameLabel", strColumnName); 717 auxControl.setData("KeyColumnName", keyName); 718 auxControl.setData("AD_Table_ID", strTableID); 719 } 720 721 public static void comboReloadScript(EditionFieldsData efd, Vector<Object > vecCallOuts, Vector<Object > vecReloads, int maxTextboxLength, String strTab) { 722 if (vecReloads==null) return; 723 if (isInVector(vecReloads, efd.columnnameinp)) { 724 if (efd.isdisplayed.equals("Y") && (efd.reference.equals("21") || efd.reference.equals("30") || efd.reference.equals("31") || efd.reference.equals("35") || efd.reference.equals("25") || efd.reference.equals("800011")) && efd.calloutname.equals("")) { 725 efd.calloutname = "ComboReloads" + strTab; 726 callouts(efd, vecCallOuts, maxTextboxLength, true); 727 } 728 } 729 } 730 731 public static String callouts(EditionFieldsData efd, Vector<Object > vecCallOuts, int maxTextboxLength) { 732 return callouts(efd, vecCallOuts, maxTextboxLength, false); 733 } 734 735 public static String callouts(EditionFieldsData efd, Vector<Object > vecCallOuts, int maxTextboxLength, boolean isReload) { 736 StringBuffer html = new StringBuffer (); 737 boolean existCallOut=false; 738 if (!efd.calloutname.equals("")) { 739 if (efd.calloutname.startsWith("ComboReload")) isReload=true; 740 String calloutName = FormatUtilities.replace(efd.calloutname); 741 if (efd.reference.equals("30") || efd.reference.equals("31") || efd.reference.equals("35") || efd.reference.equals("25") || efd.reference.equals("800011")) { 742 boolean existDebug=false; 743 int i; 744 for (i=0;i<vecCallOuts.size();i++) { 745 CallOutsStructure data = (CallOutsStructure)vecCallOuts.elementAt(i); 746 if (data.name.equals("debugSearch")) { 747 existDebug=true; 748 break; 749 } 750 } 751 StringBuffer script = new StringBuffer (); 752 if (existDebug) { 753 script.append(" if (keyField==\"inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + "\") {\n"); 754 757 script.append(" " + (isReload?"reload":"callout") + calloutName + "(keyField);\n"); 758 script.append(" }\n"); 759 CallOutsStructure data = (CallOutsStructure)vecCallOuts.elementAt(i); 760 if (data.method.indexOf(script.toString())==-1) { 761 StringBuffer complete = new StringBuffer (); 762 String header = "function debugSearch(key, text, keyField) {\n"; 763 int init = data.method.indexOf(header); 764 complete.append(data.method.substring(0, init+header.length())); 765 complete.append(script.toString()); 766 complete.append(data.method.substring(init+header.length(), data.method.length())); 767 CallOutsStructure data1 = new CallOutsStructure(); 768 data1.name = "debugSearch"; 769 data1.method = complete.toString(); 770 vecCallOuts.remove(i); 771 vecCallOuts.addElement(data1); 772 } 773 } else { 774 script.append("\nfunction debugSearch(key, text, keyField) {\n"); 775 script.append(" if (keyField==\"inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + "\") {\n"); 776 script.append(" " + (isReload?"reload":"callout") + calloutName + "(keyField);\n"); 777 script.append(" }\n"); 778 script.append("return true;\n}"); 779 CallOutsStructure data = new CallOutsStructure(); 780 data.name = "debugSearch"; 781 data.method = script.toString(); 782 vecCallOuts.addElement(data); 783 } 784 } else { 785 if (isDateField(efd.reference)) { boolean existDebug=false; 787 int i; 788 for (i=0;i<vecCallOuts.size();i++) { 789 CallOutsStructure data = (CallOutsStructure)vecCallOuts.elementAt(i); 790 if (data.name.equals("debugCalendar")) { 791 existDebug=true; 792 break; 793 } 794 } 795 StringBuffer script = new StringBuffer (); 796 if (existDebug) { 797 script.append(" if (keyField==\"inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + "\") {\n"); 798 script.append(" " + (isReload?"reload":"callout") + calloutName + "(keyField);\n"); 799 script.append(" }\n"); 800 CallOutsStructure data = (CallOutsStructure)vecCallOuts.elementAt(i); 801 if (data.method.indexOf(script.toString())==-1) { 802 StringBuffer complete = new StringBuffer (); 803 String header = "function debugCalendar(date, keyField) {\n"; 804 int init = data.method.indexOf(header); 805 complete.append(data.method.substring(0, init+header.length())); 806 complete.append(script.toString()); 807 complete.append(data.method.substring(init+header.length(), data.method.length())); 808 CallOutsStructure data1 = new CallOutsStructure(); 809 data1.name = "debugCalendar"; 810 data1.method = complete.toString(); 811 vecCallOuts.remove(i); 812 vecCallOuts.addElement(data1); 813 } 814 } else { 815 script.append("\nfunction debugCalendar(date, keyField) {\n"); 816 script.append(" if (keyField==\"inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + "\") {\n"); 817 script.append(" " + (isReload?"reload":"callout") + calloutName + "(keyField);\n"); 818 script.append(" }\n"); 819 script.append("return true;\n}"); 820 CallOutsStructure data = new CallOutsStructure(); 821 data.name = "debugCalendar"; 822 data.method = script.toString(); 823 vecCallOuts.addElement(data); 824 } 825 } else if (isTimeField(efd.reference)) { boolean existDebug=false; 827 int i; 828 for (i=0;i<vecCallOuts.size();i++) { 829 CallOutsStructure data = (CallOutsStructure)vecCallOuts.elementAt(i); 830 if (data.name.equals("debugClock")) { 831 existDebug=true; 832 break; 833 } 834 } 835 StringBuffer script = new StringBuffer (); 836 if (existDebug) { 837 script.append(" if (keyField==\"inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + "\") {\n"); 838 script.append(" " + (isReload?"reload":"callout") + calloutName + "(keyField);\n"); 839 script.append(" }\n"); 840 CallOutsStructure data = (CallOutsStructure)vecCallOuts.elementAt(i); 841 if (data.method.indexOf(script.toString())==-1) { 842 StringBuffer complete = new StringBuffer (); 843 String header = "function debugClock(time, keyField) {\n"; 844 int init = data.method.indexOf(header); 845 complete.append(data.method.substring(0, init+header.length())); 846 complete.append(script.toString()); 847 complete.append(data.method.substring(init+header.length(), data.method.length())); 848 CallOutsStructure data1 = new CallOutsStructure(); 849 data1.name = "debugClock"; 850 data1.method = complete.toString(); 851 vecCallOuts.remove(i); 852 vecCallOuts.addElement(data1); 853 } 854 } else { 855 script.append("\nfunction debugClock(time, keyField) {\n"); 856 script.append(" if (keyField==\"inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + "\") {\n"); 857 script.append(" " + (isReload?"reload":"callout") + calloutName + "(keyField);\n"); 858 script.append(" }\n"); 859 script.append("return true;\n}"); 860 CallOutsStructure data = new CallOutsStructure(); 861 data.name = "debugClock"; 862 data.method = script.toString(); 863 vecCallOuts.addElement(data); 864 } 865 } else if (isDecimalNumber(efd.reference) || isPriceNumber(efd.reference) || isIntegerNumber(efd.reference) || isGeneralNumber(efd.reference) || isQtyNumber(efd.reference)) { boolean existDebug=false; 867 int i; 868 for (i=0;i<vecCallOuts.size();i++) { 869 CallOutsStructure data = (CallOutsStructure)vecCallOuts.elementAt(i); 870 if (data.name.equals("debugCalculator")) { 871 existDebug=true; 872 break; 873 } 874 } 875 StringBuffer script = new StringBuffer (); 876 if (existDebug) { 877 script.append(" if (keyField==\"inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + "\") {\n"); 878 script.append(" " + (isReload?"reload":"callout") + calloutName + "(keyField);\n"); 879 script.append(" }\n"); 880 CallOutsStructure data = (CallOutsStructure)vecCallOuts.elementAt(i); 881 if (data.method.indexOf(script.toString())==-1) { 882 StringBuffer complete = new StringBuffer (); 883 String header = "function debugCalculator(num, keyField) {\n"; 884 int init = data.method.indexOf(header); 885 complete.append(data.method.substring(0, init+header.length())); 886 complete.append(script.toString()); 887 complete.append(data.method.substring(init+header.length(), data.method.length())); 888 CallOutsStructure data1 = new CallOutsStructure(); 889 data1.name = "debugCalculator"; 890 data1.method = complete.toString(); 891 vecCallOuts.remove(i); 892 vecCallOuts.addElement(data1); 893 } 894 } else { 895 script.append("\nfunction debugCalculator(num, keyField) {\n"); 896 script.append(" if (keyField==\"inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + "\") {\n"); 897 script.append(" " + (isReload?"reload":"callout") + calloutName + "(keyField);\n"); 898 script.append(" }\n"); 899 script.append("return true;\n}"); 900 CallOutsStructure data = new CallOutsStructure(); 901 data.name = "debugCalculator"; 902 data.method = script.toString(); 903 vecCallOuts.addElement(data); 904 } 905 } else if (isLikeType(efd.reference)) { boolean existDebug=false; 907 int i; 908 for (i=0;i<vecCallOuts.size();i++) { 909 CallOutsStructure data = (CallOutsStructure)vecCallOuts.elementAt(i); 910 if (data.name.equals("debugKeyboard")) { 911 existDebug=true; 912 break; 913 } 914 } 915 StringBuffer script = new StringBuffer (); 916 if (existDebug) { 917 script.append(" if (keyField==\"inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + "\") {\n"); 918 script.append(" " + (isReload?"reload":"callout") + calloutName + "(keyField);\n"); 919 script.append(" }\n"); 920 CallOutsStructure data = (CallOutsStructure)vecCallOuts.elementAt(i); 921 if (data.method.indexOf(script.toString())==-1) { 922 StringBuffer complete = new StringBuffer (); 923 String header = "function debugKeyboard(text, keyField) {\n"; 924 int init = data.method.indexOf(header); 925 complete.append(data.method.substring(0, init+header.length())); 926 complete.append(script.toString()); 927 complete.append(data.method.substring(init+header.length(), data.method.length())); 928 CallOutsStructure data1 = new CallOutsStructure(); 929 data1.name = "debugKeyboard"; 930 data1.method = complete.toString(); 931 vecCallOuts.remove(i); 932 vecCallOuts.addElement(data1); 933 } 934 } else { 935 script.append("\nfunction debugKeyboard(text, keyField) {\n"); 936 script.append(" if (keyField==\"inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + "\") {\n"); 937 script.append(" " + (isReload?"reload":"callout") + calloutName + "(keyField);\n"); 938 script.append(" }\n"); 939 script.append("return true;\n}"); 940 CallOutsStructure data = new CallOutsStructure(); 941 data.name = "debugKeyboard"; 942 data.method = script.toString(); 943 vecCallOuts.addElement(data); 944 } 945 } 946 html.append((isReload?"reload":"callout") + calloutName + "(this.name);"); 947 } 948 949 for (int i=0;i<vecCallOuts.size();i++) { 950 CallOutsStructure data = (CallOutsStructure)vecCallOuts.elementAt(i); 951 if (data.name.equals(calloutName)) { 952 existCallOut=true; 953 break; 954 } 955 } 956 if (!existCallOut) { 957 StringBuffer strCallOut = new StringBuffer (); 958 if (isReload) { 959 strCallOut.append("\nfunction reload" + calloutName + "(changedField) {\n"); 960 strCallOut.append(" submitCommandForm(changedField, false, null, '../ad_callouts/ComboReloads' + document.frmMain.inpTabId.value + '.html', 'frameOculto', null, null, true);\n"); 961 } else { 962 strCallOut.append("\nfunction callout" + calloutName + "(changedField) {\n"); 963 strCallOut.append("submitCommandFormParameter('DEFAULT', frmMain.inpLastFieldChanged, changedField, false, null, '..").append(efd.mappingnameCallout).append("', 'frameOculto', null, null, true);\n"); 964 } 965 strCallOut.append("return true;\n"); 966 strCallOut.append("}\n"); 967 CallOutsStructure data = new CallOutsStructure(); 968 data.name = efd.calloutname; 969 data.method = strCallOut.toString(); 970 vecCallOuts.addElement(data); 971 } 972 } 973 return html.toString(); 974 } 975 976 public static String findField(ConnectionProvider conn, EditionFieldsData[] fields, EditionFieldsData[] auxiliars, String fieldName) { 977 if (fields==null) return ""; 978 for (int i=0;i<fields.length;i++) if (fields[i].columnname.equalsIgnoreCase(fieldName)) return fields[i].columnnameinp; 979 if (auxiliars==null) return ""; 980 for (int i=0;i<auxiliars.length;i++) if (auxiliars[i].columnname.equalsIgnoreCase(fieldName)) return auxiliars[i].columnnameinp; 981 return ""; 982 } 983 984 public static String searchsCommand(EditionFieldsData efd, boolean fromButton, String tabId, ConnectionProvider conn, String windowId, EditionFieldsData[] fieldsData, EditionFieldsData[] auxiliarsData) { 985 StringBuffer params = new StringBuffer (); 986 StringBuffer html = new StringBuffer (); 987 String strMethodName = "openSearch"; 988 if (!fromButton) { 989 params.append(", 'Command'"); 990 params.append(", 'KEY'"); 991 } 992 params.append(", 'WindowID'"); 993 params.append(", '" + windowId + "'"); 994 String field=findField(conn, fieldsData, auxiliarsData, "issotrxtab"); 995 if (!field.equals("")) { 996 params.append(", 'inpisSOTrxTab'"); 997 params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ".value"); 998 } 999 String searchName = (efd.reference.equals("25")?"/info/Account":("/info/" + FormatUtilities.replace(efd.searchname.trim()))) + "_FS.html"; 1000 EditionFieldsData[] fieldsSearch = null; 1001 try { 1002 fieldsSearch = EditionFieldsData.selectSearchs(conn, "I", efd.referencevalue); 1003 } catch (ServletException ex) { 1004 ex.printStackTrace(); 1005 } 1006 if (fieldsSearch!=null && fieldsSearch.length>0) { 1007 searchName = fieldsSearch[0].mappingname; 1008 if (!fieldsSearch[0].referencevalue.equals("")) { 1009 for (int i=0;i<fieldsSearch.length;i++) { 1010 field=findField(conn, fieldsData, auxiliarsData, fieldsSearch[i].referencevalue); 1011 if (!field.equals("")) { 1012 params.append(", 'inp").append(fieldsSearch[i].columnnameinp).append("'"); 1013 params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ".value"); 1014 } 1015 } 1016 } 1017 } else if (efd.searchname.equalsIgnoreCase("PRODUCT COMPLETE")) { 1018 field=findField(conn, fieldsData, auxiliarsData, "m_warehouse_id"); 1019 if (!field.equals("")) { 1020 params.append(", 'inpWarehouse'"); 1021 params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ".value"); 1022 } 1023 field=findField(conn, fieldsData, auxiliarsData, "c_bpartner_id"); 1024 if (!field.equals("")) { 1025 params.append(", 'inpBPartner'"); 1026 params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ".value"); 1027 } 1028 } else if (efd.searchname.toUpperCase().startsWith("ATTRIBUTE")) { 1029 strMethodName = "openPAttribute"; 1030 params.append(", 'inpKeyValue'"); 1031 params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + ".value"); 1032 params.append(", 'inpwindowId'"); 1033 params.append(", document.frmMain.inpwindowId.value"); 1034 field=findField(conn, fieldsData, auxiliarsData, "m_product_id"); 1035 if (!field.equals("")) { 1036 params.append(", 'inpProduct'"); 1037 params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ".value"); 1038 } 1039 field=findField(conn, fieldsData, auxiliarsData, "m_locator_id"); 1040 if (!field.equals("")) { 1041 params.append(", 'inpLocatorId'"); 1042 params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ".value"); 1043 } 1044 } else if (efd.reference.equals("25")) { 1045 field=findField(conn, fieldsData, auxiliarsData, "c_acctschema_id"); 1046 if (!field.equals("")) { 1047 params.append(", 'inpAcctSchema'"); 1048 params.append(", inputValue(document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ")"); 1049 } 1050 } 1051 1130 html.append(strMethodName + "(null, null, '.." + searchName + "', null, " + ((efd.calloutname.equals(""))?"false":"true") + ", 'frmMain', 'inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + "', 'inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + "_R', document.frmMain.inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + "_R.value, 'inpIDValue', document.frmMain.inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + ".value" + params.toString() + ");"); 1131 return html.toString(); 1132 } 1133 1134 public static String productSearch(EditionFieldsData efd, int maxTextboxLength, Vector<Object > vecCallOuts, String tabId, ConnectionProvider conn, String windowId, EditionFieldsData[] fieldsData, EditionFieldsData[] auxiliarsData) { 1135 StringBuffer html = new StringBuffer (); 1136 Vector<Object > vec = new Vector<Object >(); 1137 efd.searchname = "Product Complete"; 1138 html.append(htmlFields(efd, "_LOC", "_LOC", true, maxTextboxLength, true, true, vecCallOuts, "", vec, null, false, 0)); 1139 html.append(htmlFields(efd, "_ATR", "_ATR", true, maxTextboxLength, true, true, vecCallOuts, "", vec, null, false, 0)); 1140 html.append(htmlFields(efd, "_PQTY", "_PQTY", true, maxTextboxLength, true, true, vecCallOuts, "", vec, null, false, 0)); 1141 html.append(htmlFields(efd, "_PUOM", "_PUOM", true, maxTextboxLength, true, true, vecCallOuts, "", vec, null, false, 0)); 1142 html.append(htmlFields(efd, "_QTY", "_QTY", true, maxTextboxLength, true, true, vecCallOuts, "", vec, null, false, 0)); 1143 html.append(htmlFields(efd, "_UOM", "_UOM", true, maxTextboxLength, true, true, vecCallOuts, "", vec, null, false, 0)); 1144 html.append(htmlFields(efd, "_PLIST", "_PLIST", true, maxTextboxLength, true, true, vecCallOuts, "", vec, null, false, 0)); 1145 html.append(htmlFields(efd, "_PSTD", "_PSTD", true, maxTextboxLength, true, true, vecCallOuts, "", vec, null, false, 0)); 1146 html.append(htmlFields(efd, "_PLIM", "_PLIM", true, maxTextboxLength, true, true, vecCallOuts, "", vec, null, false, 0)); 1147 html.append(htmlFields(efd, "_CURR", "_CURR", true, maxTextboxLength, true, true, vecCallOuts, "", vec, null, false, 0)); 1148 if (!efd.displaylogic.equals("")) { 1149 html.append("<span id=\"" + efd.columnname + "_btt\">"); 1150 } 1151 html.append("<a HREF=\"#\""); 1152 html.append("onClick=\"" + searchsCommand(efd, true, tabId, conn, windowId, fieldsData, auxiliarsData) + "return false;\" "); 1153 html.append("onMouseOut=\"window.status='';return true;\""); 1154 html.append("onMouseOver=\"window.status='").append(efd.referenceName).append("';return true;\" class=\"windowbutton\"><img alt=\"").append(efd.name).append("\" title=\"").append(efd.name).append("\""); 1155 html.append(" width=\"").append(IMAGE_BUTTON_WIDTH).append("\" height=\"").append(IMAGE_BUTTON_HEIGHT).append("\" "); 1156 html.append("border=\"0\" SRC=\"../../../../../web/images/" + FormatUtilities.replace(efd.searchname.trim()) + ".jpg\" id=\"button" + FormatUtilities.replace(efd.searchname.trim()) + "\"></a>"); 1157 if (!efd.displaylogic.equals("")) { 1158 html.append("</span>"); 1159 } 1160 return html.toString(); 1161 } 1162 1163 public static String searchs(EditionFieldsData efd, int maxTextboxLength, Vector<Object > vecCallOuts, String tabId, ConnectionProvider conn, String windowId, EditionFieldsData[] fieldsData, EditionFieldsData[] auxiliarsData) { 1164 StringBuffer html = new StringBuffer (); 1165 Vector<Object > vec = new Vector<Object >(); 1166 EditionFieldsData[] fieldsSearch = null; 1167 try { 1168 fieldsSearch = EditionFieldsData.selectSearchs(conn, "O", efd.referencevalue); 1169 } catch (ServletException ex) { 1170 ex.printStackTrace(); 1171 } 1172 String searchName = (efd.reference.equals("25")?"Account":FormatUtilities.replace(efd.searchname.trim())); 1173 if (fieldsSearch != null && fieldsSearch.length > 0) { 1174 if (!efd.reference.equals("25")) searchName = fieldsSearch[0].name; 1175 if (!fieldsSearch[0].columnnameinp.equals("")) { 1176 String columnnameinp = efd.columnnameinp; 1177 for (int i=0;i<fieldsSearch.length;i++) { 1178 efd.columnnameinp = fieldsSearch[i].columnnameinp; 1179 html.append(htmlFields(efd, fieldsSearch[i].columnnameEnd, fieldsSearch[i].columnnameEnd, true, maxTextboxLength, true, true, vecCallOuts, "", vec, null, false, 0)); 1180 } 1181 efd.columnnameinp = columnnameinp; 1182 } 1183 } 1184 1200 if (!efd.displaylogic.equals("")) { 1201 html.append("<span id=\"" + efd.columnname + "_btt\">"); 1202 } 1203 html.append("<a HREF=\"#\""); 1204 html.append("onClick=\"" + searchsCommand(efd, true, tabId, conn, windowId, fieldsData, auxiliarsData) + "return false;\" "); 1205 html.append("onMouseOut=\"window.status='';return true;\""); 1206 html.append("onMouseOver=\"window.status='").append(efd.referenceName).append("';return true;\" class=\"windowbutton\"><img alt=\"").append(efd.name).append("\" title=\"").append(efd.name).append("\""); 1207 html.append(" width=\"").append(IMAGE_BUTTON_WIDTH).append("\" height=\"").append(IMAGE_BUTTON_HEIGHT).append("\" "); 1208 html.append("border=\"0\" SRC=\"../../../../../web/images/" + (efd.reference.equals("25")?"Account":FormatUtilities.replace(efd.searchname.trim())) + ".jpg\" id=\"button" + FormatUtilities.replace(efd.searchname.trim()) + "\"></a>"); 1209 if (!efd.displaylogic.equals("")) { 1210 html.append("</span>"); 1211 } 1212 return html.toString(); 1213 } 1214 1215 public static String locatorCommands(EditionFieldsData efd, boolean fromButton, String tabId, ConnectionProvider conn, String windowId, EditionFieldsData[] fieldsData, EditionFieldsData[] auxiliarsData) { 1216 StringBuffer params = new StringBuffer (); 1217 StringBuffer html = new StringBuffer (); 1218 if (!fromButton) { 1219 params.append(", 'Command'"); 1220 params.append(", 'KEY'"); 1221 } 1222 params.append(", 'WindowID'"); 1223 params.append(", '" + windowId + "'"); 1224 String field=findField(conn, fieldsData, auxiliarsData, "m_warehouse_id"); 1225 if (!field.equals("")) { 1226 params.append(", 'inpmWarehouseId'"); 1227 params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ".value"); 1228 } 1229 html.append("openSearch(null, null, '../info/Locator").append((efd.reference.equals("800013")?"_Detail":"")).append("_FS.html', null, " + ((efd.calloutname.equals(""))?"false":"true") + ", 'frmMain', 'inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + "', 'inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + "_R', document.frmMain.inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + "_R.value, 'inpIDValue', document.frmMain.inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + ".value" + params.toString() + ");"); 1230 return html.toString(); 1231 } 1232 1233 public static String locator(EditionFieldsData efd, int maxTextboxLength, Vector<Object > vecCallOuts, String tabId, ConnectionProvider conn, String windowId, EditionFieldsData[] fieldsData, EditionFieldsData[] auxiliarsData) { 1234 StringBuffer html = new StringBuffer (); 1235 1236 if (!efd.displaylogic.equals("")) { 1237 html.append("<span id=\"" + efd.columnname + "_btt\">"); 1238 } 1239 html.append("<a HREF=\"#\""); 1240 html.append("onClick=\"" + locatorCommands(efd, true, tabId, conn, windowId, fieldsData, auxiliarsData) + "return false;\" "); 1241 html.append("onMouseOut=\"window.status='';return true;\""); 1242 html.append("onMouseOver=\"window.status='").append(efd.referenceName).append("';return true;\" class=\"windowbutton\"><img alt=\"").append(efd.name).append("\" title=\"").append(efd.name).append("\""); 1243 html.append(" width=\"").append(IMAGE_BUTTON_WIDTH).append("\" height=\"").append(IMAGE_BUTTON_HEIGHT).append("\" "); 1244 html.append("border=\"0\" SRC=\"../../../../../web/images/Locator.jpg\" id=\"buttonLocator\"></a>"); 1245 if (!efd.displaylogic.equals("")) { 1246 html.append("</span>"); 1247 } 1248 return html.toString(); 1249 } 1250 1251 public static String locationCommands(EditionFieldsData efd) { 1252 StringBuffer html = new StringBuffer (); 1253 1254 html.append("openLocation(null, null, '../info/Location_FS.html', null, " + ((efd.calloutname.equals(""))?"false":"true") + ", 'frmMain', 'inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + "', 'inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + "_R', document.frmMain.inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + ".value, 'inpwindowId', document.frmMain.inpwindowId.value);"); 1255 return html.toString(); 1256 } 1257 1258 public static String location(EditionFieldsData efd) { 1259 StringBuffer html = new StringBuffer (); 1260 1261 if (!efd.displaylogic.equals("")) { 1262 html.append("<span id=\"" + efd.columnname + "_btt\">"); 1263 } 1264 html.append("<a HREF=\"#\""); 1265 html.append("onClick=\"" + locationCommands(efd) + "return false;\" "); 1266 html.append("onMouseOut=\"window.status='';return true;\""); 1267 html.append("onMouseOver=\"window.status='").append(efd.referenceName).append("';return true;\" class=\"windowbutton\"><img alt=\"").append(efd.name).append("\" title=\"").append(efd.name).append("\""); 1268 html.append(" width=\"").append(IMAGE_BUTTON_WIDTH).append("\" height=\"").append(IMAGE_BUTTON_HEIGHT).append("\" "); 1269 html.append("border=\"0\" SRC=\"../../../../../web/images/Location.jpg\" id=\"buttonLocation\"></a>"); 1270 if (!efd.displaylogic.equals("")) { 1271 html.append("</span>"); 1272 } 1273 return html.toString(); 1274 } 1275 1276 public static String buttonsCommand(EditionFieldsData efd, String servletName) { 1277 StringBuffer html = new StringBuffer (); 1278 if (efd.javaClassName.equals("")) { 1279 html.append("openServletNewWindow('BUTTON" + FormatUtilities.replace(efd.columnname) + efd.adProcessId + "', false, '" + servletName + "', 'BUTTON', null, true" + (efd.columnname.equalsIgnoreCase("CreateFrom")?",600, 900":"") + ");return false;"); 1280 } else { 1281 html.append("openServletNewWindow('DEFAULT', false, '.." + (efd.javaClassName.startsWith("/")?"":"/") + efd.javaClassName + "', 'BUTTON', '" + efd.adProcessId + "', true" + ",600, 900" + ");return false;"); 1282 } 1283 return html.toString(); 1284 } 1285 1286 1287 public static String getSQLWadContext(String code, Vector<Object > vecParameters) { 1288 if (code==null || code.trim().equals("")) return ""; 1289 String token; 1290 String strValue = new String (code); 1291 StringBuffer strOut = new StringBuffer (); 1292 1293 int i = strValue.indexOf("@"); 1294 String strAux, strAux1; 1295 while (i != -1) { 1296 if (strValue.length()>(i+5) && strValue.substring(i+1, i+5).equalsIgnoreCase("SQL=")) { 1297 strValue = strValue.substring(i+5, strValue.length()); 1298 } else { 1299 strAux = strValue.substring(0,i).trim(); 1301 if (strAux.substring(strAux.length()-1).equals("'")) { 1302 strAux = strAux.substring(0, strAux.length()-1); 1303 strOut.append(strAux); 1304 } else strOut.append(strValue.substring(0,i)); 1305 strAux1 = strAux; 1306 if (strAux.substring(strAux.length()-1).equals("(")) strAux=strAux.substring(0, strAux.length()-1).toUpperCase().trim(); 1307 if (strAux.substring(strAux.length()-3, strAux.length()).equals(" IN")) { 1308 strAux=" type=\"replace\" optional=\"true\" after=\"" + strAux1 + "\" text=\"'" + i + "'\""; 1309 } else { 1310 strAux=""; 1311 } 1312 strValue = strValue.substring(i+1, strValue.length()); 1313 1314 int j = strValue.indexOf("@"); 1315 if (j<0) return ""; 1316 1317 token = strValue.substring(0,j); 1318 if (token.substring(0,1).indexOf("#")>-1 || token.substring(0,1).indexOf("$")>-1) token = token.substring(1, token.length()); 1319 if (strAux.equals("")) strOut.append("?"); 1320 else strOut.append("'" + i + "'"); 1321 vecParameters.addElement("<Parameter name=\"" + token + "\"" + strAux + "/>"); 1322 strValue = strValue.substring(j+1, strValue.length()); 1323 strAux = strValue.trim(); 1324 if (strAux.length()>0 && strAux.substring(0,1).indexOf("'")>-1) strValue = strAux.substring(1, strValue.length()); 1325 } 1326 i = strValue.indexOf("@"); 1327 } 1328 strOut.append(strValue); 1329 return strOut.toString(); 1330 } 1331 1332 1333 public static String getWadContext(String code, Vector<Object > vecFields, Vector<Object > vecAuxiliarFields, FieldsData[] parentsFieldsData, boolean isDefaultValue, String isSOTrx, String windowId) { 1334 if (code==null || code.trim().equals("")) return ""; 1335 String token; 1336 String strValue = new String (code); 1337 StringBuffer strOut = new StringBuffer (); 1338 1339 int i = strValue.indexOf("@"); 1340 String strAux; 1341 while (i != -1) { 1342 if (strValue.length()>(i+5) && strValue.substring(i+1,i+5).equalsIgnoreCase("SQL=")) { 1343 strValue = strValue.substring(i+5, strValue.length()); 1344 } else { 1345 strValue = strValue.substring(i+1, strValue.length()); 1346 1347 int j = strValue.indexOf("@"); 1348 if (j<0) return ""; 1349 1350 token = strValue.substring(0,j); 1351 strAux = getWadContextTranslate(token, vecFields, vecAuxiliarFields, parentsFieldsData, isDefaultValue, isSOTrx, windowId, true); 1352 if (!strAux.trim().equals("") && strOut.toString().indexOf(strAux)==-1) strOut.append(", " + strAux); 1353 1354 strValue = strValue.substring(j+1, strValue.length()); 1355 } 1356 i = strValue.indexOf("@"); 1357 } 1358 return strOut.toString(); 1359 } 1360 1361 public static String getWadComboReloadContext(String code, String isSOTrx) { 1362 if (code==null || code.trim().equals("")) return ""; 1363 String token; 1364 String strValue = new String (code); 1365 StringBuffer strOut = new StringBuffer (); 1366 1367 int i = strValue.indexOf("@"); 1368 String strAux; 1369 while (i != -1) { 1370 if (strValue.length()>(i+5) && strValue.substring(i+1,i+5).equalsIgnoreCase("SQL=")) { 1371 strValue = strValue.substring(i+5, strValue.length()); 1372 } else { 1373 strValue = strValue.substring(i+1, strValue.length()); 1374 1375 int j = strValue.indexOf("@"); 1376 if (j<0) return ""; 1377 1378 token = strValue.substring(0,j); 1379 strAux = getWadComboReloadContextTranslate(token, isSOTrx); 1380 if (!strAux.trim().equals("") && strOut.toString().indexOf(strAux)==-1) strOut.append(", " + strAux); 1381 1382 strValue = strValue.substring(j+1, strValue.length()); 1383 } 1384 i = strValue.indexOf("@"); 1385 } 1386 return strOut.toString(); 1387 } 1388 1389 1390 public static String getWadComboReloadContextTranslate(String token, String isSOTrx) { 1391 String result=""; 1392 if (token.substring(0,1).indexOf("#")>-1 || token.substring(0,1).indexOf("$")>-1) { 1393 if (token.equalsIgnoreCase("#DATE")) result = "DateTimeData.today(this)"; 1394 else result = "Utility.getContext(this, vars, \"" + token + "\", windowId)"; 1396 } else { 1397 String aux=Sqlc.TransformaNombreColumna(token); 1398 if (token.equalsIgnoreCase("ISSOTRX")) result = ("\"" + isSOTrx + "\""); 1399 else result = "vars.getStringParameter(\"inp" + aux + "\")"; 1400 } 1401 return result; 1402 } 1403 1404 1405 public static String getTextWadContext(String code, Vector<Object > vecFields, Vector<Object > vecAuxiliarFields, FieldsData[] parentsFieldsData, boolean isDefaultValue, String isSOTrx, String windowId) { 1406 if (code==null || code.trim().equals("")) return ""; 1407 String token; 1408 String strValue = new String (code); 1409 StringBuffer strOut = new StringBuffer (); 1410 1411 int h = strValue.indexOf(";"); 1412 if (h!=-1) { 1413 StringBuffer total = new StringBuffer (); 1414 String strFirstElement = getTextWadContext(strValue.substring(0,h), vecFields, vecAuxiliarFields, parentsFieldsData, isDefaultValue, isSOTrx, windowId); 1415 total.append("("); 1416 if (strValue.substring(0, h).indexOf("@")==-1) total.append("(\""); 1417 total.append(strFirstElement); 1418 if (strValue.substring(0, h).indexOf("@")==-1) total.append("\")"); 1419 total.append(".equals(\"\")?("); 1420 if (strValue.substring(h+1).indexOf("@")==-1) total.append("\""); 1421 total.append(getTextWadContext(strValue.substring(h+1), vecFields, vecAuxiliarFields, parentsFieldsData, isDefaultValue, isSOTrx, windowId)); 1422 if (strValue.substring(h+1).indexOf("@")==-1) total.append("\""); 1423 total.append("):("); 1424 if (strValue.substring(0, h).indexOf("@")==-1) total.append("\""); 1425 total.append(strFirstElement); 1426 if (strValue.substring(0, h).indexOf("@")==-1) total.append("\""); 1427 total.append("))"); 1428 return total.toString(); 1429 } 1430 1431 int i = strValue.indexOf("@"); 1432 while (i != -1) { 1433 strOut.append(strValue.substring(0,i)); 1434 strValue = strValue.substring(i+1, strValue.length()); 1435 1436 int j = strValue.indexOf("@"); 1437 if (j<0) return ""; 1438 1439 token = strValue.substring(0,j); 1440 strOut.append(getWadContextTranslate(token, vecFields, vecAuxiliarFields, parentsFieldsData, isDefaultValue, isSOTrx, windowId, true)); 1441 1442 strValue = strValue.substring(j+1, strValue.length()); 1443 1444 i = strValue.indexOf("@"); 1445 } 1446 strOut.append(strValue); 1447 return strOut.toString(); 1448 } 1449 1450 1451 public static String transformFieldName(String field) { 1452 if (field==null || field.trim().equals("")) return ""; 1453 int aux = field.toUpperCase().indexOf(" AS "); 1454 if (aux!=-1) return field.substring(aux+3).trim(); 1455 aux = field.lastIndexOf("."); 1456 if (aux!=-1) return field.substring(aux+1).trim(); 1457 1458 return field.trim(); 1459 } 1460 1461 public static boolean findField(Vector<Object > vecFields, String field) { 1462 String strAux; 1463 for (int i=0;i<vecFields.size();i++) { 1464 strAux=transformFieldName((String )vecFields.elementAt(i)); 1465 if (strAux.equalsIgnoreCase(field)) return true; 1466 } 1467 return false; 1468 } 1469 1470 public static String getWadContextTranslate(String token, Vector<Object > vecFields, Vector<Object > vecAuxiliarFields, FieldsData[] parentsFieldsData, boolean isDefaultValue, String isSOTrx, String windowId, boolean dataMultiple) { 1471 if (token.substring(0,1).indexOf("#")>-1 || token.substring(0,1).indexOf("$")>-1) { 1472 if (token.equalsIgnoreCase("#DATE")) return "DateTimeData.today(this)"; 1473 else return "Utility.getContext(this, vars, \"" + token + "\", windowId)"; 1475 } else { 1476 String aux=Sqlc.TransformaNombreColumna(token); 1477 if (token.equalsIgnoreCase("ISSOTRX")) return ("\"" + isSOTrx + "\""); 1478 if (parentsFieldsData!=null) { 1479 for (int i=0;i<parentsFieldsData.length;i++) { 1480 if (parentsFieldsData[i].name.equalsIgnoreCase(token)) return "strP" + parentsFieldsData[i].name; 1481 } 1482 } 1483 if (!isDefaultValue) { 1484 if (vecFields!=null && findField(vecFields, token)) { 1485 return (dataMultiple?"((dataField!=null)?dataField.getField(\"" + aux + "\"):((data==null || data.length==0)?\"\":data[0].":"((data==null)?\"\":data.") + aux + "))"; 1486 } else if (vecAuxiliarFields!=null && findField(vecAuxiliarFields, token)) { 1487 return "str" + token; 1488 } 1489 } 1490 return "Utility.getContext(this, vars, \"" + token + "\", \"" + windowId + "\")"; 1491 } 1492 } 1493 1494 public static String getWadDefaultValue(FieldsData fd) { 1495 if (fd==null) return ""; 1496 if (fd.referencevalue.equals("28") && !fd.name.toUpperCase().endsWith("_ID")) return "N"; else if (fd.referencevalue.equals("20")) return "N"; else if (fd.required.equals("Y")) { 1499 if (isDecimalNumber(fd.referencevalue) || isPriceNumber(fd.referencevalue) || isIntegerNumber(fd.referencevalue) || isGeneralNumber(fd.referencevalue) || isQtyNumber(fd.referencevalue)) return "0"; 1500 } 1501 return ""; 1502 } 1503 1504 public static String displayLogic(String code, Vector<Object > vecDL, FieldsData[] parentsFieldsData, Vector<Object > vecAuxiliar, Vector<Object > vecFields, String windowId, Vector<Object > vecContext) { 1505 if (code==null || code.trim().equals("")) return ""; 1506 String token, token2; 1507 String strValue = new String (code); 1508 StringBuffer strOut = new StringBuffer (); 1509 1510 String strAux; 1511 StringTokenizer st = new StringTokenizer(strValue, "|&", true); 1512 while (st.hasMoreTokens()) { 1513 strAux = st.nextToken().trim(); 1514 int i[]=getFirstElement(unions, strAux); 1515 if (i[0]!=-1) { 1516 strAux = strAux.substring(0,i[0]) + unions[i[1]][1] + strAux.substring(i[0] + unions[i[1]][0].length()); 1517 } 1518 1519 int pos[] = getFirstElement(comparations, strAux); 1520 token=strAux; 1521 token2=""; 1522 if (pos[0]>=0) { 1523 token=strAux.substring(0, pos[0]); 1524 token2=strAux.substring(pos[0]+comparations[pos[1]][0].length(), strAux.length()); 1525 strAux = strAux.substring(0, pos[0]) + comparations[pos[1]][1] + strAux.substring(pos[0]+comparations[pos[1]][0].length(), strAux.length()); 1526 } 1527 1528 strOut.append(getDisplayLogicText(token, vecFields, parentsFieldsData, vecAuxiliar, vecDL, windowId, vecContext, true)); 1529 if (pos[0]>=0) strOut.append(comparations[pos[1]][1]); 1530 strOut.append(getDisplayLogicText(token2, vecFields, parentsFieldsData, vecAuxiliar, vecDL, windowId, vecContext,false)); 1531 } 1532 return strOut.toString(); 1533 } 1534 1535 public static int[] getFirstElement(String [][] array, String token) { 1536 int min[]={-1,-1}, aux; 1537 for (int i=0;i<array.length;i++) { 1538 aux=token.indexOf(array[i][0]); 1539 if (aux!=-1 && (aux<min[0] || min[0]==-1)) { 1540 min[0]=aux; 1541 min[1]=i; 1542 } 1543 } 1544 return min; 1545 } 1546 1547 public static boolean isInVector(Vector<Object > vec, String field) { 1548 if (field==null || field.trim().equals("")) return false; 1549 for (int i=0;i<vec.size();i++) { 1550 String aux = (String )vec.elementAt(i); 1551 if (aux.equalsIgnoreCase(field)) return true; 1552 } 1553 return false; 1554 } 1555 1556 public static void saveVectorField(Vector<Object > vec, String field) { 1557 if (field==null || field.trim().equals("")) return; 1558 if (!isInVector(vec, field)) vec.addElement(field); 1559 } 1560 1561 public static String getComboReloadText(String token, Vector<Object > vecFields, FieldsData[] parentsFieldsData, Vector<Object > vecComboReload, String prefix) { 1562 return getComboReloadText(token, vecFields, parentsFieldsData, vecComboReload, prefix, ""); 1563 } 1564 1565 public static String getComboReloadText(String token, Vector<Object > vecFields, FieldsData[] parentsFieldsData, Vector<Object > vecComboReload, String prefix, String columnname) { 1566 StringBuffer strOut = new StringBuffer (); 1567 int i=token.indexOf("@"); 1568 while (i!=-1) { 1569 token = token.substring(i+1); 1571 if (!token.startsWith("SQL")) { 1572 i=token.indexOf("@"); 1573 if (i!=-1) { 1574 String strAux=token.substring(0,i); 1575 token=token.substring(i+1); 1576 if (!strOut.toString().trim().equals("")) strOut.append(", "); 1577 strOut.append(getComboReloadTextTranslate(strAux, vecFields, parentsFieldsData, vecComboReload, prefix, columnname)); 1578 } 1579 } 1580 i=token.indexOf("@"); 1581 } 1582 return strOut.toString(); 1584 } 1585 1586 public static String getComboReloadTextTranslate(String token, Vector<Object > vecFields, FieldsData[] parentsFieldsData, Vector<Object > vecComboReload, String prefix, String columnname) { 1587 if (token==null || token.trim().equals("")) return ""; 1588 if (!token.equalsIgnoreCase(columnname)) saveVectorField(vecComboReload, token); 1589 if (parentsFieldsData!=null) { 1590 for (int i=0;i<parentsFieldsData.length;i++) { 1591 if (parentsFieldsData[i].name.equalsIgnoreCase(token)) return ((prefix.equals(""))?("\"" + parentsFieldsData[i].name + "\""):("\"" + prefix + Sqlc.TransformaNombreColumna(parentsFieldsData[i].name) + "\"")); 1592 } 1593 } 1594 if (vecFields!=null && findField(vecFields, token)) { 1595 return ((prefix.equals(""))?("\"" + token + "\""):("\"" + prefix + Sqlc.TransformaNombreColumna(token) + "\"")); 1596 } 1597 return ((prefix.equals(""))?("\"" + FormatUtilities.replace(token) + "\""):("\"" + prefix + Sqlc.TransformaNombreColumna(token) + "\"")); 1598 } 1599 1600 public static String getDisplayLogicText(String token, Vector<Object > vecFields, FieldsData[] parentsFieldsData, Vector<Object > vecAuxiliar, Vector<Object > vecDisplayLogic, String windowId, Vector<Object > vecContext, boolean save) { 1601 StringBuffer strOut = new StringBuffer (); 1602 int i=token.indexOf("@"); 1603 while (i!=-1) { 1604 strOut.append(token.substring(0,i)); 1605 token = token.substring(i+1); 1606 i=token.indexOf("@"); 1607 if (i!=-1) { 1608 String strAux=token.substring(0,i); 1609 token=token.substring(i+1); 1610 strOut.append(getDisplayLogicTextTranslate(strAux, vecFields, parentsFieldsData, vecAuxiliar, vecDisplayLogic, windowId, vecContext, save)); 1611 } 1612 i=token.indexOf("@"); 1613 } 1614 strOut.append(token); 1615 return strOut.toString(); 1616 } 1617 1618 public static String getDisplayLogicTextTranslate(String token, Vector<Object > vecFields, FieldsData[] parentsFieldsData, Vector<Object > vecAuxiliar, Vector<Object > vecDisplayLogic, String windowId, Vector<Object > vecContext, boolean save) { 1619 if (token==null || token.trim().equals("")) return ""; 1620 String aux=Sqlc.TransformaNombreColumna(token); 1621 if (save) saveVectorField(vecDisplayLogic, token); 1622 if (parentsFieldsData!=null) { 1623 for (int i=0;i<parentsFieldsData.length;i++) { 1624 if (parentsFieldsData[i].name.equalsIgnoreCase(token)) return "inputValue(document.frmMain.inp" + Sqlc.TransformaNombreColumna(parentsFieldsData[i].name) + ")"; 1625 } 1626 } 1627 if (vecAuxiliar!=null && findField(vecAuxiliar, token)) { 1628 return ("inputValue(document.frmMain.inp" + aux + ")"); 1629 } 1630 if (vecFields!=null && findField(vecFields, token)) { 1631 return ("inputValue(document.frmMain.inp" + aux + ")"); 1632 } 1633 saveVectorField(vecContext, token); 1634 return "str" + FormatUtilities.replace(token); 1635 } 1636 1637 public static String getDisplayLogicComparation(String token) { 1638 String aux = token.trim(); 1639 for (int i=0;i<comparations.length;i++) { 1640 if (comparations[i][0].equals(aux)) return comparations[i][1]; 1641 } 1642 return aux; 1643 } 1644 1645 public static boolean isInFieldList(FieldsData[] fields, String columnName) { 1646 if (fields==null || fields.length==0) return false; 1647 for (int i=0;i<fields.length;i++) { 1648 if (fields[i].name.equalsIgnoreCase(columnName)) return true; 1649 } 1650 return false; 1651 } 1652 1653 public static boolean isDecimalNumber (String reference) { 1654 if (reference==null || reference.equals("")) return false; 1655 switch (Integer.valueOf(reference).intValue()) { 1656 case 12: 1657 case 22: return true; 1658 } 1659 return false; 1660 } 1661 1662 public static boolean isGeneralNumber (String reference) { 1663 if (reference==null || reference.equals("")) return false; 1664 switch (Integer.valueOf(reference).intValue()) { 1665 case 800019: return true; 1666 } 1667 return false; 1668 } 1669 1670 public static boolean isQtyNumber (String reference) { 1671 if (reference==null || reference.equals("")) return false; 1672 switch (Integer.valueOf(reference).intValue()) { 1673 case 29: return true; 1674 } 1675 return false; 1676 } 1677 1678 public static boolean isPriceNumber (String reference) { 1679 if (reference==null || reference.equals("")) return false; 1680 switch (Integer.valueOf(reference).intValue()) { 1681 case 800008: return true; 1682 } 1683 return false; 1684 } 1685 1686 public static boolean isIntegerNumber (String reference) { 1687 if (reference==null || reference.equals("")) return false; 1688 switch (Integer.valueOf(reference).intValue()) { 1689 case 11: 1690 case 13: return true; 1691 } 1692 return false; 1693 } 1694 1695 public static boolean isDateField (String reference) { 1696 if (reference==null || reference.equals("")) return false; 1697 switch (Integer.valueOf(reference).intValue()) { 1698 case 15: return true; 1699 } 1700 return false; 1701 } 1702 1703 public static boolean isTimeField (String reference) { 1704 if (reference==null || reference.equals("")) return false; 1705 switch (Integer.valueOf(reference).intValue()) { 1706 case 24: return true; 1707 } 1708 return false; 1709 } 1710 1711 public static boolean isDateTimeField (String reference) { 1712 if (reference==null || reference.equals("")) return false; 1713 switch (Integer.valueOf(reference).intValue()) { 1714 case 15: 1715 case 16: 1716 case 24: return true; 1717 } 1718 return false; 1719 } 1720 1721 public static boolean isLikeType (String reference) { 1722 if (reference==null || reference.equals("")) return false; 1723 switch (Integer.valueOf(reference).intValue()) { 1724 case 10: 1725 case 14: 1726 case 34: return true; 1727 } 1728 return false; 1729 } 1730 1731 public static boolean isTextData (String reference) { 1732 if (reference==null || reference.equals("")) return false; 1733 switch (Integer.valueOf(reference).intValue()) { 1734 case 15: 1735 case 20: 1736 case 17: return true; 1737 } 1738 return false; 1739 } 1740 1741 public static boolean isSearchValueColumn(String name) { 1742 if (name==null || name.equals("")) return false; 1743 return (name.equalsIgnoreCase("Value") || name.equalsIgnoreCase("DocumentNo")); 1744 } 1745 1746 public static boolean isSelectType (String reference) { 1747 if (reference==null || reference.equals("")) return false; 1748 switch (Integer.valueOf(reference).intValue()) { 1749 case 17: 1750 case 18: 1751 case 19: return true; 1752 } 1753 return false; 1754 } 1755 1756 public static boolean isSearchType(String reference) { 1757 if (reference==null || reference.equals("")) return false; 1758 switch (Integer.valueOf(reference).intValue()) { 1759 case 21: 1760 case 25: 1761 case 30: 1762 case 31: 1763 case 32: 1764 case 35: 1765 case 800013: 1766 case 800011: return true; 1767 } 1768 return false; 1769 } 1770 1771 public static boolean isLinkType(String reference) { 1772 if (reference==null || reference.equals("")) return false; 1773 switch (Integer.valueOf(reference).intValue()) { 1774 case 800101: return true; 1775 } 1776 return false; 1777 } 1778 1779 public static String sqlCasting(ConnectionProvider conn, String reference, String referencevalue) { 1780 if (reference==null || reference.equals("")) return ""; 1781 else if (isDateTimeField(reference)) return "TO_DATE"; 1782 else if (isIntegerNumber(reference) || isPriceNumber(reference) || isQtyNumber(reference) || isGeneralNumber(reference) || isDecimalNumber(reference) || reference.equals("19") || isSearchType(reference)) return "TO_NUMBER"; 1783 else if (reference.equals("19") || reference.equals("27") || reference.equals("33")) return "TO_NUMBER"; 1784 else if (reference.equals("28") && (referencevalue.equals("11"))) return "TO_NUMBER"; 1785 else if (reference.equals("18")) { 1786 if (referencevalue==null) return "TO_NUMBER"; 1787 try { 1788 TableRelationData trd[] = TableRelationData.selectRefTable(conn, referencevalue); 1789 if (trd==null || trd.length==0) return "TO_NUMBER"; 1790 return sqlCasting(conn, trd[0].referencekey, trd[0].referencevaluekey); 1791 } catch (ServletException ex) { 1792 log4j.error("sqlCasting: " + ex); 1793 return ""; 1794 } 1795 } 1796 else return ""; 1797 } 1798 1799 public static void setPropertyValue(Properties _prop, FieldProvider _field, String _name, String _fieldName, String _defaultValue) throws Exception { 1800 String aux = ""; 1801 try { 1802 aux = _field.getField(_fieldName); 1803 if (aux==null || aux.equals("")) aux = _defaultValue; 1804 } catch (Exception ex) { 1805 if (_defaultValue==null) throw new Exception ("Inexistent field: " + _fieldName); 1806 else aux = _defaultValue; 1807 } 1808 if (aux!=null) _prop.setProperty(_name, aux); 1809 } 1810 1811 public static WADControl getControl(ConnectionProvider conn, FieldProvider field, boolean isreadonly, String tabName, String adLanguage, XmlEngine xmlEngine, boolean isDisplayLogic, boolean isReloadObject) throws Exception { 1812 if (field == null) return null; 1813 Properties prop = new Properties(); 1814 setPropertyValue(prop, field, "ColumnName", "columnname", null); 1815 prop.setProperty("ColumnNameInp", Sqlc.TransformaNombreColumna(field.getField("columnname"))); 1816 setPropertyValue(prop, field, "Name", "name", null); 1817 setPropertyValue(prop, field, "IsMandatory", "required", "N"); 1818 setPropertyValue(prop, field, "AD_Reference_ID", "reference", null); 1819 setPropertyValue(prop, field, "ReferenceName", "referenceName", null); 1820 setPropertyValue(prop, field, "ReferenceNameTrl", "referenceNameTrl", ""); 1821 setPropertyValue(prop, field, "AD_Reference_Value_ID", "referencevalue", ""); 1822 setPropertyValue(prop, field, "AD_Val_Rule_ID", "adValRuleId", ""); 1823 setPropertyValue(prop, field, "DisplayLength", "displaysize", "0"); 1824 setPropertyValue(prop, field, "IsSameLine", "issameline", "N"); 1825 setPropertyValue(prop, field, "IsDisplayed", "isdisplayed", "N"); 1826 setPropertyValue(prop, field, "IsUpdateable", "isupdateable", "N"); 1827 setPropertyValue(prop, field, "IsParent", "isparent", "N"); 1828 setPropertyValue(prop, field, "FieldLength", "fieldlength", "0"); 1829 setPropertyValue(prop, field, "ColumnNameSearch", "realname", ""); 1830 setPropertyValue(prop, field, "SearchName", "searchname", ""); 1831 setPropertyValue(prop, field, "AD_CallOut_ID", "adCalloutId", ""); 1832 setPropertyValue(prop, field, "CallOutName", "calloutname", ""); 1833 setPropertyValue(prop, field, "CallOutClassName", "classnameCallout", ""); 1834 setPropertyValue(prop, field, "CallOutMapping", "mappingCallout", ""); 1835 setPropertyValue(prop, field, "AD_Process_ID", "adProcessId", ""); 1836 setPropertyValue(prop, field, "IsReadOnly", "isreadonly", "N"); 1837 setPropertyValue(prop, field, "DisplayLogic", "displaylogic", ""); 1838 setPropertyValue(prop, field, "IsEncrypted", "isencrypted", "N"); 1839 setPropertyValue(prop, field, "AD_FieldGroup_ID", "fieldgroup", ""); 1840 setPropertyValue(prop, field, "AD_Tab_ID", "tabid", null); 1841 setPropertyValue(prop, field, "ValueMin", "valuemin", ""); 1842 setPropertyValue(prop, field, "ValueMax", "valuemax", ""); 1843 setPropertyValue(prop, field, "MappingName", "javaClassName", ""); 1844 setPropertyValue(prop, field, "IsColumnEncrypted", "iscolumnencrypted", ""); 1845 setPropertyValue(prop, field, "IsDesencryptable", "isdesencryptable", ""); 1846 prop.setProperty("TabName", tabName); 1847 prop.setProperty("IsReadOnlyTab", (isreadonly?"Y":"N")); 1848 prop.setProperty("AD_Language", adLanguage); 1849 prop.setProperty("IsDisplayLogic", (isDisplayLogic?"Y":"N")); 1850 prop.setProperty("IsComboReload", (isReloadObject?"Y":"N")); 1851 1852 String classname = "org.openbravo.wad.controls.WAD" + FormatUtilities.replace(field.getField("referenceName")); 1853 WADControl _myClass = null; 1854 try { 1855 Class c = Class.forName(classname); 1856 _myClass = (WADControl) c.newInstance(); 1857 } catch (ClassNotFoundException ex) { 1858 log4j.warn("CouldnĀ“t find class: " + classname); 1859 _myClass = new WADControl(); 1860 } 1861 _myClass.setConnection(conn); 1862 _myClass.setReportEngine(xmlEngine); 1863 _myClass.setInfo(prop); 1864 _myClass.initialize(); 1865 _myClass.setConnection(null); 1866 return _myClass; 1867 } 1868 1869 public static boolean isNewGroup(WADControl control, String strFieldGroup) { 1870 if (control==null) return false; 1871 String fieldgroup = control.getData("AD_FieldGroup_ID"); 1872 return (control.getData("IsDisplayed").equals("Y") && fieldgroup!=null && !fieldgroup.equals("") && !fieldgroup.equals(strFieldGroup)); 1873 } 1874 1875 public static String getDisplayLogic(WADControl auxControl, Vector<Object > vecDL, FieldsData[] parentsFieldsData, Vector<Object > vecAuxiliar, Vector<Object > vecFields, String windowId, Vector<Object > vecContext, boolean isreadonly) { 1876 String code = auxControl.getData("DisplayLogic"); 1877 if (code==null || code.equals("")) return ""; 1878 StringBuffer _displayLogic = new StringBuffer (); 1879 _displayLogic.append("if ("); 1880 _displayLogic.append(displayLogic(code, vecDL, parentsFieldsData, vecAuxiliar, vecFields, windowId, vecContext)); 1881 _displayLogic.append(") {\n"); 1882 _displayLogic.append("displayLogicElement('"); 1883 _displayLogic.append(auxControl.getData("ColumnName")); 1884 _displayLogic.append("_inp_td', true);\n"); 1885 _displayLogic.append("displayLogicElement('"); 1886 _displayLogic.append(auxControl.getData("ColumnName")); 1887 _displayLogic.append("_inp', true);\n"); 1888 if (!auxControl.getData("AD_Reference_ID").equals("28")) { 1889 _displayLogic.append("displayLogicElement('"); 1890 _displayLogic.append(auxControl.getData("ColumnName")); 1891 _displayLogic.append("_lbl_td', true);\n"); 1892 _displayLogic.append("displayLogicElement('"); 1893 _displayLogic.append(auxControl.getData("ColumnName")); 1894 _displayLogic.append("_lbl', true);\n"); 1895 } 1896 if ((isGeneralNumber(auxControl.getData("AD_Reference_ID")) || isDateField(auxControl.getData("AD_Reference_ID")) || isTimeField(auxControl.getData("AD_Reference_ID")) || isLikeType(auxControl.getData("AD_Reference_ID")) || isDecimalNumber(auxControl.getData("AD_Reference_ID")) || isQtyNumber(auxControl.getData("AD_Reference_ID")) || isPriceNumber(auxControl.getData("AD_Reference_ID")) || isIntegerNumber(auxControl.getData("AD_Reference_ID")) || auxControl.getData("AD_Reference_ID").equals("21") || auxControl.getData("AD_Reference_ID").equals("25") || auxControl.getData("AD_Reference_ID").equals("30") || auxControl.getData("AD_Reference_ID").equals("800011") || auxControl.getData("AD_Reference_ID").equals("31") || auxControl.getData("AD_Reference_ID").equals("32") || auxControl.getData("AD_Reference_ID").equals("35") || isLinkType(auxControl.getData("AD_Reference_ID"))) && !auxControl.getData("IsReadOnly").equals("Y") && !isreadonly) { 1897 _displayLogic.append("displayLogicElement('"); 1898 _displayLogic.append(auxControl.getData("ColumnName")); 1899 _displayLogic.append("_btt', true);\n"); 1900 } 1901 _displayLogic.append("} else {\n"); 1902 _displayLogic.append("displayLogicElement('"); 1903 _displayLogic.append(auxControl.getData("ColumnName")); 1904 _displayLogic.append("_inp_td', false);\n"); 1905 _displayLogic.append("displayLogicElement('"); 1906 _displayLogic.append(auxControl.getData("ColumnName")); 1907 _displayLogic.append("_inp', false);\n"); 1908 if (!auxControl.getData("AD_Reference_ID").equals("28")) { 1909 _displayLogic.append("displayLogicElement('"); 1910 _displayLogic.append(auxControl.getData("ColumnName")); 1911 _displayLogic.append("_lbl_td', false);\n"); 1912 _displayLogic.append("displayLogicElement('"); 1913 _displayLogic.append(auxControl.getData("ColumnName")); 1914 _displayLogic.append("_lbl', false);\n"); 1915 } 1916 if ((isGeneralNumber(auxControl.getData("AD_Reference_ID")) || isDateField(auxControl.getData("AD_Reference_ID")) || isTimeField(auxControl.getData("AD_Reference_ID")) || isLikeType(auxControl.getData("AD_Reference_ID")) || isDecimalNumber(auxControl.getData("AD_Reference_ID")) || isQtyNumber(auxControl.getData("AD_Reference_ID")) || isPriceNumber(auxControl.getData("AD_Reference_ID")) || isIntegerNumber(auxControl.getData("AD_Reference_ID")) || auxControl.getData("AD_Reference_ID").equals("21") || auxControl.getData("AD_Reference_ID").equals("25") || auxControl.getData("AD_Reference_ID").equals("30") || auxControl.getData("AD_Reference_ID").equals("800011") || auxControl.getData("AD_Reference_ID").equals("31") || auxControl.getData("AD_Reference_ID").equals("35") || auxControl.getData("AD_Reference_ID").equals("32") || isLinkType(auxControl.getData("AD_Reference_ID"))) && !auxControl.getData("IsReadOnly").equals("Y") && !isreadonly) { 1917 _displayLogic.append("displayLogicElement('"); 1918 _displayLogic.append(auxControl.getData("ColumnName")); 1919 _displayLogic.append("_btt', false);\n"); 1920 } 1921 _displayLogic.append("}\n"); 1922 return _displayLogic.toString(); 1923 } 1924 1925 public static void writeFile(File path, String filename, String text) throws IOException { 1926 File fileData = new File(path, filename); 1927 FileOutputStream fileWriterData = new FileOutputStream(fileData); 1928 OutputStreamWriter printWriterData = new OutputStreamWriter(fileWriterData, "UTF-8"); 1929 printWriterData.write(text); 1930 printWriterData.flush(); 1931 fileWriterData.close(); 1932 } 1933} 1934 | Popular Tags |