/// <summary> /// Create Report Column /// </summary> /// <param name="ctx">context </param> /// <param name="columnName">column name</param> /// <param name="displayType">display type</param> /// <param name="sql">sql (if null then columnName is used). </param> /// <param name="AD_Reference_Value_ID">List/Table Reference</param> /// <param name="refColumnName">UserReference column name /// Will be overwritten if TableDir or Search</param> public RColumn(Ctx ctx, String columnName, int displayType, String sql, int AD_Reference_Value_ID, String refColumnName) { _colHeader = Msg.Translate(ctx, columnName); if (refColumnName != null) { _colHeader = Msg.Translate(ctx, refColumnName); } _displayType = displayType; _colSQL = sql; if (_colSQL == null || _colSQL.Length == 0) { _colSQL = columnName; } // Strings if (DisplayType.IsText(displayType)) { _colClass = typeof(String);// String.class; // default size=30 } // Amounts else if (displayType == DisplayType.Amount) { _colClass = typeof(Decimal);// BigDecimal.class; _colSize = 70; } // Boolean else if (displayType == DisplayType.YesNo) { _colClass = typeof(Boolean);// Boolean.class; } // Date else if (DisplayType.IsDate(displayType)) { _colClass = typeof(DateTime);// Timestamp.class; } // Number else if (displayType == DisplayType.Quantity || displayType == DisplayType.Number || displayType == DisplayType.CostPrice) { _colClass = typeof(Double);// Double.class; _colSize = 70; } // Integer else if (displayType == DisplayType.Integer) { _colClass = typeof(int);// Integer.class; } // List else if (displayType == DisplayType.List) { Language language = Language.GetLanguage(Env.GetAD_Language(ctx)); _colSQL = "(" + VLookUpFactory.GetLookup_ListEmbed( language, AD_Reference_Value_ID, columnName) + ")"; _colClass = typeof(String);// String.class; _isIDcol = false; } /** Table * else if (displayType == DisplayType.Table) * { * Language language = Language.getLanguage(Env.getAD_Language(ctx)); * _colSQL += ",(" + MLookupFactory.getLookup_TableEmbed( * language, columnName, RModel.TABLE_ALIAS, AD_Reference_Value_ID) + ")"; * _colClass = String.class; * _isIDcol = false; * } **/ // TableDir, Search,... else { _colClass = typeof(String);// String.class; Language language = Language.GetLanguage(Env.GetAD_Language(ctx)); if (columnName.Equals("Account_ID") || columnName.Equals("User1_ID") || columnName.Equals("User2_ID")) { _colSQL += ",(" + VLookUpFactory.GetLookup_TableDirEmbed( language, "C_ElementValue_ID", RModel.TABLE_ALIAS, columnName) + ")"; _isIDcol = true; } else if (columnName.StartsWith("UserElement") && refColumnName != null) { _colSQL += ",(" + VLookUpFactory.GetLookup_TableDirEmbed( language, refColumnName, RModel.TABLE_ALIAS, columnName) + ")"; _isIDcol = true; } else if (columnName.Equals("C_LocFrom_ID") || columnName.Equals("C_LocTo_ID")) { _colSQL += ",(" + VLookUpFactory.GetLookup_TableDirEmbed( language, "C_Location_ID", RModel.TABLE_ALIAS, columnName) + ")"; _isIDcol = true; } else if (columnName.Equals("AD_OrgTrx_ID")) { _colSQL += ",(" + VLookUpFactory.GetLookup_TableDirEmbed( language, "AD_Org_ID", RModel.TABLE_ALIAS, columnName) + ")"; _isIDcol = true; } else if (displayType == DisplayType.TableDir) { _colSQL += ",(" + VLookUpFactory.GetLookup_TableDirEmbed( language, columnName, RModel.TABLE_ALIAS) + ")"; _isIDcol = true; } } }
/// <summary> /// Get SQL Default Value /// </summary> /// Created By : Kiran Sangwan /// <returns>string default clause</returns> public string GetSQLDefaultValue() { string defaultValue = GetDefaultValue(); string columnName = GetColumnName(); int dt = GetAD_Reference_ID(); // string sql = ""; if (columnName.Equals("CreatedBy") || columnName.Equals("UpdatedBy")) { sql = "0"; } else if (columnName.Equals("Created") || columnName.Equals("Updated")) { if (DatabaseType.IsOracle || DatabaseType.IsPostgre) { sql = "SYSDATE"; } else { sql = "CURRENT_TIMESTAMP"; } } else if (defaultValue != null && defaultValue.Length > 0) { defaultValue = defaultValue.Trim(); if (defaultValue.Equals("NULL")) { sql = "NULL"; } else if (defaultValue.StartsWith("@SQL=")) { s_log.Warning("Get sql default: " + defaultValue); // warning & ignore default } else { int first = defaultValue.IndexOf("@"); if (first >= 0 && defaultValue.IndexOf("@", first + 1) >= 0) { s_log.Finer("Get default: (Unresolved Variable) " + defaultValue); } else if (defaultValue.Equals("-1")) { s_log.Finer("Get default: (invalid value) " + defaultValue); } else { if (DisplayType.IsText(dt) || DisplayType.List == dt || DisplayType.YesNo == dt || (DisplayType.Button == dt && !columnName.EndsWith("_ID")) || columnName.Equals("EntityType") || columnName.Equals("AD_Language") || columnName.Equals("DocBaseType") ) { //sql = DatabaseType.TO_STRING(defaultValue); sql = GlobalVariable.TO_STRING(defaultValue); } else { sql = defaultValue; } } } } else if (columnName.Equals("IsActive")) { sql = "'Y'"; } // NO default value - set Data Type else { if (dt == DisplayType.YesNo) { sql = "'N'"; } else if (DisplayType.IsNumeric(dt) && (IsMandatory() || IsMandatoryUI())) { sql = "0"; } } return(sql); }
} // getTargetColumn /// <summary> /// Execute Auto Assignment /// </summary> /// <param name="po">PO to be modified</param> /// <returns>true if modified</returns> public bool ExecuteIt(PO po) { // Check Column MColumn column = GetTargetColumn(); String columnName = column.GetColumnName(); int index = po.Get_ColumnIndex(columnName); if (index == -1) { throw new Exception(ToString() + ": AD_Column_ID not found"); } // Check Value Object value = po.Get_Value(index); String assignRule = GetAssignRule(); if (value == null && assignRule.Equals(ASSIGNRULE_OnlyIfNOTNULL)) { return(false); } else if (value != null && assignRule.Equals(ASSIGNRULE_OnlyIfNULL)) { return(false); } // Check Criteria if (m_criteria == null) { GetCriteria(false); } bool modified = false; for (int i = 0; i < m_criteria.Length; i++) { MAssignCriteria criteria = m_criteria[i]; if (criteria.IsMet(po)) { modified = true; break; } } if (!modified) { return(false); } // Assignment String methodName = "set" + columnName; Type parameterType = null; Object parameter = null; int displayType = column.GetAD_Reference_ID(); String valueString = GetValueString(); if (DisplayType.IsText(displayType) || displayType == DisplayType.List) { parameterType = typeof(string); parameter = valueString; } else if (DisplayType.IsID(displayType) || displayType == DisplayType.Integer) { parameterType = typeof(int); if (GetRecord_ID() != 0) { parameter = GetRecord_ID(); } else if (valueString != null && valueString.Length > 0) { try { parameter = int.Parse(valueString); } catch (Exception e) { log.Warning(ToString() + " " + e); return(false); } } } else if (DisplayType.IsNumeric(displayType)) { parameterType = typeof(Decimal); if (valueString != null && valueString.Length > 0) { try { parameter = Decimal.Parse(valueString); } catch (Exception e) { log.Warning(ToString() + " " + e); return(false); } } } else if (DisplayType.IsDate(displayType)) { parameterType = typeof(DateTime); if (valueString != null && valueString.Length > 0) { try { parameter = DateTime.Parse(valueString); } catch (Exception e) { log.Warning(ToString() + " " + e); return(false); } } } else if (displayType == DisplayType.YesNo) { parameterType = typeof(bool); parameter = "Y".Equals(valueString); } else if (displayType == DisplayType.Button) { parameterType = typeof(string); parameter = GetValueString(); } else if (DisplayType.IsLOB(displayType)) // CLOB is String { parameterType = typeof(byte[]); // parameter = getValueString(); } // Assignment try { Type clazz = po.GetType(); System.Reflection.MethodInfo method = clazz.GetMethod(methodName, new Type[] { parameterType }); method.Invoke(po, new Object[] { parameter }); } catch (Exception e) { log.Log(Level.WARNING, ToString(), e); // fallback if (parameter is Boolean) { po.Set_Value(index, valueString); } else { po.Set_Value(index, parameter); } // modified = false; } return(modified); } // executeIt