diff --git a/migration/i2.0z/oracle/201403121652_IDEMPIERE-1649.sql b/migration/i2.0z/oracle/201403121652_IDEMPIERE-1649.sql new file mode 100644 index 0000000000..d05b645b20 --- /dev/null +++ b/migration/i2.0z/oracle/201403121652_IDEMPIERE-1649.sql @@ -0,0 +1,19 @@ +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- Mar 12, 2014 4:51:42 PM COT +-- IDEMPIERE-1649 set tab default +UPDATE AD_Column SET DefaultValue='Y',Updated=TO_DATE('2014-03-12 16:51:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=166 +; + +-- Mar 12, 2014 4:52:00 PM COT +ALTER TABLE AD_Tab MODIFY IsSingleRow CHAR(1) DEFAULT 'Y' +; + +-- Mar 12, 2014 4:52:02 PM COT +UPDATE AD_Tab SET IsSingleRow='Y' WHERE IsSingleRow IS NULL +; + +SELECT register_migration_script('201403121652_IDEMPIERE-1649.sql') FROM dual +; + diff --git a/migration/i2.0z/postgresql/201403121652_IDEMPIERE-1649.sql b/migration/i2.0z/postgresql/201403121652_IDEMPIERE-1649.sql new file mode 100644 index 0000000000..f4012647f1 --- /dev/null +++ b/migration/i2.0z/postgresql/201403121652_IDEMPIERE-1649.sql @@ -0,0 +1,16 @@ +-- Mar 12, 2014 4:51:42 PM COT +-- IDEMPIERE-1649 set tab default +UPDATE AD_Column SET DefaultValue='Y',Updated=TO_TIMESTAMP('2014-03-12 16:51:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=166 +; + +-- Mar 12, 2014 4:52:00 PM COT +INSERT INTO t_alter_column values('ad_tab','IsSingleRow','CHAR(1)',null,'Y') +; + +-- Mar 12, 2014 4:52:02 PM COT +UPDATE AD_Tab SET IsSingleRow='Y' WHERE IsSingleRow IS NULL +; + +SELECT register_migration_script('201403121652_IDEMPIERE-1649.sql') FROM dual +; + diff --git a/org.adempiere.base.callout/src/org/compiere/model/Callout_AD_Column.java b/org.adempiere.base.callout/src/org/compiere/model/Callout_AD_Column.java index 31229a0a41..6729c1eb54 100644 --- a/org.adempiere.base.callout/src/org/compiere/model/Callout_AD_Column.java +++ b/org.adempiere.base.callout/src/org/compiere/model/Callout_AD_Column.java @@ -30,7 +30,7 @@ import org.compiere.util.DisplayType; public class Callout_AD_Column extends CalloutEngine { public String columnName (Properties ctx, int WindowNo, GridTab mTab, GridField mField, Object value) - { + { // IDEMPIERE-1011 - dup code on MColumn.setmartDefaults I_AD_Column column = GridTabWrapper.create(mTab, I_AD_Column.class); if (MColumn.isSuggestSelectionColumn(column.getColumnName(), true)) column.setIsSelectionColumn(true); diff --git a/org.adempiere.base.process/src/org/compiere/process/TabCreateFields.java b/org.adempiere.base.process/src/org/compiere/process/TabCreateFields.java index 75661e0604..d35053f1e2 100644 --- a/org.adempiere.base.process/src/org/compiere/process/TabCreateFields.java +++ b/org.adempiere.base.process/src/org/compiere/process/TabCreateFields.java @@ -157,6 +157,21 @@ public class TabCreateFields extends SvrProcess } } + //set display logic for accounting dimensions + if (column.getColumnName().equalsIgnoreCase("AD_OrgTrx_ID")){ + field.setDisplayLogic("@$Element_OT@=Y"); + } else if (column.getColumnName().equalsIgnoreCase("C_Campaign_ID")) { + field.setDisplayLogic("@$Element_MC@=Y"); + } else if (column.getColumnName().equalsIgnoreCase("C_Activity_ID")) { + field.setDisplayLogic("@$Element_AY@=Y"); + } else if (column.getColumnName().equalsIgnoreCase("C_Project_ID")) { + field.setDisplayLogic("@$Element_PJ@=Y"); + } else if (column.getColumnName().equalsIgnoreCase("User1_ID")) { + field.setDisplayLogic("@$Element_U1@=Y"); + } else if (column.getColumnName().equalsIgnoreCase("User2_ID")) { + field.setDisplayLogic("@$Element_U2@=Y"); + } + if (field.save()) { addLog(0, null, null, column.getName()); diff --git a/org.adempiere.base.process/src/org/compiere/process/TableCreateColumns.java b/org.adempiere.base.process/src/org/compiere/process/TableCreateColumns.java index f475596b1e..78b13a6f48 100644 --- a/org.adempiere.base.process/src/org/compiere/process/TableCreateColumns.java +++ b/org.adempiere.base.process/src/org/compiere/process/TableCreateColumns.java @@ -273,38 +273,12 @@ public class TableCreateColumns extends SvrProcess column.setAD_Element_ID (element.getAD_Element_ID ()); // column.setIsMandatory ("NO".equals (nullable)); - // Key - if (columnName.equalsIgnoreCase (tableName + "_ID")) - { - column.setIsKey (true); - column.setAD_Reference_ID (DisplayType.ID); - column.setIsUpdateable(false); - } - //handle uuid column xolali bug IDEMPIERE-971 - if (columnName.equalsIgnoreCase (PO.getUUIDColumnName(table.getTableName()))) - { - column.setAD_Reference_ID (DisplayType.String); - column.setIsUpdateable(false); - column.setIsAllowCopy(false); - } - + // Account // bug [ 1637912 ] - else if (columnName.toUpperCase ().endsWith("_ACCT") + if (columnName.toUpperCase ().endsWith("_ACCT") && size == 10) column.setAD_Reference_ID (DisplayType.Account); - // Account - else if (columnName.equalsIgnoreCase ("C_Location_ID")) - column.setAD_Reference_ID (DisplayType.Location); - // Product Attribute - else if (columnName.equalsIgnoreCase ("M_AttributeSetInstance_ID")) - column.setAD_Reference_ID (DisplayType.PAttribute); - // SalesRep_ID (=User) - else if (columnName.equalsIgnoreCase ("SalesRep_ID")) - { - column.setAD_Reference_ID (DisplayType.Table); - column.setAD_Reference_Value_ID (190); - } // ID else if (columnName.toUpperCase().endsWith ("_ID")) column.setAD_Reference_ID (DisplayType.TableDir); @@ -315,20 +289,6 @@ public class TableCreateColumns extends SvrProcess || columnName.equalsIgnoreCase ("Created") || columnName.equalsIgnoreCase ("Updated")) column.setAD_Reference_ID (DisplayType.DateTime); - // CreatedBy/UpdatedBy (=User) - else if (columnName.equalsIgnoreCase ("CreatedBy") - || columnName.equalsIgnoreCase ("UpdatedBy")) - { - column.setAD_Reference_ID (DisplayType.Table); - column.setAD_Reference_Value_ID (110); - column.setIsUpdateable(false); - } - // Entity Type - else if (columnName.equalsIgnoreCase ("EntityType")) - { - column.setAD_Reference_ID (DisplayType.Table); - column.setAD_Reference_Value_ID (389); - } // CLOB else if (dataType == Types.CLOB) column.setAD_Reference_ID (DisplayType.TextLong); @@ -348,14 +308,6 @@ public class TableCreateColumns extends SvrProcess // List else if (size < 4 && dataType == Types.CHAR) column.setAD_Reference_ID (DisplayType.List); - // Name, DocumentNo - else if (columnName.equalsIgnoreCase ("Name") - || columnName.equals ("DocumentNo")) - { - column.setAD_Reference_ID (DisplayType.String); - column.setIsIdentifier (true); - column.setSeqNo (1); - } // String, Text else if (dataType == Types.CHAR || dataType == Types.VARCHAR || typeName.startsWith ("NVAR") @@ -381,6 +333,8 @@ public class TableCreateColumns extends SvrProcess else column.setAD_Reference_ID (DisplayType.String); + column.setSmartDefaults(); + column.setFieldLength (size); if (column.isUpdateable() && (table.isView() @@ -390,10 +344,6 @@ public class TableCreateColumns extends SvrProcess || columnName.toUpperCase().equals("UPDATED") )) column.setIsUpdateable(false); - // Check if is a possible selection column - if (MColumn.isSuggestSelectionColumn(column.getColumnName(), false)) - column.setIsSelectionColumn(true); - // Done if (column.save ()) { diff --git a/org.adempiere.base/src/org/compiere/model/MColumn.java b/org.adempiere.base/src/org/compiere/model/MColumn.java index 1db94e2244..d3a9cc6cd6 100644 --- a/org.adempiere.base/src/org/compiere/model/MColumn.java +++ b/org.adempiere.base/src/org/compiere/model/MColumn.java @@ -48,7 +48,7 @@ public class MColumn extends X_AD_Column /** * */ - private static final long serialVersionUID = 4321132594207949196L; + private static final long serialVersionUID = -4372212315789445915L; /** * Get MColumn from Cache @@ -734,4 +734,100 @@ public class MColumn extends X_AD_Column return foreignTable; } + public void setSmartDefaults() { // IDEMPIERE-1649 - dup code on Callout_AD_Column.columnName + if (MColumn.isSuggestSelectionColumn(getColumnName(), true)) + setIsSelectionColumn(true); + + // IDEMPIERE-1011 + if (PO.getUUIDColumnName(getAD_Table().getTableName()).equals(getColumnName())) { + // UUID column + setAD_Reference_ID(DisplayType.String); + setAD_Val_Rule_ID(0); + setAD_Reference_Value_ID(0); + setFieldLength(36); + setDefaultValue(null); + setMandatoryLogic(null); + setReadOnlyLogic(null); + setIsIdentifier(false); + setIsUpdateable(false); + setIsAlwaysUpdateable(false); + setIsKey(true); + } else if (getAD_Table().getTableName().concat("_ID").equals(getColumnName())) { + // ID key column + setAD_Reference_ID(DisplayType.ID); + setAD_Val_Rule_ID(0); + setAD_Reference_Value_ID(0); + setFieldLength(22); + setDefaultValue(null); + setMandatoryLogic(null); + setReadOnlyLogic(null); + setIsIdentifier(false); + setIsUpdateable(false); + setIsAlwaysUpdateable(false); + } else { + // get defaults from most used case + String sql = "" + + "SELECT AD_Reference_ID, " + + " AD_Val_Rule_ID, " + + " AD_Reference_Value_ID, " + + " FieldLength, " + + " DefaultValue, " + + " MandatoryLogic, " + + " ReadOnlyLogic, " + + " IsIdentifier, " + + " IsUpdateable, " + + " IsAlwaysUpdateable, " + + " FKConstraintType," + + " COUNT(*) " + + "FROM AD_Column " + + "WHERE ColumnName = ? " + + "GROUP BY AD_Reference_ID, " + + " AD_Val_Rule_ID, " + + " AD_Reference_Value_ID, " + + " FieldLength, " + + " DefaultValue, " + + " MandatoryLogic, " + + " ReadOnlyLogic, " + + " IsIdentifier, " + + " IsUpdateable, " + + " IsAlwaysUpdateable, " + + " FKConstraintType " + + "ORDER BY COUNT(*) DESC "; + PreparedStatement pstmt = null; + ResultSet rs = null; + try + { + pstmt = DB.prepareStatement(sql, null); + pstmt.setString(1, getColumnName()); + rs = pstmt.executeQuery(); + if (rs.next()) { + int ad_reference_id = rs.getInt(1); + if (ad_reference_id == DisplayType.ID) + ad_reference_id = DisplayType.TableDir; + setAD_Reference_ID(ad_reference_id); + setAD_Val_Rule_ID(rs.getInt(2)); + setAD_Reference_Value_ID(rs.getInt(3)); + setFieldLength(rs.getInt(4)); + setDefaultValue(rs.getString(5)); + setMandatoryLogic(rs.getString(6)); + setReadOnlyLogic(rs.getString(7)); + setIsIdentifier("Y".equals(rs.getString(8))); + setIsUpdateable("Y".equals(rs.getString(9))); + setIsAlwaysUpdateable("Y".equals(rs.getString(10))); + setFKConstraintType(rs.getString(11)); + } + } + catch (SQLException e) + { + throw new DBException(e); + } + finally + { + DB.close(rs, pstmt); + rs = null; + pstmt = null; + } + } + } + } // MColumn