KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openbravo > wad > WadUtility


1 /*
2  *************************************************************************
3  * The contents of this file are subject to the Openbravo Public License
4  * Version 1.0 (the "License"), being the Mozilla Public License
5  * Version 1.1 with a permitted attribution clause; you may not use this
6  * file except in compliance with the License. You may obtain a copy of
7  * the License at http://www.openbravo.com/legal/license.html
8  * Software distributed under the License is distributed on an "AS IS"
9  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
10  * License for the specific language governing rights and limitations
11  * under the License.
12  * The Original Code is Openbravo ERP.
13  * The Initial Developer of the Original Code is Openbravo SL
14  * All portions are Copyright (C) 2001-2006 Openbravo SL
15  * All Rights Reserved.
16  * Contributor(s): ______________________________________.
17  ************************************************************************
18 */

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 JavaDoc[][] comparations = {{"==", " == "},
41       {"=", " == "},
42       {"!", " != "},
43       {"^", " != "},
44       {"-", " != "}};
45   static String JavaDoc[][] unions = {{"|", " || "},
46       {"&", " && "}};
47
48   public WadUtility() {
49     PropertyConfigurator.configure("log4j.lcf");
50   }
51
52   public static String JavaDoc columnIdentifier (ConnectionProvider conn, String JavaDoc tableName, boolean required, FieldsData fields, int ilist, int itable, boolean translated, Vector<Object JavaDoc> vecFields, Vector<Object JavaDoc> vecTable, Vector<Object JavaDoc> vecWhere, Vector<Object JavaDoc> vecParameters, Vector<Object JavaDoc> vecTableParameters, String JavaDoc sqlDateFormat) throws ServletException {
53     if (fields==null) return "";
54     StringBuffer JavaDoc texto = new StringBuffer JavaDoc();
55     if (fields.reference.equals("17")) { //List
56
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")) { //Table
69
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")) { //TableDir
83
itable++;
84       int ilength = fields.name.length();
85       String JavaDoc 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 JavaDoc 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")) { //Search y Locator
117
itable++;
118       int ilength = fields.name.length();
119       String JavaDoc 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 JavaDoc 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 JavaDoc applyFormat(String JavaDoc text, String JavaDoc reference, String JavaDoc 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 JavaDoc columnIdentifier (ConnectionProvider conn, String JavaDoc tableName, boolean required, FieldsData fields, Vector<Object JavaDoc> vecCounters, boolean translated, Vector<Object JavaDoc> vecFields, Vector<Object JavaDoc> vecTable, Vector<Object JavaDoc> vecWhere, Vector<Object JavaDoc> vecParameters, Vector<Object JavaDoc> vecTableParameters, String JavaDoc sqlDateFormat) throws ServletException {
163     if (fields==null) return "";
164     StringBuffer JavaDoc texto = new StringBuffer JavaDoc();
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")) { //ID
168
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")) { //List
182
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")) { //Table
197
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")) { //Image
219
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")) { //TableDir, Search y Locator
230
itable++;
231       EditionFieldsData[] dataSearchs = null;
232       if (fields.reference.equals("30")) dataSearchs = EditionFieldsData.selectSearchs(conn, "", fields.referencevalue);
233       String JavaDoc 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 JavaDoc fieldsAux = new StringBuffer JavaDoc();
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   /**
294   * Establece el tipo de class que le corresponde a un campo determinado de la ediciĆ³n
295   * @param efd - Estructura de tipo EditionFieldsData
296   * @return Devuelve un String con el parĆ”metro class completo o un String vacĆ­o en caso de no tener
297   * class asociado para el campo indicado.
298   */

299   public static String JavaDoc classRequiredUpdateable(EditionFieldsData efd, boolean isupdateable, boolean tabIsReadOnly) {
300     StringBuffer JavaDoc htmltext = new StringBuffer JavaDoc();
301     String JavaDoc 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 JavaDoc strType = "dojoValidateValid";
307       String JavaDoc 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 JavaDoc e) {
329       return "";
330     }
331     return htmltext.toString();
332   }
333
334   public static String JavaDoc buildSQL(String JavaDoc clause, Vector<Object JavaDoc> vecParameters) {
335     StringBuffer JavaDoc where = new StringBuffer JavaDoc();
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 JavaDoc columnRelationType(String JavaDoc 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 JavaDoc xmlFields(FieldsData fd, String JavaDoc completeName, int maxTextboxLength, boolean forcedAttribute, boolean tabIsReadOnly) {
387     StringBuffer JavaDoc html = new StringBuffer JavaDoc();
388     String JavaDoc 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")) { // List
403
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")) { // Image
418
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")) { // YesNo
432
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")) { // Button
438
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 JavaDoc htmlFields(EditionFieldsData efd, String JavaDoc completeName, String JavaDoc completeID, boolean isupdateable, int maxTextboxLength, boolean forcedAttribute, boolean isdesigne, Vector<Object JavaDoc> vecCallOuts, String JavaDoc tabName, Vector<Object JavaDoc> vecDisplayLogic, Vector<Object JavaDoc> vecReloads, boolean tabIsReadOnly, int textareaLength) {
476     StringBuffer JavaDoc html = new StringBuffer JavaDoc();
477     String JavaDoc onChange = ((isInVector(vecDisplayLogic, efd.columnname) && !tabIsReadOnly)?"displayLogic();":"");
478     String JavaDoc 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       //efd.callout="";
483
}
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")) { // List or Table or TableDir
498
StringBuffer JavaDoc html1 = new StringBuffer JavaDoc();
499       html.append("<select name=\"inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + completeName + "\"");
500       onChange =callouts(efd, vecCallOuts, maxTextboxLength) + onChange;
501       //if (efd.isparent.equals("Y") || !isupdateable || tabIsReadOnly) {
502
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")){ //MEMO
556
StringBuffer JavaDoc html1 = new StringBuffer JavaDoc();
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")){ //TEXTAREA
587
StringBuffer JavaDoc html1 = new StringBuffer JavaDoc();
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>&nbsp;</TD>");
613       html.append("</TR></TABLE>");
614     } else {
615       StringBuffer JavaDoc html1 = new StringBuffer JavaDoc();
616       html.append("<INPUT type=\"");
617       if (efd.isdisplayed.equals("N")) {
618         html.append("hidden\"");
619       } else if (efd.reference.equals("20")) { // YesNo
620
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))) { // Date. Put a calendar
653
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 JavaDoc keyName) throws ServletException {
673     if (log4j.isDebugEnabled()) log4j.debug("processing WadUtility.setLabel() - field name: " + auxControl.getData("Name"));
674     String JavaDoc 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 JavaDoc 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 JavaDoc> vecCallOuts, Vector<Object JavaDoc> vecReloads, int maxTextboxLength, String JavaDoc 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 JavaDoc callouts(EditionFieldsData efd, Vector<Object JavaDoc> vecCallOuts, int maxTextboxLength) {
732     return callouts(efd, vecCallOuts, maxTextboxLength, false);
733   }
734
735   public static String JavaDoc callouts(EditionFieldsData efd, Vector<Object JavaDoc> vecCallOuts, int maxTextboxLength, boolean isReload) {
736     StringBuffer JavaDoc html = new StringBuffer JavaDoc();
737     boolean existCallOut=false;
738     if (!efd.calloutname.equals("")) {
739       if (efd.calloutname.startsWith("ComboReload")) isReload=true;
740       String JavaDoc 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 JavaDoc script = new StringBuffer JavaDoc();
752         if (existDebug) {
753           script.append(" if (keyField==\"inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + "\") {\n");
754           /*if (isReload) {
755             script.append(" submitCommandForm('" + efd.columnname + "', false, null, '../ad_callouts/ComboReloads' + document.frmMain.inpTabId.value + '.html', 'frameOculto');");
756           }*/

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 JavaDoc complete = new StringBuffer JavaDoc();
762             String JavaDoc 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)) { //Calendar
786
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 JavaDoc script = new StringBuffer JavaDoc();
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 JavaDoc complete = new StringBuffer JavaDoc();
803               String JavaDoc 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)) { //Clock
826
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 JavaDoc script = new StringBuffer JavaDoc();
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 JavaDoc complete = new StringBuffer JavaDoc();
843               String JavaDoc 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)) { //Calculator
866
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 JavaDoc script = new StringBuffer JavaDoc();
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 JavaDoc complete = new StringBuffer JavaDoc();
883               String JavaDoc 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)) { //Keyboard
906
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 JavaDoc script = new StringBuffer JavaDoc();
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 JavaDoc complete = new StringBuffer JavaDoc();
923               String JavaDoc 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 JavaDoc strCallOut = new StringBuffer JavaDoc();
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 JavaDoc findField(ConnectionProvider conn, EditionFieldsData[] fields, EditionFieldsData[] auxiliars, String JavaDoc 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 JavaDoc searchsCommand(EditionFieldsData efd, boolean fromButton, String JavaDoc tabId, ConnectionProvider conn, String JavaDoc windowId, EditionFieldsData[] fieldsData, EditionFieldsData[] auxiliarsData) {
985     StringBuffer JavaDoc params = new StringBuffer JavaDoc();
986     StringBuffer JavaDoc html = new StringBuffer JavaDoc();
987     String JavaDoc strMethodName = "openSearch";
988     if (!fromButton) {
989       params.append(", 'Command'");
990       params.append(", 'KEY'");
991     }
992     params.append(", 'WindowID'");
993     params.append(", '" + windowId + "'");
994     String JavaDoc 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 JavaDoc 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    /*
1052    if (efd.searchname.equalsIgnoreCase("PRODUCT")) {
1053      field=findField(conn, fieldsData, auxiliarsData, "m_pricelist_id");
1054      if (!field.equals("")) {
1055        params.append(", 'inpPriceList'");
1056        params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ".value");
1057      }
1058      field=findField(conn, fieldsData, auxiliarsData, "m_warehouse_id");
1059      if (!field.equals("")) {
1060        params.append(", 'inpWarehouse'");
1061        params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ".value");
1062      }
1063      field=findField(conn, fieldsData, auxiliarsData, "dateordered");
1064      if (!field.equals("")) {
1065        params.append(", 'inpDate'");
1066        params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ".value");
1067      }
1068    } else if (efd.searchname.equalsIgnoreCase("PROJECT")) {
1069      field=findField(conn, fieldsData, auxiliarsData, "c_bpartner_id");
1070      if (!field.equals("")) {
1071        params.append(", 'inpBPartner'");
1072        params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ".value");
1073      }
1074    } else if (efd.searchname.equalsIgnoreCase("PRODUCT COMPLETE")) {
1075      field=findField(conn, fieldsData, auxiliarsData, "m_warehouse_id");
1076      if (!field.equals("")) {
1077        params.append(", 'inpWarehouse'");
1078        params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ".value");
1079      }
1080      field=findField(conn, fieldsData, auxiliarsData, "c_bpartner_id");
1081      if (!field.equals("")) {
1082        params.append(", 'inpBPartner'");
1083        params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ".value");
1084      }
1085    } else if (efd.searchname.equalsIgnoreCase("SALES ORDER LINE")) {
1086      field=findField(conn, fieldsData, auxiliarsData, "c_bpartner_id");
1087      if (!field.equals("")) {
1088        params.append(", 'inpBPartner'");
1089        params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ".value");
1090      }
1091      field=findField(conn, fieldsData, auxiliarsData, "m_product_id");
1092      if (!field.equals("")) {
1093        params.append(", 'inpProduct'");
1094        params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ".value");
1095      }
1096    } else if (efd.searchname.equalsIgnoreCase("SHIPMENT/RECEPIT LINE")) {
1097      field=findField(conn, fieldsData, auxiliarsData, "c_bpartner_id");
1098      if (!field.equals("")) {
1099        params.append(", 'inpBPartner'");
1100        params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ".value");
1101      }
1102      field=findField(conn, fieldsData, auxiliarsData, "m_product_id");
1103      if (!field.equals("")) {
1104        params.append(", 'inpProduct'");
1105        params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ".value");
1106      }
1107    } else if (efd.searchname.toUpperCase().startsWith("ATTRIBUTE")) {
1108      strMethodName = "openPAttribute";
1109      params.append(", 'inpKeyValue'");
1110      params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(efd.columnnameinp) + ".value");
1111      params.append(", 'inpwindowId'");
1112      params.append(", document.frmMain.inpwindowId.value");
1113      field=findField(conn, fieldsData, auxiliarsData, "m_product_id");
1114      if (!field.equals("")) {
1115        params.append(", 'inpProduct'");
1116        params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ".value");
1117      }
1118      field=findField(conn, fieldsData, auxiliarsData, "m_locator_id");
1119      if (!field.equals("")) {
1120        params.append(", 'inpLocatorId'");
1121        params.append(", document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ".value");
1122      }
1123    } else if (efd.reference.equals("25")) {
1124      field=findField(conn, fieldsData, auxiliarsData, "c_acctschema_id");
1125      if (!field.equals("")) {
1126        params.append(", 'inpAcctSchema'");
1127        params.append(", inputValue(document.frmMain.inp" + Sqlc.TransformaNombreColumna(field) + ")");
1128      }
1129    }*/

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 JavaDoc productSearch(EditionFieldsData efd, int maxTextboxLength, Vector<Object JavaDoc> vecCallOuts, String JavaDoc tabId, ConnectionProvider conn, String JavaDoc windowId, EditionFieldsData[] fieldsData, EditionFieldsData[] auxiliarsData) {
1135    StringBuffer JavaDoc html = new StringBuffer JavaDoc();
1136    Vector<Object JavaDoc> vec = new Vector<Object JavaDoc>();
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 JavaDoc searchs(EditionFieldsData efd, int maxTextboxLength, Vector<Object JavaDoc> vecCallOuts, String JavaDoc tabId, ConnectionProvider conn, String JavaDoc windowId, EditionFieldsData[] fieldsData, EditionFieldsData[] auxiliarsData) {
1164    StringBuffer JavaDoc html = new StringBuffer JavaDoc();
1165    Vector<Object JavaDoc> vec = new Vector<Object JavaDoc>();
1166    EditionFieldsData[] fieldsSearch = null;
1167    try {
1168      fieldsSearch = EditionFieldsData.selectSearchs(conn, "O", efd.referencevalue);
1169    } catch (ServletException ex) {
1170      ex.printStackTrace();
1171    }
1172    String JavaDoc 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 JavaDoc 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    /*
1185    if (efd.searchname.toUpperCase().indexOf("BUSINESS")!=-1) {
1186      html.append(htmlFields(efd, "_LOC", "_LOC", true, maxTextboxLength, true, true, vecCallOuts, "", vec, null, false, 0));
1187      html.append(htmlFields(efd, "_CON", "_CON", true, maxTextboxLength, true, true, vecCallOuts, "", vec, null, false, 0));
1188    } else if (efd.searchname.equalsIgnoreCase("PRODUCT")) {
1189      html.append(htmlFields(efd, "_LOC", "_LOC", true, maxTextboxLength, true, true, vecCallOuts, "", vec, null, false, 0));
1190      html.append(htmlFields(efd, "_ATR", "_ATR", true, maxTextboxLength, true, true, vecCallOuts, "", vec, null, false, 0));
1191      html.append(htmlFields(efd, "_PQTY", "_PQTY", true, maxTextboxLength, true, true, vecCallOuts, "", vec, null, false, 0));
1192      html.append(htmlFields(efd, "_PUOM", "_PUOM", true, maxTextboxLength, true, true, vecCallOuts, "", vec, null, false, 0));
1193      html.append(htmlFields(efd, "_QTY", "_QTY", true, maxTextboxLength, true, true, vecCallOuts, "", vec, null, false, 0));
1194      html.append(htmlFields(efd, "_PLIST", "_PLIST", true, maxTextboxLength, true, true, vecCallOuts, "", vec, null, false, 0));
1195      html.append(htmlFields(efd, "_PSTD", "_PSTD", true, maxTextboxLength, true, true, vecCallOuts, "", vec, null, false, 0));
1196      html.append(htmlFields(efd, "_UOM", "_UOM", true, maxTextboxLength, true, true, vecCallOuts, "", vec, null, false, 0));
1197      html.append(htmlFields(efd, "_PLIM", "_PLIM", true, maxTextboxLength, true, true, vecCallOuts, "", vec, null, false, 0));
1198      html.append(htmlFields(efd, "_CURR", "_CURR", true, maxTextboxLength, true, true, vecCallOuts, "", vec, null, false, 0));
1199    }*/

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 JavaDoc locatorCommands(EditionFieldsData efd, boolean fromButton, String JavaDoc tabId, ConnectionProvider conn, String JavaDoc windowId, EditionFieldsData[] fieldsData, EditionFieldsData[] auxiliarsData) {
1216    StringBuffer JavaDoc params = new StringBuffer JavaDoc();
1217    StringBuffer JavaDoc html = new StringBuffer JavaDoc();
1218    if (!fromButton) {
1219      params.append(", 'Command'");
1220      params.append(", 'KEY'");
1221    }
1222    params.append(", 'WindowID'");
1223    params.append(", '" + windowId + "'");
1224    String JavaDoc 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 JavaDoc locator(EditionFieldsData efd, int maxTextboxLength, Vector<Object JavaDoc> vecCallOuts, String JavaDoc tabId, ConnectionProvider conn, String JavaDoc windowId, EditionFieldsData[] fieldsData, EditionFieldsData[] auxiliarsData) {
1234    StringBuffer JavaDoc html = new StringBuffer JavaDoc();
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 JavaDoc locationCommands(EditionFieldsData efd) {
1252    StringBuffer JavaDoc html = new StringBuffer JavaDoc();
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 JavaDoc location(EditionFieldsData efd) {
1259    StringBuffer JavaDoc html = new StringBuffer JavaDoc();
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 JavaDoc buttonsCommand(EditionFieldsData efd, String JavaDoc servletName) {
1277    StringBuffer JavaDoc html = new StringBuffer JavaDoc();
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 JavaDoc getSQLWadContext(String JavaDoc code, Vector<Object JavaDoc> vecParameters) {
1288    if (code==null || code.trim().equals("")) return "";
1289    String JavaDoc token;
1290    String JavaDoc strValue = new String JavaDoc(code);
1291    StringBuffer JavaDoc strOut = new StringBuffer JavaDoc();
1292
1293    int i = strValue.indexOf("@");
1294    String JavaDoc 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        //Delete the chain symbol
1300
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 JavaDoc getWadContext(String JavaDoc code, Vector<Object JavaDoc> vecFields, Vector<Object JavaDoc> vecAuxiliarFields, FieldsData[] parentsFieldsData, boolean isDefaultValue, String JavaDoc isSOTrx, String JavaDoc windowId) {
1334    if (code==null || code.trim().equals("")) return "";
1335    String JavaDoc token;
1336    String JavaDoc strValue = new String JavaDoc(code);
1337    StringBuffer JavaDoc strOut = new StringBuffer JavaDoc();
1338
1339    int i = strValue.indexOf("@");
1340    String JavaDoc 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 JavaDoc getWadComboReloadContext(String JavaDoc code, String JavaDoc isSOTrx) {
1362    if (code==null || code.trim().equals("")) return "";
1363    String JavaDoc token;
1364    String JavaDoc strValue = new String JavaDoc(code);
1365    StringBuffer JavaDoc strOut = new StringBuffer JavaDoc();
1366
1367    int i = strValue.indexOf("@");
1368    String JavaDoc 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 JavaDoc getWadComboReloadContextTranslate(String JavaDoc token, String JavaDoc isSOTrx) {
1391    String JavaDoc 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 = "vars.getSessionValue(\"" + token + "\")";
1395
else result = "Utility.getContext(this, vars, \"" + token + "\", windowId)";
1396    } else {
1397      String JavaDoc 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 JavaDoc getTextWadContext(String JavaDoc code, Vector<Object JavaDoc> vecFields, Vector<Object JavaDoc> vecAuxiliarFields, FieldsData[] parentsFieldsData, boolean isDefaultValue, String JavaDoc isSOTrx, String JavaDoc windowId) {
1406    if (code==null || code.trim().equals("")) return "";
1407    String JavaDoc token;
1408    String JavaDoc strValue = new String JavaDoc(code);
1409    StringBuffer JavaDoc strOut = new StringBuffer JavaDoc();
1410
1411    int h = strValue.indexOf(";");
1412    if (h!=-1) {
1413      StringBuffer JavaDoc total = new StringBuffer JavaDoc();
1414      String JavaDoc 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 JavaDoc transformFieldName(String JavaDoc 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 JavaDoc> vecFields, String JavaDoc field) {
1462    String JavaDoc strAux;
1463    for (int i=0;i<vecFields.size();i++) {
1464      strAux=transformFieldName((String JavaDoc)vecFields.elementAt(i));
1465      if (strAux.equalsIgnoreCase(field)) return true;
1466    }
1467    return false;
1468  }
1469
1470  public static String JavaDoc getWadContextTranslate(String JavaDoc token, Vector<Object JavaDoc> vecFields, Vector<Object JavaDoc> vecAuxiliarFields, FieldsData[] parentsFieldsData, boolean isDefaultValue, String JavaDoc isSOTrx, String JavaDoc 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 "vars.getSessionValue(\"" + token + "\")";
1474
else return "Utility.getContext(this, vars, \"" + token + "\", windowId)";
1475    } else {
1476      String JavaDoc 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 JavaDoc getWadDefaultValue(FieldsData fd) {
1495    if (fd==null) return "";
1496    if (fd.referencevalue.equals("28") && !fd.name.toUpperCase().endsWith("_ID")) return "N"; //Button
1497
else if (fd.referencevalue.equals("20")) return "N"; //YesNo
1498
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 JavaDoc displayLogic(String JavaDoc code, Vector<Object JavaDoc> vecDL, FieldsData[] parentsFieldsData, Vector<Object JavaDoc> vecAuxiliar, Vector<Object JavaDoc> vecFields, String JavaDoc windowId, Vector<Object JavaDoc> vecContext) {
1505    if (code==null || code.trim().equals("")) return "";
1506    String JavaDoc token, token2;
1507    String JavaDoc strValue = new String JavaDoc(code);
1508    StringBuffer JavaDoc strOut = new StringBuffer JavaDoc();
1509
1510    String JavaDoc 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 JavaDoc[][] array, String JavaDoc 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 JavaDoc> vec, String JavaDoc field) {
1548    if (field==null || field.trim().equals("")) return false;
1549    for (int i=0;i<vec.size();i++) {
1550      String JavaDoc aux = (String JavaDoc)vec.elementAt(i);
1551      if (aux.equalsIgnoreCase(field)) return true;
1552    }
1553    return false;
1554  }
1555
1556  public static void saveVectorField(Vector<Object JavaDoc> vec, String JavaDoc field) {
1557    if (field==null || field.trim().equals("")) return;
1558    if (!isInVector(vec, field)) vec.addElement(field);
1559  }
1560
1561  public static String JavaDoc getComboReloadText(String JavaDoc token, Vector<Object JavaDoc> vecFields, FieldsData[] parentsFieldsData, Vector<Object JavaDoc> vecComboReload, String JavaDoc prefix) {
1562    return getComboReloadText(token, vecFields, parentsFieldsData, vecComboReload, prefix, "");
1563  }
1564
1565  public static String JavaDoc getComboReloadText(String JavaDoc token, Vector<Object JavaDoc> vecFields, FieldsData[] parentsFieldsData, Vector<Object JavaDoc> vecComboReload, String JavaDoc prefix, String JavaDoc columnname) {
1566    StringBuffer JavaDoc strOut = new StringBuffer JavaDoc();
1567    int i=token.indexOf("@");
1568    while (i!=-1) {
1569      //strOut.append(token.substring(0,i));
1570
token = token.substring(i+1);
1571      if (!token.startsWith("SQL")) {
1572        i=token.indexOf("@");
1573        if (i!=-1) {
1574          String JavaDoc 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    //strOut.append(token);
1583
return strOut.toString();
1584  }
1585
1586  public static String JavaDoc getComboReloadTextTranslate(String JavaDoc token, Vector<Object JavaDoc> vecFields, FieldsData[] parentsFieldsData, Vector<Object JavaDoc> vecComboReload, String JavaDoc prefix, String JavaDoc 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 JavaDoc getDisplayLogicText(String JavaDoc token, Vector<Object JavaDoc> vecFields, FieldsData[] parentsFieldsData, Vector<Object JavaDoc> vecAuxiliar, Vector<Object JavaDoc> vecDisplayLogic, String JavaDoc windowId, Vector<Object JavaDoc> vecContext, boolean save) {
1601    StringBuffer JavaDoc strOut = new StringBuffer JavaDoc();
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 JavaDoc 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 JavaDoc getDisplayLogicTextTranslate(String JavaDoc token, Vector<Object JavaDoc> vecFields, FieldsData[] parentsFieldsData, Vector<Object JavaDoc> vecAuxiliar, Vector<Object JavaDoc> vecDisplayLogic, String JavaDoc windowId, Vector<Object JavaDoc> vecContext, boolean save) {
1619    if (token==null || token.trim().equals("")) return "";
1620    String JavaDoc 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 JavaDoc getDisplayLogicComparation(String JavaDoc token) {
1638    String JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc sqlCasting(ConnectionProvider conn, String JavaDoc reference, String JavaDoc 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 JavaDoc _name, String JavaDoc _fieldName, String JavaDoc _defaultValue) throws Exception JavaDoc {
1800    String JavaDoc aux = "";
1801    try {
1802      aux = _field.getField(_fieldName);
1803      if (aux==null || aux.equals("")) aux = _defaultValue;
1804    } catch (Exception JavaDoc ex) {
1805      if (_defaultValue==null) throw new Exception JavaDoc("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 JavaDoc tabName, String JavaDoc adLanguage, XmlEngine xmlEngine, boolean isDisplayLogic, boolean isReloadObject) throws Exception JavaDoc {
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 JavaDoc classname = "org.openbravo.wad.controls.WAD" + FormatUtilities.replace(field.getField("referenceName"));
1853    WADControl _myClass = null;
1854    try {
1855      Class JavaDoc c = Class.forName(classname);
1856      _myClass = (WADControl) c.newInstance();
1857    } catch (ClassNotFoundException JavaDoc 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 JavaDoc strFieldGroup) {
1870    if (control==null) return false;
1871    String JavaDoc 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 JavaDoc getDisplayLogic(WADControl auxControl, Vector<Object JavaDoc> vecDL, FieldsData[] parentsFieldsData, Vector<Object JavaDoc> vecAuxiliar, Vector<Object JavaDoc> vecFields, String JavaDoc windowId, Vector<Object JavaDoc> vecContext, boolean isreadonly) {
1876    String JavaDoc code = auxControl.getData("DisplayLogic");
1877    if (code==null || code.equals("")) return "";
1878    StringBuffer JavaDoc _displayLogic = new StringBuffer JavaDoc();
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 JavaDoc filename, String JavaDoc 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