From eadfd4870494e53e81162b52a23d5adbdd4e6b8a Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Thu, 13 Aug 2015 18:10:51 -0500 Subject: [PATCH 01/20] IDEMPIERE-2757 Key for M_Storage wrongly defined on dictionary / same issue found on Storage tab from Warehouse window --- .../oracle/201508131800_IDEMPIERE-2757.sql | 79 +++++++++++++++++++ .../201508131800_IDEMPIERE-2757.sql | 76 ++++++++++++++++++ 2 files changed, 155 insertions(+) create mode 100644 migration/i2.1/oracle/201508131800_IDEMPIERE-2757.sql create mode 100644 migration/i2.1/postgresql/201508131800_IDEMPIERE-2757.sql diff --git a/migration/i2.1/oracle/201508131800_IDEMPIERE-2757.sql b/migration/i2.1/oracle/201508131800_IDEMPIERE-2757.sql new file mode 100644 index 0000000000..c88d45f27a --- /dev/null +++ b/migration/i2.1/oracle/201508131800_IDEMPIERE-2757.sql @@ -0,0 +1,79 @@ +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- IDEMPIERE-2757 Key for M_Storage wrongly defined on dictionary +-- Aug 13, 2015 5:54:15 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,ColumnSpan) VALUES (203834,'M_Warehouse_UU',177,60958,'N',36,'N','N','N','N',0,0,'Y',TO_DATE('2015-08-13 17:54:15','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-08-13 17:54:15','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','f8ba8ff7-14a1-4eb4-a68d-708095cfc0e9','N',2) +; + +-- Aug 13, 2015 5:55:21 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,ColumnSpan) VALUES (203835,'M_Storage_UU',179,60954,'N',36,'N','N','N','N',0,0,'Y',TO_DATE('2015-08-13 17:55:20','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-08-13 17:55:20','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','89dd5676-731e-4d60-868a-8c710e9e280d','N',2) +; + +-- Aug 13, 2015 5:55:21 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (203836,'Date Material Policy','Time used for LIFO and FIFO Material Policy','This field is used to record time used for LIFO and FIFO material policy',179,210887,'Y',7,110,'N','N','N','N',0,0,'Y',TO_DATE('2015-08-13 17:55:21','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-08-13 17:55:21','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','b93cc4d5-e6a6-4a15-acc4-393d54520736','Y',110,2) +; + +-- Aug 13, 2015 5:58:03 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=40, XPosition=4,Updated=TO_DATE('2015-08-13 17:58:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203836 +; + +-- Aug 13, 2015 5:58:03 PM COT +UPDATE AD_Field SET SeqNo=50,Updated=TO_DATE('2015-08-13 17:58:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=1011 +; + +-- Aug 13, 2015 5:58:03 PM COT +UPDATE AD_Field SET SeqNo=60,Updated=TO_DATE('2015-08-13 17:58:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=6529 +; + +-- Aug 13, 2015 5:58:03 PM COT +UPDATE AD_Field SET SeqNo=70,Updated=TO_DATE('2015-08-13 17:58:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=1009 +; + +-- Aug 13, 2015 5:58:03 PM COT +UPDATE AD_Field SET SeqNo=80,Updated=TO_DATE('2015-08-13 17:58:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=1013 +; + +-- Aug 13, 2015 5:58:03 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=90, XPosition=4,Updated=TO_DATE('2015-08-13 17:58:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=3078 +; + +-- Aug 13, 2015 5:58:03 PM COT +UPDATE AD_Field SET SeqNo=100,Updated=TO_DATE('2015-08-13 17:58:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=1014 +; + +-- Aug 13, 2015 5:58:03 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=110, XPosition=4,Updated=TO_DATE('2015-08-13 17:58:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=3282 +; + +-- Aug 13, 2015 5:58:03 PM COT +UPDATE AD_Field SET SeqNo=0,Updated=TO_DATE('2015-08-13 17:58:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203835 +; + +-- Aug 13, 2015 5:59:19 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=40, XPosition=4,Updated=TO_DATE('2015-08-13 17:59:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202534 +; + +-- Aug 13, 2015 5:59:19 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=50, XPosition=1,Updated=TO_DATE('2015-08-13 17:59:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57394 +; + +-- Aug 13, 2015 5:59:19 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=60, XPosition=4,Updated=TO_DATE('2015-08-13 17:59:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57391 +; + +-- Aug 13, 2015 5:59:19 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=70, XPosition=2,Updated=TO_DATE('2015-08-13 17:59:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57390 +; + +-- Aug 13, 2015 5:59:19 PM COT +UPDATE AD_Field SET SeqNo=80,Updated=TO_DATE('2015-08-13 17:59:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57395 +; + +-- Aug 13, 2015 5:59:19 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=90, XPosition=4,Updated=TO_DATE('2015-08-13 17:59:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57393 +; + +SELECT register_migration_script('201508131800_IDEMPIERE-2757.sql') FROM dual +; + diff --git a/migration/i2.1/postgresql/201508131800_IDEMPIERE-2757.sql b/migration/i2.1/postgresql/201508131800_IDEMPIERE-2757.sql new file mode 100644 index 0000000000..84a17b6c24 --- /dev/null +++ b/migration/i2.1/postgresql/201508131800_IDEMPIERE-2757.sql @@ -0,0 +1,76 @@ +-- IDEMPIERE-2757 Key for M_Storage wrongly defined on dictionary +-- Aug 13, 2015 5:54:15 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,ColumnSpan) VALUES (203834,'M_Warehouse_UU',177,60958,'N',36,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2015-08-13 17:54:15','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-08-13 17:54:15','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','f8ba8ff7-14a1-4eb4-a68d-708095cfc0e9','N',2) +; + +-- Aug 13, 2015 5:55:21 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,ColumnSpan) VALUES (203835,'M_Storage_UU',179,60954,'N',36,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2015-08-13 17:55:20','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-08-13 17:55:20','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','89dd5676-731e-4d60-868a-8c710e9e280d','N',2) +; + +-- Aug 13, 2015 5:55:21 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (203836,'Date Material Policy','Time used for LIFO and FIFO Material Policy','This field is used to record time used for LIFO and FIFO material policy',179,210887,'Y',7,110,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2015-08-13 17:55:21','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-08-13 17:55:21','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','b93cc4d5-e6a6-4a15-acc4-393d54520736','Y',110,2) +; + +-- Aug 13, 2015 5:58:03 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=40, XPosition=4,Updated=TO_TIMESTAMP('2015-08-13 17:58:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203836 +; + +-- Aug 13, 2015 5:58:03 PM COT +UPDATE AD_Field SET SeqNo=50,Updated=TO_TIMESTAMP('2015-08-13 17:58:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=1011 +; + +-- Aug 13, 2015 5:58:03 PM COT +UPDATE AD_Field SET SeqNo=60,Updated=TO_TIMESTAMP('2015-08-13 17:58:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=6529 +; + +-- Aug 13, 2015 5:58:03 PM COT +UPDATE AD_Field SET SeqNo=70,Updated=TO_TIMESTAMP('2015-08-13 17:58:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=1009 +; + +-- Aug 13, 2015 5:58:03 PM COT +UPDATE AD_Field SET SeqNo=80,Updated=TO_TIMESTAMP('2015-08-13 17:58:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=1013 +; + +-- Aug 13, 2015 5:58:03 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=90, XPosition=4,Updated=TO_TIMESTAMP('2015-08-13 17:58:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=3078 +; + +-- Aug 13, 2015 5:58:03 PM COT +UPDATE AD_Field SET SeqNo=100,Updated=TO_TIMESTAMP('2015-08-13 17:58:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=1014 +; + +-- Aug 13, 2015 5:58:03 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=110, XPosition=4,Updated=TO_TIMESTAMP('2015-08-13 17:58:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=3282 +; + +-- Aug 13, 2015 5:58:03 PM COT +UPDATE AD_Field SET SeqNo=0,Updated=TO_TIMESTAMP('2015-08-13 17:58:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203835 +; + +-- Aug 13, 2015 5:59:19 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=40, XPosition=4,Updated=TO_TIMESTAMP('2015-08-13 17:59:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202534 +; + +-- Aug 13, 2015 5:59:19 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=50, XPosition=1,Updated=TO_TIMESTAMP('2015-08-13 17:59:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57394 +; + +-- Aug 13, 2015 5:59:19 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=60, XPosition=4,Updated=TO_TIMESTAMP('2015-08-13 17:59:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57391 +; + +-- Aug 13, 2015 5:59:19 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=70, XPosition=2,Updated=TO_TIMESTAMP('2015-08-13 17:59:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57390 +; + +-- Aug 13, 2015 5:59:19 PM COT +UPDATE AD_Field SET SeqNo=80,Updated=TO_TIMESTAMP('2015-08-13 17:59:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57395 +; + +-- Aug 13, 2015 5:59:19 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=90, XPosition=4,Updated=TO_TIMESTAMP('2015-08-13 17:59:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57393 +; + +SELECT register_migration_script('201508131800_IDEMPIERE-2757.sql') FROM dual +; + From 37557f6b8763b6c712f93d514fed92bc50cb04a1 Mon Sep 17 00:00:00 2001 From: Chuck Boecking Date: Mon, 17 Aug 2015 11:03:25 -0500 Subject: [PATCH 02/20] IDEMPIERE-2773 GL Journal - Post to Reservation or Commitment --- org.adempiere.base/src/org/compiere/model/MJournal.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/org.adempiere.base/src/org/compiere/model/MJournal.java b/org.adempiere.base/src/org/compiere/model/MJournal.java index e344947343..ca05943263 100644 --- a/org.adempiere.base/src/org/compiere/model/MJournal.java +++ b/org.adempiere.base/src/org/compiere/model/MJournal.java @@ -491,10 +491,11 @@ public class MJournal extends X_GL_Journal implements DocAction // Michael Judd (mjudd) BUG: [ 2678088 ] Allow posting to system accounts for non-actual postings if (line.isDocControlled() && - ( getPostingType().equals(POSTINGTYPE_Actual)) || + ( getPostingType().equals(POSTINGTYPE_Actual) || getPostingType().equals(POSTINGTYPE_Commitment) || getPostingType().equals(POSTINGTYPE_Reservation) ) + ) { m_processMsg = "@DocControlledError@ - @Line@=" + line.getLine() + " - " + line.getAccountElementValue(); From ccc10c104d343e89645d73da0d443ca012332f07 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Mon, 17 Aug 2015 15:30:04 -0500 Subject: [PATCH 03/20] IDEMPIERE-2756 Background threads losing context when user log out / minor remove import warningsx --- .../src/org/adempiere/webui/LoggedSessionListener.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/LoggedSessionListener.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/LoggedSessionListener.java index 572c782734..a931c07081 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/LoggedSessionListener.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/LoggedSessionListener.java @@ -1,7 +1,6 @@ package org.adempiere.webui; import java.util.Hashtable; -import java.util.List; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; @@ -11,12 +10,9 @@ import javax.servlet.http.HttpSessionListener; import org.adempiere.exceptions.AdempiereException; import org.compiere.Adempiere; -import org.compiere.model.MSession; -import org.compiere.model.Query; import org.compiere.model.ServerStateChangeEvent; import org.compiere.model.ServerStateChangeListener; import org.compiere.util.DB; -import org.compiere.util.Env; import org.compiere.util.WebUtil; public class LoggedSessionListener implements HttpSessionListener, ServletContextListener, ServerStateChangeListener{ From 8228607b35a50fb5842eb3c4cbca8780044cdf7c Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Mon, 17 Aug 2015 15:33:08 -0500 Subject: [PATCH 04/20] IDEMPIERE-2664 DB Extensibility issues / add VM property org.idempiere.db.postgresql.debug to help debugging convert and performance --- .../src/org/compiere/db/DB_PostgreSQL.java | 4 ++++ .../src/org/compiere/dbPort/Convert_PostgreSQL.java | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/org.compiere.db.postgresql.provider/src/org/compiere/db/DB_PostgreSQL.java b/org.compiere.db.postgresql.provider/src/org/compiere/db/DB_PostgreSQL.java index 05c7113916..c08a1cafad 100755 --- a/org.compiere.db.postgresql.provider/src/org/compiere/db/DB_PostgreSQL.java +++ b/org.compiere.db.postgresql.provider/src/org/compiere/db/DB_PostgreSQL.java @@ -333,6 +333,10 @@ public class DB_PostgreSQL implements AdempiereDatabase String cache = convertCache.get(oraStatement); if (cache != null) { Convert.logMigrationScript(oraStatement, cache); + if ("true".equals(System.getProperty("org.idempiere.db.postgresql.debug"))) { + // log.warning("Oracle -> " + oraStatement); + log.warning("Pgsql -> " + cache); + } return cache; } diff --git a/org.compiere.db.postgresql.provider/src/org/compiere/dbPort/Convert_PostgreSQL.java b/org.compiere.db.postgresql.provider/src/org/compiere/dbPort/Convert_PostgreSQL.java index c85bb77d7f..1615d19644 100644 --- a/org.compiere.db.postgresql.provider/src/org/compiere/dbPort/Convert_PostgreSQL.java +++ b/org.compiere.db.postgresql.provider/src/org/compiere/dbPort/Convert_PostgreSQL.java @@ -47,7 +47,6 @@ public class Convert_PostgreSQL extends Convert_SQL92 { private TreeMap m_map; /** Logger */ - @SuppressWarnings("unused") private static CLogger log = CLogger.getCLogger(Convert_PostgreSQL.class); @@ -115,7 +114,11 @@ public class Convert_PostgreSQL extends Convert_SQL92 { if (retVars.size() > 0) statement = recoverQuotedStrings(statement, retVars); result.add(statement); - + + if ("true".equals(System.getProperty("org.idempiere.db.postgresql.debug"))) { + log.warning("Oracle -> " + sqlStatement); + log.warning("PgSQL -> " + statement); + } return result; } // convertStatement From 1fc8f9cb95112d317e2025c1d1ae47fc893719f4 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Mon, 17 Aug 2015 15:36:17 -0500 Subject: [PATCH 05/20] IDEMPIERE-2664 DB Extensibility issues / remove calls to DB.isPostgreSQL and DB.isOracle to determine if identifiers are upper/lower-case --- .../src/org/compiere/process/TableCreateColumns.java | 8 +------- org.adempiere.base/src/org/compiere/util/DB.java | 11 +++++++++-- .../adempiere/pipo2/handler/ColumnElementHandler.java | 4 ++-- .../adempiere/pipo/handler/ColumnElementHandler.java | 4 ++-- 4 files changed, 14 insertions(+), 13 deletions(-) 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 78b13a6f48..73a67dd5d9 100644 --- a/org.adempiere.base.process/src/org/compiere/process/TableCreateColumns.java +++ b/org.adempiere.base.process/src/org/compiere/process/TableCreateColumns.java @@ -212,13 +212,7 @@ public class TableCreateColumns extends SvrProcess */ private void addTableColumn (ResultSet rs, MTable table) throws Exception { - String tableName = table.getTableName (); - if (DB.isOracle ()) - tableName = tableName.toUpperCase (); - // globalqss 2005-10-24 - if (DB.isPostgreSQL()) - tableName = tableName.toLowerCase(); - // end globalqss 2005-10-24 + String tableName = table.getTableName(); while (rs.next ()) { String tn = rs.getString ("TABLE_NAME"); diff --git a/org.adempiere.base/src/org/compiere/util/DB.java b/org.adempiere.base/src/org/compiere/util/DB.java index bed4ba5b29..387e9c64db 100644 --- a/org.adempiere.base/src/org/compiere/util/DB.java +++ b/org.adempiere.base/src/org/compiere/util/DB.java @@ -527,7 +527,7 @@ public final class DB { if (s_cc != null) return s_cc.isPostgreSQL(); - log.severe("No Database"); + log.severe("No Database"); return false; } // isPostgreSQL //begin vpj-cd e-evolution 02/07/2005 PostgreSQL @@ -2415,7 +2415,14 @@ public final class DB ResultSet rs = null; try { DatabaseMetaData metadata = conn.getMetaData(); - rs = metadata.getTables(null, null, (DB.isPostgreSQL() ? tableName.toLowerCase() : tableName.toUpperCase()), null); + String tblName; + if (metadata.storesUpperCaseIdentifiers()) + tblName = tableName.toUpperCase(); + else if (metadata.storesLowerCaseIdentifiers()) + tblName = tableName.toLowerCase(); + else + tblName = tableName; + rs = metadata.getTables(null, null, tblName, null); if (rs.next()) { return true; } diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ColumnElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ColumnElementHandler.java index 22bb37f791..ed28666765 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ColumnElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ColumnElementHandler.java @@ -216,10 +216,10 @@ public class ColumnElementHandler extends AbstractElementHandler { String schema = DB.getDatabase().getSchema(); String tableName = table.getTableName(); String columnName = column.getColumnName(); - if (DB.isOracle()) { + if (md.storesUpperCaseIdentifiers()) { tableName = tableName.toUpperCase(); columnName = columnName.toUpperCase(); - } else if (DB.isPostgreSQL()) { + } else if (md.storesLowerCaseIdentifiers()) { tableName = tableName.toLowerCase(); columnName = columnName.toLowerCase(); } diff --git a/org.adempiere.pipo.legacy/src/org/adempiere/pipo/handler/ColumnElementHandler.java b/org.adempiere.pipo.legacy/src/org/adempiere/pipo/handler/ColumnElementHandler.java index 20762c992f..9ae111db17 100644 --- a/org.adempiere.pipo.legacy/src/org/adempiere/pipo/handler/ColumnElementHandler.java +++ b/org.adempiere.pipo.legacy/src/org/adempiere/pipo/handler/ColumnElementHandler.java @@ -309,10 +309,10 @@ public class ColumnElementHandler extends AbstractElementHandler { String schema = DB.getDatabase().getSchema(); String tableName = table.getTableName(); String columnName = column.getColumnName(); - if (DB.isOracle()) { + if (md.storesUpperCaseIdentifiers()) { tableName = tableName.toUpperCase(); columnName = columnName.toUpperCase(); - } else if (DB.isPostgreSQL()) { + } else if (md.storesLowerCaseIdentifiers()) { tableName = tableName.toLowerCase(); columnName = columnName.toLowerCase(); } From 95a4c42e882f97c9053f24f200dc102e2137821e Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Mon, 17 Aug 2015 17:11:12 -0500 Subject: [PATCH 06/20] IDEMPIERE-2771 Improve 2pack tracing for errors / drop unused transaction from 2pack activator --- .../plugin/utils/AdempiereActivator.java | 14 ++------------ .../plugin/utils/Incremental2PackActivator.java | 17 ++++------------- 2 files changed, 6 insertions(+), 25 deletions(-) diff --git a/org.adempiere.plugin.utils/src/org/adempiere/plugin/utils/AdempiereActivator.java b/org.adempiere.plugin.utils/src/org/adempiere/plugin/utils/AdempiereActivator.java index dee2f98b30..d24a2d15c4 100644 --- a/org.adempiere.plugin.utils/src/org/adempiere/plugin/utils/AdempiereActivator.java +++ b/org.adempiere.plugin.utils/src/org/adempiere/plugin/utils/AdempiereActivator.java @@ -16,7 +16,6 @@ import org.compiere.model.ServerStateChangeListener; import org.compiere.model.X_AD_Package_Imp; import org.compiere.util.CLogger; import org.compiere.util.Env; -import org.compiere.util.Trx; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; @@ -53,9 +52,6 @@ public class AdempiereActivator implements BundleActivator, ServiceTrackerCustom } private void installPackage() { - String trxName = Trx.createTrxName(); - try { - // e.g. 1.0.0.qualifier, check only the "1.0.0" part String version = getVersion(); if (version != null) @@ -86,22 +82,16 @@ public class AdempiereActivator implements BundleActivator, ServiceTrackerCustom X_AD_Package_Imp pkg = q.first(); if (pkg == null) { System.out.println("Installing " + getName() + " " + version + " ..."); - packIn(trxName); + packIn(); install(); System.out.println(getName() + " " + version + " installed."); } else { if (logger.isLoggable(Level.INFO)) logger.info(getName() + " " + version + " was installed: " + pkg.getCreated()); } - Trx.get(trxName, false).commit(); - } finally { - if (Trx.get(trxName, false) != null) { - Trx.get(trxName, false).close(); - } - } } - protected void packIn(String trxName) { + protected void packIn() { URL packout = context.getBundle().getEntry("/META-INF/2Pack.zip"); if (packout != null && service != null) { FileOutputStream zipstream = null; diff --git a/org.adempiere.plugin.utils/src/org/adempiere/plugin/utils/Incremental2PackActivator.java b/org.adempiere.plugin.utils/src/org/adempiere/plugin/utils/Incremental2PackActivator.java index 6567865070..7e5754b62d 100644 --- a/org.adempiere.plugin.utils/src/org/adempiere/plugin/utils/Incremental2PackActivator.java +++ b/org.adempiere.plugin.utils/src/org/adempiere/plugin/utils/Incremental2PackActivator.java @@ -34,7 +34,6 @@ import org.compiere.model.ServerStateChangeListener; import org.compiere.model.X_AD_Package_Imp; import org.compiere.util.CLogger; import org.compiere.util.Env; -import org.compiere.util.Trx; import org.compiere.util.Util; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; @@ -88,8 +87,6 @@ public class Incremental2PackActivator implements BundleActivator, ServiceTracke } private void installPackage() { - String trxName = Trx.createTrxName(); - try { // e.g. 1.0.0.qualifier, check only the "1.0.0" part String bundleVersionPart = getVersion(); String installedVersionPart = null; @@ -120,14 +117,8 @@ public class Incremental2PackActivator implements BundleActivator, ServiceTracke } } } - packIn(trxName, installedVersionPart, bundleVersionPart); + packIn(installedVersionPart, bundleVersionPart); afterPackIn(); - Trx.get(trxName, false).commit(); - } finally { - if (Trx.get(trxName, false) != null) { - Trx.get(trxName, false).close(); - } - } } private static class TwoPackEntry { @@ -139,7 +130,7 @@ public class Incremental2PackActivator implements BundleActivator, ServiceTracke } } - protected void packIn(String trxName, String installedVersionPart, String bundleVersionPart) { + protected void packIn(String installedVersionPart, String bundleVersionPart) { List list = new ArrayList(); //2Pack_1.0.0.zip, 2Pack_1.0.1.zip, etc @@ -172,7 +163,7 @@ public class Incremental2PackActivator implements BundleActivator, ServiceTracke }); for(TwoPackEntry entry : list) { - packIn(trxName, entry.url); + packIn(entry.url); } } @@ -184,7 +175,7 @@ public class Incremental2PackActivator implements BundleActivator, ServiceTracke return v; } - protected void packIn(String trxName, URL packout) { + protected void packIn(URL packout) { if (packout != null && service != null) { String path = packout.getPath(); String suffix = path.substring(path.lastIndexOf("_")); From 4d933e828780b1c672eb2eb6e2b12a2a548f3951 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Mon, 17 Aug 2015 19:27:33 -0500 Subject: [PATCH 07/20] refactor IDEMPIERE-1132 foreign key management for ticket IDEMPIERE-2745 --- .../oracle/201508171408_IDEMPIERE-2745.sql | 16 + .../201508171408_IDEMPIERE-2745.sql | 13 + .../src/org/compiere/process/ColumnSync.java | 4 +- .../src/org/compiere/model/MColumn.java | 181 ++++++- .../compiere/process/CreateForeignKey.java | 501 ++++++------------ .../pipo2/handler/ColumnElementHandler.java | 31 +- 6 files changed, 364 insertions(+), 382 deletions(-) create mode 100644 migration/i2.1/oracle/201508171408_IDEMPIERE-2745.sql create mode 100644 migration/i2.1/postgresql/201508171408_IDEMPIERE-2745.sql diff --git a/migration/i2.1/oracle/201508171408_IDEMPIERE-2745.sql b/migration/i2.1/oracle/201508171408_IDEMPIERE-2745.sql new file mode 100644 index 0000000000..8f731e1901 --- /dev/null +++ b/migration/i2.1/oracle/201508171408_IDEMPIERE-2745.sql @@ -0,0 +1,16 @@ +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- IDEMPIERE-1132 Improve AD_Index; AD_View; foreign keys management +-- Aug 17, 2015 7:18:22 PM COT +UPDATE AD_Process_Para SET IsMandatory='N',Updated=TO_DATE('2015-08-17 19:18:22','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200069 +; + +-- IDEMPIERE-2745 2Pack is not creating foreign keys +update ad_column set fkconstrainttype='D' where fkconstrainttype is null and columnname in ('AD_Client_ID','AD_Org_ID','CreatedBy','UpdatedBy') and ad_reference_id in (18,19,30) +; + + +SELECT register_migration_script('201508171408_IDEMPIERE-2745.sql') FROM dual +; + diff --git a/migration/i2.1/postgresql/201508171408_IDEMPIERE-2745.sql b/migration/i2.1/postgresql/201508171408_IDEMPIERE-2745.sql new file mode 100644 index 0000000000..4fc53a975c --- /dev/null +++ b/migration/i2.1/postgresql/201508171408_IDEMPIERE-2745.sql @@ -0,0 +1,13 @@ +-- IDEMPIERE-1132 Improve AD_Index; AD_View; foreign keys management +-- Aug 17, 2015 7:18:22 PM COT +UPDATE AD_Process_Para SET IsMandatory='N',Updated=TO_TIMESTAMP('2015-08-17 19:18:22','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200069 +; + +-- IDEMPIERE-2745 2Pack is not creating foreign keys +update ad_column set fkconstrainttype='D' where fkconstrainttype is null and columnname in ('AD_Client_ID','AD_Org_ID','CreatedBy','UpdatedBy') and ad_reference_id in (18,19,30) +; + + +SELECT register_migration_script('201508171408_IDEMPIERE-2745.sql') FROM dual +; + diff --git a/org.adempiere.base.process/src/org/compiere/process/ColumnSync.java b/org.adempiere.base.process/src/org/compiere/process/ColumnSync.java index 2c2d9b88eb..a44119b38e 100644 --- a/org.adempiere.base.process/src/org/compiere/process/ColumnSync.java +++ b/org.adempiere.base.process/src/org/compiere/process/ColumnSync.java @@ -128,14 +128,14 @@ public class ColumnSync extends SvrProcess MColumn[] cols = table.getColumns(false); for (MColumn col : cols) { - String fkConstraintSql = MColumn.getForeignKeyConstraintSql(md, catalog, schema, tableName, table, col); + String fkConstraintSql = MColumn.getForeignKeyConstraintSql(md, catalog, schema, tableName, table, col, false); if (fkConstraintSql != null && fkConstraintSql.length() > 0) sql += fkConstraintSql; } } else { - String fkConstraintSql = MColumn.getForeignKeyConstraintSql(md, catalog, schema, tableName, table, column); + String fkConstraintSql = MColumn.getForeignKeyConstraintSql(md, catalog, schema, tableName, table, column, false); if (fkConstraintSql != null && fkConstraintSql.length() > 0) sql += fkConstraintSql; } diff --git a/org.adempiere.base/src/org/compiere/model/MColumn.java b/org.adempiere.base/src/org/compiere/model/MColumn.java index 10c95e5986..8858d88a5c 100644 --- a/org.adempiere.base/src/org/compiere/model/MColumn.java +++ b/org.adempiere.base/src/org/compiere/model/MColumn.java @@ -32,7 +32,6 @@ import java.util.Properties; import java.util.logging.Level; import org.adempiere.exceptions.DBException; -import org.compiere.process.CreateForeignKey; import org.compiere.util.CCache; import org.compiere.util.CLogger; import org.compiere.util.DB; @@ -52,7 +51,7 @@ public class MColumn extends X_AD_Column /** * */ - private static final long serialVersionUID = -3735608010271317406L; + private static final long serialVersionUID = -7261365443985547106L; /** * Get MColumn from Cache @@ -840,7 +839,7 @@ public class MColumn extends X_AD_Column return table; } - public static String getForeignKeyConstraintSql(DatabaseMetaData md, String catalog, String schema, String tableName, MTable table, MColumn column) throws Exception + public static String getForeignKeyConstraintSql(DatabaseMetaData md, String catalog, String schema, String tableName, MTable table, MColumn column, boolean isNoTable) throws Exception { StringBuilder fkConstraintSql = new StringBuilder(); @@ -859,29 +858,35 @@ public class MColumn extends X_AD_Column else if (md.storesLowerCaseIdentifiers()) referenceTableName = referenceTableName.toLowerCase(); - ResultSet rs = md.getCrossReference(catalog, schema, referenceTableName, catalog, schema, tableName); - while (rs.next()) - { - String dbFKName = rs.getString("FK_NAME"); - if (dbFKName == null) - continue; + if (!isNoTable) { + ResultSet rs = null; + try { + rs = md.getCrossReference(catalog, schema, referenceTableName, catalog, schema, tableName); + while (rs.next()) + { + String dbFKName = rs.getString("FK_NAME"); + if (dbFKName == null) + continue; - String dbFKTable = rs.getString("FKTABLE_NAME"); - short deleteRule = rs.getShort("DELETE_RULE"); + String dbFKTable = rs.getString("FKTABLE_NAME"); + short deleteRule = rs.getShort("DELETE_RULE"); - String key = dbFKName.toLowerCase(); - DatabaseKey dbForeignKey = htForeignKeys.get(key); - if (dbForeignKey == null) - dbForeignKey = new DatabaseKey(dbFKName, dbFKTable, new String[30], deleteRule); + String key = dbFKName.toLowerCase(); + DatabaseKey dbForeignKey = htForeignKeys.get(key); + if (dbForeignKey == null) + dbForeignKey = new DatabaseKey(dbFKName, dbFKTable, new String[30], deleteRule); - String columnName = rs.getString("FKCOLUMN_NAME"); - int pos = (rs.getShort("KEY_SEQ")); - if (pos > 0) - dbForeignKey.getKeyColumns()[pos-1] = columnName; + String columnName = rs.getString("FKCOLUMN_NAME"); + int pos = (rs.getShort("KEY_SEQ")); + if (pos > 0) + dbForeignKey.getKeyColumns()[pos-1] = columnName; - htForeignKeys.put(key, dbForeignKey); + htForeignKeys.put(key, dbForeignKey); + } + } finally { + DB.close(rs); rs = null; + } } - rs.close(); Enumeration en = htForeignKeys.keys(); while (en.hasMoreElements()) @@ -900,24 +905,34 @@ public class MColumn extends X_AD_Column DatabaseKey dbForeignKey = htForeignKeys.get(key); if (dbForeignKey.getKeyColumns()[0].equalsIgnoreCase(column.getColumnName())) { - DatabaseKey primaryKey = CreateForeignKey.getPrimaryKey(md, referenceTableName); + DatabaseKey primaryKey = getPrimaryKey(md, referenceTableName); if (primaryKey != null) { fkConstraintSql.append(DB.SQLSTATEMENT_SEPARATOR); fkConstraintSql.append("ALTER TABLE ").append(table.getTableName()); fkConstraintSql.append(" DROP CONSTRAINT ").append(dbForeignKey.getKeyName()); - String dbDeleteRule = MColumn.FKCONSTRAINTTYPE_NoAction; + String dbDeleteRule = null; if (dbForeignKey.getDeleteRule() == DatabaseMetaData.importedKeyCascade) dbDeleteRule = MColumn.FKCONSTRAINTTYPE_Cascade; else if (dbForeignKey.getDeleteRule() == DatabaseMetaData.importedKeySetNull) dbDeleteRule = MColumn.FKCONSTRAINTTYPE_SetNull; - + else if (dbForeignKey.getDeleteRule() == DatabaseMetaData.importedKeyNoAction || dbForeignKey.getDeleteRule() == DatabaseMetaData.importedKeyRestrict) + dbDeleteRule = MColumn.FKCONSTRAINTTYPE_NoAction; String fkConstraintType = column.getFKConstraintType(); - if (fkConstraintType == null) + if (fkConstraintType == null) { fkConstraintType = dbDeleteRule; - if (fkConstraintType == null) - fkConstraintType = MColumn.FKCONSTRAINTTYPE_NoAction; + if (fkConstraintType == null) { + if ( "AD_Client_ID".equals(column.getColumnName()) + || "AD_Org_ID".equals(column.getColumnName()) + || "CreatedBy".equals(column.getColumnName()) + || "UpdatedBy".equals(column.getColumnName()) + ) + fkConstraintType = MColumn.FKCONSTRAINTTYPE_DoNotCreate; + else + fkConstraintType = MColumn.FKCONSTRAINTTYPE_NoAction; + } + } if (!fkConstraintType.equals(MColumn.FKCONSTRAINTTYPE_DoNotCreate)) { String fkConstraintName = column.getFKConstraintName(); @@ -962,7 +977,7 @@ public class MColumn extends X_AD_Column if (!modified) { - String fkConstraint = CreateForeignKey.getForeignKeyConstraint(md, table, column); + String fkConstraint = getForeignKeyConstraint(md, table, column); if (fkConstraint != null && fkConstraint.length() > 0) { fkConstraintSql.append(DB.SQLSTATEMENT_SEPARATOR); @@ -977,4 +992,114 @@ public class MColumn extends X_AD_Column return fkConstraintSql.toString(); } + public static DatabaseKey getPrimaryKey(DatabaseMetaData md, String primaryTableName) throws Exception + { + DatabaseKey primaryKey = null; + + String catalog = DB.getDatabase().getCatalog(); + String schema = DB.getDatabase().getSchema(); + + String tableName = primaryTableName; + if (md.storesUpperCaseIdentifiers()) + tableName = tableName.toUpperCase(); + else if (md.storesLowerCaseIdentifiers()) + tableName = tableName.toLowerCase(); + + ResultSet rs = null; + try { + rs = md.getPrimaryKeys(catalog, schema, tableName); + while (rs.next()) + { + String primaryKeyName = rs.getString("PK_NAME"); + if (primaryKeyName == null) + continue; + + String primaryKeyTableName = rs.getString("TABLE_NAME"); + short deleteRule = -1; + + if (primaryKey == null) + primaryKey = new DatabaseKey(primaryKeyName, primaryKeyTableName, new String[30], deleteRule); + + String primaryKeyColumn = rs.getString("COLUMN_NAME"); + int pos = (rs.getShort("KEY_SEQ")); + if (pos > 0) + primaryKey.getKeyColumns()[pos-1] = primaryKeyColumn; + } + } catch (Exception e) { + DB.close(rs); rs = null; + } + return primaryKey; + } + + public static String getForeignKeyConstraint(DatabaseMetaData md, MTable table, MColumn column) throws Exception + { + if (!column.isKey() && !column.getColumnName().equals(PO.getUUIDColumnName(table.getTableName()))) + { + String fkConstraintType = column.getFKConstraintType(); + if (fkConstraintType == null) + fkConstraintType = MColumn.FKCONSTRAINTTYPE_NoAction; + + if (fkConstraintType.equals(MColumn.FKCONSTRAINTTYPE_DoNotCreate)) + return ""; + + int refid = column.getAD_Reference_ID(); + if (refid != DisplayType.List && refid != DisplayType.Payment) + { + String referenceTableName = column.getReferenceTableName(); + if (referenceTableName != null) + { + DatabaseKey primaryKey = MColumn.getPrimaryKey(md, referenceTableName); + + if (primaryKey != null) + { + String fkConstraintName = column.getFKConstraintName(); + if (fkConstraintName == null || fkConstraintName.trim().length() == 0) + { + String columnName = column.getColumnName(); + if (columnName.toUpperCase().endsWith("_ID")) + columnName = columnName.substring(0, columnName.length() - 3); + + StringBuilder constraintName = new StringBuilder(); + constraintName.append(columnName.replace("_", "")); + constraintName.append("_"); + constraintName.append(table.getTableName().replace("_", "")); + if (constraintName.length() > 30) + constraintName = new StringBuilder(constraintName.substring(0, 30)); + fkConstraintName = constraintName.toString(); + } + + StringBuilder fkConstraint = new StringBuilder(); + fkConstraint.append("CONSTRAINT ").append(fkConstraintName); + fkConstraint.append(" FOREIGN KEY (").append(column.getColumnName()).append(") REFERENCES "); + fkConstraint.append(primaryKey.getKeyTable()).append("(").append(primaryKey.getKeyColumns()[0]); + for (int i = 1; i < primaryKey.getKeyColumns().length; i++) + { + if (primaryKey.getKeyColumns()[i] == null) + break; + fkConstraint.append(", ").append(primaryKey.getKeyColumns()[i]); + } + fkConstraint.append(")"); + + if (fkConstraintType.equals(MColumn.FKCONSTRAINTTYPE_NoAction)) + ; + else if (fkConstraintType.equals(MColumn.FKCONSTRAINTTYPE_Cascade)) + fkConstraint.append(" ON DELETE CASCADE"); + else if (fkConstraintType.equals(MColumn.FKCONSTRAINTTYPE_SetNull)) + fkConstraint.append(" ON DELETE SET NULL"); + + fkConstraint.append(" DEFERRABLE INITIALLY DEFERRED"); + + column.setFKConstraintName(fkConstraintName); + column.setFKConstraintType(fkConstraintType); + column.saveEx(); + + return fkConstraint.toString(); + } + } + } + } + + return ""; + } + } // MColumn diff --git a/org.adempiere.base/src/org/compiere/process/CreateForeignKey.java b/org.adempiere.base/src/org/compiere/process/CreateForeignKey.java index 16619b8cb1..6f0dd64f87 100644 --- a/org.adempiere.base/src/org/compiere/process/CreateForeignKey.java +++ b/org.adempiere.base/src/org/compiere/process/CreateForeignKey.java @@ -26,7 +26,6 @@ import org.compiere.model.MColumn; import org.compiere.model.MTable; import org.compiere.model.PO; import org.compiere.util.DB; -import org.compiere.util.DisplayType; import org.compiere.util.Msg; import org.compiere.util.Trx; @@ -69,7 +68,7 @@ public class CreateForeignKey extends SvrProcess { { if (log.isLoggable(Level.INFO)) log.info("AD_Table_ID=" + p_AD_Table_ID + ", AD_Column_ID=" + p_AD_Column_ID); - Trx trx = Trx.get(get_TrxName(), true); + Trx trx = Trx.get(get_TrxName(), false); DatabaseMetaData md = trx.getConnection().getMetaData(); if (p_AD_Column_ID > 0) @@ -88,14 +87,14 @@ public class CreateForeignKey extends SvrProcess { else if (p_AD_Table_ID > 0) { MTable table = new MTable(getCtx(), p_AD_Table_ID, get_TrxName()); - if (table != null) + if (table != null) { + addLog(table.getAD_Table_ID(), null, null, Msg.getMsg(getCtx(), "CreateForeignKeyProcessTable") + table.getTableName(), table.get_Table_ID(), table.getAD_Table_ID()); processDatabaseTableColumn(md, table, null); + } } else processDatabase(md); - - trx.close(); - + return Msg.getMsg(getCtx(), "CreateForeignKeyProcessResult", new Object[] {countTable, countForeignKey, countError}); } @@ -106,18 +105,24 @@ public class CreateForeignKey extends SvrProcess { String schema = DB.getDatabase().getSchema(); String[] types = {"TABLE"}; - ResultSet rs = md.getTables(catalog, schema, tableName, types); - while (rs.next()) - { - String dbTableName = rs.getString("TABLE_NAME"); - if (dbTableName == null) - continue; - MTable table = MTable.get(getCtx(), dbTableName); - if (table != null) // exists in AD_Table - processDatabaseTableColumn(md, table, null); + ResultSet rs = null; + try { + rs = md.getTables(catalog, schema, tableName, types); + while (rs.next()) + { + String dbTableName = rs.getString("TABLE_NAME"); + if (dbTableName == null) + continue; + MTable table = MTable.get(getCtx(), dbTableName); + if (table != null) { // exists in AD_Table + addLog(table.getAD_Table_ID(), null, null, Msg.getMsg(getCtx(), "CreateForeignKeyProcessTable") + table.getTableName(), table.get_Table_ID(), table.getAD_Table_ID()); + processDatabaseTableColumn(md, table, null); + } + } + } finally { + DB.close(rs); rs = null; } - rs.close(); } private void processDatabaseTableColumn(DatabaseMetaData md, MTable table, MColumn column) throws Exception @@ -133,13 +138,9 @@ public class CreateForeignKey extends SvrProcess { else if (md.storesLowerCaseIdentifiers()) tableName = tableName.toLowerCase(); - addLog(Msg.getMsg(getCtx(), "CreateForeignKeyProcessTable") + tableName); - addLog(table.getAD_Table_ID(), null, null, table.toString(), table.get_Table_ID(), table.getAD_Table_ID()); - ++countTable; - - if (column == null) - { - ResultSet rs = md.getImportedKeys(catalog, schema, tableName); + ResultSet rs = null; + try { + rs = md.getImportedKeys(catalog, schema, tableName); while (rs.next()) { String dbFKName = rs.getString("FK_NAME"); @@ -148,7 +149,7 @@ public class CreateForeignKey extends SvrProcess { String dbFKTable = rs.getString("FKTABLE_NAME"); short deleteRule = rs.getShort("DELETE_RULE"); - + String key = dbFKName.toLowerCase(); DatabaseKey dbForeignKey = htForeignKeys.get(key); if (dbForeignKey == null) @@ -161,336 +162,164 @@ public class CreateForeignKey extends SvrProcess { htForeignKeys.put(key, dbForeignKey); } - rs.close(); - - Enumeration en = htForeignKeys.keys(); + } finally { + DB.close(rs); rs = null; + } + + Enumeration en = htForeignKeys.keys(); + while (en.hasMoreElements()) + { + String key = en.nextElement(); + DatabaseKey dbForeignKey = htForeignKeys.get(key); + if (dbForeignKey.getKeyColumns()[1] != null) + htForeignKeys.remove(key); + } + + ++countTable; + + if (column == null) + { + final String getColumnIDSql = "SELECT AD_Column_ID FROM AD_Column WHERE AD_Table_ID = ? AND LOWER(ColumnName) = ?"; + try { + rs = md.getColumns(catalog, schema, tableName, null); + while (rs.next()) + { + String columnName = rs.getString("COLUMN_NAME"); + if (columnName == null) + continue; + + int AD_Column_ID = DB.getSQLValue(null, getColumnIDSql, table.getAD_Table_ID(), columnName.toLowerCase()); + if (AD_Column_ID > 0) + { + column = MColumn.get(getCtx(), AD_Column_ID); + if (column == null) + continue; + String foreignTable = column.getReferenceTableName(); + if (foreignTable != null && ! "AD_Ref_List".equals(foreignTable)) + processDatabaseTableColumn(md, table, column); + } + } + } finally { + DB.close(rs); rs = null; + } + } + else + { + if (processUI != null) + processUI.statusUpdate(table.getTableName() + "." + column.getColumnName()); + boolean modified = false; + en = htForeignKeys.keys(); while (en.hasMoreElements()) { String key = en.nextElement(); DatabaseKey dbForeignKey = htForeignKeys.get(key); - if (dbForeignKey.getKeyColumns()[1] != null) - htForeignKeys.remove(key); - } - - String getColumnIDSql = "SELECT AD_Column_ID FROM AD_Column WHERE AD_Table_ID = ? AND LOWER(ColumnName) = ?"; - rs = md.getColumns(catalog, schema, tableName, null); - while (rs.next()) - { - String columnName = rs.getString("COLUMN_NAME"); - if (columnName == null) - continue; - int AD_Column_ID = DB.getSQLValue(null, getColumnIDSql, table.getAD_Table_ID(), columnName.toLowerCase()); - if (AD_Column_ID > 0) - { - column = MColumn.get(getCtx(), AD_Column_ID); - if (column == null) - continue; - - boolean modified = false; - en = htForeignKeys.keys(); - while (en.hasMoreElements()) - { - String key = en.nextElement(); - DatabaseKey dbForeignKey = htForeignKeys.get(key); - - String dbDeleteRule = MColumn.FKCONSTRAINTTYPE_NoAction; - if (dbForeignKey.getDeleteRule() == DatabaseMetaData.importedKeyCascade) - dbDeleteRule = MColumn.FKCONSTRAINTTYPE_Cascade; - else if (dbForeignKey.getDeleteRule() == DatabaseMetaData.importedKeySetNull) - dbDeleteRule = MColumn.FKCONSTRAINTTYPE_SetNull; - - String fkConstraintType = column.getFKConstraintType(); - if (fkConstraintType == null) + String dbDeleteRule = null; + if (dbForeignKey.getDeleteRule() == DatabaseMetaData.importedKeyCascade) + dbDeleteRule = MColumn.FKCONSTRAINTTYPE_Cascade; + else if (dbForeignKey.getDeleteRule() == DatabaseMetaData.importedKeySetNull) + dbDeleteRule = MColumn.FKCONSTRAINTTYPE_SetNull; + else if (dbForeignKey.getDeleteRule() == DatabaseMetaData.importedKeyNoAction || dbForeignKey.getDeleteRule() == DatabaseMetaData.importedKeyRestrict) + dbDeleteRule = MColumn.FKCONSTRAINTTYPE_NoAction; + String fkConstraintType = column.getFKConstraintType(); + if (fkConstraintType == null) { + fkConstraintType = dbDeleteRule; + if (fkConstraintType == null) { + if ( "AD_Client_ID".equals(column.getColumnName()) + || "AD_Org_ID".equals(column.getColumnName()) + || "CreatedBy".equals(column.getColumnName()) + || "UpdatedBy".equals(column.getColumnName()) + ) + fkConstraintType = MColumn.FKCONSTRAINTTYPE_DoNotCreate; + else fkConstraintType = MColumn.FKCONSTRAINTTYPE_NoAction; - - if (dbForeignKey.getKeyColumns()[0].equalsIgnoreCase(column.getColumnName())) - { - if (dbDeleteRule.equals(fkConstraintType)) - { - addLog(Msg.getMsg(getCtx(), "CreateForeignKeyProcessColumn") + column.getColumnName()); - addLog(column.getAD_Column_ID(), null, null, column.toString(), column.get_Table_ID(), column.getAD_Column_ID()); - addLog(0, null, null, Msg.getMsg(getCtx(), "CreateForeignKeyProcessExists") + dbForeignKey.getKeyName()); - modified = true; - column.setFKConstraintName(dbForeignKey.getKeyName()); - column.setFKConstraintType(fkConstraintType); - column.saveEx(); - break; - } - else if (fkConstraintType.equals(MColumn.FKCONSTRAINTTYPE_DoNotCreate)) - { - addLog(Msg.getMsg(getCtx(), "CreateForeignKeyProcessColumn") + column.getColumnName()); - addLog(column.getAD_Column_ID(), null, null, column.toString(), column.get_Table_ID(), column.getAD_Column_ID()); - addLog(0, null, null, Msg.getMsg(getCtx(), "CreateForeignKeyProcessExists") + dbForeignKey.getKeyName()); - - StringBuilder sql = new StringBuilder(); - sql.append("ALTER TABLE ").append(table.getTableName()); - sql.append(" DROP CONSTRAINT ").append(dbForeignKey.getKeyName()); - - Trx trx = Trx.get(Trx.createTrxName("CreateForeignKey"), true); - try { - int rvalue = DB.executeUpdate(sql.toString(), (Object[]) null, true, trx.getTrxName()); - addLog(0, null, new BigDecimal(rvalue), sql.toString()); - } catch (Exception e) { - addLog(Msg.getMsg(getCtx(), "Error") + e.getLocalizedMessage()); - if (trx != null) - trx.rollback(); - } finally { - if (trx != null) - trx.close(); - } - - modified = true; - column.setFKConstraintName(dbForeignKey.getKeyName()); - column.setFKConstraintType(fkConstraintType); - column.saveEx(); - break; - } - } - } - - if (modified) - continue; - - if (!column.isKey() && !column.getColumnName().equals(PO.getUUIDColumnName(table.getTableName()))) - { - String fkConstraint = getForeignKeyConstraint(md, table, column); - if (fkConstraint != null && fkConstraint.length() > 0) - { - addLog(Msg.getMsg(getCtx(), "CreateForeignKeyProcessColumn") + column.getColumnName()); - addLog(column.getAD_Column_ID(), null, null, column.toString(), column.get_Table_ID(), column.getAD_Column_ID()); - - StringBuilder sql = new StringBuilder(); - sql.append("ALTER TABLE ").append(table.getTableName()); - sql.append(" ADD "); - sql.append(fkConstraint); - - Trx trx = Trx.get(Trx.createTrxName("CreateForeignKey"), true); - try { - int rvalue = DB.executeUpdate(sql.toString(), (Object[]) null, true, trx.getTrxName()); - addLog(0, null, new BigDecimal(rvalue), sql.toString()); - if (rvalue == -1) - ++countError; - else - ++countForeignKey; - } catch (Exception e) { - addLog(Msg.getMsg(getCtx(), "Error") + e.getLocalizedMessage()); - if (trx != null) - trx.rollback(); - ++countError; - } finally { - if (trx != null) - trx.close(); - } - } } } - } - rs.close(); - } - else - { - int refid = column.getAD_Reference_ID(); - if (refid != DisplayType.List && refid != DisplayType.Payment) - { - String referenceTableName = column.getReferenceTableName(); - - if (referenceTableName != null) - { - if (md.storesUpperCaseIdentifiers()) - referenceTableName = referenceTableName.toUpperCase(); - else if (md.storesLowerCaseIdentifiers()) - referenceTableName = referenceTableName.toLowerCase(); - - ResultSet rs = md.getCrossReference(catalog, schema, referenceTableName, catalog, schema, tableName); - while (rs.next()) - { - String dbFKName = rs.getString("FK_NAME"); - if (dbFKName == null) - continue; - - String dbFKTable = rs.getString("FKTABLE_NAME"); - short deleteRule = rs.getShort("DELETE_RULE"); - - String key = dbFKName.toLowerCase(); - DatabaseKey dbForeignKey = htForeignKeys.get(key); - if (dbForeignKey == null) - dbForeignKey = new DatabaseKey(dbFKName, dbFKTable, new String[30], deleteRule); - - String columnName = rs.getString("FKCOLUMN_NAME"); - int pos = (rs.getShort("KEY_SEQ")); - if (pos > 0) - dbForeignKey.getKeyColumns()[pos-1] = columnName; - - htForeignKeys.put(key, dbForeignKey); - } - rs.close(); - - Enumeration en = htForeignKeys.keys(); - while (en.hasMoreElements()) - { - String key = en.nextElement(); - DatabaseKey dbForeignKey = htForeignKeys.get(key); - if (dbForeignKey.getKeyColumns()[1] != null) - htForeignKeys.remove(key); - } - - en = htForeignKeys.keys(); - while (en.hasMoreElements()) - { - String key = en.nextElement(); - DatabaseKey dbForeignKey = htForeignKeys.get(key); - if (dbForeignKey.getKeyColumns()[0].equalsIgnoreCase(column.getColumnName())) - { - addLog(Msg.getMsg(getCtx(), "CreateForeignKeyProcessColumn") + column.getColumnName()); - addLog(column.getAD_Column_ID(), null, null, column.toString(), column.get_Table_ID(), column.getAD_Column_ID()); - addLog(0, null, null, Msg.getMsg(getCtx(), "CreateForeignKeyProcessExists") + dbForeignKey.getKeyName()); - column.setFKConstraintName(dbForeignKey.getKeyName()); - column.saveEx(); - return; - } - } - - if (!column.isKey() && !column.getColumnName().equals(PO.getUUIDColumnName(table.getTableName()))) - { - String fkConstraint = getForeignKeyConstraint(md, table, column); - if (fkConstraint != null && fkConstraint.length() > 0) - { - addLog(Msg.getMsg(getCtx(), "CreateForeignKeyProcessColumn") + column.getColumnName()); - addLog(column.getAD_Column_ID(), null, null, column.toString(), column.get_Table_ID(), column.getAD_Column_ID()); - StringBuilder sql = new StringBuilder(); - sql.append("ALTER TABLE ").append(table.getTableName()); - sql.append(" ADD "); - sql.append(fkConstraint); - - Trx trx = Trx.get(Trx.createTrxName("CreateForeignKey"), true); - try { - int rvalue = DB.executeUpdate(sql.toString(), (Object[]) null, true, trx.getTrxName()); - addLog(0, null, new BigDecimal(rvalue), sql.toString()); - if (rvalue == -1) - ++countError; - else - ++countForeignKey; - } catch (Exception e) { - addLog(Msg.getMsg(getCtx(), "Error") + e.getLocalizedMessage()); - if (trx != null) - trx.rollback(); - ++countError; - } finally { - if (trx != null) - trx.close(); - } - } - } - } - } - } - } - - public static String getForeignKeyConstraint(DatabaseMetaData md, MTable table, MColumn column) throws Exception - { - if (!column.isKey() && !column.getColumnName().equals(PO.getUUIDColumnName(table.getTableName()))) - { - String fkConstraintType = column.getFKConstraintType(); - if (fkConstraintType == null) - fkConstraintType = MColumn.FKCONSTRAINTTYPE_NoAction; - - if (fkConstraintType.equals(MColumn.FKCONSTRAINTTYPE_DoNotCreate)) - return ""; - - int refid = column.getAD_Reference_ID(); - if (refid != DisplayType.List && refid != DisplayType.Payment) - { - String referenceTableName = column.getReferenceTableName(); - if (referenceTableName != null) + if (dbForeignKey.getKeyColumns()[0].equalsIgnoreCase(column.getColumnName())) { - DatabaseKey primaryKey = getPrimaryKey(md, referenceTableName); - - if (primaryKey != null) + if (dbDeleteRule.equals(fkConstraintType)) { - String fkConstraintName = column.getFKConstraintName(); - if (fkConstraintName == null || fkConstraintName.trim().length() == 0) - { - String columnName = column.getColumnName(); - if (columnName.toUpperCase().endsWith("_ID")) - columnName = columnName.substring(0, columnName.length() - 3); - - StringBuilder constraintName = new StringBuilder(); - constraintName.append(columnName.replace("_", "")); - constraintName.append("_"); - constraintName.append(table.getTableName().replace("_", "")); - if (constraintName.length() > 30) - constraintName = new StringBuilder(constraintName.substring(0, 30)); - fkConstraintName = constraintName.toString(); - } - - StringBuilder fkConstraint = new StringBuilder(); - fkConstraint.append("CONSTRAINT ").append(fkConstraintName); - fkConstraint.append(" FOREIGN KEY (").append(column.getColumnName()).append(") REFERENCES "); - fkConstraint.append(primaryKey.getKeyTable()).append("(").append(primaryKey.getKeyColumns()[0]); - for (int i = 1; i < primaryKey.getKeyColumns().length; i++) - { - if (primaryKey.getKeyColumns()[i] == null) - break; - fkConstraint.append(", ").append(primaryKey.getKeyColumns()[i]); - } - fkConstraint.append(")"); - - if (fkConstraintType.equals(MColumn.FKCONSTRAINTTYPE_NoAction)) - ; - else if (fkConstraintType.equals(MColumn.FKCONSTRAINTTYPE_Cascade)) - fkConstraint.append(" ON DELETE CASCADE"); - else if (fkConstraintType.equals(MColumn.FKCONSTRAINTTYPE_SetNull)) - fkConstraint.append(" ON DELETE SET NULL"); - - fkConstraint.append(" DEFERRABLE INITIALLY DEFERRED"); - - column.setFKConstraintName(fkConstraintName); + addLog(column.getAD_Column_ID(), null, null, + Msg.getMsg(getCtx(), "CreateForeignKeyProcessColumn") + column.getColumnName()+ " / " + + Msg.getMsg(getCtx(), "CreateForeignKeyProcessExists") + dbForeignKey.getKeyName(), + column.get_Table_ID(), column.getAD_Column_ID()); + modified = true; + column.setFKConstraintName(dbForeignKey.getKeyName()); column.setFKConstraintType(fkConstraintType); column.saveEx(); + break; + } + else if (fkConstraintType.equals(MColumn.FKCONSTRAINTTYPE_DoNotCreate)) + { + addLog(column.getAD_Column_ID(), null, null, + Msg.getMsg(getCtx(), "CreateForeignKeyProcessColumn") + column.getColumnName()+ " / " + + Msg.getMsg(getCtx(), "CreateForeignKeyProcessExists") + dbForeignKey.getKeyName(), + column.get_Table_ID(), column.getAD_Column_ID()); - return fkConstraint.toString(); + StringBuilder sql = new StringBuilder(); + sql.append("ALTER TABLE ").append(table.getTableName()); + sql.append(" DROP CONSTRAINT ").append(dbForeignKey.getKeyName()); + + Trx trx = null; + try { + trx = Trx.get(Trx.createTrxName("CreateForeignKey"), true); + int rvalue = DB.executeUpdate(sql.toString(), (Object[]) null, true, trx.getTrxName()); + addLog(0, null, new BigDecimal(rvalue), sql.toString()); + } catch (Exception e) { + addLog(Msg.getMsg(getCtx(), "Error") + e.getLocalizedMessage()); + if (trx != null) + trx.rollback(); + } finally { + if (trx != null) + trx.close(); + } + + modified = true; + column.setFKConstraintName(dbForeignKey.getKeyName()); + column.setFKConstraintType(fkConstraintType); + column.saveEx(); + break; + } + } + } + + if (modified) + return; + + if (!column.isKey() && !column.getColumnName().equals(PO.getUUIDColumnName(table.getTableName()))) + { + String fkConstraint = MColumn.getForeignKeyConstraint(md, table, column); + if (fkConstraint != null && fkConstraint.length() > 0) + { + addLog(column.getAD_Column_ID(), null, null, Msg.getMsg(getCtx(), "CreateForeignKeyProcessColumn") + column.getColumnName(), column.get_Table_ID(), column.getAD_Column_ID()); + + StringBuilder sql = new StringBuilder(); + sql.append("ALTER TABLE ").append(table.getTableName()); + sql.append(" ADD "); + sql.append(fkConstraint); + + Trx trx = null; + try { + trx = Trx.get(Trx.createTrxName("CreateForeignKey"), true); + int rvalue = DB.executeUpdate(sql.toString(), (Object[]) null, true, trx.getTrxName()); + addLog(0, null, new BigDecimal(rvalue), sql.toString()); + if (rvalue == -1) + ++countError; + else + ++countForeignKey; + } catch (Exception e) { + addLog(Msg.getMsg(getCtx(), "Error") + e.getLocalizedMessage()); + if (trx != null) + trx.rollback(); + ++countError; + } finally { + if (trx != null) + trx.close(); } } } } - - return ""; } - public static DatabaseKey getPrimaryKey(DatabaseMetaData md, String primaryTableName) throws Exception - { - DatabaseKey primaryKey = null; - - String catalog = DB.getDatabase().getCatalog(); - String schema = DB.getDatabase().getSchema(); - - String tableName = primaryTableName; - if (md.storesUpperCaseIdentifiers()) - tableName = tableName.toUpperCase(); - else if (md.storesLowerCaseIdentifiers()) - tableName = tableName.toLowerCase(); - - ResultSet rs = md.getPrimaryKeys(catalog, schema, tableName); - while (rs.next()) - { - String primaryKeyName = rs.getString("PK_NAME"); - if (primaryKeyName == null) - continue; - - String primaryKeyTableName = rs.getString("TABLE_NAME"); - short deleteRule = -1; - - if (primaryKey == null) - primaryKey = new DatabaseKey(primaryKeyName, primaryKeyTableName, new String[30], deleteRule); - - String primaryKeyColumn = rs.getString("COLUMN_NAME"); - int pos = (rs.getShort("KEY_SEQ")); - if (pos > 0) - primaryKey.getKeyColumns()[pos-1] = primaryKeyColumn; - } - rs.close(); - return primaryKey; - } } diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ColumnElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ColumnElementHandler.java index ed28666765..84dbae6dcb 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ColumnElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ColumnElementHandler.java @@ -232,14 +232,7 @@ public class ColumnElementHandler extends AbstractElementHandler { MColumn[] cols = table.getColumns(false); for (MColumn col : cols) { - String fkConstraintSql; - try { - fkConstraintSql = MColumn.getForeignKeyConstraintSql(md, catalog, schema, tableName, table, col); - } catch (Exception e) { - throw new AdempiereException(e); - } - if (fkConstraintSql != null && fkConstraintSql.length() > 0) - sql += fkConstraintSql; + sql += addConstraint(table, md, catalog, schema, tableName, col); } } else { // @@ -256,14 +249,7 @@ public class ColumnElementHandler extends AbstractElementHandler { // No existing column sql = column.getSQLAdd(table); } - String fkConstraintSql; - try { - fkConstraintSql = MColumn.getForeignKeyConstraintSql(md, catalog, schema, tableName, table, column); - } catch (Exception e) { - throw new AdempiereException(e); - } - if (fkConstraintSql != null && fkConstraintSql.length() > 0) - sql += fkConstraintSql; + sql += addConstraint(table, md, catalog, schema, tableName, column); } //execute modify or add if needed @@ -310,6 +296,19 @@ public class ColumnElementHandler extends AbstractElementHandler { return 1; } + private String addConstraint(MTable table, DatabaseMetaData md, + String catalog, String schema, String tableName, MColumn col) { + String fkConstraintSql; + try { + fkConstraintSql = MColumn.getForeignKeyConstraintSql(md, catalog, schema, tableName, table, col, false); + } catch (Exception e) { + throw new AdempiereException(e); + } + if (fkConstraintSql != null && fkConstraintSql.length() > 0) + fkConstraintSql = ""; + return fkConstraintSql; + } + public void endElement(PIPOContext ctx, Element element) throws SAXException { } From ee4814b6cac2795e0dab730715cbaea5ef46e145 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Mon, 17 Aug 2015 20:45:40 -0500 Subject: [PATCH 08/20] more refactoring IDEMPIERE-1132 foreign key management for ticket IDEMPIERE-2745 - do not create FK if same already exists in DB --- .../src/org/compiere/model/MColumn.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/MColumn.java b/org.adempiere.base/src/org/compiere/model/MColumn.java index 8858d88a5c..2d7ce046d8 100644 --- a/org.adempiere.base/src/org/compiere/model/MColumn.java +++ b/org.adempiere.base/src/org/compiere/model/MColumn.java @@ -853,10 +853,13 @@ public class MColumn extends X_AD_Column { Hashtable htForeignKeys = new Hashtable(); - if (md.storesUpperCaseIdentifiers()) + if (md.storesUpperCaseIdentifiers()) { referenceTableName = referenceTableName.toUpperCase(); - else if (md.storesLowerCaseIdentifiers()) + tableName = tableName.toUpperCase(); + } else if (md.storesLowerCaseIdentifiers()) { referenceTableName = referenceTableName.toLowerCase(); + tableName = tableName.toLowerCase(); + } if (!isNoTable) { ResultSet rs = null; @@ -968,6 +971,18 @@ public class MColumn extends X_AD_Column column.setFKConstraintName(fkConstraintName); column.setFKConstraintType(fkConstraintType); column.saveEx(); + + // if the current db FK is same as what we need to create + if ( dbForeignKey.getKeyName().equalsIgnoreCase(column.getFKConstraintName()) + && ( (dbForeignKey.getDeleteRule() == DatabaseMetaData.importedKeyCascade && MColumn.FKCONSTRAINTTYPE_Cascade.equals(column.getFKConstraintType())) + || (dbForeignKey.getDeleteRule() == DatabaseMetaData.importedKeySetNull && MColumn.FKCONSTRAINTTYPE_SetNull.equals(column.getFKConstraintType())) + || (dbForeignKey.getDeleteRule() == DatabaseMetaData.importedKeyNoAction && MColumn.FKCONSTRAINTTYPE_NoAction.equals(column.getFKConstraintType())) + || (dbForeignKey.getDeleteRule() == DatabaseMetaData.importedKeyRestrict && MColumn.FKCONSTRAINTTYPE_NoAction.equals(column.getFKConstraintType())) + ) + ) { + // nothing changed + return ""; + } } } modified = true; From 0e0589d8be5732a851f54b9163f6a8649ca63362 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Mon, 17 Aug 2015 20:47:03 -0500 Subject: [PATCH 09/20] IDEMPIERE-2745 2Pack is not creating foreign keys - foreign key processing needs to be done at the end as the primary keys of related tables can be inexistent when processing columns --- .../pipo2/handler/ColumnElementHandler.java | 38 ++++++-------- .../src/org/adempiere/pipo2/Element.java | 2 + .../org/adempiere/pipo2/PackInHandler.java | 49 +++++++++++++++++++ 3 files changed, 65 insertions(+), 24 deletions(-) diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ColumnElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ColumnElementHandler.java index 84dbae6dcb..89cc6b344a 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ColumnElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ColumnElementHandler.java @@ -25,7 +25,6 @@ import java.util.logging.Level; import javax.xml.transform.sax.TransformerHandler; -import org.adempiere.exceptions.AdempiereException; import org.adempiere.pipo2.AbstractElementHandler; import org.adempiere.pipo2.Element; import org.adempiere.pipo2.PIPOContext; @@ -81,6 +80,7 @@ public class ColumnElementHandler extends AbstractElementHandler { if (!mColumn.is_new() && !mColumn.is_Changed()) { boolean syncDatabase = "Y".equalsIgnoreCase(getStringValue(element, "IsSyncDatabase")); if (syncDatabase) { + deferFK(element, mColumn); syncColumn(ctx, mColumn, "Sync", false); } return; @@ -111,10 +111,12 @@ public class ColumnElementHandler extends AbstractElementHandler { } boolean recreateColumn = (mColumn.is_new() - || mColumn.is_ValueChanged("AD_Reference_ID") - || mColumn.is_ValueChanged("FieldLength") - || mColumn.is_ValueChanged("ColumnName") || mColumn - .is_ValueChanged("IsMandatory")); + || mColumn.is_ValueChanged(X_AD_Column.COLUMNNAME_AD_Reference_ID) + || mColumn.is_ValueChanged(X_AD_Column.COLUMNNAME_FieldLength) + || mColumn.is_ValueChanged(X_AD_Column.COLUMNNAME_ColumnName) + || mColumn.is_ValueChanged(X_AD_Column.COLUMNNAME_FKConstraintName) + || mColumn.is_ValueChanged(X_AD_Column.COLUMNNAME_FKConstraintType) + || mColumn.is_ValueChanged(X_AD_Column.COLUMNNAME_IsMandatory)); //ignore fieldlength change for clob and lob if (!mColumn.is_ValueChanged("AD_Reference_ID") && mColumn.is_ValueChanged("FieldLength")) { @@ -161,6 +163,7 @@ public class ColumnElementHandler extends AbstractElementHandler { } if (recreateColumn || syncDatabase) { + deferFK(element, mColumn); syncColumn(ctx, mColumn, action, recreateColumn); } } else { @@ -168,6 +171,12 @@ public class ColumnElementHandler extends AbstractElementHandler { } } + private void deferFK(Element element, MColumn mColumn) { + String foreignTable = mColumn.getReferenceTableName(); + if (foreignTable != null && ! "AD_Ref_List".equals(foreignTable)) + element.deferFKColumnID = mColumn.getAD_Column_ID(); + } + private void syncColumn(PIPOContext ctx, MColumn mColumn, String action, boolean recreateColumn) throws SAXException { int success = 0; @@ -229,11 +238,6 @@ public class ColumnElementHandler extends AbstractElementHandler { if (!rst.next()) { // table doesn't exist sql = table.getSQLCreate(); - MColumn[] cols = table.getColumns(false); - for (MColumn col : cols) - { - sql += addConstraint(table, md, catalog, schema, tableName, col); - } } else { // rsc = md.getColumns(catalog, schema, tableName, columnName); @@ -249,7 +253,6 @@ public class ColumnElementHandler extends AbstractElementHandler { // No existing column sql = column.getSQLAdd(table); } - sql += addConstraint(table, md, catalog, schema, tableName, column); } //execute modify or add if needed @@ -296,19 +299,6 @@ public class ColumnElementHandler extends AbstractElementHandler { return 1; } - private String addConstraint(MTable table, DatabaseMetaData md, - String catalog, String schema, String tableName, MColumn col) { - String fkConstraintSql; - try { - fkConstraintSql = MColumn.getForeignKeyConstraintSql(md, catalog, schema, tableName, table, col, false); - } catch (Exception e) { - throw new AdempiereException(e); - } - if (fkConstraintSql != null && fkConstraintSql.length() > 0) - fkConstraintSql = ""; - return fkConstraintSql; - } - public void endElement(PIPOContext ctx, Element element) throws SAXException { } diff --git a/org.adempiere.pipo/src/org/adempiere/pipo2/Element.java b/org.adempiere.pipo/src/org/adempiere/pipo2/Element.java index 98e9b3b802..7526facd00 100644 --- a/org.adempiere.pipo/src/org/adempiere/pipo2/Element.java +++ b/org.adempiere.pipo/src/org/adempiere/pipo2/Element.java @@ -37,6 +37,8 @@ public class Element { public Attributes attributes; //defer for later reprocessing public boolean defer = false; + //defer for post packin foreign key processing + public int deferFKColumnID = 0; //parent element public Element parent; //resolved db recordid, store for reference by child element diff --git a/org.adempiere.pipo/src/org/adempiere/pipo2/PackInHandler.java b/org.adempiere.pipo/src/org/adempiere/pipo2/PackInHandler.java index a1e8f65ef7..6660d28300 100644 --- a/org.adempiere.pipo/src/org/adempiere/pipo2/PackInHandler.java +++ b/org.adempiere.pipo/src/org/adempiere/pipo2/PackInHandler.java @@ -19,6 +19,8 @@ package org.adempiere.pipo2; +import java.sql.Connection; +import java.sql.DatabaseMetaData; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; @@ -27,13 +29,17 @@ import java.util.Set; import java.util.Stack; import java.util.logging.Level; +import org.adempiere.exceptions.AdempiereException; import org.adempiere.pipo2.exception.DatabaseAccessException; +import org.compiere.model.MColumn; +import org.compiere.model.MTable; import org.compiere.model.X_AD_Package_Imp; import org.compiere.model.X_AD_Package_Imp_Inst; import org.compiere.util.CLogger; import org.compiere.util.DB; import org.compiere.util.Env; import org.compiere.util.Trx; +import org.compiere.util.Util; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.AttributesImpl; @@ -68,6 +74,7 @@ public class PackInHandler extends DefaultHandler { private IHandlerRegistry handlerRegistry = null; private List defer = new ArrayList(); + private List deferFK = new ArrayList(); private Stack stack = new Stack(); private PackIn packIn; private int elementProcessed = 0; @@ -228,6 +235,11 @@ public class PackInHandler extends DefaultHandler { { defer.add(new DeferEntry(element, true)); } + if (element.deferFKColumnID > 0) + { + if (! deferFK.contains(element.deferFKColumnID)) + deferFK.add(element.deferFKColumnID); + } for (Element childElement : element.childrens) { @@ -280,6 +292,9 @@ public class PackInHandler extends DefaultHandler { if (elementValue.equals("idempiere")){ processDeferElements(); + + processDeferFKElements(); + if (!packageStatus.equals("Completed with errors")) packageStatus = "Completed successfully"; @@ -368,6 +383,40 @@ public class PackInHandler extends DefaultHandler { } while (defer.size() > 0); } + private void processDeferFKElements() throws SAXException { + + if (deferFK.isEmpty()) + return; + + for (int columnID : deferFK) { + MColumn column = MColumn.get(m_ctx.ctx, columnID); + try { + Connection conn = m_ctx.trx.getConnection(); + DatabaseMetaData md = conn.getMetaData(); + String catalog = DB.getDatabase().getCatalog(); + String schema = DB.getDatabase().getSchema(); + MTable table = MTable.get(m_ctx.ctx, column.getAD_Table_ID()); + String tableName = table.getTableName(); + + String fkConstraintSql = MColumn.getForeignKeyConstraintSql(md, catalog, schema, tableName, table, column, false); + if (! Util.isEmpty(fkConstraintSql)) { + if (fkConstraintSql.indexOf(DB.SQLSTATEMENT_SEPARATOR) == -1) { + DB.executeUpdate(fkConstraintSql, false, m_ctx.trx.getTrxName()); + } else { + String statements[] = fkConstraintSql.split(DB.SQLSTATEMENT_SEPARATOR); + for (int i = 0; i < statements.length; i++) { + if (Util.isEmpty(statements[i])) + continue; + DB.executeUpdateEx(statements[i], m_ctx.trx.getTrxName()); + } + } + } + } catch (Exception e) { + throw new AdempiereException(e); + } + } + } + public void setCtx(PIPOContext ctx) { m_ctx = ctx; } From 023efc0292493d63bafe7fb443573b6aeba870b5 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Tue, 18 Aug 2015 09:54:00 -0500 Subject: [PATCH 10/20] IDEMPIERE-1328 Change tab name dynamically / implement format and indirect for title logic too (it was working for recent items) / refresh recent item on buttons --- .../adwindow/AbstractADWindowContent.java | 74 ++++++++++++------- 1 file changed, 47 insertions(+), 27 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java index 52e2c75d2e..d8346a17bd 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java @@ -89,6 +89,7 @@ import org.compiere.model.MQuery; import org.compiere.model.MRecentItem; import org.compiere.model.MRole; import org.compiere.model.MWindow; +import org.compiere.model.PO; import org.compiere.model.X_AD_CtxHelp; import org.compiere.process.DocAction; import org.compiere.process.ProcessInfo; @@ -1308,6 +1309,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements } + private String prevdbInfo = ""; /** * @param e * @see DataStatusListener#dataStatusChanged(DataStatusEvent) @@ -1334,36 +1336,51 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements if (!detailTab) { String dbInfo = e.getMessage(); - if (logger.isLoggable(Level.INFO)) logger.info(dbInfo); - if (adTabbox.getSelectedGridTab() != null && adTabbox.getSelectedGridTab().isQueryActive()) - dbInfo = "[ " + dbInfo + " ]"; - breadCrumb.setStatusDB(dbInfo, e); + if (! prevdbInfo.equals(dbInfo)) { + prevdbInfo = dbInfo; + if (logger.isLoggable(Level.INFO)) logger.info(dbInfo); + if (adTabbox.getSelectedGridTab() != null && adTabbox.getSelectedGridTab().isQueryActive()) + dbInfo = "[ " + dbInfo + " ]"; + breadCrumb.setStatusDB(dbInfo, e); - String prefix = null; - if (dbInfo.contains("*")) - prefix = "*"; + String prefix = null; + if (dbInfo.contains("*")) + prefix = "*"; - String titleLogic = null; - int windowID = getADTab().getSelectedGridTab().getAD_Window_ID(); - if (windowID > 0) { - titleLogic = MWindow.get(Env.getCtx(), windowID).getTitleLogic(); + String titleLogic = null; + int windowID = getADTab().getSelectedGridTab().getAD_Window_ID(); + if (windowID > 0) { + titleLogic = MWindow.get(Env.getCtx(), windowID).getTitleLogic(); + } + String header = null; + if (! Util.isEmpty(titleLogic)) { + StringBuilder sb = new StringBuilder(); + if (prefix != null) + sb.append(prefix); + sb.append(Env.getContext(ctx, curWindowNo, "_WinInfo_WindowName", false)).append(": "); + if (titleLogic.contains("<")) { + // IDEMPIERE-1328 - enable using format or subcolumns on title + if ( getADTab() != null + && getADTab().getADTabpanel(0) != null + && getADTab().getADTabpanel(0).getGridTab() != null + && getADTab().getADTabpanel(0).getGridTab().getTableModel() != null) { + GridTab tab = getADTab().getADTabpanel(0).getGridTab(); + PO po = tab.getTableModel().getPO(tab.getCurrentRow()); + titleLogic = Env.parseVariable(titleLogic, po, null, false); + } + } else { + titleLogic = Env.parseContext(Env.getCtx(), curWindowNo, titleLogic, false, true); + } + sb.append(titleLogic); + header = sb.toString().trim(); + if (header.endsWith(":")) + header = header.substring(0, header.length()-1); + } + if (Util.isEmpty(header)) + header = AEnv.getDialogHeader(Env.getCtx(), curWindowNo, prefix); + + SessionManager.getAppDesktop().setTabTitle(header, curWindowNo); } - String header = null; - if (! Util.isEmpty(titleLogic)) { - StringBuilder sb = new StringBuilder(); - if (prefix != null) - sb.append(prefix); - sb.append(Env.getContext(ctx, curWindowNo, "_WinInfo_WindowName", false)).append(": "); - titleLogic = Env.parseContext(Env.getCtx(), curWindowNo, titleLogic, false, true); - sb.append(titleLogic); - header = sb.toString().trim(); - if (header.endsWith(":")) - header = header.substring(0, header.length()-1); - } - if (Util.isEmpty(header)) - header = AEnv.getDialogHeader(Env.getCtx(), curWindowNo, prefix); - - SessionManager.getAppDesktop().setTabTitle(header, curWindowNo); } else if (adTabbox.getSelectedDetailADTabpanel() == null) { @@ -1701,6 +1718,9 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements detailTab.dynamicDisplay(0); } focusToActivePanel(); + // IDEMPIERE-1328 - refresh recent item after running a process, i.e. completing a doc that changes documentno + MRecentItem.touchUpdatedRecord(ctx, adTabbox.getSelectedGridTab().getAD_Table_ID(), + adTabbox.getSelectedGridTab().getRecord_ID(), Env.getAD_User_ID(ctx)); } /** From a079bc7e1024d5ed74333534c9969cf69735e83e Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Tue, 18 Aug 2015 13:12:16 -0500 Subject: [PATCH 11/20] IDEMPIERE-2774 Record_ID button not working from detail tab --- .../adwindow/AbstractADWindowContent.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java index d8346a17bd..69864ec096 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java @@ -52,6 +52,7 @@ import org.adempiere.webui.component.ProcessInfoDialog; import org.adempiere.webui.component.Window; import org.adempiere.webui.component.ZkCssHelper; import org.adempiere.webui.editor.IProcessButton; +import org.adempiere.webui.editor.WButtonEditor; import org.adempiere.webui.editor.WEditor; import org.adempiere.webui.event.ActionEvent; import org.adempiere.webui.event.ActionListener; @@ -2641,8 +2642,22 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements // Zoom if (col.equals("Record_ID")) { - int AD_Table_ID = Env.getContextAsInt (ctx, curWindowNo, "AD_Table_ID"); - int Record_ID = Env.getContextAsInt (ctx, curWindowNo, "Record_ID"); + int AD_Table_ID = -1; + int Record_ID = -1; + + if (wButton instanceof WButtonEditor) { + int curTabNo = 0; + WButtonEditor be = (WButtonEditor)wButton; + if (be.getGridField() != null && be.getGridField().getGridTab() != null) { + curTabNo = ((WButtonEditor)wButton).getGridField().getGridTab().getTabNo(); + AD_Table_ID = Env.getContextAsInt (ctx, curWindowNo, curTabNo, "AD_Table_ID"); + Record_ID = Env.getContextAsInt (ctx, curWindowNo, curTabNo, "Record_ID"); + } + } + if (AD_Table_ID < 0) + AD_Table_ID = Env.getContextAsInt (ctx, curWindowNo, "AD_Table_ID"); + if (Record_ID < 0) + Record_ID = Env.getContextAsInt (ctx, curWindowNo, "Record_ID"); AEnv.zoom(AD_Table_ID, Record_ID); return; From 04dc38b1e4336405962539944ed086042f352399 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Tue, 18 Aug 2015 13:14:10 -0500 Subject: [PATCH 12/20] IDEMPIERE-2771 Improve 2pack tracing for errors / make 2pack more traceable: (1) added link between ad_package_imp and ad_package_imp_proc, added tab on Pack In to see the detail when processed, make the detail zoomable and show zoomable objects on Package Maintenance --- .../oracle/201508181021_IDEMPIERE-2771.sql | 497 ++++++++++++++++++ .../201508181021_IDEMPIERE-2771.sql | 494 +++++++++++++++++ .../org/compiere/model/I_AD_Package_Imp.java | 11 + .../model/I_AD_Package_Imp_Detail.java | 26 +- .../org/compiere/model/X_AD_Package_Imp.java | 27 +- .../model/X_AD_Package_Imp_Detail.java | 57 +- .../pipo/AbstractElementHandler.java | 2 +- .../pipo/srv/PipoDictionaryService.java | 21 +- .../pipo2/AbstractElementHandler.java | 4 +- .../src/org/adempiere/pipo2/PackIn.java | 15 +- .../org/adempiere/pipo2/PackInHandler.java | 17 +- .../org/adempiere/pipo2/PackInProcess.java | 3 +- .../org/adempiere/pipo2/PackRollProcess.java | 2 +- 13 files changed, 1122 insertions(+), 54 deletions(-) create mode 100644 migration/i2.1/oracle/201508181021_IDEMPIERE-2771.sql create mode 100644 migration/i2.1/postgresql/201508181021_IDEMPIERE-2771.sql diff --git a/migration/i2.1/oracle/201508181021_IDEMPIERE-2771.sql b/migration/i2.1/oracle/201508181021_IDEMPIERE-2771.sql new file mode 100644 index 0000000000..cf82299c47 --- /dev/null +++ b/migration/i2.1/oracle/201508181021_IDEMPIERE-2771.sql @@ -0,0 +1,497 @@ +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- IDEMPIERE-2771 Improve 2pack tracing for errors +-- Aug 13, 2015 7:42:06 PM COT +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure) VALUES (212222,0,'Package Imp. Proc.',50003,'AD_Package_Imp_Proc_ID',10,'N','N','N','N','N',0,'N',19,0,0,'Y',TO_DATE('2015-08-13 19:42:05','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-08-13 19:42:05','YYYY-MM-DD HH24:MI:SS'),100,50034,'Y','N','D','N','N','N','Y','1b15ffd2-2148-4337-9e59-652b0e91b73f','Y',0,'N','N') +; + +-- Aug 13, 2015 7:42:13 PM COT +UPDATE AD_Column SET FKConstraintName='ADPackageImpProc_ADPackageImp', FKConstraintType='N',Updated=TO_DATE('2015-08-13 19:42:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=212222 +; + +-- Aug 13, 2015 7:42:13 PM COT +ALTER TABLE AD_Package_Imp ADD AD_Package_Imp_Proc_ID NUMBER(10) DEFAULT NULL +; + +-- Aug 13, 2015 7:42:13 PM COT +ALTER TABLE AD_Package_Imp ADD CONSTRAINT ADPackageImpProc_ADPackageImp FOREIGN KEY (AD_Package_Imp_Proc_ID) REFERENCES ad_package_imp_proc(ad_package_imp_proc_id) DEFERRABLE INITIALLY DEFERRED +; + +-- Aug 13, 2015 7:45:44 PM COT +INSERT INTO AD_Tab (AD_Tab_ID,Name,AD_Window_ID,SeqNo,IsSingleRow,AD_Table_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,HasTree,IsInfoTab,IsTranslationTab,IsReadOnly,AD_Column_ID,OrderByClause,Processing,ImportFields,TabLevel,IsSortTab,EntityType,IsInsertRecord,IsAdvancedTab,AD_Tab_UU,TreeDisplayedOn) VALUES (200191,'Package Installation',50005,20,'Y',50003,0,0,'Y',TO_DATE('2015-08-13 19:45:44','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-08-13 19:45:44','YYYY-MM-DD HH24:MI:SS'),100,'N','N','N','Y',212222,'AD_Package_Imp_Proc.Created DESC','N','N',0,'N','D','N','N','9290ca4f-1650-4c88-9507-7a843f45384d','B') +; + +-- Aug 13, 2015 7:45:53 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (203837,'Client','Client/Tenant for this installation.','A Client is a company or a legal entity. You cannot share data between Clients. Tenant is a synonym for Client.',200191,50041,'Y',22,10,'N','N','N','N',0,0,'Y',TO_DATE('2015-08-13 19:45:53','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-08-13 19:45:53','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','d8078cb4-d8cb-4fa3-a97b-d8e8fba93fc9','Y',10,2) +; + +-- Aug 13, 2015 7:45:53 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsAllowCopy,IsDisplayedGrid,XPosition,ColumnSpan) VALUES (203838,'Organization','Organizational entity within client','An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.',200191,50061,'Y',22,20,'N','N','N','N',0,0,'Y',TO_DATE('2015-08-13 19:45:53','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-08-13 19:45:53','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','f4c81ec0-cbf4-4119-b8f7-89999cc8998f','Y','N',4,2) +; + +-- Aug 13, 2015 7:45:53 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (203839,'Name','Alphanumeric identifier of the entity','The name of an entity (record) is used as an default search option in addition to the search key. The name is up to 60 characters in length.',200191,50046,'Y',60,30,'N','N','N','N',0,0,'Y',TO_DATE('2015-08-13 19:45:53','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-08-13 19:45:53','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','9fd4405f-28a3-4ac8-ae71-8794275c63b5','Y',20,5) +; + +-- Aug 13, 2015 7:45:53 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan,NumLines) VALUES (203840,'Description','Optional short description of the record','A description is limited to 255 characters.',200191,50058,'Y',1000,40,'N','N','N','N',0,0,'Y',TO_DATE('2015-08-13 19:45:53','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-08-13 19:45:53','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','ca832890-27e6-48e0-9686-33c6ad75acda','Y',30,5,8) +; + +-- Aug 13, 2015 7:45:54 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,ColumnSpan) VALUES (203841,'Package Imp.',200191,50040,'N',22,'N','N','N','N',0,0,'Y',TO_DATE('2015-08-13 19:45:53','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-08-13 19:45:53','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','bf3180bc-3adf-4b46-8f36-418374f1b8e6','N',2) +; + +-- Aug 13, 2015 7:45:54 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (203842,'CreatorContact',200191,50044,'Y',255,50,'N','N','N','N',0,0,'Y',TO_DATE('2015-08-13 19:45:54','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-08-13 19:45:54','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','aebd79e4-0933-4f5b-aed1-726879e31c65','Y',40,5) +; + +-- Aug 13, 2015 7:45:54 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (203843,'EMail Address','Electronic Mail Address','The Email Address is the Electronic Mail ID for this User and should be fully qualified (e.g. joe.smith@company.com). The Email Address is used to access the self service application functionality from the web.',200191,50045,'Y',60,60,'N','N','N','N',0,0,'Y',TO_DATE('2015-08-13 19:45:54','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-08-13 19:45:54','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','5d64032c-a33d-409d-b758-5e95d6a7f19a','Y',50,5) +; + +-- Aug 13, 2015 7:45:54 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (203844,'Package Version',200191,50047,'Y',20,70,'N','N','N','N',0,0,'Y',TO_DATE('2015-08-13 19:45:54','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-08-13 19:45:54','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','2bb66736-4f30-4d79-9a6e-2f0a35d16fe5','Y',60,2) +; + +-- Aug 13, 2015 7:45:55 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan) VALUES (203845,'Process Now',200191,50048,'Y',1,80,'N','N','N','N',0,0,'Y',TO_DATE('2015-08-13 19:45:54','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-08-13 19:45:54','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','0ee8bac8-b589-4f66-b57f-cad79cf4828b','Y',70,2,2) +; + +-- Aug 13, 2015 7:45:55 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (203846,'Version','Version of the table definition','The Version indicates the version of this table definition.',200191,50049,'Y',20,90,'N','N','N','N',0,0,'Y',TO_DATE('2015-08-13 19:45:55','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-08-13 19:45:55','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','f70e7a70-cf2e-43b3-a5a4-c3996d872359','Y',80,2) +; + +-- Aug 13, 2015 7:45:55 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan) VALUES (203847,'Uninstall',200191,50053,'Y',1,100,'N','N','N','N',0,0,'Y',TO_DATE('2015-08-13 19:45:55','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-08-13 19:45:55','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','037e4eaa-fefa-449b-bf9b-b8c1f4ffb1f8','Y',90,2,2) +; + +-- Aug 13, 2015 7:45:55 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (203848,'Release No','Internal Release Number',200191,50054,'Y',20,110,'N','N','N','N',0,0,'Y',TO_DATE('2015-08-13 19:45:55','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-08-13 19:45:55','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','f5f66967-57b0-4d39-896f-e06bdab02e80','Y',100,2) +; + +-- Aug 13, 2015 7:45:55 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan) VALUES (203849,'Processed','The document has been processed','The Processed checkbox indicates that a document has been processed.',200191,50055,'Y',1,120,'N','N','N','N',0,0,'Y',TO_DATE('2015-08-13 19:45:55','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-08-13 19:45:55','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','8ef4b72f-c9ed-49ab-bccb-2023d48c7913','Y',110,2,2) +; + +-- Aug 13, 2015 7:45:56 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (203850,'Package Status',200191,50056,'Y',22,130,'N','N','N','N',0,0,'Y',TO_DATE('2015-08-13 19:45:55','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-08-13 19:45:55','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','c630875b-162c-4058-b9da-cb6f82fa5ca1','Y',120,2) +; + +-- Aug 13, 2015 7:45:57 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (203851,'Creator',200191,50059,'Y',60,140,'N','N','N','N',0,0,'Y',TO_DATE('2015-08-13 19:45:56','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-08-13 19:45:56','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','e830521e-be76-4627-8a35-c7ac09bfd596','Y',130,5) +; + +-- Aug 13, 2015 7:45:57 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,ColumnSpan) VALUES (203852,'AD_Package_Imp_UU',200191,60446,'N',36,'N','N','N','N',0,0,'Y',TO_DATE('2015-08-13 19:45:57','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-08-13 19:45:57','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','32204dd9-2efa-4a55-89df-4f4a505381d6','N',2) +; + +-- Aug 13, 2015 7:45:57 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (203853,'Package Imp. Proc.',200191,212222,'Y',10,150,'N','N','N','N',0,0,'Y',TO_DATE('2015-08-13 19:45:57','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-08-13 19:45:57','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','ffd6eb2b-4af3-4954-98dc-848cb85d867f','Y',140,2) +; + +-- Aug 13, 2015 7:45:58 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan) VALUES (203854,'Active','The record is active in the system','There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reports. +There are two reasons for de-activating and not deleting records: +(1) The system requires the record for audit purposes. +(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are invoices for this partner record existing. You de-activate the Business Partner and prevent that this record is used for future entries.',200191,50057,'Y',1,160,'N','N','N','N',0,0,'Y',TO_DATE('2015-08-13 19:45:57','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-08-13 19:45:57','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','82331802-b0f8-47b5-a860-1879b135d071','Y',150,2,2) +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=30, XPosition=1,Updated=TO_DATE('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203853 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET SeqNo=40, ColumnSpan=3,Updated=TO_DATE('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203839 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=50, XPosition=5, ColumnSpan=1,Updated=TO_DATE('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203844 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=60, XPosition=1, ColumnSpan=3,Updated=TO_DATE('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203850 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET SeqNo=70,Updated=TO_DATE('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203840 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=90, XPosition=5, ColumnSpan=1,Updated=TO_DATE('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203849 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=100, XPosition=6, ColumnSpan=1,Updated=TO_DATE('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203854 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET SeqNo=0,Updated=TO_DATE('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203852 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_DATE('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203851 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_DATE('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203842 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_DATE('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203843 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET SeqNo=0,Updated=TO_DATE('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203841 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_DATE('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203848 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_DATE('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203847 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1, ColumnSpan=1,Updated=TO_DATE('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203846 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=203853 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=203851 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=203849 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=203845 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=203843 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=203842 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=203848 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=203847 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=203846 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=203837 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=10,IsDisplayedGrid='Y' WHERE AD_Field_ID=203839 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=20,IsDisplayedGrid='Y' WHERE AD_Field_ID=203844 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=30,IsDisplayedGrid='Y' WHERE AD_Field_ID=203850 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=40,IsDisplayedGrid='Y' WHERE AD_Field_ID=203840 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=50,IsDisplayedGrid='Y' WHERE AD_Field_ID=203854 +; + +-- Aug 13, 2015 7:58:07 PM COT +UPDATE AD_Field SET SeqNoGrid=50,IsDisplayedGrid='Y' WHERE AD_Field_ID=203841 +; + +-- Aug 13, 2015 7:58:07 PM COT +UPDATE AD_Field SET SeqNoGrid=60,IsDisplayedGrid='Y' WHERE AD_Field_ID=203854 +; + +-- Aug 13, 2015 7:58:26 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=40, XPosition=4,Updated=TO_DATE('2015-08-13 19:58:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203841 +; + +-- Aug 13, 2015 7:58:26 PM COT +UPDATE AD_Field SET SeqNo=50,Updated=TO_DATE('2015-08-13 19:58:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203839 +; + +-- Aug 13, 2015 7:58:26 PM COT +UPDATE AD_Field SET SeqNo=60,Updated=TO_DATE('2015-08-13 19:58:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203844 +; + +-- Aug 13, 2015 7:58:26 PM COT +UPDATE AD_Field SET SeqNo=70,Updated=TO_DATE('2015-08-13 19:58:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203850 +; + +-- Aug 13, 2015 7:58:26 PM COT +UPDATE AD_Field SET SeqNo=80,Updated=TO_DATE('2015-08-13 19:58:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203840 +; + +-- Aug 13, 2015 7:58:26 PM COT +UPDATE AD_Field SET SeqNo=90,Updated=TO_DATE('2015-08-13 19:58:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203845 +; + +-- Aug 13, 2015 7:58:26 PM COT +UPDATE AD_Field SET SeqNo=100,Updated=TO_DATE('2015-08-13 19:58:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203849 +; + +-- Aug 13, 2015 7:58:26 PM COT +UPDATE AD_Field SET SeqNo=110,Updated=TO_DATE('2015-08-13 19:58:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203854 +; + +-- Aug 14, 2015 10:42:44 AM COT +UPDATE AD_Tab SET TabLevel=1,Updated=TO_DATE('2015-08-14 10:42:44','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=200191 +; + +-- Aug 14, 2015 10:45:01 AM COT +UPDATE AD_Tab SET OrderByClause='AD_Package_Imp.Created DESC',Updated=TO_DATE('2015-08-14 10:45:01','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=200191 +; + +-- Aug 14, 2015 10:45:18 AM COT +UPDATE AD_Tab SET OrderByClause='AD_Package_Imp_Proc.Created DESC',Updated=TO_DATE('2015-08-14 10:45:18','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=50008 +; + +-- Aug 14, 2015 10:49:45 AM COT +UPDATE AD_Field SET AD_Reference_ID=19,Updated=TO_DATE('2015-08-14 10:49:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203841 +; + +-- Aug 18, 2015 11:23:06 AM COT +UPDATE AD_Column SET AD_Reference_ID=30, IsUpdateable='N',Updated=TO_DATE('2015-08-18 11:23:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=50066 +; + +-- Aug 18, 2015 11:23:13 AM COT +UPDATE AD_Column SET AD_Reference_ID=19,Updated=TO_DATE('2015-08-18 11:23:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=50067 +; + +-- Aug 18, 2015 11:25:05 AM COT +UPDATE AD_Column SET Name='Record ID', Description='Direct internal record ID', Help='The Record ID is the internal unique identifier of a record. Please note that zooming to the record may not be successful for Orders, Invoices and Shipment/Receipts as sometimes the Sales Order type is not known.', ColumnName='Record_ID', AD_Reference_ID=28, AD_Element_ID=538, IsAlwaysUpdateable='Y', IsToolbarButton='B',Updated=TO_DATE('2015-08-18 11:25:05','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=50064 +; + +ALTER TABLE AD_PACKAGE_IMP_DETAIL RENAME COLUMN AD_ORIGINAL_ID TO RECORD_ID +; + +-- Aug 18, 2015 11:27:08 AM COT +UPDATE AD_Field SET SeqNo=110,Updated=TO_DATE('2015-08-18 11:27:08','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50045 +; + +-- Aug 18, 2015 11:27:08 AM COT +UPDATE AD_Field SET SeqNo=120,Updated=TO_DATE('2015-08-18 11:27:08','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50050 +; + +-- Aug 18, 2015 11:27:08 AM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_DATE('2015-08-18 11:27:08','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50051 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=20, XPosition=4,Updated=TO_DATE('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50054 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET SeqNo=30, ColumnSpan=2,Updated=TO_DATE('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50055 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=40, XPosition=1,Updated=TO_DATE('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50062 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=50, XPosition=4, ColumnSpan=1,Updated=TO_DATE('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50059 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=60, XPosition=6, ColumnSpan=1,Updated=TO_DATE('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50060 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET SeqNo=70,Updated=TO_DATE('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50058 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=80, XPosition=1, ColumnSpan=2,Updated=TO_DATE('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50064 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=90, XPosition=4,Updated=TO_DATE('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50061 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=100, XPosition=1,Updated=TO_DATE('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50057 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_DATE('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50063 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_DATE('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50056 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_DATE('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50065 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50065 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50063 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50056 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50055 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50054 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50053 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=10,IsDisplayedGrid='Y' WHERE AD_Field_ID=50062 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=20,IsDisplayedGrid='Y' WHERE AD_Field_ID=50059 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=30,IsDisplayedGrid='Y' WHERE AD_Field_ID=50060 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=40,IsDisplayedGrid='Y' WHERE AD_Field_ID=50064 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=50,IsDisplayedGrid='Y' WHERE AD_Field_ID=50058 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=60,IsDisplayedGrid='Y' WHERE AD_Field_ID=50061 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=70,IsDisplayedGrid='Y' WHERE AD_Field_ID=50057 +; + +-- Aug 18, 2015 11:45:42 AM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=20, XPosition=4,Updated=TO_DATE('2015-08-18 11:45:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50021 +; + +-- Aug 18, 2015 11:45:42 AM COT +UPDATE AD_Field SET SeqNo=30,Updated=TO_DATE('2015-08-18 11:45:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50023 +; + +-- Aug 18, 2015 11:45:42 AM COT +UPDATE AD_Field SET SeqNo=40,Updated=TO_DATE('2015-08-18 11:45:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50025 +; + +-- Aug 18, 2015 11:45:42 AM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=50, XPosition=4,Updated=TO_DATE('2015-08-18 11:45:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50026 +; + +-- Aug 18, 2015 11:45:42 AM COT +UPDATE AD_Field SET SeqNo=60,Updated=TO_DATE('2015-08-18 11:45:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50027 +; + +-- Aug 18, 2015 11:45:42 AM COT +UPDATE AD_Field SET SeqNo=70,Updated=TO_DATE('2015-08-18 11:45:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50028 +; + +-- Aug 18, 2015 11:45:42 AM COT +UPDATE AD_Field SET SeqNo=80,Updated=TO_DATE('2015-08-18 11:45:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50030 +; + +-- Aug 18, 2015 11:45:42 AM COT +UPDATE AD_Field SET SeqNo=90,Updated=TO_DATE('2015-08-18 11:45:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50031 +; + +-- Aug 18, 2015 11:45:43 AM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_DATE('2015-08-18 11:45:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50024 +; + +-- Aug 18, 2015 11:45:43 AM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_DATE('2015-08-18 11:45:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50022 +; + +-- Aug 18, 2015 11:45:43 AM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_DATE('2015-08-18 11:45:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50029 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50029 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50024 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50023 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50022 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50021 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50020 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=10,IsDisplayedGrid='Y' WHERE AD_Field_ID=50025 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=20,IsDisplayedGrid='Y' WHERE AD_Field_ID=50026 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=30,IsDisplayedGrid='Y' WHERE AD_Field_ID=50027 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=40,IsDisplayedGrid='Y' WHERE AD_Field_ID=50028 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=50,IsDisplayedGrid='Y' WHERE AD_Field_ID=50030 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=60,IsDisplayedGrid='Y' WHERE AD_Field_ID=50031 +; + +SELECT register_migration_script('201508181021_IDEMPIERE-2771.sql') FROM dual +; + diff --git a/migration/i2.1/postgresql/201508181021_IDEMPIERE-2771.sql b/migration/i2.1/postgresql/201508181021_IDEMPIERE-2771.sql new file mode 100644 index 0000000000..18e950b743 --- /dev/null +++ b/migration/i2.1/postgresql/201508181021_IDEMPIERE-2771.sql @@ -0,0 +1,494 @@ +-- IDEMPIERE-2771 Improve 2pack tracing for errors +-- Aug 13, 2015 7:42:06 PM COT +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure) VALUES (212222,0,'Package Imp. Proc.',50003,'AD_Package_Imp_Proc_ID',10,'N','N','N','N','N',0,'N',19,0,0,'Y',TO_TIMESTAMP('2015-08-13 19:42:05','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-08-13 19:42:05','YYYY-MM-DD HH24:MI:SS'),100,50034,'Y','N','D','N','N','N','Y','1b15ffd2-2148-4337-9e59-652b0e91b73f','Y',0,'N','N') +; + +-- Aug 13, 2015 7:42:13 PM COT +UPDATE AD_Column SET FKConstraintName='ADPackageImpProc_ADPackageImp', FKConstraintType='N',Updated=TO_TIMESTAMP('2015-08-13 19:42:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=212222 +; + +-- Aug 13, 2015 7:42:13 PM COT +ALTER TABLE AD_Package_Imp ADD COLUMN AD_Package_Imp_Proc_ID NUMERIC(10) DEFAULT NULL +; + +-- Aug 13, 2015 7:42:13 PM COT +ALTER TABLE AD_Package_Imp ADD CONSTRAINT ADPackageImpProc_ADPackageImp FOREIGN KEY (AD_Package_Imp_Proc_ID) REFERENCES ad_package_imp_proc(ad_package_imp_proc_id) DEFERRABLE INITIALLY DEFERRED +; + +-- Aug 13, 2015 7:45:44 PM COT +INSERT INTO AD_Tab (AD_Tab_ID,Name,AD_Window_ID,SeqNo,IsSingleRow,AD_Table_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,HasTree,IsInfoTab,IsTranslationTab,IsReadOnly,AD_Column_ID,OrderByClause,Processing,ImportFields,TabLevel,IsSortTab,EntityType,IsInsertRecord,IsAdvancedTab,AD_Tab_UU,TreeDisplayedOn) VALUES (200191,'Package Installation',50005,20,'Y',50003,0,0,'Y',TO_TIMESTAMP('2015-08-13 19:45:44','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-08-13 19:45:44','YYYY-MM-DD HH24:MI:SS'),100,'N','N','N','Y',212222,'AD_Package_Imp_Proc.Created DESC','N','N',0,'N','D','N','N','9290ca4f-1650-4c88-9507-7a843f45384d','B') +; + +-- Aug 13, 2015 7:45:53 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (203837,'Client','Client/Tenant for this installation.','A Client is a company or a legal entity. You cannot share data between Clients. Tenant is a synonym for Client.',200191,50041,'Y',22,10,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2015-08-13 19:45:53','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-08-13 19:45:53','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','d8078cb4-d8cb-4fa3-a97b-d8e8fba93fc9','Y',10,2) +; + +-- Aug 13, 2015 7:45:53 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsAllowCopy,IsDisplayedGrid,XPosition,ColumnSpan) VALUES (203838,'Organization','Organizational entity within client','An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.',200191,50061,'Y',22,20,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2015-08-13 19:45:53','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-08-13 19:45:53','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','f4c81ec0-cbf4-4119-b8f7-89999cc8998f','Y','N',4,2) +; + +-- Aug 13, 2015 7:45:53 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (203839,'Name','Alphanumeric identifier of the entity','The name of an entity (record) is used as an default search option in addition to the search key. The name is up to 60 characters in length.',200191,50046,'Y',60,30,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2015-08-13 19:45:53','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-08-13 19:45:53','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','9fd4405f-28a3-4ac8-ae71-8794275c63b5','Y',20,5) +; + +-- Aug 13, 2015 7:45:53 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan,NumLines) VALUES (203840,'Description','Optional short description of the record','A description is limited to 255 characters.',200191,50058,'Y',1000,40,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2015-08-13 19:45:53','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-08-13 19:45:53','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','ca832890-27e6-48e0-9686-33c6ad75acda','Y',30,5,8) +; + +-- Aug 13, 2015 7:45:54 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,ColumnSpan) VALUES (203841,'Package Imp.',200191,50040,'N',22,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2015-08-13 19:45:53','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-08-13 19:45:53','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','bf3180bc-3adf-4b46-8f36-418374f1b8e6','N',2) +; + +-- Aug 13, 2015 7:45:54 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (203842,'CreatorContact',200191,50044,'Y',255,50,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2015-08-13 19:45:54','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-08-13 19:45:54','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','aebd79e4-0933-4f5b-aed1-726879e31c65','Y',40,5) +; + +-- Aug 13, 2015 7:45:54 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (203843,'EMail Address','Electronic Mail Address','The Email Address is the Electronic Mail ID for this User and should be fully qualified (e.g. joe.smith@company.com). The Email Address is used to access the self service application functionality from the web.',200191,50045,'Y',60,60,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2015-08-13 19:45:54','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-08-13 19:45:54','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','5d64032c-a33d-409d-b758-5e95d6a7f19a','Y',50,5) +; + +-- Aug 13, 2015 7:45:54 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (203844,'Package Version',200191,50047,'Y',20,70,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2015-08-13 19:45:54','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-08-13 19:45:54','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','2bb66736-4f30-4d79-9a6e-2f0a35d16fe5','Y',60,2) +; + +-- Aug 13, 2015 7:45:55 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan) VALUES (203845,'Process Now',200191,50048,'Y',1,80,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2015-08-13 19:45:54','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-08-13 19:45:54','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','0ee8bac8-b589-4f66-b57f-cad79cf4828b','Y',70,2,2) +; + +-- Aug 13, 2015 7:45:55 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (203846,'Version','Version of the table definition','The Version indicates the version of this table definition.',200191,50049,'Y',20,90,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2015-08-13 19:45:55','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-08-13 19:45:55','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','f70e7a70-cf2e-43b3-a5a4-c3996d872359','Y',80,2) +; + +-- Aug 13, 2015 7:45:55 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan) VALUES (203847,'Uninstall',200191,50053,'Y',1,100,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2015-08-13 19:45:55','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-08-13 19:45:55','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','037e4eaa-fefa-449b-bf9b-b8c1f4ffb1f8','Y',90,2,2) +; + +-- Aug 13, 2015 7:45:55 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,Description,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (203848,'Release No','Internal Release Number',200191,50054,'Y',20,110,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2015-08-13 19:45:55','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-08-13 19:45:55','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','f5f66967-57b0-4d39-896f-e06bdab02e80','Y',100,2) +; + +-- Aug 13, 2015 7:45:55 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan) VALUES (203849,'Processed','The document has been processed','The Processed checkbox indicates that a document has been processed.',200191,50055,'Y',1,120,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2015-08-13 19:45:55','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-08-13 19:45:55','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','8ef4b72f-c9ed-49ab-bccb-2023d48c7913','Y',110,2,2) +; + +-- Aug 13, 2015 7:45:56 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (203850,'Package Status',200191,50056,'Y',22,130,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2015-08-13 19:45:55','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-08-13 19:45:55','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','c630875b-162c-4058-b9da-cb6f82fa5ca1','Y',120,2) +; + +-- Aug 13, 2015 7:45:57 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (203851,'Creator',200191,50059,'Y',60,140,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2015-08-13 19:45:56','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-08-13 19:45:56','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','e830521e-be76-4627-8a35-c7ac09bfd596','Y',130,5) +; + +-- Aug 13, 2015 7:45:57 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,ColumnSpan) VALUES (203852,'AD_Package_Imp_UU',200191,60446,'N',36,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2015-08-13 19:45:57','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-08-13 19:45:57','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','32204dd9-2efa-4a55-89df-4f4a505381d6','N',2) +; + +-- Aug 13, 2015 7:45:57 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (203853,'Package Imp. Proc.',200191,212222,'Y',10,150,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2015-08-13 19:45:57','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-08-13 19:45:57','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','ffd6eb2b-4af3-4954-98dc-848cb85d867f','Y',140,2) +; + +-- Aug 13, 2015 7:45:58 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan) VALUES (203854,'Active','The record is active in the system','There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reports. +There are two reasons for de-activating and not deleting records: +(1) The system requires the record for audit purposes. +(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are invoices for this partner record existing. You de-activate the Business Partner and prevent that this record is used for future entries.',200191,50057,'Y',1,160,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2015-08-13 19:45:57','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-08-13 19:45:57','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','82331802-b0f8-47b5-a860-1879b135d071','Y',150,2,2) +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=30, XPosition=1,Updated=TO_TIMESTAMP('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203853 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET SeqNo=40, ColumnSpan=3,Updated=TO_TIMESTAMP('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203839 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=50, XPosition=5, ColumnSpan=1,Updated=TO_TIMESTAMP('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203844 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=60, XPosition=1, ColumnSpan=3,Updated=TO_TIMESTAMP('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203850 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET SeqNo=70,Updated=TO_TIMESTAMP('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203840 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=90, XPosition=5, ColumnSpan=1,Updated=TO_TIMESTAMP('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203849 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=100, XPosition=6, ColumnSpan=1,Updated=TO_TIMESTAMP('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203854 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET SeqNo=0,Updated=TO_TIMESTAMP('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203852 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_TIMESTAMP('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203851 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_TIMESTAMP('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203842 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_TIMESTAMP('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203843 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET SeqNo=0,Updated=TO_TIMESTAMP('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203841 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_TIMESTAMP('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203848 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_TIMESTAMP('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203847 +; + +-- Aug 13, 2015 7:54:55 PM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1, ColumnSpan=1,Updated=TO_TIMESTAMP('2015-08-13 19:54:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203846 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=203853 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=203851 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=203849 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=203845 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=203843 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=203842 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=203848 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=203847 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=203846 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=203837 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=10,IsDisplayedGrid='Y' WHERE AD_Field_ID=203839 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=20,IsDisplayedGrid='Y' WHERE AD_Field_ID=203844 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=30,IsDisplayedGrid='Y' WHERE AD_Field_ID=203850 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=40,IsDisplayedGrid='Y' WHERE AD_Field_ID=203840 +; + +-- Aug 13, 2015 7:57:10 PM COT +UPDATE AD_Field SET SeqNoGrid=50,IsDisplayedGrid='Y' WHERE AD_Field_ID=203854 +; + +-- Aug 13, 2015 7:58:07 PM COT +UPDATE AD_Field SET SeqNoGrid=50,IsDisplayedGrid='Y' WHERE AD_Field_ID=203841 +; + +-- Aug 13, 2015 7:58:07 PM COT +UPDATE AD_Field SET SeqNoGrid=60,IsDisplayedGrid='Y' WHERE AD_Field_ID=203854 +; + +-- Aug 13, 2015 7:58:26 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=40, XPosition=4,Updated=TO_TIMESTAMP('2015-08-13 19:58:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203841 +; + +-- Aug 13, 2015 7:58:26 PM COT +UPDATE AD_Field SET SeqNo=50,Updated=TO_TIMESTAMP('2015-08-13 19:58:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203839 +; + +-- Aug 13, 2015 7:58:26 PM COT +UPDATE AD_Field SET SeqNo=60,Updated=TO_TIMESTAMP('2015-08-13 19:58:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203844 +; + +-- Aug 13, 2015 7:58:26 PM COT +UPDATE AD_Field SET SeqNo=70,Updated=TO_TIMESTAMP('2015-08-13 19:58:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203850 +; + +-- Aug 13, 2015 7:58:26 PM COT +UPDATE AD_Field SET SeqNo=80,Updated=TO_TIMESTAMP('2015-08-13 19:58:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203840 +; + +-- Aug 13, 2015 7:58:26 PM COT +UPDATE AD_Field SET SeqNo=90,Updated=TO_TIMESTAMP('2015-08-13 19:58:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203845 +; + +-- Aug 13, 2015 7:58:26 PM COT +UPDATE AD_Field SET SeqNo=100,Updated=TO_TIMESTAMP('2015-08-13 19:58:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203849 +; + +-- Aug 13, 2015 7:58:26 PM COT +UPDATE AD_Field SET SeqNo=110,Updated=TO_TIMESTAMP('2015-08-13 19:58:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203854 +; + +-- Aug 14, 2015 10:42:44 AM COT +UPDATE AD_Tab SET TabLevel=1,Updated=TO_TIMESTAMP('2015-08-14 10:42:44','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=200191 +; + +-- Aug 14, 2015 10:45:01 AM COT +UPDATE AD_Tab SET OrderByClause='AD_Package_Imp.Created DESC',Updated=TO_TIMESTAMP('2015-08-14 10:45:01','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=200191 +; + +-- Aug 14, 2015 10:45:18 AM COT +UPDATE AD_Tab SET OrderByClause='AD_Package_Imp_Proc.Created DESC',Updated=TO_TIMESTAMP('2015-08-14 10:45:18','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=50008 +; + +-- Aug 14, 2015 10:49:45 AM COT +UPDATE AD_Field SET AD_Reference_ID=19,Updated=TO_TIMESTAMP('2015-08-14 10:49:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203841 +; + +-- Aug 18, 2015 11:23:06 AM COT +UPDATE AD_Column SET AD_Reference_ID=30, IsUpdateable='N',Updated=TO_TIMESTAMP('2015-08-18 11:23:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=50066 +; + +-- Aug 18, 2015 11:23:13 AM COT +UPDATE AD_Column SET AD_Reference_ID=19,Updated=TO_TIMESTAMP('2015-08-18 11:23:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=50067 +; + +-- Aug 18, 2015 11:25:05 AM COT +UPDATE AD_Column SET Name='Record ID', Description='Direct internal record ID', Help='The Record ID is the internal unique identifier of a record. Please note that zooming to the record may not be successful for Orders, Invoices and Shipment/Receipts as sometimes the Sales Order type is not known.', ColumnName='Record_ID', AD_Reference_ID=28, AD_Element_ID=538, IsAlwaysUpdateable='Y', IsToolbarButton='B',Updated=TO_TIMESTAMP('2015-08-18 11:25:05','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=50064 +; + +ALTER TABLE ad_package_imp_detail RENAME ad_original_id TO record_id +; + +-- Aug 18, 2015 11:27:08 AM COT +UPDATE AD_Field SET SeqNo=110,Updated=TO_TIMESTAMP('2015-08-18 11:27:08','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50045 +; + +-- Aug 18, 2015 11:27:08 AM COT +UPDATE AD_Field SET SeqNo=120,Updated=TO_TIMESTAMP('2015-08-18 11:27:08','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50050 +; + +-- Aug 18, 2015 11:27:08 AM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_TIMESTAMP('2015-08-18 11:27:08','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50051 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=20, XPosition=4,Updated=TO_TIMESTAMP('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50054 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET SeqNo=30, ColumnSpan=2,Updated=TO_TIMESTAMP('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50055 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=40, XPosition=1,Updated=TO_TIMESTAMP('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50062 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=50, XPosition=4, ColumnSpan=1,Updated=TO_TIMESTAMP('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50059 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=60, XPosition=6, ColumnSpan=1,Updated=TO_TIMESTAMP('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50060 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET SeqNo=70,Updated=TO_TIMESTAMP('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50058 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=80, XPosition=1, ColumnSpan=2,Updated=TO_TIMESTAMP('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50064 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=90, XPosition=4,Updated=TO_TIMESTAMP('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50061 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=100, XPosition=1,Updated=TO_TIMESTAMP('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50057 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_TIMESTAMP('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50063 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_TIMESTAMP('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50056 +; + +-- Aug 18, 2015 11:29:04 AM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_TIMESTAMP('2015-08-18 11:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50065 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50065 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50063 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50056 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50055 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50054 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50053 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=10,IsDisplayedGrid='Y' WHERE AD_Field_ID=50062 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=20,IsDisplayedGrid='Y' WHERE AD_Field_ID=50059 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=30,IsDisplayedGrid='Y' WHERE AD_Field_ID=50060 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=40,IsDisplayedGrid='Y' WHERE AD_Field_ID=50064 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=50,IsDisplayedGrid='Y' WHERE AD_Field_ID=50058 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=60,IsDisplayedGrid='Y' WHERE AD_Field_ID=50061 +; + +-- Aug 18, 2015 11:29:38 AM COT +UPDATE AD_Field SET SeqNoGrid=70,IsDisplayedGrid='Y' WHERE AD_Field_ID=50057 +; + +-- Aug 18, 2015 11:45:42 AM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=20, XPosition=4,Updated=TO_TIMESTAMP('2015-08-18 11:45:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50021 +; + +-- Aug 18, 2015 11:45:42 AM COT +UPDATE AD_Field SET SeqNo=30,Updated=TO_TIMESTAMP('2015-08-18 11:45:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50023 +; + +-- Aug 18, 2015 11:45:42 AM COT +UPDATE AD_Field SET SeqNo=40,Updated=TO_TIMESTAMP('2015-08-18 11:45:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50025 +; + +-- Aug 18, 2015 11:45:42 AM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=50, XPosition=4,Updated=TO_TIMESTAMP('2015-08-18 11:45:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50026 +; + +-- Aug 18, 2015 11:45:42 AM COT +UPDATE AD_Field SET SeqNo=60,Updated=TO_TIMESTAMP('2015-08-18 11:45:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50027 +; + +-- Aug 18, 2015 11:45:42 AM COT +UPDATE AD_Field SET SeqNo=70,Updated=TO_TIMESTAMP('2015-08-18 11:45:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50028 +; + +-- Aug 18, 2015 11:45:42 AM COT +UPDATE AD_Field SET SeqNo=80,Updated=TO_TIMESTAMP('2015-08-18 11:45:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50030 +; + +-- Aug 18, 2015 11:45:42 AM COT +UPDATE AD_Field SET SeqNo=90,Updated=TO_TIMESTAMP('2015-08-18 11:45:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50031 +; + +-- Aug 18, 2015 11:45:43 AM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_TIMESTAMP('2015-08-18 11:45:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50024 +; + +-- Aug 18, 2015 11:45:43 AM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_TIMESTAMP('2015-08-18 11:45:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50022 +; + +-- Aug 18, 2015 11:45:43 AM COT +UPDATE AD_Field SET IsDisplayed='N', SeqNo=0, XPosition=1,Updated=TO_TIMESTAMP('2015-08-18 11:45:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50029 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50029 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50024 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50023 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50022 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50021 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=50020 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=10,IsDisplayedGrid='Y' WHERE AD_Field_ID=50025 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=20,IsDisplayedGrid='Y' WHERE AD_Field_ID=50026 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=30,IsDisplayedGrid='Y' WHERE AD_Field_ID=50027 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=40,IsDisplayedGrid='Y' WHERE AD_Field_ID=50028 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=50,IsDisplayedGrid='Y' WHERE AD_Field_ID=50030 +; + +-- Aug 18, 2015 11:47:17 AM COT +UPDATE AD_Field SET SeqNoGrid=60,IsDisplayedGrid='Y' WHERE AD_Field_ID=50031 +; + +SELECT register_migration_script('201508181021_IDEMPIERE-2771.sql') FROM dual +; + diff --git a/org.adempiere.base/src/org/compiere/model/I_AD_Package_Imp.java b/org.adempiere.base/src/org/compiere/model/I_AD_Package_Imp.java index 4d4c2f20b2..1393e21d86 100644 --- a/org.adempiere.base/src/org/compiere/model/I_AD_Package_Imp.java +++ b/org.adempiere.base/src/org/compiere/model/I_AD_Package_Imp.java @@ -71,6 +71,17 @@ public interface I_AD_Package_Imp /** Get Package Imp. */ public int getAD_Package_Imp_ID(); + /** Column name AD_Package_Imp_Proc_ID */ + public static final String COLUMNNAME_AD_Package_Imp_Proc_ID = "AD_Package_Imp_Proc_ID"; + + /** Set Package Imp. Proc. */ + public void setAD_Package_Imp_Proc_ID (int AD_Package_Imp_Proc_ID); + + /** Get Package Imp. Proc. */ + public int getAD_Package_Imp_Proc_ID(); + + public org.compiere.model.I_AD_Package_Imp_Proc getAD_Package_Imp_Proc() throws RuntimeException; + /** Column name AD_Package_Imp_UU */ public static final String COLUMNNAME_AD_Package_Imp_UU = "AD_Package_Imp_UU"; diff --git a/org.adempiere.base/src/org/compiere/model/I_AD_Package_Imp_Detail.java b/org.adempiere.base/src/org/compiere/model/I_AD_Package_Imp_Detail.java index 5c72d17cbf..e3ab447a20 100644 --- a/org.adempiere.base/src/org/compiere/model/I_AD_Package_Imp_Detail.java +++ b/org.adempiere.base/src/org/compiere/model/I_AD_Package_Imp_Detail.java @@ -84,15 +84,6 @@ public interface I_AD_Package_Imp_Detail */ public int getAD_Org_ID(); - /** Column name AD_Original_ID */ - public static final String COLUMNNAME_AD_Original_ID = "AD_Original_ID"; - - /** Set Original */ - public void setAD_Original_ID (int AD_Original_ID); - - /** Get Original */ - public int getAD_Original_ID(); - /** Column name AD_Package_Imp_Detail_ID */ public static final String COLUMNNAME_AD_Package_Imp_Detail_ID = "AD_Package_Imp_Detail_ID"; @@ -120,6 +111,8 @@ public interface I_AD_Package_Imp_Detail /** Get Package Imp. */ public int getAD_Package_Imp_ID(); + public org.compiere.model.I_AD_Package_Imp getAD_Package_Imp() throws RuntimeException; + /** Column name AD_Table_ID */ public static final String COLUMNNAME_AD_Table_ID = "AD_Table_ID"; @@ -133,6 +126,8 @@ public interface I_AD_Package_Imp_Detail */ public int getAD_Table_ID(); + public org.compiere.model.I_AD_Table getAD_Table() throws RuntimeException; + /** Column name Created */ public static final String COLUMNNAME_Created = "Created"; @@ -175,6 +170,19 @@ public interface I_AD_Package_Imp_Detail */ public String getName(); + /** Column name Record_ID */ + public static final String COLUMNNAME_Record_ID = "Record_ID"; + + /** Set Record ID. + * Direct internal record ID + */ + public void setRecord_ID (int Record_ID); + + /** Get Record ID. + * Direct internal record ID + */ + public int getRecord_ID(); + /** Column name Success */ public static final String COLUMNNAME_Success = "Success"; diff --git a/org.adempiere.base/src/org/compiere/model/X_AD_Package_Imp.java b/org.adempiere.base/src/org/compiere/model/X_AD_Package_Imp.java index c100d90a8e..1ca5f00d61 100644 --- a/org.adempiere.base/src/org/compiere/model/X_AD_Package_Imp.java +++ b/org.adempiere.base/src/org/compiere/model/X_AD_Package_Imp.java @@ -30,7 +30,7 @@ public class X_AD_Package_Imp extends PO implements I_AD_Package_Imp, I_Persiste /** * */ - private static final long serialVersionUID = 20141030L; + private static final long serialVersionUID = 20150813L; /** Standard Constructor */ public X_AD_Package_Imp (Properties ctx, int AD_Package_Imp_ID, String trxName) @@ -100,6 +100,31 @@ public class X_AD_Package_Imp extends PO implements I_AD_Package_Imp, I_Persiste return new KeyNamePair(get_ID(), String.valueOf(getAD_Package_Imp_ID())); } + public org.compiere.model.I_AD_Package_Imp_Proc getAD_Package_Imp_Proc() throws RuntimeException + { + return (org.compiere.model.I_AD_Package_Imp_Proc)MTable.get(getCtx(), org.compiere.model.I_AD_Package_Imp_Proc.Table_Name) + .getPO(getAD_Package_Imp_Proc_ID(), get_TrxName()); } + + /** Set Package Imp. Proc.. + @param AD_Package_Imp_Proc_ID Package Imp. Proc. */ + public void setAD_Package_Imp_Proc_ID (int AD_Package_Imp_Proc_ID) + { + if (AD_Package_Imp_Proc_ID < 1) + set_Value (COLUMNNAME_AD_Package_Imp_Proc_ID, null); + else + set_Value (COLUMNNAME_AD_Package_Imp_Proc_ID, Integer.valueOf(AD_Package_Imp_Proc_ID)); + } + + /** Get Package Imp. Proc.. + @return Package Imp. Proc. */ + public int getAD_Package_Imp_Proc_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_AD_Package_Imp_Proc_ID); + if (ii == null) + return 0; + return ii.intValue(); + } + /** Set AD_Package_Imp_UU. @param AD_Package_Imp_UU AD_Package_Imp_UU */ public void setAD_Package_Imp_UU (String AD_Package_Imp_UU) diff --git a/org.adempiere.base/src/org/compiere/model/X_AD_Package_Imp_Detail.java b/org.adempiere.base/src/org/compiere/model/X_AD_Package_Imp_Detail.java index 98d87b33c3..f7765d2b44 100644 --- a/org.adempiere.base/src/org/compiere/model/X_AD_Package_Imp_Detail.java +++ b/org.adempiere.base/src/org/compiere/model/X_AD_Package_Imp_Detail.java @@ -29,7 +29,7 @@ public class X_AD_Package_Imp_Detail extends PO implements I_AD_Package_Imp_Deta /** * */ - private static final long serialVersionUID = 20141030L; + private static final long serialVersionUID = 20150818L; /** Standard Constructor */ public X_AD_Package_Imp_Detail (Properties ctx, int AD_Package_Imp_Detail_ID, String trxName) @@ -37,9 +37,9 @@ public class X_AD_Package_Imp_Detail extends PO implements I_AD_Package_Imp_Deta super (ctx, AD_Package_Imp_Detail_ID, trxName); /** if (AD_Package_Imp_Detail_ID == 0) { - setAD_Original_ID (0); setAD_Package_Imp_Detail_ID (0); setAD_Package_Imp_ID (0); + setRecord_ID (0); } */ } @@ -108,26 +108,6 @@ public class X_AD_Package_Imp_Detail extends PO implements I_AD_Package_Imp_Deta return ii.intValue(); } - /** Set Original. - @param AD_Original_ID Original */ - public void setAD_Original_ID (int AD_Original_ID) - { - if (AD_Original_ID < 1) - set_Value (COLUMNNAME_AD_Original_ID, null); - else - set_Value (COLUMNNAME_AD_Original_ID, Integer.valueOf(AD_Original_ID)); - } - - /** Get Original. - @return Original */ - public int getAD_Original_ID () - { - Integer ii = (Integer)get_Value(COLUMNNAME_AD_Original_ID); - if (ii == null) - return 0; - return ii.intValue(); - } - /** Set Imp. Package Detail. @param AD_Package_Imp_Detail_ID Imp. Package Detail */ public void setAD_Package_Imp_Detail_ID (int AD_Package_Imp_Detail_ID) @@ -162,6 +142,11 @@ public class X_AD_Package_Imp_Detail extends PO implements I_AD_Package_Imp_Deta return (String)get_Value(COLUMNNAME_AD_Package_Imp_Detail_UU); } + public org.compiere.model.I_AD_Package_Imp getAD_Package_Imp() throws RuntimeException + { + return (org.compiere.model.I_AD_Package_Imp)MTable.get(getCtx(), org.compiere.model.I_AD_Package_Imp.Table_Name) + .getPO(getAD_Package_Imp_ID(), get_TrxName()); } + /** Set Package Imp.. @param AD_Package_Imp_ID Package Imp. */ public void setAD_Package_Imp_ID (int AD_Package_Imp_ID) @@ -182,6 +167,11 @@ public class X_AD_Package_Imp_Detail extends PO implements I_AD_Package_Imp_Deta return ii.intValue(); } + public org.compiere.model.I_AD_Table getAD_Table() throws RuntimeException + { + return (org.compiere.model.I_AD_Table)MTable.get(getCtx(), org.compiere.model.I_AD_Table.Table_Name) + .getPO(getAD_Table_ID(), get_TrxName()); } + /** Set Table. @param AD_Table_ID Database Table information @@ -222,6 +212,29 @@ public class X_AD_Package_Imp_Detail extends PO implements I_AD_Package_Imp_Deta return (String)get_Value(COLUMNNAME_Name); } + /** Set Record ID. + @param Record_ID + Direct internal record ID + */ + public void setRecord_ID (int Record_ID) + { + if (Record_ID < 0) + set_Value (COLUMNNAME_Record_ID, null); + else + set_Value (COLUMNNAME_Record_ID, Integer.valueOf(Record_ID)); + } + + /** Get Record ID. + @return Direct internal record ID + */ + public int getRecord_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_Record_ID); + if (ii == null) + return 0; + return ii.intValue(); + } + /** Set Success. @param Success Success */ public void setSuccess (String Success) diff --git a/org.adempiere.pipo.legacy/src/org/adempiere/pipo/AbstractElementHandler.java b/org.adempiere.pipo.legacy/src/org/adempiere/pipo/AbstractElementHandler.java index dca8af00e7..b1ff7a6b23 100644 --- a/org.adempiere.pipo.legacy/src/org/adempiere/pipo/AbstractElementHandler.java +++ b/org.adempiere.pipo.legacy/src/org/adempiere/pipo/AbstractElementHandler.java @@ -111,7 +111,7 @@ public abstract class AbstractElementHandler implements ElementHandler { detail.setName(objectName); detail.setAction(objectStatus); detail.setSuccess(result); - detail.setAD_Original_ID(objectID); + detail.setRecord_ID(objectID); detail.setAD_Backup_ID(objectIDBackup); detail.setTableName(tableName); detail.setAD_Table_ID(AD_Table_ID); diff --git a/org.adempiere.pipo/src/org/adempiere/pipo/srv/PipoDictionaryService.java b/org.adempiere.pipo/src/org/adempiere/pipo/srv/PipoDictionaryService.java index 0581761f13..c81d2c8bd2 100644 --- a/org.adempiere.pipo/src/org/adempiere/pipo/srv/PipoDictionaryService.java +++ b/org.adempiere.pipo/src/org/adempiere/pipo/srv/PipoDictionaryService.java @@ -35,8 +35,10 @@ public class PipoDictionaryService implements IDictionaryService { return; } String trxName = Trx.createTrxName(); + X_AD_Package_Imp_Proc adPackageImp = null; + PackIn packIn = null; try { - PackIn packIn = new PackIn(); + packIn = new PackIn(); packIn.setPackageName(context.getBundle().getSymbolicName()); //get package version from file name suffix or bundle header @@ -59,13 +61,11 @@ public class PipoDictionaryService implements IDictionaryService { packIn.setPackageVersion(packageVersion); packIn.setUpdateDictionary(false); - X_AD_Package_Imp_Proc adPackageImp = new X_AD_Package_Imp_Proc(Env.getCtx(), - 0, trxName); - File zipFilepath = packageFile; - if (logger.isLoggable(Level.INFO)) logger.info("zipFilepath->" + zipFilepath); - String parentDir = Zipper.getParentDir(zipFilepath); + adPackageImp = new X_AD_Package_Imp_Proc(Env.getCtx(), 0, null); + if (logger.isLoggable(Level.INFO)) logger.info("zipFilepath->" + packageFile); + String parentDir = Zipper.getParentDir(packageFile); File targetDir = new File(System.getProperty("java.io.tmpdir")); - Zipper.unpackFile(zipFilepath, targetDir); + Zipper.unpackFile(packageFile, targetDir); String dict_file = targetDir + File.separator + parentDir + File.separator + "dict" + File.separator + "PackOut.xml"; @@ -73,14 +73,14 @@ public class PipoDictionaryService implements IDictionaryService { packIn.setPackageDirectory(targetDir + File.separator + parentDir); if (logger.isLoggable(Level.INFO)) logger.info("dict file->" + dict_file); + adPackageImp.setName(packIn.getPackageName()); + adPackageImp.setAD_Package_Source_Type("File"); + packIn.setAD_Package_Imp_Proc(adPackageImp); // call XML Handler String msg = packIn.importXML(dict_file, Env.getCtx(), trxName); - adPackageImp.setName(packIn.getPackageName()); adPackageImp.setDateProcessed(new Timestamp(System.currentTimeMillis())); adPackageImp.setP_Msg(msg); - adPackageImp.setAD_Package_Source_Type("File"); - adPackageImp.saveEx(); Trx.get(trxName, false).commit(); if (logger.isLoggable(Level.INFO)) logger.info("commit " + trxName); @@ -89,6 +89,7 @@ public class PipoDictionaryService implements IDictionaryService { throw e; } finally { Trx.get(trxName, false).close(); + adPackageImp.saveEx(); } } diff --git a/org.adempiere.pipo/src/org/adempiere/pipo2/AbstractElementHandler.java b/org.adempiere.pipo/src/org/adempiere/pipo2/AbstractElementHandler.java index 48fa4f7be5..ca0e3ecb33 100644 --- a/org.adempiere.pipo/src/org/adempiere/pipo2/AbstractElementHandler.java +++ b/org.adempiere.pipo/src/org/adempiere/pipo2/AbstractElementHandler.java @@ -71,7 +71,7 @@ public abstract class AbstractElementHandler implements ElementHandler { impDetail.setType(type); impDetail.setName(""); impDetail.setAction(""); - impDetail.setAD_Original_ID(1); + impDetail.setRecord_ID(1); impDetail.setTableName(tableName); impDetail.setAD_Table_ID(tableId); impDetail.saveEx(getTrxName(ctx)); @@ -98,7 +98,7 @@ public abstract class AbstractElementHandler implements ElementHandler { detail.setName(objectName); detail.setAction(action); detail.setSuccess(result); - detail.setAD_Original_ID(objectID); + detail.setRecord_ID(objectID); ctx.packIn.addImportDetail(detail); } diff --git a/org.adempiere.pipo/src/org/adempiere/pipo2/PackIn.java b/org.adempiere.pipo/src/org/adempiere/pipo2/PackIn.java index d19c0a5542..ed5e7099af 100644 --- a/org.adempiere.pipo/src/org/adempiere/pipo2/PackIn.java +++ b/org.adempiere.pipo/src/org/adempiere/pipo2/PackIn.java @@ -40,6 +40,7 @@ import javax.xml.parsers.SAXParserFactory; import org.compiere.model.MSysConfig; import org.compiere.model.PO; import org.compiere.model.X_AD_Package_Imp_Detail; +import org.compiere.model.X_AD_Package_Imp_Proc; import org.compiere.util.CLogger; import org.compiere.util.Trx; @@ -60,7 +61,8 @@ public class PackIn { private Map columnCache = new HashMap(); private String packageName = null; private String packageVersion = null; - + private X_AD_Package_Imp_Proc packinProc; + private List importDetails; public PackIn() { @@ -284,4 +286,15 @@ public class PackIn { public void setPackageVersion(String packageVersion) { this.packageVersion = packageVersion; } + + public X_AD_Package_Imp_Proc getAD_Package_Imp_Proc() { + if (packinProc.getAD_Package_Imp_Proc_ID() == 0) + packinProc.saveEx(); // we need the ID to set + return packinProc; + } + + public void setAD_Package_Imp_Proc(X_AD_Package_Imp_Proc packinProc) { + this.packinProc = packinProc; + } + } // PackIn diff --git a/org.adempiere.pipo/src/org/adempiere/pipo2/PackInHandler.java b/org.adempiere.pipo/src/org/adempiere/pipo2/PackInHandler.java index 6660d28300..7d6d25f3d1 100644 --- a/org.adempiere.pipo/src/org/adempiere/pipo2/PackInHandler.java +++ b/org.adempiere.pipo/src/org/adempiere/pipo2/PackInHandler.java @@ -175,6 +175,7 @@ public class PackInHandler extends DefaultHandler { packageImp.setCreator(atts.getValue("Creator")); packageImp.setCreatorContact(atts.getValue("CreatorContact")); packageImp.setPK_Status(packageStatus); + packageImp.setAD_Package_Imp_Proc_ID(packIn.getAD_Package_Imp_Proc().getAD_Package_Imp_Proc_ID()); packageImp.saveEx(); AD_Package_Imp_ID = packageImp.getAD_Package_Imp_ID(); @@ -290,16 +291,22 @@ public class PackInHandler extends DefaultHandler { else elementValue = uri + localName; + X_AD_Package_Imp packageImp = new X_AD_Package_Imp(m_ctx.ctx, AD_Package_Imp_ID, null); + packageImp.setProcessed(true); if (elementValue.equals("idempiere")){ processDeferElements(); processDeferFKElements(); - - if (!packageStatus.equals("Completed with errors")) - packageStatus = "Completed successfully"; + + if (!packageStatus.equals("Completed with errors")) { + if (getUnresolvedCount() > 0) { + packageStatus = "Completed - unresolved"; + } else { + packageStatus = "Completed successfully"; + } + } //Update package history log with package status - X_AD_Package_Imp packageImp = new X_AD_Package_Imp(m_ctx.ctx, AD_Package_Imp_ID, null); packageImp.setPK_Status(packageStatus); packageImp.saveEx(); @@ -319,14 +326,12 @@ public class PackInHandler extends DefaultHandler { } catch (RuntimeException re) { packageStatus = "Import Failed"; //Update package history log with package status - X_AD_Package_Imp packageImp = new X_AD_Package_Imp(m_ctx.ctx, AD_Package_Imp_ID, null); packageImp.setPK_Status(packageStatus); packageImp.saveEx(); throw re; } catch (SAXException se) { packageStatus = "Import Failed"; //Update package history log with package status - X_AD_Package_Imp packageImp = new X_AD_Package_Imp(m_ctx.ctx, AD_Package_Imp_ID, null); packageImp.setPK_Status(packageStatus); packageImp.saveEx(); throw se; diff --git a/org.adempiere.pipo/src/org/adempiere/pipo2/PackInProcess.java b/org.adempiere.pipo/src/org/adempiere/pipo2/PackInProcess.java index c257071389..011fe0d1e3 100644 --- a/org.adempiere.pipo/src/org/adempiere/pipo2/PackInProcess.java +++ b/org.adempiere.pipo/src/org/adempiere/pipo2/PackInProcess.java @@ -134,7 +134,8 @@ public class PackInProcess extends SvrProcess { packIn.setPackageName(packageName); packIn.setPackageVersion(packageVersion); packIn.setUpdateDictionary(m_UpdateDictionary); - + packIn.setAD_Package_Imp_Proc(adPackageImp); + // call XML Handler String msg = packIn.importXML(dict_file, getCtx(), get_TrxName()); adPackageImp.setDateProcessed(new Timestamp(System.currentTimeMillis())); diff --git a/org.adempiere.pipo/src/org/adempiere/pipo2/PackRollProcess.java b/org.adempiere.pipo/src/org/adempiere/pipo2/PackRollProcess.java index 9337ba3469..fe2e8d0299 100644 --- a/org.adempiere.pipo/src/org/adempiere/pipo2/PackRollProcess.java +++ b/org.adempiere.pipo/src/org/adempiere/pipo2/PackRollProcess.java @@ -102,7 +102,7 @@ public class PackRollProcess extends SvrProcess { String tableName = packageImpDetail.getTableName(); - int recordID = packageImpDetail.getAD_Original_ID(); + int recordID = packageImpDetail.getRecord_ID(); // determine if record is an update to the original // if record is an update then update record with backup From 0cc46e7e484512e94fa7049931b6c7e5be2c1ee2 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Tue, 18 Aug 2015 17:14:26 -0500 Subject: [PATCH 13/20] IDEMPIERE-2745 2Pack is not creating foreign keys / fix lock --- org.adempiere.pipo/src/org/adempiere/pipo2/PackInHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.adempiere.pipo/src/org/adempiere/pipo2/PackInHandler.java b/org.adempiere.pipo/src/org/adempiere/pipo2/PackInHandler.java index 7d6d25f3d1..70121d9d38 100644 --- a/org.adempiere.pipo/src/org/adempiere/pipo2/PackInHandler.java +++ b/org.adempiere.pipo/src/org/adempiere/pipo2/PackInHandler.java @@ -394,7 +394,7 @@ public class PackInHandler extends DefaultHandler { return; for (int columnID : deferFK) { - MColumn column = MColumn.get(m_ctx.ctx, columnID); + MColumn column = new MColumn(m_ctx.ctx, columnID, m_ctx.trx.getTrxName()); try { Connection conn = m_ctx.trx.getConnection(); DatabaseMetaData md = conn.getMetaData(); From eace9bd6b54901dc6c41d9798b4984497dcb87e8 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Tue, 18 Aug 2015 20:21:24 -0500 Subject: [PATCH 14/20] IDEMPIERE-2771 Improve 2pack tracing for errors / editable pkversion to ease reprocessing of embedded 2pack --- .../oracle/201508181021_IDEMPIERE-2771.sql | 48 +++++++++++++++++++ .../201508181021_IDEMPIERE-2771.sql | 48 +++++++++++++++++++ 2 files changed, 96 insertions(+) diff --git a/migration/i2.1/oracle/201508181021_IDEMPIERE-2771.sql b/migration/i2.1/oracle/201508181021_IDEMPIERE-2771.sql index cf82299c47..7623e91782 100644 --- a/migration/i2.1/oracle/201508181021_IDEMPIERE-2771.sql +++ b/migration/i2.1/oracle/201508181021_IDEMPIERE-2771.sql @@ -492,6 +492,54 @@ UPDATE AD_Field SET SeqNoGrid=50,IsDisplayedGrid='Y' WHERE AD_Field_ID=50030 UPDATE AD_Field SET SeqNoGrid=60,IsDisplayedGrid='Y' WHERE AD_Field_ID=50031 ; +-- Aug 18, 2015 8:16:24 PM COT +UPDATE AD_Tab SET IsReadOnly='N',Updated=TO_DATE('2015-08-18 20:16:24','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=200191 +; + +-- Aug 18, 2015 8:16:39 PM COT +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_DATE('2015-08-18 20:16:39','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203837 +; + +-- Aug 18, 2015 8:16:41 PM COT +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_DATE('2015-08-18 20:16:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203838 +; + +-- Aug 18, 2015 8:16:42 PM COT +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_DATE('2015-08-18 20:16:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203853 +; + +-- Aug 18, 2015 8:16:44 PM COT +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_DATE('2015-08-18 20:16:44','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203841 +; + +-- Aug 18, 2015 8:16:51 PM COT +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_DATE('2015-08-18 20:16:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203839 +; + +-- Aug 18, 2015 8:16:55 PM COT +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_DATE('2015-08-18 20:16:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203850 +; + +-- Aug 18, 2015 8:16:57 PM COT +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_DATE('2015-08-18 20:16:57','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203840 +; + +-- Aug 18, 2015 8:16:59 PM COT +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_DATE('2015-08-18 20:16:59','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203845 +; + +-- Aug 18, 2015 8:17:04 PM COT +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_DATE('2015-08-18 20:17:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203849 +; + +-- Aug 18, 2015 8:17:09 PM COT +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_DATE('2015-08-18 20:17:09','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203854 +; + +-- Aug 18, 2015 8:17:45 PM COT +UPDATE AD_Field SET IsUpdateable='Y', IsAlwaysUpdateable='Y',Updated=TO_DATE('2015-08-18 20:17:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203844 +; + SELECT register_migration_script('201508181021_IDEMPIERE-2771.sql') FROM dual ; diff --git a/migration/i2.1/postgresql/201508181021_IDEMPIERE-2771.sql b/migration/i2.1/postgresql/201508181021_IDEMPIERE-2771.sql index 18e950b743..77402f846c 100644 --- a/migration/i2.1/postgresql/201508181021_IDEMPIERE-2771.sql +++ b/migration/i2.1/postgresql/201508181021_IDEMPIERE-2771.sql @@ -489,6 +489,54 @@ UPDATE AD_Field SET SeqNoGrid=50,IsDisplayedGrid='Y' WHERE AD_Field_ID=50030 UPDATE AD_Field SET SeqNoGrid=60,IsDisplayedGrid='Y' WHERE AD_Field_ID=50031 ; +-- Aug 18, 2015 8:16:24 PM COT +UPDATE AD_Tab SET IsReadOnly='N',Updated=TO_TIMESTAMP('2015-08-18 20:16:24','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=200191 +; + +-- Aug 18, 2015 8:16:39 PM COT +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_TIMESTAMP('2015-08-18 20:16:39','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203837 +; + +-- Aug 18, 2015 8:16:41 PM COT +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_TIMESTAMP('2015-08-18 20:16:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203838 +; + +-- Aug 18, 2015 8:16:42 PM COT +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_TIMESTAMP('2015-08-18 20:16:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203853 +; + +-- Aug 18, 2015 8:16:44 PM COT +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_TIMESTAMP('2015-08-18 20:16:44','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203841 +; + +-- Aug 18, 2015 8:16:51 PM COT +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_TIMESTAMP('2015-08-18 20:16:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203839 +; + +-- Aug 18, 2015 8:16:55 PM COT +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_TIMESTAMP('2015-08-18 20:16:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203850 +; + +-- Aug 18, 2015 8:16:57 PM COT +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_TIMESTAMP('2015-08-18 20:16:57','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203840 +; + +-- Aug 18, 2015 8:16:59 PM COT +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_TIMESTAMP('2015-08-18 20:16:59','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203845 +; + +-- Aug 18, 2015 8:17:04 PM COT +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_TIMESTAMP('2015-08-18 20:17:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203849 +; + +-- Aug 18, 2015 8:17:09 PM COT +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_TIMESTAMP('2015-08-18 20:17:09','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203854 +; + +-- Aug 18, 2015 8:17:45 PM COT +UPDATE AD_Field SET IsUpdateable='Y', IsAlwaysUpdateable='Y',Updated=TO_TIMESTAMP('2015-08-18 20:17:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203844 +; + SELECT register_migration_script('201508181021_IDEMPIERE-2771.sql') FROM dual ; From 1c6eabc3a66a179e610b3444b24094bcd8ae479e Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Tue, 18 Aug 2015 20:27:14 -0500 Subject: [PATCH 15/20] IDEMPIERE-2775 Performance: counting big tables on each insert on AD_Issue --- org.adempiere.base/src/org/compiere/model/MIssue.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/MIssue.java b/org.adempiere.base/src/org/compiere/model/MIssue.java index f6e6416db0..b11570ba91 100644 --- a/org.adempiere.base/src/org/compiere/model/MIssue.java +++ b/org.adempiere.base/src/org/compiere/model/MIssue.java @@ -224,8 +224,8 @@ public class MIssue extends X_AD_Issue setLocal_Host(InetAddress.getLocalHost().toString()); if (system.isAllowStatistics()) { - setStatisticsInfo(system.getStatisticsInfo(true)); - setProfileInfo(system.getProfileInfo(true)); + setStatisticsInfo(system.getStatisticsInfo(false)); + setProfileInfo(system.getProfileInfo(false)); } } // init From 966d02d2fe297e1dd35343004e98161108814585 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Tue, 18 Aug 2015 20:29:15 -0500 Subject: [PATCH 16/20] IDEMPIERE-2771 Improve 2pack tracing for errors / attach embedded 2pack for reprocessing - implement semaphore (120 secs) to process one 2pack at a time --- .../src/org/compiere/model/MSysConfig.java | 5 ++- .../pipo/srv/PipoDictionaryService.java | 38 +++++++++++++++++-- .../src/org/adempiere/pipo2/PackIn.java | 9 +++++ .../org/adempiere/pipo2/PackInHandler.java | 1 + 4 files changed, 48 insertions(+), 5 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/MSysConfig.java b/org.adempiere.base/src/org/compiere/model/MSysConfig.java index 70cb6bb958..e26b2283fd 100644 --- a/org.adempiere.base/src/org/compiere/model/MSysConfig.java +++ b/org.adempiere.base/src/org/compiere/model/MSysConfig.java @@ -39,10 +39,10 @@ import org.compiere.util.DisplayType; */ public class MSysConfig extends X_AD_SysConfig { - /** + /** * */ - private static final long serialVersionUID = 6107779915945715515L; + private static final long serialVersionUID = -2870394087507976203L; public static final String ADDRESS_VALIDATION = "ADDRESS_VALIDATION"; public static final String ALERT_SEND_ATTACHMENT_AS_XLS = "ALERT_SEND_ATTACHMENT_AS_XLS"; @@ -58,6 +58,7 @@ public class MSysConfig extends X_AD_SysConfig public static final String APPLICATION_MAIN_VERSION = "APPLICATION_MAIN_VERSION"; public static final String APPLICATION_MAIN_VERSION_SHOWN = "APPLICATION_MAIN_VERSION_SHOWN"; public static final String APPLICATION_OS_INFO_SHOWN = "APPLICATION_OS_INFO_SHOWN"; + public static final String ATTACH_EMBEDDED_2PACK = "ATTACH_EMBEDDED_2PACK"; public static final String BACKGROUND_JOB_ALLOWED = "BACKGROUND_JOB_ALLOWED"; public static final String BACKGROUND_JOB_BY_DEFAULT = "BACKGROUND_JOB_BY_DEFAULT"; public static final String BACKGROUND_JOB_MAX_IN_SYSTEM = "BACKGROUND_JOB_MAX_IN_SYSTEM"; diff --git a/org.adempiere.pipo/src/org/adempiere/pipo/srv/PipoDictionaryService.java b/org.adempiere.pipo/src/org/adempiere/pipo/srv/PipoDictionaryService.java index c81d2c8bd2..a1f6762dbf 100644 --- a/org.adempiere.pipo/src/org/adempiere/pipo/srv/PipoDictionaryService.java +++ b/org.adempiere.pipo/src/org/adempiere/pipo/srv/PipoDictionaryService.java @@ -13,11 +13,15 @@ package org.adempiere.pipo.srv; import java.io.File; import java.sql.Timestamp; +import java.util.concurrent.Semaphore; +import java.util.concurrent.TimeUnit; import java.util.logging.Level; import org.adempiere.base.IDictionaryService; import org.adempiere.pipo2.PackIn; import org.adempiere.pipo2.Zipper; +import org.compiere.model.MAttachment; +import org.compiere.model.MSysConfig; import org.compiere.model.X_AD_Package_Imp_Proc; import org.compiere.util.CLogger; import org.compiere.util.Env; @@ -28,16 +32,30 @@ public class PipoDictionaryService implements IDictionaryService { CLogger logger = CLogger.getCLogger(PipoDictionaryService.class.getName()); + private final Semaphore semaphore; + + public PipoDictionaryService() { + super(); + semaphore = new Semaphore(1, true); + } + @Override public void merge(BundleContext context, File packageFile) throws Exception { if (packageFile == null || !packageFile.exists()) { logger.info("No PackIn Model found"); return; } - String trxName = Trx.createTrxName(); + String trxName = null; X_AD_Package_Imp_Proc adPackageImp = null; PackIn packIn = null; try { + try { + semaphore.tryAcquire(120, TimeUnit.SECONDS); + } catch (InterruptedException e) { + semaphore.release(); + semaphore.acquire(); + } + trxName = Trx.createTrxName("PipoDS"); packIn = new PackIn(); packIn.setPackageName(context.getBundle().getSymbolicName()); @@ -85,11 +103,25 @@ public class PipoDictionaryService implements IDictionaryService { Trx.get(trxName, false).commit(); if (logger.isLoggable(Level.INFO)) logger.info("commit " + trxName); } catch (Exception e) { + adPackageImp.setP_Msg(e.getLocalizedMessage()); logger.log(Level.SEVERE, "importXML:", e); throw e; } finally { - Trx.get(trxName, false).close(); - adPackageImp.saveEx(); + try { + Trx.get(trxName, false).close(); + } catch (Exception e) {} + semaphore.release(); + adPackageImp.save(); // ignoring exceptions + + if (adPackageImp != null && packIn != null) { + // Add the attachment to the packin for possible reprocessing + if (MSysConfig.getBooleanValue(MSysConfig.ATTACH_EMBEDDED_2PACK, true) || ! packIn.isSuccess()) { + // TODO: This sometimes fails with error No archive storage provider found - because the IAttachmentStore required is still not loaded + MAttachment attachment = new MAttachment (adPackageImp.getCtx(), X_AD_Package_Imp_Proc.Table_ID, adPackageImp.getAD_Package_Imp_Proc_ID(), null); + attachment.addEntry(packageFile); + attachment.save(); // ignoring exceptions + } + } } } diff --git a/org.adempiere.pipo/src/org/adempiere/pipo2/PackIn.java b/org.adempiere.pipo/src/org/adempiere/pipo2/PackIn.java index ed5e7099af..e67b10065c 100644 --- a/org.adempiere.pipo/src/org/adempiere/pipo2/PackIn.java +++ b/org.adempiere.pipo/src/org/adempiere/pipo2/PackIn.java @@ -64,6 +64,7 @@ public class PackIn { private X_AD_Package_Imp_Proc packinProc; private List importDetails; + private boolean success = false; public PackIn() { super(); @@ -297,4 +298,12 @@ public class PackIn { this.packinProc = packinProc; } + public void setSuccess(boolean success) { + this.success = success; + } + + public boolean isSuccess() { + return success; + } + } // PackIn diff --git a/org.adempiere.pipo/src/org/adempiere/pipo2/PackInHandler.java b/org.adempiere.pipo/src/org/adempiere/pipo2/PackInHandler.java index 70121d9d38..176fbbea9b 100644 --- a/org.adempiere.pipo/src/org/adempiere/pipo2/PackInHandler.java +++ b/org.adempiere.pipo/src/org/adempiere/pipo2/PackInHandler.java @@ -303,6 +303,7 @@ public class PackInHandler extends DefaultHandler { packageStatus = "Completed - unresolved"; } else { packageStatus = "Completed successfully"; + packIn.setSuccess(true); } } From 679e2fd06aa4a21fd3464192f05971549fb67b60 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Tue, 18 Aug 2015 21:03:55 -0500 Subject: [PATCH 17/20] IDEMPIERE-2771 Improve 2pack tracing for errors / run role access update at the end --- .../pipo2/handler/FormElementHandler.java | 1 + .../handler/GenericPOElementHandler.java | 13 +++++++++++ .../pipo2/handler/ProcessElementHandler.java | 1 + .../pipo2/handler/RoleElementHandler.java | 1 + .../pipo2/handler/WindowElementHandler.java | 1 + .../pipo2/handler/WorkflowElementHandler.java | 2 ++ .../src/org/adempiere/pipo2/Element.java | 2 ++ .../org/adempiere/pipo2/PackInHandler.java | 22 +++++++++++++++++++ 8 files changed, 43 insertions(+) diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FormElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FormElementHandler.java index 7ce1e19c85..b4aaf0bba1 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FormElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FormElementHandler.java @@ -72,6 +72,7 @@ public class FormElementHandler extends AbstractElementHandler { if (mForm.save(getTrxName(ctx)) == true){ logImportDetail (ctx, impDetail, 1, mForm.getName(), mForm.get_ID(), action); element.recordId = mForm.get_ID(); + element.requireRoleAccessUpdate = true; } else{ logImportDetail (ctx, impDetail, 0, mForm.getName(), mForm.get_ID(), action); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/GenericPOElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/GenericPOElementHandler.java index ed61cc9148..b70ced694f 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/GenericPOElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/GenericPOElementHandler.java @@ -36,6 +36,12 @@ import org.adempiere.pipo2.PackOut; import org.adempiere.pipo2.PackoutItem; import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoFiller; +import org.compiere.model.I_AD_Form; +import org.compiere.model.I_AD_InfoWindow; +import org.compiere.model.I_AD_Process; +import org.compiere.model.I_AD_Role; +import org.compiere.model.I_AD_Window; +import org.compiere.model.I_C_DocType; import org.compiere.model.MColumn; import org.compiere.model.MRole; import org.compiere.model.MTable; @@ -91,6 +97,13 @@ public class GenericPOElementHandler extends AbstractElementHandler { } po.saveEx(); element.recordId = po.get_ID(); + if ( I_AD_Window.Table_Name.equals(tableName) + || I_AD_Process.Table_Name.equals(tableName) + || I_AD_Role.Table_Name.equals(tableName) + || I_AD_Form.Table_Name.equals(tableName) + || I_C_DocType.Table_Name.equals(tableName) + || I_AD_InfoWindow.Table_Name.equals(tableName)) + element.requireRoleAccessUpdate = true; } public void endElement(PIPOContext ctx, Element element) throws SAXException { diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessElementHandler.java index 6baf9d5a95..b7de39c01e 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessElementHandler.java @@ -85,6 +85,7 @@ public class ProcessElementHandler extends AbstractElementHandler { logImportDetail(ctx, impDetail, 1, mProcess.getName(), mProcess .get_ID(), action); element.recordId = mProcess.get_ID(); + element.requireRoleAccessUpdate = true; } else { logImportDetail(ctx, impDetail, 0, mProcess.getName(), mProcess .get_ID(), action); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/RoleElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/RoleElementHandler.java index 2fa373eac7..e209ea966f 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/RoleElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/RoleElementHandler.java @@ -87,6 +87,7 @@ public class RoleElementHandler extends AbstractElementHandler { element.recordId = mRole.getAD_Role_ID(); logImportDetail(ctx, impDetail, 1, mRole.getName(), mRole.get_ID(), action); + element.requireRoleAccessUpdate = true; } else { logImportDetail(ctx, impDetail, 0, mRole.getName(), mRole.get_ID(), diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WindowElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WindowElementHandler.java index 1708039ae2..3911dc6356 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WindowElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WindowElementHandler.java @@ -94,6 +94,7 @@ public class WindowElementHandler extends AbstractElementHandler { .get_ID(), action); windows.add(mWindow.getAD_Window_ID()); element.recordId = mWindow.get_ID(); + element.requireRoleAccessUpdate = true; } else { logImportDetail(ctx, impDetail, 0, mWindow.getName(), mWindow .get_ID(), action); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowElementHandler.java index 8f394348c6..1e07049eef 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowElementHandler.java @@ -91,6 +91,7 @@ public class WorkflowElementHandler extends AbstractElementHandler { .get_ID(), action); workflows.add(mWorkflow.getAD_Workflow_ID()); element.recordId = mWorkflow.get_ID(); + element.requireRoleAccessUpdate = true; } else { log.info("m_Workflow save failure"); logImportDetail(ctx, impDetail, 0, mWorkflow.getName(), mWorkflow @@ -131,6 +132,7 @@ public class WorkflowElementHandler extends AbstractElementHandler { .get_ID(), "Update"); workflows.add(m_Workflow.getAD_Workflow_ID()); element.recordId = m_Workflow.getAD_Workflow_ID(); + element.requireRoleAccessUpdate = true; } else { log.info("m_Workflow update fail"); logImportDetail(ctx, impDetail, 0, m_Workflow.getName(), m_Workflow diff --git a/org.adempiere.pipo/src/org/adempiere/pipo2/Element.java b/org.adempiere.pipo/src/org/adempiere/pipo2/Element.java index 7526facd00..0395b8f32a 100644 --- a/org.adempiere.pipo/src/org/adempiere/pipo2/Element.java +++ b/org.adempiere.pipo/src/org/adempiere/pipo2/Element.java @@ -52,6 +52,8 @@ public class Element { public boolean deferEnd = false; + public boolean requireRoleAccessUpdate = false; + public Map properties = new LinkedHashMap(); public List childrens = new ArrayList(); diff --git a/org.adempiere.pipo/src/org/adempiere/pipo2/PackInHandler.java b/org.adempiere.pipo/src/org/adempiere/pipo2/PackInHandler.java index 176fbbea9b..269a3a4380 100644 --- a/org.adempiere.pipo/src/org/adempiere/pipo2/PackInHandler.java +++ b/org.adempiere.pipo/src/org/adempiere/pipo2/PackInHandler.java @@ -32,7 +32,9 @@ import java.util.logging.Level; import org.adempiere.exceptions.AdempiereException; import org.adempiere.pipo2.exception.DatabaseAccessException; import org.compiere.model.MColumn; +import org.compiere.model.MRole; import org.compiere.model.MTable; +import org.compiere.model.Query; import org.compiere.model.X_AD_Package_Imp; import org.compiere.model.X_AD_Package_Imp_Inst; import org.compiere.util.CLogger; @@ -78,6 +80,7 @@ public class PackInHandler extends DefaultHandler { private Stack stack = new Stack(); private PackIn packIn; private int elementProcessed = 0; + private boolean isUpdateRoleAccess = false; private void init() throws SAXException { @@ -241,6 +244,9 @@ public class PackInHandler extends DefaultHandler { if (! deferFK.contains(element.deferFKColumnID)) deferFK.add(element.deferFKColumnID); } + if (element.requireRoleAccessUpdate) { + isUpdateRoleAccess = true; + } for (Element childElement : element.childrens) { @@ -298,6 +304,8 @@ public class PackInHandler extends DefaultHandler { processDeferFKElements(); + updateRoleAccess(); + if (!packageStatus.equals("Completed with errors")) { if (getUnresolvedCount() > 0) { packageStatus = "Completed - unresolved"; @@ -493,4 +501,18 @@ public class PackInHandler extends DefaultHandler { startElement = b; } } + + private void updateRoleAccess() { + if (!isUpdateRoleAccess) + return; + + List roles = new Query(m_ctx.ctx, MRole.Table_Name, "IsManual='N'", m_ctx.trx.getTrxName()) + .setOnlyActiveRecords(true) + .setOrderBy("AD_Client_ID, Name") + .list(); + for (MRole role : roles) { + role.updateAccessRecords(false); + } + } + } // PackInHandler From 0f6e3abacf877ac5d17fd161896f9f7e0bb6b8f4 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Wed, 19 Aug 2015 07:37:26 -0500 Subject: [PATCH 18/20] IDEMPIERE-1328 Change tab name dynamically / fix issue reported by Claudemir about deleted records and empty tabs --- .../src/org/compiere/model/GridTable.java | 6 +++-- .../adwindow/AbstractADWindowContent.java | 26 ++++++++++++++----- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/GridTable.java b/org.adempiere.base/src/org/compiere/model/GridTable.java index a78f1256ee..efa0eb2967 100644 --- a/org.adempiere.base/src/org/compiere/model/GridTable.java +++ b/org.adempiere.base/src/org/compiere/model/GridTable.java @@ -102,9 +102,11 @@ public class GridTable extends AbstractTableModel /** * */ - private static final long serialVersionUID = -4440415447489133947L; + private static final long serialVersionUID = -3993077765244392901L; public static final String DATA_REFRESH_MESSAGE = "Refreshed"; + public static final String DATA_UPDATE_COPIED_MESSAGE = "UpdateCopied"; + public static final String DATA_INSERTED_MESSAGE = "Inserted"; /** * JDBC Based Buffered Table @@ -2621,7 +2623,7 @@ public class GridTable extends AbstractTableModel // inform if (log.isLoggable(Level.FINE)) log.fine("Current=" + currentRow + ", New=" + m_newRow); fireTableRowsInserted(m_newRow, m_newRow); - fireDataStatusIEvent(copyCurrent ? "UpdateCopied" : "Inserted", ""); + fireDataStatusIEvent(copyCurrent ? DATA_UPDATE_COPIED_MESSAGE : DATA_INSERTED_MESSAGE, ""); if (log.isLoggable(Level.FINE)) log.fine("Current=" + currentRow + ", New=" + m_newRow + " - complete"); return true; } // dataNew diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java index 69864ec096..57c7488536 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java @@ -1337,7 +1337,14 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements if (!detailTab) { String dbInfo = e.getMessage(); - if (! prevdbInfo.equals(dbInfo)) { + String adInfo = e.getAD_Message(); + if ( ! prevdbInfo.equals(dbInfo) + && ( GridTab.DEFAULT_STATUS_MESSAGE.equals(adInfo) + || GridTable.DATA_REFRESH_MESSAGE.equals(adInfo) + || GridTable.DATA_INSERTED_MESSAGE.equals(adInfo) + || GridTable.DATA_UPDATE_COPIED_MESSAGE.equals(adInfo) + ) + ) { prevdbInfo = dbInfo; if (logger.isLoggable(Level.INFO)) logger.info(dbInfo); if (adTabbox.getSelectedGridTab() != null && adTabbox.getSelectedGridTab().isQueryActive()) @@ -1361,13 +1368,20 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements sb.append(Env.getContext(ctx, curWindowNo, "_WinInfo_WindowName", false)).append(": "); if (titleLogic.contains("<")) { // IDEMPIERE-1328 - enable using format or subcolumns on title - if ( getADTab() != null - && getADTab().getADTabpanel(0) != null - && getADTab().getADTabpanel(0).getGridTab() != null + if ( getADTab() != null + && getADTab().getADTabpanel(0) != null + && getADTab().getADTabpanel(0).getGridTab() != null && getADTab().getADTabpanel(0).getGridTab().getTableModel() != null) { GridTab tab = getADTab().getADTabpanel(0).getGridTab(); - PO po = tab.getTableModel().getPO(tab.getCurrentRow()); - titleLogic = Env.parseVariable(titleLogic, po, null, false); + int row = tab.getCurrentRow(); + int cnt = tab.getRowCount(); + boolean inserting = tab.getTableModel().isInserting(); + if (row >= 0 && cnt > 0 && !inserting) { + PO po = tab.getTableModel().getPO(row); + titleLogic = Env.parseVariable(titleLogic, po, null, false); + } else { + titleLogic = Env.parseContext(Env.getCtx(), curWindowNo, titleLogic, false, true); + } } } else { titleLogic = Env.parseContext(Env.getCtx(), curWindowNo, titleLogic, false, true); From 9bb61e344ffb34accd2a4c0a6df69a444ef5f619 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Wed, 19 Aug 2015 10:48:13 -0500 Subject: [PATCH 19/20] IDEMPIERE-2776 List Transaction on financial reports not working for budget and multi-period --- .../src/org/compiere/report/FinReport.java | 98 ++++++++++++++----- 1 file changed, 71 insertions(+), 27 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/report/FinReport.java b/org.adempiere.base/src/org/compiere/report/FinReport.java index 5d86042bc1..2c635eecb2 100644 --- a/org.adempiere.base/src/org/compiere/report/FinReport.java +++ b/org.adempiere.base/src/org/compiere/report/FinReport.java @@ -1538,26 +1538,88 @@ public class FinReport extends SvrProcess for (int col = 0; col < m_columns.length; col++) { insert.append(", "); - // Only relative Period (not calculation or segment value) - if (!(m_columns[col].isColumnTypeRelativePeriod() - && m_columns[col].getRelativePeriodAsInt() == 0)) + // No calculation + if (m_columns[col].isColumnTypeCalculation()) { - insert.append("NULL"); + insert.append("Cast(NULL AS NUMBER)"); continue; } - // Amount Type ... Qty + + // SELECT + StringBuffer select = new StringBuffer ("SELECT "); if (m_lines[line].getPAAmountType() != null) // line amount type overwrites column - insert.append (m_lines[line].getSelectClause (false)); + select.append (m_lines[line].getSelectClause (false)); else if (m_columns[col].getPAAmountType() != null) - insert.append (m_columns[col].getSelectClause (false)); + select.append (m_columns[col].getSelectClause (false)); else { - insert.append("NULL"); + insert.append("Cast(NULL AS NUMBER)"); continue; } + + if (p_PA_ReportCube_ID > 0) { + select.append(" FROM Fact_Acct_Summary fb WHERE ").append(p_AdjPeriodToExclude).append("DateAcct "); + } //report cube + else { + // Get Period info + select.append(" FROM Fact_Acct fb WHERE ").append(p_AdjPeriodToExclude).append("TRUNC(DateAcct) "); + } + FinReportPeriod frp = getPeriod (m_columns[col].getRelativePeriod()); + if (m_lines[line].getPAPeriodType() != null) // line amount type overwrites column + { + if (m_lines[line].isPeriod()) + select.append(frp.getPeriodWhere()); + else if (m_lines[line].isYear()) + select.append(frp.getYearWhere()); + else if (m_lines[line].isNatural()) + select.append(frp.getNaturalWhere("fb")); + else + select.append(frp.getTotalWhere()); + } + else if (m_columns[col].getPAPeriodType() != null) + { + if (m_columns[col].isPeriod()) + select.append(frp.getPeriodWhere()); + else if (m_columns[col].isYear()) + select.append(frp.getYearWhere()); + else if (m_columns[col].isNatural()) + select.append(frp.getNaturalWhere("fb")); + else + select.append(frp.getTotalWhere()); + } + // Link + select.append(" AND fb.Fact_Acct_ID=x.Fact_Acct_ID"); + // PostingType + if (!m_lines[line].isPostingType()) // only if not defined on line + { + String PostingType = m_columns[col].getPostingType(); + if (PostingType != null && PostingType.length() > 0) + select.append(" AND fb.PostingType='").append(PostingType).append("'"); + // globalqss - CarlosRuiz + if (MReportColumn.POSTINGTYPE_Budget.equals(PostingType)) { + if (m_columns[col].getGL_Budget_ID() > 0) + select.append(" AND GL_Budget_ID=" + m_columns[col].getGL_Budget_ID()); + } + // end globalqss + } + // Report Where + String s = m_report.getWhereClause(); + if (s != null && s.length() > 0) + select.append(" AND ").append(s); + // Limited Segment Values + if (m_columns[col].isColumnTypeSegmentValue()) + select.append(m_columns[col].getWhereClause(p_PA_Hierarchy_ID)); + + // Parameter Where + select.append(m_parameterWhere); + if (log.isLoggable(Level.FINEST)) + log.finest("Col=" + col + ", Line=" + line + ": " + select); + // + insert.append("(").append(select).append(")"); } + // - insert.append(" FROM Fact_Acct WHERE ") + insert.append(" FROM Fact_Acct x WHERE ") .append(m_lines[line].getWhereClause(p_PA_Hierarchy_ID)); // (sources, posting type) // Report Where String s = m_report.getWhereClause(); @@ -1569,24 +1631,6 @@ public class FinReport extends SvrProcess if (p_PA_ReportCube_ID > 0) whereClause = whereClause.replaceAll(" AND PA_ReportCube_ID=" + p_PA_ReportCube_ID, ""); insert.append(whereClause); // IDEMPIERE-130 - - // Period restriction - FinReportPeriod frp = getPeriod (0); - insert.append(" AND TRUNC(DateAcct) ") - .append(frp.getPeriodWhere()); - // PostingType ?? -// if (!m_lines[line].isPostingType()) // only if not defined on line -// { -// String PostingType = m_columns[col].getPostingType(); -// if (PostingType != null && PostingType.length() > 0) -// insert.append(" AND PostingType='").append(PostingType).append("'"); -// // globalqss - CarlosRuiz -// if (PostingType.equals(MReportColumn.POSTINGTYPE_Budget)) { -// if (m_columns[col].getGL_Budget_ID() > 0) -// select.append(" AND GL_Budget_ID=" + m_columns[col].getGL_Budget_ID()); -// } -// // end globalqss -// } int no = DB.executeUpdate(insert.toString(), get_TrxName()); if (log.isLoggable(Level.FINEST)) log.finest("Trx #=" + no + " - " + insert); From 6d4e756e126b1572889dce9ca2ea6594b85cbefe Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Wed, 19 Aug 2015 13:40:48 -0500 Subject: [PATCH 20/20] IDEMPIERE-2766 Error on total open balance when void POS Order with Cash Payment Rule --- .../src/org/compiere/model/MInvoice.java | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/MInvoice.java b/org.adempiere.base/src/org/compiere/model/MInvoice.java index ad7c08e171..bab3f7d96c 100644 --- a/org.adempiere.base/src/org/compiere/model/MInvoice.java +++ b/org.adempiere.base/src/org/compiere/model/MInvoice.java @@ -2358,23 +2358,7 @@ public class MInvoice extends X_C_Invoice implements DocAction MPeriod.testPeriodOpen(getCtx(), reversalDate, getC_DocType_ID(), getAD_Org_ID()); // - MAllocationHdr[] allocations = MAllocationHdr.getOfInvoice(getCtx(), - getC_Invoice_ID(), get_TrxName()); - for (int i = 0; i < allocations.length; i++) - { - if (accrual) - { - allocations[i].setDocAction(DocAction.ACTION_Reverse_Accrual); - allocations[i].reverseAccrualIt(); - allocations[i].saveEx(get_TrxName()); - } - else - { - allocations[i].setDocAction(DocAction.ACTION_Reverse_Correct); - allocations[i].reverseCorrectIt(); - allocations[i].saveEx(get_TrxName()); - } - } + reverseAllocations(accrual, getC_Invoice_ID()); // Reverse/Delete Matching if (!isSOTrx()) { @@ -2462,6 +2446,9 @@ public class MInvoice extends X_C_Invoice implements DocAction m_processMsg = "Reversal ERROR: " + reversal.getProcessMsg(); return null; } + // + reverseAllocations(accrual, reversal.getC_Invoice_ID()); + reversal.setC_Payment_ID(0); reversal.setIsPaid(true); reversal.closeIt(); @@ -2529,6 +2516,19 @@ public class MInvoice extends X_C_Invoice implements DocAction return reversal; } + private void reverseAllocations(boolean accrual, int invoiceID) { + for (MAllocationHdr allocation : MAllocationHdr.getOfInvoice(getCtx(), invoiceID, get_TrxName())) { + if (accrual) { + allocation.setDocAction(DocAction.ACTION_Reverse_Accrual); + allocation.reverseAccrualIt(); + } else { + allocation.setDocAction(DocAction.ACTION_Reverse_Correct); + allocation.reverseCorrectIt(); + } + allocation.saveEx(get_TrxName()); + } + } + /** * Reverse Accrual - none * @return false