From 26086d100e348274322b856c1af6e797a946ee82 Mon Sep 17 00:00:00 2001 From: Deepak Pansheriya Date: Fri, 10 Aug 2012 23:10:57 +0530 Subject: [PATCH] Ticket #1001003: Making grid user and system customizable --- ...IDEMPIERE-364_Customizable_Grid_oracle.sql | 368 +++++++++ .../873_IDEMPIERE-364_AD_Field_oracle.sql | 30 + ...PIERE-364_Customizable_Grid_postgresql.sql | 367 +++++++++ .../873_IDEMPIERE-364_AD_Field_postgresql.sql | 11 + .../model.generator.launch | 64 +- .../org/compiere/process/TabCreateFields.java | 4 +- .../model/I_AD_Tab_Customization.java | 103 +++ .../adempiere/model/MTabCustomization.java | 36 + .../model/X_AD_Tab_Customization.java | 188 +++++ .../adempiere/util/ModelClassGenerator.java | 2 +- .../util/ModelInterfaceGenerator.java | 2 +- .../src/org/compiere/model/GridField.java | 30 +- .../src/org/compiere/model/GridFieldVO.java | 19 +- .../src/org/compiere/model/GridTabVO.java | 4 +- .../src/org/compiere/model/GridTable.java | 1 - .../src/org/compiere/model/I_AD_Field.java | 18 + .../src/org/compiere/model/X_AD_Field.java | 38 + .../server.product.launch | 66 +- .../webui/component/AbstractADTab.java | 6 +- .../webui/component/CWindowToolbar.java | 14 +- .../adempiere/webui/component/GridPanel.java | 134 +++- .../component/GridTabListItemRenderer.java | 69 +- .../webui/component/GridTabRowRenderer.java | 67 +- .../adempiere/webui/component/ListPanel.java | 86 +- .../webui/event/ToolbarListener.java | 5 + .../org/adempiere/webui/panel/ADTabpanel.java | 8 +- .../webui/panel/AbstractADWindowPanel.java | 39 +- .../webui/panel/CustomizeGridViewPanel.java | 754 ++++++++++++++++++ .../webui/window/CustomizeGridViewDialog.java | 66 ++ 29 files changed, 2438 insertions(+), 161 deletions(-) create mode 100644 migration/360lts-release/oracle/872_IDEMPIERE-364_Customizable_Grid_oracle.sql create mode 100644 migration/360lts-release/oracle/873_IDEMPIERE-364_AD_Field_oracle.sql create mode 100644 migration/360lts-release/postgresql/872_IDEMPIERE-364_Customizable_Grid_postgresql.sql create mode 100644 migration/360lts-release/postgresql/873_IDEMPIERE-364_AD_Field_postgresql.sql create mode 100644 org.adempiere.base/src/org/adempiere/model/I_AD_Tab_Customization.java create mode 100644 org.adempiere.base/src/org/adempiere/model/MTabCustomization.java create mode 100644 org.adempiere.base/src/org/adempiere/model/X_AD_Tab_Customization.java create mode 100644 org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/CustomizeGridViewPanel.java create mode 100644 org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/CustomizeGridViewDialog.java diff --git a/migration/360lts-release/oracle/872_IDEMPIERE-364_Customizable_Grid_oracle.sql b/migration/360lts-release/oracle/872_IDEMPIERE-364_Customizable_Grid_oracle.sql new file mode 100644 index 0000000000..87003f6910 --- /dev/null +++ b/migration/360lts-release/oracle/872_IDEMPIERE-364_Customizable_Grid_oracle.sql @@ -0,0 +1,368 @@ +-- Aug 10, 2012 9:07:09 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Table (IsSecurityEnabled,AccessLevel,LoadSeq,AD_Table_ID,IsHighVolume,ImportTable,IsView,IsChangeLog,EntityType,CopyColumnsFromTable,ReplicationType,AD_Table_UU,IsCentrallyMaintained,IsDeleteable,TableName,Description,Name,AD_Client_ID,IsActive,AD_Org_ID,Updated,CreatedBy,UpdatedBy,Created) VALUES ('N','4',0,200008,'N','N','N','N','D','N','L','d37ad1ee-3036-4f1b-bbcf-f565aad54351','Y','Y','AD_Tab_Customization','Grid user customization','Tab Customization',0,'Y',0,TO_DATE('2012-08-10 21:07:08','YYYY-MM-DD HH24:MI:SS'),100,100,TO_DATE('2012-08-10 21:07:08','YYYY-MM-DD HH24:MI:SS')) +; + +-- Aug 10, 2012 9:07:09 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Table_Trl (AD_Language,AD_Table_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Table_Trl_UU ) SELECT l.AD_Language,t.AD_Table_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Table t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Table_ID=200008 AND NOT EXISTS (SELECT * FROM AD_Table_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Table_ID=t.AD_Table_ID) +; + +-- Aug 10, 2012 9:07:10 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Sequence (StartNewYear,CurrentNextSys,IsTableID,StartNo,CurrentNext,IsAudited,IsAutoSequence,AD_Sequence_ID,AD_Sequence_UU,Description,Name,IncrementNo,AD_Org_ID,AD_Client_ID,Created,CreatedBy,Updated,UpdatedBy,IsActive) VALUES ('N',50000,'Y',1000000,1000000,'N','Y',200009,'7efd073c-23e4-48ef-8b1a-66e1d666dbef','Table AD_Tab_Customization','AD_Tab_Customization',1,0,0,TO_DATE('2012-08-10 21:07:09','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2012-08-10 21:07:09','YYYY-MM-DD HH24:MI:SS'),100,'Y') +; + +-- Aug 10, 2012 9:11:43 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,200008,200254,'U','Y','N','N',0,'N',10,'N',19,'N','N',102,'N','Y','acccad07-6b1b-4a90-b49a-f2e6b2dc0b8e','N','N','N','AD_Client_ID','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.','Client','N',100,TO_DATE('2012-08-10 21:11:42','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_DATE('2012-08-10 21:11:42','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:11:43 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200254 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:14:34 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,200008,200255,'U','Y','N','N',0,'N',10,'N',19,'N','N',113,'N','Y','09102aa5-35f2-4f01-88d6-f13349ddf85f','N','N','N','AD_Org_ID','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.','Organization','N',100,TO_DATE('2012-08-10 21:14:33','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_DATE('2012-08-10 21:14:33','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:14:34 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200255 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:28:15 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Element (ColumnName,AD_Element_ID,EntityType,Name,PrintName,AD_Element_UU,AD_Client_ID,Created,Updated,AD_Org_ID,CreatedBy,UpdatedBy,IsActive) VALUES ('AD_Tab_Customization_ID',200081,'D','Tab Customization','Tab Customization','d61e6f5a-8c73-4b19-8983-f91d2d2ce8d6',0,TO_DATE('2012-08-10 21:28:14','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2012-08-10 21:28:14','YYYY-MM-DD HH24:MI:SS'),0,100,100,'Y') +; + +-- Aug 10, 2012 9:28:15 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Description,Name,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Element_Trl_UU ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Description,t.Name,t.PrintName,t.PO_Name,t.PO_PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=200081 AND NOT EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Element_ID=t.AD_Element_ID) +; + +-- Aug 10, 2012 9:28:52 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,200008,200256,'U','N','N','N',0,'N',10,'N',13,'N','Y',200081,'N','Y','3b84e2e6-fe63-40a6-bb7d-d4bcc5691e94','N','N','N','AD_Tab_Customization_ID','Tab Customization','N',100,TO_DATE('2012-08-10 21:28:51','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_DATE('2012-08-10 21:28:51','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:28:52 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200256 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:29:53 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,200008,200257,'U','N','N','N',0,'N',22,'N',19,'N','N',125,'N','Y','58805cb1-51c3-47a0-ac10-338e64ff53d6','N','Y','N','AD_Tab_ID','Tab within a Window','The Tab indicates a tab that displays within a window.','Tab','Y',100,TO_DATE('2012-08-10 21:29:52','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_DATE('2012-08-10 21:29:52','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:29:53 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200257 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:30:33 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,200008,200258,'U','Y','N','N',0,'N',22,'N',19,'N','N',138,'N','Y','84795887-a568-4ef3-9a02-1b5e3e7a5d0c','N','Y','N','AD_User_ID','User within the system - Internal or Business Partner Contact','The User identifies a unique user in the system. This could be an internal user or a business partner contact','User/Contact','Y',100,TO_DATE('2012-08-10 21:30:32','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_DATE('2012-08-10 21:30:32','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:30:33 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200258 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:31:20 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,200008,200259,'U','Y','N','N',0,'N',7,'N',16,'N','N',245,'N','Y','e2e511e1-7f19-4368-9043-2b62e42023e5','N','Y','N','Created','Date this record was created','The Created field indicates the date that this record was created.','Created','N',100,TO_DATE('2012-08-10 21:31:19','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_DATE('2012-08-10 21:31:19','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:31:20 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200259 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:32:10 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,AD_Reference_Value_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,200008,200260,'U',110,'Y','N','N',0,'N',10,'N',18,'N','N',246,'N','Y','161e2f80-1cce-4f35-b16d-f19804b684d3','N','Y','N','CreatedBy','User who created this records','The Created By field indicates the user who created this record.','Created By','N',100,TO_DATE('2012-08-10 21:32:10','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_DATE('2012-08-10 21:32:10','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:32:10 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200260 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:32:52 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Element (ColumnName,AD_Element_ID,EntityType,Name,PrintName,AD_Element_UU,AD_Client_ID,Created,Updated,AD_Org_ID,CreatedBy,UpdatedBy,IsActive) VALUES ('Custom',200082,'D','Custom','Custom','a9bece93-c6d9-4619-b782-13038c21ac3b',0,TO_DATE('2012-08-10 21:32:51','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2012-08-10 21:32:51','YYYY-MM-DD HH24:MI:SS'),0,100,100,'Y') +; + +-- Aug 10, 2012 9:32:52 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Description,Name,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Element_Trl_UU ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Description,t.Name,t.PrintName,t.PO_Name,t.PO_PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=200082 AND NOT EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Element_ID=t.AD_Element_ID) +; + +-- Aug 10, 2012 9:33:41 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,200008,200261,'U','Y','N','N',0,'N',2000,'N',10,'N','N',200082,'N','Y','3be04407-eba4-4afe-8e37-c151944231f8','N','Y','N','Custom','Custom','Y',100,TO_DATE('2012-08-10 21:33:40','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_DATE('2012-08-10 21:33:40','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:33:41 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200261 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:34:13 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,200008,200262,'U','Y','N','N',0,'N',1,'N',20,'N','N',348,'N','Y','20d47288-2df0-4720-9b30-4fd92748044e','N','Y','N','IsActive','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.','Active','N',100,TO_DATE('2012-08-10 21:34:12','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_DATE('2012-08-10 21:34:12','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:34:13 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200262 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:34:45 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,200008,200263,'U','Y','N','N',0,'N',7,'N',16,'N','N',607,'N','Y','446e4633-c822-46e1-9971-dfb5d61c1d3d','N','Y','N','Updated','Date this record was updated','The Updated field indicates the date that this record was updated.','Updated','N',100,TO_DATE('2012-08-10 21:34:41','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_DATE('2012-08-10 21:34:41','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:34:45 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200263 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:37:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,AD_Reference_Value_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,200008,200264,'U',110,'Y','N','N',0,'N',10,'N',18,'N','N',608,'N','Y','37526f39-0004-42aa-9943-44a376298a0c','N','Y','N','UpdatedBy','User who updated this records','The Updated By field indicates the user who updated this record.','Updated By','N',100,TO_DATE('2012-08-10 21:37:14','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_DATE('2012-08-10 21:37:14','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:37:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200264 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:38:15 PM IST +-- Customizable Grid View IDEMPIERE-364 +CREATE TABLE AD_Tab_Customization (AD_Client_ID NUMBER(10) NOT NULL, AD_Org_ID NUMBER(10) NOT NULL, AD_Tab_Customization_ID NUMBER(10) DEFAULT NULL , AD_Tab_ID NUMBER(10) DEFAULT NULL , AD_User_ID NUMBER(10) NOT NULL, Created DATE NOT NULL, CreatedBy NUMBER(10) NOT NULL, Custom NVARCHAR2(2000) NOT NULL, IsActive CHAR(1) CHECK (IsActive IN ('Y','N')) NOT NULL, Updated DATE NOT NULL, UpdatedBy NUMBER(10) NOT NULL, CONSTRAINT AD_Tab_Customization_Key PRIMARY KEY (AD_Tab_Customization_ID)) +; + +-- Aug 10, 2012 9:45:32 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Element (ColumnName,AD_Element_ID,EntityType,Name,PrintName,AD_Element_UU,AD_Client_ID,Created,Updated,AD_Org_ID,CreatedBy,UpdatedBy,IsActive) VALUES ('IsDisplayedGrid',200083,'D','Show in Grid','Show in Grid','7bd94f01-3515-4e9d-a86c-580335a4f979',0,TO_DATE('2012-08-10 21:45:32','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2012-08-10 21:45:32','YYYY-MM-DD HH24:MI:SS'),0,100,100,'Y') +; + +-- Aug 10, 2012 9:45:32 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Description,Name,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Element_Trl_UU ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Description,t.Name,t.PrintName,t.PO_Name,t.PO_PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=200083 AND NOT EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Element_ID=t.AD_Element_ID) +; + +-- Aug 10, 2012 9:47:13 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,DefaultValue,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,107,200265,'U','N','N','N',0,'N',1,'N',20,'N','N',200083,'N','Y','0eacadc5-a92e-4ca2-a1f7-ca9e463bc34f','N','Y','N','IsDisplayedGrid','Y','Show in Grid','Y',100,TO_DATE('2012-08-10 21:47:13','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_DATE('2012-08-10 21:47:13','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:47:13 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200265 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:49:01 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Element (ColumnName,AD_Element_ID,EntityType,Name,PrintName,AD_Element_UU,AD_Client_ID,Created,Updated,AD_Org_ID,CreatedBy,UpdatedBy,IsActive) VALUES ('SeqNoGrid',200084,'D','Grid Sequence No','Grid Sequence No','fc7dd770-a99b-4e41-955f-80397ae579eb',0,TO_DATE('2012-08-10 21:49:00','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2012-08-10 21:49:00','YYYY-MM-DD HH24:MI:SS'),0,100,100,'Y') +; + +-- Aug 10, 2012 9:49:01 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Description,Name,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Element_Trl_UU ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Description,t.Name,t.PrintName,t.PO_Name,t.PO_PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=200084 AND NOT EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Element_ID=t.AD_Element_ID) +; + +-- Aug 10, 2012 9:50:05 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,DefaultValue,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,107,200266,'U','N','N','N',0,'N',22,'N',11,'N','N',200084,'N','Y','363b94b4-d830-4fdc-83db-bc3de77f02ab','N','Y','N','SeqNoGrid','@SQL=SELECT NVL(MAX(GridSeqNo),0)+10 AS DefaultValue FROM AD_Field WHERE AD_Tab_ID=@AD_Tab_ID@','Grid Sequence No','Y',100,TO_DATE('2012-08-10 21:50:04','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_DATE('2012-08-10 21:50:04','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:50:05 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200266 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:50:21 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Column SET DefaultValue='@SQL=SELECT NVL(MAX(SeqNoGrid),0)+10 AS DefaultValue FROM AD_Field WHERE AD_Tab_ID=@AD_Tab_ID@',Updated=TO_DATE('2012-08-10 21:50:21','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200266 +; + +-- Aug 10, 2012 9:50:39 PM IST +-- Customizable Grid View IDEMPIERE-364 +ALTER TABLE AD_Field ADD SeqNoGrid NUMBER(10) DEFAULT NULL +; + +-- Aug 10, 2012 9:51:24 PM IST +-- Customizable Grid View IDEMPIERE-364 +ALTER TABLE AD_Field ADD IsDisplayedGrid CHAR(1) DEFAULT 'Y' CHECK (IsDisplayedGrid IN ('Y','N')) +; + +-- Aug 10, 2012 9:52:07 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,EntityType,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,AD_Client_ID,CreatedBy,Updated,IsActive) VALUES ('N',107,36,'N','N',60409,'Y',200273,'N','D','AD_Field_UU','N','Y','71784d16-dd0c-4504-b837-279dacf7ef42',100,0,TO_DATE('2012-08-10 21:52:06','YYYY-MM-DD HH24:MI:SS'),0,100,TO_DATE('2012-08-10 21:52:06','YYYY-MM-DD HH24:MI:SS'),'Y') +; + +-- Aug 10, 2012 9:52:07 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=200273 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID) +; + +-- Aug 10, 2012 9:52:08 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,EntityType,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,AD_Client_ID,CreatedBy,Updated,IsActive) VALUES ('N',107,22,'N','N',200266,'Y',200274,'N','U','Grid Sequence No','N','Y','ae7dc496-8beb-430b-88d3-d684612f8240',100,0,TO_DATE('2012-08-10 21:52:07','YYYY-MM-DD HH24:MI:SS'),0,100,TO_DATE('2012-08-10 21:52:07','YYYY-MM-DD HH24:MI:SS'),'Y') +; + +-- Aug 10, 2012 9:52:08 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=200274 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID) +; + +-- Aug 10, 2012 9:52:09 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,Help,EntityType,Description,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,AD_Client_ID,CreatedBy,Updated,IsActive) VALUES ('N',107,255,'N','N',54359,'Y',200275,'N','Fully qualified class name that implements the InfoFactory interface. This can be use to provide custom Info class for column.','D','Fully qualified class name that implements the InfoFactory interface','Info Factory Class','N','Y','bc2e9a27-a0dd-432d-80bf-1903085ec192',100,0,TO_DATE('2012-08-10 21:52:08','YYYY-MM-DD HH24:MI:SS'),0,100,TO_DATE('2012-08-10 21:52:08','YYYY-MM-DD HH24:MI:SS'),'Y') +; + +-- Aug 10, 2012 9:52:09 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=200275 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID) +; + +-- Aug 10, 2012 9:52:09 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,EntityType,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,AD_Client_ID,CreatedBy,Updated,IsActive) VALUES ('N',107,1,'N','N',200265,'Y',200276,'N','U','Show in Grid','N','Y','26931797-3bde-42ae-acfc-e61ab4948abd',100,0,TO_DATE('2012-08-10 21:52:09','YYYY-MM-DD HH24:MI:SS'),0,100,TO_DATE('2012-08-10 21:52:09','YYYY-MM-DD HH24:MI:SS'),'Y') +; + +-- Aug 10, 2012 9:52:09 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=200276 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID) +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=140,IsDisplayed='Y' WHERE AD_Field_ID=200276 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=150,IsDisplayed='Y' WHERE AD_Field_ID=924 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=160,IsDisplayed='Y' WHERE AD_Field_ID=133 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=170,IsDisplayed='Y' WHERE AD_Field_ID=136 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=180,IsDisplayed='Y' WHERE AD_Field_ID=142 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=190,IsDisplayed='Y' WHERE AD_Field_ID=137 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=200,IsDisplayed='Y' WHERE AD_Field_ID=200274 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=210,IsDisplayed='Y' WHERE AD_Field_ID=139 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=220,IsDisplayed='Y' WHERE AD_Field_ID=138 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=230,IsDisplayed='Y' WHERE AD_Field_ID=8343 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=240,IsDisplayed='Y' WHERE AD_Field_ID=140 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=250,IsDisplayed='Y' WHERE AD_Field_ID=141 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=260,IsDisplayed='Y' WHERE AD_Field_ID=13425 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=270,IsDisplayed='Y' WHERE AD_Field_ID=54401 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=280,IsDisplayed='Y' WHERE AD_Field_ID=54402 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=290,IsDisplayed='Y' WHERE AD_Field_ID=13424 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=300,IsDisplayed='Y' WHERE AD_Field_ID=62468 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=310,IsDisplayed='Y' WHERE AD_Field_ID=53280 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=320,IsDisplayed='Y' WHERE AD_Field_ID=200273 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=330,IsDisplayed='Y' WHERE AD_Field_ID=200275 +; + +-- Aug 10, 2012 9:53:35 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET IsSameLine='Y',Updated=TO_DATE('2012-08-10 21:53:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200274 +; + +-- Aug 10, 2012 9:53:58 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET IsSameLine='Y',Updated=TO_DATE('2012-08-10 21:53:58','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200276 +; + +-- Aug 10, 2012 9:57:04 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Tab (IsSingleRow,AD_Window_ID,SeqNo,IsTranslationTab,IsSortTab,AD_Table_ID,ImportFields,HasTree,IsReadOnly,IsInfoTab,AD_ColumnSortYesNo_ID,IsInsertRecord,IsAdvancedTab,TabLevel,AD_Tab_UU,EntityType,Name,Description,AD_Tab_ID,AD_ColumnSortOrder_ID,AD_Client_ID,AD_Org_ID,Created,CreatedBy,Updated,UpdatedBy,Processing,IsActive) VALUES ('N',102,65,'N','Y',107,'N','N','N','N',200265,'Y','N',2,'27d1dcc7-2696-45e2-bbf8-6c1f51c3e48f','U','Grid Sequence','Defined field order for grid layout',200009,200266,0,0,TO_DATE('2012-08-10 21:57:03','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2012-08-10 21:57:03','YYYY-MM-DD HH24:MI:SS'),100,'N','Y') +; + +-- Aug 10, 2012 9:57:04 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Tab_Trl (AD_Language,AD_Tab_ID, Help,CommitWarning,Name,Description, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Tab_Trl_UU ) SELECT l.AD_Language,t.AD_Tab_ID, t.Help,t.CommitWarning,t.Name,t.Description, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Tab t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Tab_ID=200009 AND NOT EXISTS (SELECT * FROM AD_Tab_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Tab_ID=t.AD_Tab_ID) +; + diff --git a/migration/360lts-release/oracle/873_IDEMPIERE-364_AD_Field_oracle.sql b/migration/360lts-release/oracle/873_IDEMPIERE-364_AD_Field_oracle.sql new file mode 100644 index 0000000000..0fd654c947 --- /dev/null +++ b/migration/360lts-release/oracle/873_IDEMPIERE-364_AD_Field_oracle.sql @@ -0,0 +1,30 @@ +CREATE OR REPLACE VIEW AD_FIELD_V +AS +SELECT t.AD_Window_ID, f.AD_Tab_ID, f.AD_Field_ID, tbl.AD_Table_ID, f.AD_Column_ID, + f.NAME, f.Description, f.Help, f.IsDisplayed, f.DisplayLogic, f.DisplayLength, + f.SeqNo, f.SortNo, f.IsSameLine, f.IsHeading, f.IsFieldOnly, f.IsReadOnly, + f.IsEncrypted AS IsEncryptedField, f.ObscureType, + c.ColumnName, c.ColumnSQL, c.FieldLength, c.VFormat, + COALESCE(f.DefaultValue, c.DefaultValue) AS DefaultValue, + c.IsKey, c.IsParent, + COALESCE(f.IsMandatory, c.IsMandatory) AS IsMandatory, + c.IsIdentifier, c.IsTranslated, c.AD_Reference_Value_ID, + c.Callout, COALESCE(f.AD_Reference_ID, c.AD_Reference_ID) AS AD_Reference_ID, + c.AD_Val_Rule_ID, c.AD_Process_ID, c.IsAlwaysUpdateable, + c.ReadOnlyLogic, c.MandatoryLogic, c.IsUpdateable, c.IsEncrypted AS IsEncryptedColumn, + c.IsSelectionColumn, + tbl.TableName, c.ValueMin, c.ValueMax, + fg.NAME AS FieldGroup, vr.Code AS ValidationCode, + f.Included_Tab_ID, fg.FieldGroupType, + f.isdisplayedgrid, + f.seqnogrid +FROM AD_FIELD f + INNER JOIN AD_TAB t ON (f.AD_Tab_ID = t.AD_Tab_ID) + LEFT OUTER JOIN AD_FIELDGROUP fg ON (f.AD_FieldGroup_ID = fg.AD_FieldGroup_ID) + LEFT OUTER JOIN AD_COLUMN c ON (f.AD_Column_ID = c.AD_Column_ID) + INNER JOIN AD_TABLE tbl ON (c.AD_Table_ID = tbl.AD_Table_ID) + INNER JOIN AD_REFERENCE r ON (c.AD_Reference_ID = r.AD_Reference_ID) + LEFT OUTER JOIN AD_VAL_RULE vr ON (c.AD_Val_Rule_ID=vr.AD_Val_Rule_ID) +WHERE f.IsActive = 'Y' + AND c.IsActive = 'Y' +; diff --git a/migration/360lts-release/postgresql/872_IDEMPIERE-364_Customizable_Grid_postgresql.sql b/migration/360lts-release/postgresql/872_IDEMPIERE-364_Customizable_Grid_postgresql.sql new file mode 100644 index 0000000000..84d840e0e0 --- /dev/null +++ b/migration/360lts-release/postgresql/872_IDEMPIERE-364_Customizable_Grid_postgresql.sql @@ -0,0 +1,367 @@ +-- Aug 10, 2012 9:07:09 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Table (IsSecurityEnabled,AccessLevel,LoadSeq,AD_Table_ID,IsHighVolume,ImportTable,IsView,IsChangeLog,EntityType,CopyColumnsFromTable,ReplicationType,AD_Table_UU,IsCentrallyMaintained,IsDeleteable,TableName,Description,Name,AD_Client_ID,IsActive,AD_Org_ID,Updated,CreatedBy,UpdatedBy,Created) VALUES ('N','4',0,200008,'N','N','N','N','D','N','L','d37ad1ee-3036-4f1b-bbcf-f565aad54351','Y','Y','AD_Tab_Customization','Grid user customization','Tab Customization',0,'Y',0,TO_TIMESTAMP('2012-08-10 21:07:08','YYYY-MM-DD HH24:MI:SS'),100,100,TO_TIMESTAMP('2012-08-10 21:07:08','YYYY-MM-DD HH24:MI:SS')) +; + +-- Aug 10, 2012 9:07:09 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Table_Trl (AD_Language,AD_Table_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Table_Trl_UU ) SELECT l.AD_Language,t.AD_Table_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Table t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Table_ID=200008 AND NOT EXISTS (SELECT * FROM AD_Table_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Table_ID=t.AD_Table_ID) +; + +-- Aug 10, 2012 9:07:10 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Sequence (StartNewYear,CurrentNextSys,IsTableID,StartNo,CurrentNext,IsAudited,IsAutoSequence,AD_Sequence_ID,AD_Sequence_UU,Description,Name,IncrementNo,AD_Org_ID,AD_Client_ID,Created,CreatedBy,Updated,UpdatedBy,IsActive) VALUES ('N',50000,'Y',1000000,1000000,'N','Y',200009,'7efd073c-23e4-48ef-8b1a-66e1d666dbef','Table AD_Tab_Customization','AD_Tab_Customization',1,0,0,TO_TIMESTAMP('2012-08-10 21:07:09','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2012-08-10 21:07:09','YYYY-MM-DD HH24:MI:SS'),100,'Y') +; + +-- Aug 10, 2012 9:11:43 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,200008,200254,'U','Y','N','N',0,'N',10,'N',19,'N','N',102,'N','Y','acccad07-6b1b-4a90-b49a-f2e6b2dc0b8e','N','N','N','AD_Client_ID','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.','Client','N',100,TO_TIMESTAMP('2012-08-10 21:11:42','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_TIMESTAMP('2012-08-10 21:11:42','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:11:43 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200254 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:14:34 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,200008,200255,'U','Y','N','N',0,'N',10,'N',19,'N','N',113,'N','Y','09102aa5-35f2-4f01-88d6-f13349ddf85f','N','N','N','AD_Org_ID','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.','Organization','N',100,TO_TIMESTAMP('2012-08-10 21:14:33','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_TIMESTAMP('2012-08-10 21:14:33','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:14:34 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200255 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:28:15 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Element (ColumnName,AD_Element_ID,EntityType,Name,PrintName,AD_Element_UU,AD_Client_ID,Created,Updated,AD_Org_ID,CreatedBy,UpdatedBy,IsActive) VALUES ('AD_Tab_Customization_ID',200081,'D','Tab Customization','Tab Customization','d61e6f5a-8c73-4b19-8983-f91d2d2ce8d6',0,TO_TIMESTAMP('2012-08-10 21:28:14','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2012-08-10 21:28:14','YYYY-MM-DD HH24:MI:SS'),0,100,100,'Y') +; + +-- Aug 10, 2012 9:28:15 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Description,Name,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Element_Trl_UU ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Description,t.Name,t.PrintName,t.PO_Name,t.PO_PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=200081 AND NOT EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Element_ID=t.AD_Element_ID) +; + +-- Aug 10, 2012 9:28:52 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,200008,200256,'U','N','N','N',0,'N',10,'N',13,'N','Y',200081,'N','Y','3b84e2e6-fe63-40a6-bb7d-d4bcc5691e94','N','N','N','AD_Tab_Customization_ID','Tab Customization','N',100,TO_TIMESTAMP('2012-08-10 21:28:51','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_TIMESTAMP('2012-08-10 21:28:51','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:28:52 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200256 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:29:53 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,200008,200257,'U','N','N','N',0,'N',22,'N',19,'N','N',125,'N','Y','58805cb1-51c3-47a0-ac10-338e64ff53d6','N','Y','N','AD_Tab_ID','Tab within a Window','The Tab indicates a tab that displays within a window.','Tab','Y',100,TO_TIMESTAMP('2012-08-10 21:29:52','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_TIMESTAMP('2012-08-10 21:29:52','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:29:53 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200257 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:30:33 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,200008,200258,'U','Y','N','N',0,'N',22,'N',19,'N','N',138,'N','Y','84795887-a568-4ef3-9a02-1b5e3e7a5d0c','N','Y','N','AD_User_ID','User within the system - Internal or Business Partner Contact','The User identifies a unique user in the system. This could be an internal user or a business partner contact','User/Contact','Y',100,TO_TIMESTAMP('2012-08-10 21:30:32','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_TIMESTAMP('2012-08-10 21:30:32','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:30:33 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200258 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:31:20 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,200008,200259,'U','Y','N','N',0,'N',7,'N',16,'N','N',245,'N','Y','e2e511e1-7f19-4368-9043-2b62e42023e5','N','Y','N','Created','Date this record was created','The Created field indicates the date that this record was created.','Created','N',100,TO_TIMESTAMP('2012-08-10 21:31:19','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_TIMESTAMP('2012-08-10 21:31:19','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:31:20 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200259 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:32:10 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,AD_Reference_Value_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,200008,200260,'U',110,'Y','N','N',0,'N',10,'N',18,'N','N',246,'N','Y','161e2f80-1cce-4f35-b16d-f19804b684d3','N','Y','N','CreatedBy','User who created this records','The Created By field indicates the user who created this record.','Created By','N',100,TO_TIMESTAMP('2012-08-10 21:32:10','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_TIMESTAMP('2012-08-10 21:32:10','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:32:10 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200260 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:32:52 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Element (ColumnName,AD_Element_ID,EntityType,Name,PrintName,AD_Element_UU,AD_Client_ID,Created,Updated,AD_Org_ID,CreatedBy,UpdatedBy,IsActive) VALUES ('Custom',200082,'D','Custom','Custom','a9bece93-c6d9-4619-b782-13038c21ac3b',0,TO_TIMESTAMP('2012-08-10 21:32:51','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2012-08-10 21:32:51','YYYY-MM-DD HH24:MI:SS'),0,100,100,'Y') +; + +-- Aug 10, 2012 9:32:52 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Description,Name,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Element_Trl_UU ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Description,t.Name,t.PrintName,t.PO_Name,t.PO_PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=200082 AND NOT EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Element_ID=t.AD_Element_ID) +; + +-- Aug 10, 2012 9:33:41 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,200008,200261,'U','Y','N','N',0,'N',2000,'N',10,'N','N',200082,'N','Y','3be04407-eba4-4afe-8e37-c151944231f8','N','Y','N','Custom','Custom','Y',100,TO_TIMESTAMP('2012-08-10 21:33:40','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_TIMESTAMP('2012-08-10 21:33:40','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:33:41 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200261 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:34:13 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,200008,200262,'U','Y','N','N',0,'N',1,'N',20,'N','N',348,'N','Y','20d47288-2df0-4720-9b30-4fd92748044e','N','Y','N','IsActive','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.','Active','N',100,TO_TIMESTAMP('2012-08-10 21:34:12','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_TIMESTAMP('2012-08-10 21:34:12','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:34:13 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200262 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:34:45 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,200008,200263,'U','Y','N','N',0,'N',7,'N',16,'N','N',607,'N','Y','446e4633-c822-46e1-9971-dfb5d61c1d3d','N','Y','N','Updated','Date this record was updated','The Updated field indicates the date that this record was updated.','Updated','N',100,TO_TIMESTAMP('2012-08-10 21:34:41','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_TIMESTAMP('2012-08-10 21:34:41','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:34:45 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200263 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:37:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,AD_Reference_Value_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,200008,200264,'U',110,'Y','N','N',0,'N',10,'N',18,'N','N',608,'N','Y','37526f39-0004-42aa-9943-44a376298a0c','N','Y','N','UpdatedBy','User who updated this records','The Updated By field indicates the user who updated this record.','Updated By','N',100,TO_TIMESTAMP('2012-08-10 21:37:14','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_TIMESTAMP('2012-08-10 21:37:14','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:37:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200264 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:38:15 PM IST +-- Customizable Grid View IDEMPIERE-364 +CREATE TABLE AD_Tab_Customization (AD_Client_ID NUMERIC(10) NOT NULL, AD_Org_ID NUMERIC(10) NOT NULL, AD_Tab_Customization_ID NUMERIC(10) DEFAULT NULL , AD_Tab_ID NUMERIC(10) DEFAULT NULL , AD_User_ID NUMERIC(10) NOT NULL, Created TIMESTAMP NOT NULL, CreatedBy NUMERIC(10) NOT NULL, Custom VARCHAR(2000) NOT NULL, IsActive CHAR(1) CHECK (IsActive IN ('Y','N')) NOT NULL, Updated TIMESTAMP NOT NULL, UpdatedBy NUMERIC(10) NOT NULL, CONSTRAINT AD_Tab_Customization_Key PRIMARY KEY (AD_Tab_Customization_ID)) +; + +-- Aug 10, 2012 9:45:32 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Element (ColumnName,AD_Element_ID,EntityType,Name,PrintName,AD_Element_UU,AD_Client_ID,Created,Updated,AD_Org_ID,CreatedBy,UpdatedBy,IsActive) VALUES ('IsDisplayedGrid',200083,'D','Show in Grid','Show in Grid','7bd94f01-3515-4e9d-a86c-580335a4f979',0,TO_TIMESTAMP('2012-08-10 21:45:32','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2012-08-10 21:45:32','YYYY-MM-DD HH24:MI:SS'),0,100,100,'Y') +; + +-- Aug 10, 2012 9:45:32 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Description,Name,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Element_Trl_UU ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Description,t.Name,t.PrintName,t.PO_Name,t.PO_PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=200083 AND NOT EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Element_ID=t.AD_Element_ID) +; + +-- Aug 10, 2012 9:47:13 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,DefaultValue,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,107,200265,'U','N','N','N',0,'N',1,'N',20,'N','N',200083,'N','Y','0eacadc5-a92e-4ca2-a1f7-ca9e463bc34f','N','Y','N','IsDisplayedGrid','Y','Show in Grid','Y',100,TO_TIMESTAMP('2012-08-10 21:47:13','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_TIMESTAMP('2012-08-10 21:47:13','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:47:13 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200265 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:49:01 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Element (ColumnName,AD_Element_ID,EntityType,Name,PrintName,AD_Element_UU,AD_Client_ID,Created,Updated,AD_Org_ID,CreatedBy,UpdatedBy,IsActive) VALUES ('SeqNoGrid',200084,'D','Grid Sequence No','Grid Sequence No','fc7dd770-a99b-4e41-955f-80397ae579eb',0,TO_TIMESTAMP('2012-08-10 21:49:00','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2012-08-10 21:49:00','YYYY-MM-DD HH24:MI:SS'),0,100,100,'Y') +; + +-- Aug 10, 2012 9:49:01 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Description,Name,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Element_Trl_UU ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Description,t.Name,t.PrintName,t.PO_Name,t.PO_PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=200084 AND NOT EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Element_ID=t.AD_Element_ID) +; + +-- Aug 10, 2012 9:50:05 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,EntityType,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsSyncDatabase,IsKey,AD_Element_ID,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsEncrypted,IsUpdateable,IsAlwaysUpdateable,ColumnName,DefaultValue,Name,IsAllowCopy,CreatedBy,Updated,AD_Org_ID,IsActive,Created,UpdatedBy,AD_Client_ID) VALUES (0,107,200266,'U','N','N','N',0,'N',22,'N',11,'N','N',200084,'N','Y','363b94b4-d830-4fdc-83db-bc3de77f02ab','N','Y','N','SeqNoGrid','@SQL=SELECT NVL(MAX(GridSeqNo),0)+10 AS DefaultValue FROM AD_Field WHERE AD_Tab_ID=@AD_Tab_ID@','Grid Sequence No','Y',100,TO_TIMESTAMP('2012-08-10 21:50:04','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_TIMESTAMP('2012-08-10 21:50:04','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Aug 10, 2012 9:50:05 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200266 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 10, 2012 9:50:21 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Column SET DefaultValue='@SQL=SELECT NVL(MAX(SeqNoGrid),0)+10 AS DefaultValue FROM AD_Field WHERE AD_Tab_ID=@AD_Tab_ID@',Updated=TO_TIMESTAMP('2012-08-10 21:50:21','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200266 +; + +-- Aug 10, 2012 9:50:39 PM IST +-- Customizable Grid View IDEMPIERE-364 +ALTER TABLE AD_Field ADD COLUMN SeqNoGrid NUMERIC(10) DEFAULT NULL +; + +-- Aug 10, 2012 9:51:24 PM IST +-- Customizable Grid View IDEMPIERE-364 +ALTER TABLE AD_Field ADD COLUMN IsDisplayedGrid CHAR(1) DEFAULT 'Y' CHECK (IsDisplayedGrid IN ('Y','N')) +; + +-- Aug 10, 2012 9:52:07 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,EntityType,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,AD_Client_ID,CreatedBy,Updated,IsActive) VALUES ('N',107,36,'N','N',60409,'Y',200273,'N','D','AD_Field_UU','N','Y','71784d16-dd0c-4504-b837-279dacf7ef42',100,0,TO_TIMESTAMP('2012-08-10 21:52:06','YYYY-MM-DD HH24:MI:SS'),0,100,TO_TIMESTAMP('2012-08-10 21:52:06','YYYY-MM-DD HH24:MI:SS'),'Y') +; + +-- Aug 10, 2012 9:52:07 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=200273 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID) +; + +-- Aug 10, 2012 9:52:08 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,EntityType,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,AD_Client_ID,CreatedBy,Updated,IsActive) VALUES ('N',107,22,'N','N',200266,'Y',200274,'N','U','Grid Sequence No','N','Y','ae7dc496-8beb-430b-88d3-d684612f8240',100,0,TO_TIMESTAMP('2012-08-10 21:52:07','YYYY-MM-DD HH24:MI:SS'),0,100,TO_TIMESTAMP('2012-08-10 21:52:07','YYYY-MM-DD HH24:MI:SS'),'Y') +; + +-- Aug 10, 2012 9:52:08 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=200274 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID) +; + +-- Aug 10, 2012 9:52:09 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,Help,EntityType,Description,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,AD_Client_ID,CreatedBy,Updated,IsActive) VALUES ('N',107,255,'N','N',54359,'Y',200275,'N','Fully qualified class name that implements the InfoFactory interface. This can be use to provide custom Info class for column.','D','Fully qualified class name that implements the InfoFactory interface','Info Factory Class','N','Y','bc2e9a27-a0dd-432d-80bf-1903085ec192',100,0,TO_TIMESTAMP('2012-08-10 21:52:08','YYYY-MM-DD HH24:MI:SS'),0,100,TO_TIMESTAMP('2012-08-10 21:52:08','YYYY-MM-DD HH24:MI:SS'),'Y') +; + +-- Aug 10, 2012 9:52:09 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=200275 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID) +; + +-- Aug 10, 2012 9:52:09 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,EntityType,Name,IsFieldOnly,IsDisplayed,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,AD_Client_ID,CreatedBy,Updated,IsActive) VALUES ('N',107,1,'N','N',200265,'Y',200276,'N','U','Show in Grid','N','Y','26931797-3bde-42ae-acfc-e61ab4948abd',100,0,TO_TIMESTAMP('2012-08-10 21:52:09','YYYY-MM-DD HH24:MI:SS'),0,100,TO_TIMESTAMP('2012-08-10 21:52:09','YYYY-MM-DD HH24:MI:SS'),'Y') +; + +-- Aug 10, 2012 9:52:09 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=200276 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID) +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=140,IsDisplayed='Y' WHERE AD_Field_ID=200276 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=150,IsDisplayed='Y' WHERE AD_Field_ID=924 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=160,IsDisplayed='Y' WHERE AD_Field_ID=133 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=170,IsDisplayed='Y' WHERE AD_Field_ID=136 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=180,IsDisplayed='Y' WHERE AD_Field_ID=142 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=190,IsDisplayed='Y' WHERE AD_Field_ID=137 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=200,IsDisplayed='Y' WHERE AD_Field_ID=200274 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=210,IsDisplayed='Y' WHERE AD_Field_ID=139 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=220,IsDisplayed='Y' WHERE AD_Field_ID=138 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=230,IsDisplayed='Y' WHERE AD_Field_ID=8343 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=240,IsDisplayed='Y' WHERE AD_Field_ID=140 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=250,IsDisplayed='Y' WHERE AD_Field_ID=141 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=260,IsDisplayed='Y' WHERE AD_Field_ID=13425 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=270,IsDisplayed='Y' WHERE AD_Field_ID=54401 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=280,IsDisplayed='Y' WHERE AD_Field_ID=54402 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=290,IsDisplayed='Y' WHERE AD_Field_ID=13424 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=300,IsDisplayed='Y' WHERE AD_Field_ID=62468 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=310,IsDisplayed='Y' WHERE AD_Field_ID=53280 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=320,IsDisplayed='Y' WHERE AD_Field_ID=200273 +; + +-- Aug 10, 2012 9:53:17 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET SeqNo=330,IsDisplayed='Y' WHERE AD_Field_ID=200275 +; + +-- Aug 10, 2012 9:53:35 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET IsSameLine='Y',Updated=TO_TIMESTAMP('2012-08-10 21:53:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200274 +; + +-- Aug 10, 2012 9:53:58 PM IST +-- Customizable Grid View IDEMPIERE-364 +UPDATE AD_Field SET IsSameLine='Y',Updated=TO_TIMESTAMP('2012-08-10 21:53:58','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200276 +; + +-- Aug 10, 2012 9:57:04 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Tab (IsSingleRow,AD_Window_ID,SeqNo,IsTranslationTab,IsSortTab,AD_Table_ID,ImportFields,HasTree,IsReadOnly,IsInfoTab,AD_ColumnSortYesNo_ID,IsInsertRecord,IsAdvancedTab,TabLevel,AD_Tab_UU,EntityType,Name,Description,AD_Tab_ID,AD_ColumnSortOrder_ID,AD_Client_ID,AD_Org_ID,Created,CreatedBy,Updated,UpdatedBy,Processing,IsActive) VALUES ('N',102,65,'N','Y',107,'N','N','N','N',200265,'Y','N',2,'27d1dcc7-2696-45e2-bbf8-6c1f51c3e48f','U','Grid Sequence','Defined field order for grid layout',200009,200266,0,0,TO_TIMESTAMP('2012-08-10 21:57:03','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2012-08-10 21:57:03','YYYY-MM-DD HH24:MI:SS'),100,'N','Y') +; + +-- Aug 10, 2012 9:57:04 PM IST +-- Customizable Grid View IDEMPIERE-364 +INSERT INTO AD_Tab_Trl (AD_Language,AD_Tab_ID, Help,CommitWarning,Name,Description, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Tab_Trl_UU ) SELECT l.AD_Language,t.AD_Tab_ID, t.Help,t.CommitWarning,t.Name,t.Description, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Tab t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Tab_ID=200009 AND NOT EXISTS (SELECT * FROM AD_Tab_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Tab_ID=t.AD_Tab_ID) +; diff --git a/migration/360lts-release/postgresql/873_IDEMPIERE-364_AD_Field_postgresql.sql b/migration/360lts-release/postgresql/873_IDEMPIERE-364_AD_Field_postgresql.sql new file mode 100644 index 0000000000..615b640418 --- /dev/null +++ b/migration/360lts-release/postgresql/873_IDEMPIERE-364_AD_Field_postgresql.sql @@ -0,0 +1,11 @@ + +CREATE OR REPLACE VIEW ad_field_v AS + SELECT t.ad_window_id, f.ad_tab_id, f.ad_field_id, tbl.ad_table_id, f.ad_column_id, f.name, f.description, f.help, f.isdisplayed, f.displaylogic, f.displaylength, f.seqno, f.sortno, f.issameline, f.isheading, f.isfieldonly, f.isreadonly, f.isencrypted AS isencryptedfield, f.obscuretype, c.columnname, c.columnsql, c.fieldlength, c.vformat, COALESCE(f.defaultvalue, c.defaultvalue) AS defaultvalue, c.iskey, c.isparent, COALESCE(f.ismandatory, c.ismandatory) AS ismandatory, c.isidentifier, c.istranslated, COALESCE(f.ad_reference_value_id, c.ad_reference_value_id) AS ad_reference_value_id, c.callout, COALESCE(f.ad_reference_id, c.ad_reference_id) AS ad_reference_id, COALESCE(f.ad_val_rule_id, c.ad_val_rule_id) AS ad_val_rule_id, c.ad_process_id, c.isalwaysupdateable, c.readonlylogic, c.mandatorylogic, c.isupdateable, c.isencrypted AS isencryptedcolumn, c.isselectioncolumn, tbl.tablename, c.valuemin, c.valuemax, fg.name AS fieldgroup, vr.code AS validationcode, f.included_tab_id, fg.fieldgrouptype, fg.iscollapsedbydefault, COALESCE(f.infofactoryclass, c.infofactoryclass) AS infofactoryclass, c.isautocomplete, COALESCE(f.isallowcopy, c.isallowcopy) AS isallowcopy, f.isdisplayedgrid, f.seqnogrid + FROM ad_field f + JOIN ad_tab t ON f.ad_tab_id = t.ad_tab_id + LEFT JOIN ad_fieldgroup fg ON f.ad_fieldgroup_id = fg.ad_fieldgroup_id + LEFT JOIN ad_column c ON f.ad_column_id = c.ad_column_id + JOIN ad_table tbl ON c.ad_table_id = tbl.ad_table_id + JOIN ad_reference r ON c.ad_reference_id = r.ad_reference_id + LEFT JOIN ad_val_rule vr ON vr.ad_val_rule_id = COALESCE(f.ad_val_rule_id, c.ad_val_rule_id) + WHERE f.isactive = 'Y'::bpchar AND c.isactive = 'Y'::bpchar; \ No newline at end of file diff --git a/org.adempiere.base-feature/model.generator.launch b/org.adempiere.base-feature/model.generator.launch index 511ab48893..34ba8c6702 100644 --- a/org.adempiere.base-feature/model.generator.launch +++ b/org.adempiere.base-feature/model.generator.launch @@ -1,32 +1,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/org.adempiere.base.process/src/org/compiere/process/TabCreateFields.java b/org.adempiere.base.process/src/org/compiere/process/TabCreateFields.java index 7158f40493..25f2d7cc2f 100644 --- a/org.adempiere.base.process/src/org/compiere/process/TabCreateFields.java +++ b/org.adempiere.base.process/src/org/compiere/process/TabCreateFields.java @@ -104,8 +104,10 @@ public class TabCreateFields extends SvrProcess // end F3P - if (column.isKey()) + if (column.isKey()){ field.setIsDisplayed(false); + field.setIsDisplayedGrid(false); + } if (field.save()) { addLog(0, null, null, column.getName()); diff --git a/org.adempiere.base/src/org/adempiere/model/I_AD_Tab_Customization.java b/org.adempiere.base/src/org/adempiere/model/I_AD_Tab_Customization.java new file mode 100644 index 0000000000..46c9fc7d26 --- /dev/null +++ b/org.adempiere.base/src/org/adempiere/model/I_AD_Tab_Customization.java @@ -0,0 +1,103 @@ +/********************************************************************** + * This file is part of Adempiere ERP Bazaar * + * http://www.adempiere.org * + * * + * Copyright (C) Trifon Trifonov. * + * Copyright (C) Contributors * + * * + * This program is free software, you can redistribute it and/or * + * modify it under the terms of the GNU General Public License * + * as published by the Free Software Foundation, either version 2 * + * of the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY, without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program, if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * + * MA 02110-1301, USA. * + * * + * Contributors: * + * - Trifon Trifonov (trifonnt@users.sourceforge.net) * + * * + * Sponsors: * + * - Company (http://www.site.com) * + **********************************************************************/ +package org.adempiere.model; + +import java.math.BigDecimal; +import org.compiere.model.*; +import org.compiere.util.KeyNamePair; + +/** Generated Interface for AD_Tab_Customization + * @author Adempiere (generated) + * @version Release 3.5.2a + */ +public interface I_AD_Tab_Customization +{ + + /** TableName=AD_Tab_Customization */ + public static final String Table_Name = "AD_Tab_Customization"; + + /** AD_Table_ID=2000077 */ + public static final int Table_ID = MTable.getTable_ID(Table_Name); + + KeyNamePair Model = new KeyNamePair(Table_ID, Table_Name); + + /** AccessLevel = 3 - Client - Org + */ + BigDecimal accessLevel = BigDecimal.valueOf(3); + + /** Load Meta Data */ + + /** Column name AD_Tab_ID */ + public static final String COLUMNNAME_AD_Tab_ID = "AD_Tab_ID"; + + /** Set Tab. + * Tab within a Window + */ + public void setAD_Tab_ID (int AD_Tab_ID); + + /** Get Tab. + * Tab within a Window + */ + public int getAD_Tab_ID(); + + public I_AD_Tab getAD_Tab() throws Exception; + + /** Column name AD_Tab_Customization_ID */ + public static final String COLUMNNAME_AD_Tab_Customization_ID = "AD_Tab_Customization_ID"; + + /** Set AD_Tab_Customization_ID */ + public void setAD_Tab_Customization_ID (int AD_Tab_Customization_ID); + + /** Get AD_Tab_Customization_ID */ + public int getAD_Tab_Customization_ID(); + + /** Column name AD_User_ID */ + public static final String COLUMNNAME_AD_User_ID = "AD_User_ID"; + + /** Set User/Contact. + * User within the system - Internal or Business Partner Contact + */ + public void setAD_User_ID (int AD_User_ID); + + /** Get User/Contact. + * User within the system - Internal or Business Partner Contact + */ + public int getAD_User_ID(); + + public I_AD_User getAD_User() throws Exception; + + /** Column name Custom */ + public static final String COLUMNNAME_Custom = "Custom"; + + /** Set Custom */ + public void setCustom (String Custom); + + /** Get Custom */ + public String getCustom(); +} diff --git a/org.adempiere.base/src/org/adempiere/model/MTabCustomization.java b/org.adempiere.base/src/org/adempiere/model/MTabCustomization.java new file mode 100644 index 0000000000..12ce3b3145 --- /dev/null +++ b/org.adempiere.base/src/org/adempiere/model/MTabCustomization.java @@ -0,0 +1,36 @@ +package org.adempiere.model; + +import java.sql.ResultSet; +import java.util.Properties; + +import org.compiere.model.Query; + +public class MTabCustomization extends X_AD_Tab_Customization { + + /** + * + */ + private static final long serialVersionUID = 6001121773007479059L; + public MTabCustomization(Properties ctx, int AD_Tab_Customization_ID, String trxName) { + super(ctx, AD_Tab_Customization_ID, trxName); + if (AD_Tab_Customization_ID == 0) + { + setIsActive(true); + + } + } + + public MTabCustomization(Properties ctx, ResultSet rs, String trxName) { + super(ctx, rs, trxName); + } + + /** + * + * @param ctx + * @param AD_Tab_ID + */ + public static MTabCustomization get(Properties ctx, int AD_User_ID, int AD_Tab_ID, String trxName) { + Query query = new Query(ctx, Table_Name, "AD_User_ID=? AND AD_Tab_ID=?", trxName); + return query.setParameters(new Object[]{AD_User_ID, AD_Tab_ID}).first(); + } +} diff --git a/org.adempiere.base/src/org/adempiere/model/X_AD_Tab_Customization.java b/org.adempiere.base/src/org/adempiere/model/X_AD_Tab_Customization.java new file mode 100644 index 0000000000..3d2e06282a --- /dev/null +++ b/org.adempiere.base/src/org/adempiere/model/X_AD_Tab_Customization.java @@ -0,0 +1,188 @@ +/****************************************************************************** + * Product: Adempiere ERP & CRM Smart Business Solution * + * Copyright (C) 1999-2007 ComPiere, Inc. All Rights Reserved. * + * This program is free software; you can redistribute it and/or modify it * + * under the terms version 2 of the GNU General Public License as published * + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * For the text or an alternative of this public license, you may reach us * + * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * + * or via info@compiere.org or http://www.compiere.org/license.html * + *****************************************************************************/ +/** Generated Model - DO NOT CHANGE */ +package org.adempiere.model; + +import java.lang.reflect.Constructor; +import java.sql.ResultSet; +import java.util.Properties; +import java.util.logging.Level; +import org.compiere.model.*; + +/** Generated Model for AD_Tab_Customization + * @author Adempiere (generated) + * @version Release 3.5.2a - $Id$ */ +public class X_AD_Tab_Customization extends PO implements I_AD_Tab_Customization, I_Persistent +{ + + /** + * + */ + private static final long serialVersionUID = 1L; + + /** Standard Constructor */ + public X_AD_Tab_Customization (Properties ctx, int AD_Tab_Customization_ID, String trxName) + { + super (ctx, AD_Tab_Customization_ID, trxName); + /** if (AD_Tab_Customization_ID == 0) + { + setAD_User_ID (0); + setCustom (null); + } */ + } + + /** Load Constructor */ + public X_AD_Tab_Customization (Properties ctx, ResultSet rs, String trxName) + { + super (ctx, rs, trxName); + } + + /** AccessLevel + * @return 3 - Client - Org + */ + protected int get_AccessLevel() + { + return accessLevel.intValue(); + } + + /** Load Meta Data */ + protected POInfo initPO (Properties ctx) + { + POInfo poi = POInfo.getPOInfo (ctx, Table_ID, get_TrxName()); + return poi; + } + + public String toString() + { + StringBuffer sb = new StringBuffer ("X_AD_Tab_Customization[") + .append(get_ID()).append("]"); + return sb.toString(); + } + + public I_AD_Tab getAD_Tab() throws Exception + { + Class clazz = MTable.getClass(I_AD_Tab.Table_Name); + I_AD_Tab result = null; + try { + Constructor constructor = null; + constructor = clazz.getDeclaredConstructor(new Class[]{Properties.class, int.class, String.class}); + result = (I_AD_Tab)constructor.newInstance(new Object[] {getCtx(), new Integer(getAD_Tab_ID()), get_TrxName()}); + } catch (Exception e) { + log.log(Level.SEVERE, "(id) - Table=" + Table_Name + ",Class=" + clazz, e); + log.saveError("Error", "Table=" + Table_Name + ",Class=" + clazz); + throw e; + } + return result; + } + + /** Set Tab. + @param AD_Tab_ID + Tab within a Window + */ + public void setAD_Tab_ID (int AD_Tab_ID) + { + if (AD_Tab_ID < 1) + set_Value (COLUMNNAME_AD_Tab_ID, null); + else + set_Value (COLUMNNAME_AD_Tab_ID, Integer.valueOf(AD_Tab_ID)); + } + + /** Get Tab. + @return Tab within a Window + */ + public int getAD_Tab_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_AD_Tab_ID); + if (ii == null) + return 0; + return ii.intValue(); + } + + /** Set AD_Tab_Customization_ID. + @param AD_Tab_Customization_ID AD_Tab_Customization_ID */ + public void setAD_Tab_Customization_ID (int AD_Tab_Customization_ID) + { + if (AD_Tab_Customization_ID < 1) + set_ValueNoCheck (COLUMNNAME_AD_Tab_Customization_ID, null); + else + set_ValueNoCheck (COLUMNNAME_AD_Tab_Customization_ID, Integer.valueOf(AD_Tab_Customization_ID)); + } + + /** Get AD_Tab_Customization_ID. + @return AD_Tab_Customization_ID */ + public int getAD_Tab_Customization_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_AD_Tab_Customization_ID); + if (ii == null) + return 0; + return ii.intValue(); + } + + public I_AD_User getAD_User() throws Exception + { + Class clazz = MTable.getClass(I_AD_User.Table_Name); + I_AD_User result = null; + try { + Constructor constructor = null; + constructor = clazz.getDeclaredConstructor(new Class[]{Properties.class, int.class, String.class}); + result = (I_AD_User)constructor.newInstance(new Object[] {getCtx(), new Integer(getAD_User_ID()), get_TrxName()}); + } catch (Exception e) { + log.log(Level.SEVERE, "(id) - Table=" + Table_Name + ",Class=" + clazz, e); + log.saveError("Error", "Table=" + Table_Name + ",Class=" + clazz); + throw e; + } + return result; + } + + /** Set User/Contact. + @param AD_User_ID + User within the system - Internal or Business Partner Contact + */ + public void setAD_User_ID (int AD_User_ID) + { + if (AD_User_ID < 1) + throw new IllegalArgumentException ("AD_User_ID is mandatory."); + set_Value (COLUMNNAME_AD_User_ID, Integer.valueOf(AD_User_ID)); + } + + /** Get User/Contact. + @return User within the system - Internal or Business Partner Contact + */ + public int getAD_User_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_AD_User_ID); + if (ii == null) + return 0; + return ii.intValue(); + } + + /** Set Custom. + @param Custom Custom */ + public void setCustom (String Custom) + { + if (Custom == null) + throw new IllegalArgumentException ("Custom is mandatory."); + set_Value (COLUMNNAME_Custom, Custom); + } + + /** Get Custom. + @return Custom */ + public String getCustom () + { + return (String)get_Value(COLUMNNAME_Custom); + } +} \ No newline at end of file diff --git a/org.adempiere.base/src/org/adempiere/util/ModelClassGenerator.java b/org.adempiere.base/src/org/adempiere/util/ModelClassGenerator.java index 098283f374..96584e9d22 100644 --- a/org.adempiere.base/src/org/adempiere/util/ModelClassGenerator.java +++ b/org.adempiere.base/src/org/adempiere/util/ModelClassGenerator.java @@ -862,7 +862,7 @@ public class ModelClassGenerator } String directory = sourceFolder.trim(); - String packagePath = packageName.replaceAll("[.]", File.separator); + String packagePath = packageName.replace(".", File.separator); if (!(directory.endsWith("/") || directory.endsWith("\\"))) { directory = directory + File.separator; diff --git a/org.adempiere.base/src/org/adempiere/util/ModelInterfaceGenerator.java b/org.adempiere.base/src/org/adempiere/util/ModelInterfaceGenerator.java index b57c55a2de..2fe2cdb28e 100644 --- a/org.adempiere.base/src/org/adempiere/util/ModelInterfaceGenerator.java +++ b/org.adempiere.base/src/org/adempiere/util/ModelInterfaceGenerator.java @@ -797,7 +797,7 @@ public class ModelInterfaceGenerator } String directory = sourceFolder.trim(); - String packagePath = packageName.replaceAll("[.]", File.separator); + String packagePath = packageName.replace(".", File.separator); if (!(directory.endsWith("/") || directory.endsWith("\\"))) { directory = directory + File.separator; diff --git a/org.adempiere.base/src/org/compiere/model/GridField.java b/org.adempiere.base/src/org/compiere/model/GridField.java index 1465a23e85..b658a804cc 100644 --- a/org.adempiere.base/src/org/compiere/model/GridField.java +++ b/org.adempiere.base/src/org/compiere/model/GridField.java @@ -984,6 +984,22 @@ public class GridField { return m_vo.IsDisplayed; } + /** + * Is Displayed + * @return true if displayed + */ + public boolean isDisplayedGrid() + { + return m_vo.IsDisplayedGrid; + } + /** + * Grid sequence number + * @return sequence number + */ + public int getSeqNoGrid() + { + return m_vo.SeqNoGrid; + } /** * Get DisplayLogic * @return display logic @@ -1268,7 +1284,16 @@ public class GridField return (m_vo.DisplayLength >= MAXDISPLAY_LENGTH/2); // return false; } // isLongField - + + /** + * Get AD_Field_ID + * @return field + */ + public int getAD_Field_ID() + { + return m_vo.AD_Field_ID; + } + /** * Set Value to null. *

@@ -1652,7 +1677,7 @@ public class GridField int AD_Window_ID = 0; boolean readOnly = false; - String sql = GridFieldVO.getSQL(ctx); + String sql = GridFieldVO.getSQL(ctx," ORDER BY IsDisplayed DESC, SeqNo"); PreparedStatement pstmt = null; try { @@ -1898,4 +1923,5 @@ public class GridField { return isParentTabField(m_vo.ColumnName); } + } // MField diff --git a/org.adempiere.base/src/org/compiere/model/GridFieldVO.java b/org.adempiere.base/src/org/compiere/model/GridFieldVO.java index 45416db227..ef4ef10da9 100644 --- a/org.adempiere.base/src/org/compiere/model/GridFieldVO.java +++ b/org.adempiere.base/src/org/compiere/model/GridFieldVO.java @@ -51,7 +51,7 @@ public class GridFieldVO implements Serializable, SystemIDs * @param ctx context * @return SQL with or w/o translation and 1 parameter */ - public static String getSQL (Properties ctx) + public static String getSQL (Properties ctx, String orderedBy) { // IsActive is part of View String sql = "SELECT * FROM AD_Field_v WHERE AD_Tab_ID=?" @@ -59,7 +59,7 @@ public class GridFieldVO implements Serializable, SystemIDs if (!Env.isBaseLanguage(ctx, "AD_Tab")) sql = "SELECT * FROM AD_Field_vt WHERE AD_Tab_ID=?" + " AND AD_Language='" + Env.getAD_Language(ctx) + "'" - + " ORDER BY IsDisplayed DESC, SeqNo"; + + orderedBy; return sql; } // getSQL @@ -109,6 +109,10 @@ public class GridFieldVO implements Serializable, SystemIDs vo.IsSameLine = "Y".equals(rs.getString (i)); else if (columnName.equalsIgnoreCase("IsDisplayed")) vo.IsDisplayed = "Y".equals(rs.getString (i)); + else if (columnName.equalsIgnoreCase("IsDisplayedGrid")) + vo.IsDisplayedGrid = "Y".equals(rs.getString (i)); + else if (columnName.equalsIgnoreCase("SeqNoGrid")) + vo.SeqNoGrid = rs.getInt (i); else if (columnName.equalsIgnoreCase("DisplayLogic")) vo.DisplayLogic = rs.getString (i); else if (columnName.equalsIgnoreCase("DefaultValue")) @@ -184,6 +188,8 @@ public class GridFieldVO implements Serializable, SystemIDs vo.IsAutocomplete = "Y".equals(rs.getString(i)); else if (columnName.equalsIgnoreCase("IsAllowCopy")) vo.IsAllowCopy = "Y".equals(rs.getString(i)); + else if (columnName.equalsIgnoreCase("AD_Field_ID")) + vo.AD_Field_ID = rs.getInt(i); } if (vo.Header == null) vo.Header = vo.ColumnName; @@ -416,6 +422,10 @@ public class GridFieldVO implements Serializable, SystemIDs public boolean IsSameLine = false; /** Displayed */ public boolean IsDisplayed = false; + /** Displayed Grid */ + public boolean IsDisplayedGrid = false; + /** Grid Display sequence */ + public int SeqNoGrid = 0; /** Dislay Logic */ public String DisplayLogic = ""; /** Default Value */ @@ -485,6 +495,8 @@ public class GridFieldVO implements Serializable, SystemIDs /** Lookup Value Object */ public MLookupInfo lookupInfo = null; + /** Field ID */ + public int AD_Field_ID = 0; //* Feature Request FR [ 1757088 ] public int Included_Tab_ID = 0; @@ -582,6 +594,9 @@ public class GridFieldVO implements Serializable, SystemIDs clone.DisplayLength = DisplayLength; clone.IsSameLine = IsSameLine; clone.IsDisplayed = IsDisplayed; + clone.IsDisplayedGrid = IsDisplayedGrid; + clone.AD_Field_ID = AD_Field_ID; + clone.SeqNoGrid = SeqNoGrid; clone.DisplayLogic = DisplayLogic; clone.DefaultValue = DefaultValue; clone.IsMandatory = IsMandatory; diff --git a/org.adempiere.base/src/org/compiere/model/GridTabVO.java b/org.adempiere.base/src/org/compiere/model/GridTabVO.java index 3efeee92e9..59295c6e79 100644 --- a/org.adempiere.base/src/org/compiere/model/GridTabVO.java +++ b/org.adempiere.base/src/org/compiere/model/GridTabVO.java @@ -278,7 +278,7 @@ public class GridTabVO implements Evaluatee, Serializable //local only or remote fail for vpn profile mTabVO.Fields = new ArrayList(); - String sql = GridFieldVO.getSQL(mTabVO.ctx); + String sql = GridFieldVO.getSQL(mTabVO.ctx," ORDER BY IsDisplayed DESC, SeqNo"); try { PreparedStatement pstmt = DB.prepareStatement(sql, null); @@ -302,6 +302,8 @@ public class GridTabVO implements Evaluatee, Serializable return false; } + + mTabVO.initFields = true; return mTabVO.Fields.size() != 0; diff --git a/org.adempiere.base/src/org/compiere/model/GridTable.java b/org.adempiere.base/src/org/compiere/model/GridTable.java index c975d2df22..67fc35de63 100644 --- a/org.adempiere.base/src/org/compiere/model/GridTable.java +++ b/org.adempiere.base/src/org/compiere/model/GridTable.java @@ -566,7 +566,6 @@ public class GridTable extends AbstractTableModel m_fields.toArray(retValue); return retValue; } // getField - /************************************************************************** * Open Database. diff --git a/org.adempiere.base/src/org/compiere/model/I_AD_Field.java b/org.adempiere.base/src/org/compiere/model/I_AD_Field.java index ec9a2c73da..24ea6a2809 100644 --- a/org.adempiere.base/src/org/compiere/model/I_AD_Field.java +++ b/org.adempiere.base/src/org/compiere/model/I_AD_Field.java @@ -352,6 +352,15 @@ public interface I_AD_Field */ public boolean isDisplayed(); + /** Column name IsDisplayedGrid */ + public static final String COLUMNNAME_IsDisplayedGrid = "IsDisplayedGrid"; + + /** Set Display in Grid */ + public void setIsDisplayedGrid (boolean IsDisplayedGrid); + + /** Get Display in Grid */ + public boolean isDisplayedGrid(); + /** Column name IsEncrypted */ public static final String COLUMNNAME_IsEncrypted = "IsEncrypted"; @@ -471,6 +480,15 @@ public interface I_AD_Field */ public int getSeqNo(); + /** Column name SeqNoGrid */ + public static final String COLUMNNAME_SeqNoGrid = "SeqNoGrid"; + + /** Set Grid Sequence No */ + public void setSeqNoGrid (int SeqNoGrid); + + /** Get Grid Sequence No */ + public int getSeqNoGrid(); + /** Column name SortNo */ public static final String COLUMNNAME_SortNo = "SortNo"; diff --git a/org.adempiere.base/src/org/compiere/model/X_AD_Field.java b/org.adempiere.base/src/org/compiere/model/X_AD_Field.java index 56c17c4a33..9ec85e97a6 100644 --- a/org.adempiere.base/src/org/compiere/model/X_AD_Field.java +++ b/org.adempiere.base/src/org/compiere/model/X_AD_Field.java @@ -516,6 +516,27 @@ public class X_AD_Field extends PO implements I_AD_Field, I_Persistent return false; } + /** Set Display in Grid. + @param IsDisplayedGrid Display in Grid */ + public void setIsDisplayedGrid (boolean IsDisplayedGrid) + { + set_Value (COLUMNNAME_IsDisplayedGrid, Boolean.valueOf(IsDisplayedGrid)); + } + + /** Get Display in Grid. + @return Display in Grid */ + public boolean isDisplayedGrid () + { + Object oo = get_Value(COLUMNNAME_IsDisplayedGrid); + if (oo != null) + { + if (oo instanceof Boolean) + return ((Boolean)oo).booleanValue(); + return "Y".equals(oo); + } + return false; + } + /** Set Encrypted. @param IsEncrypted Display or Storage is encrypted @@ -733,6 +754,23 @@ public class X_AD_Field extends PO implements I_AD_Field, I_Persistent return ii.intValue(); } + /** Set Grid Sequence No. + @param SeqNoGrid Grid Sequence No */ + public void setSeqNoGrid (int SeqNoGrid) + { + set_Value (COLUMNNAME_SeqNoGrid, Integer.valueOf(SeqNoGrid)); + } + + /** Get Grid Sequence No. + @return Grid Sequence No */ + public int getSeqNoGrid () + { + Integer ii = (Integer)get_Value(COLUMNNAME_SeqNoGrid); + if (ii == null) + return 0; + return ii.intValue(); + } + /** Set Record Sort No. @param SortNo Determines in what order the records are displayed diff --git a/org.adempiere.server-feature/server.product.launch b/org.adempiere.server-feature/server.product.launch index 469a0364ec..048eb04018 100644 --- a/org.adempiere.server-feature/server.product.launch +++ b/org.adempiere.server-feature/server.product.launch @@ -1,33 +1,33 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/AbstractADTab.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/AbstractADTab.java index 126696ba6c..12c7a9cbe7 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/AbstractADTab.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/AbstractADTab.java @@ -21,9 +21,9 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import org.adempiere.webui.panel.ADSortTab; import org.adempiere.webui.panel.ADTabpanel; import org.adempiere.webui.panel.AbstractADWindowPanel; +import org.adempiere.webui.panel.CustomizeGridViewPanel; import org.adempiere.webui.panel.IADTabpanel; import org.adempiere.webui.part.AbstractUIPart; import org.compiere.model.DataStatusEvent; @@ -146,7 +146,7 @@ public abstract class AbstractADTab extends AbstractUIPart implements IADTab { IADTabpanel adtab = tabPanelList.get(i); if (adtab.getGridTab() == null) continue; - if (adtab instanceof ADSortTab) continue; + if (adtab instanceof CustomizeGridViewPanel) continue; if (adtab.getTabLevel() < currentLevel) { parents.add(i); @@ -166,7 +166,7 @@ public abstract class AbstractADTab extends AbstractUIPart implements IADTab { IADTabpanel adtab = tabPanelList.get(i); if (adtab.getGridTab() == null) continue; - if (adtab instanceof ADSortTab) continue; + if (adtab instanceof CustomizeGridViewPanel) continue; GridField[] fields = adtab.getGridTab().getFields(); for (GridField gf : fields) { diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/CWindowToolbar.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/CWindowToolbar.java index e4c32ec393..eb72e40942 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/CWindowToolbar.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/CWindowToolbar.java @@ -87,6 +87,8 @@ public class CWindowToolbar extends FToolbar implements EventListener private ToolBarButton btnChat; + private ToolBarButton btnCustomize; + private ToolBarButton btnExport; private HashMap buttons = new HashMap(); @@ -174,6 +176,11 @@ public class CWindowToolbar extends FToolbar implements EventListener btnRequests = createButton("Requests", "Request", "Request"); btnProductInfo = createButton("ProductInfo", "Product", "InfoProduct"); btnProductInfo.setVisible(isAllowProductInfo); + + addSeparator(); + btnCustomize= createButton("Customize", "Customize", "Customize"); + btnCustomize.setDisabled(false); + // Help and Exit should always be enabled btnHelp.setDisabled(false); @@ -536,7 +543,12 @@ public class CWindowToolbar extends FToolbar implements EventListener { btnGridToggle.setDisabled(!enabled); } - + + public void enableCustomize(boolean enabled) + { + btnCustomize.setDisabled(!enabled); + } + public void lock(boolean locked) { this.btnLock.setPressed(locked); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/GridPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/GridPanel.java index 48cc3fba00..3b80c0f400 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/GridPanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/GridPanel.java @@ -13,12 +13,15 @@ package org.adempiere.webui.component; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.swing.table.AbstractTableModel; +import org.adempiere.model.MTabCustomization; import org.adempiere.webui.LayoutUtils; import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.editor.WEditor; @@ -100,6 +103,8 @@ public class GridPanel extends Borderlayout implements EventListener private boolean refreshing; + private Map columnWidthMap; + public static final String PAGE_SIZE_KEY = "ZK_PAGING_SIZE"; public static final String MODE_LESS_KEY = "ZK_GRID_EDIT_MODELESS"; @@ -144,12 +149,7 @@ public class GridPanel extends Borderlayout implements EventListener { if (init) return; - this.gridTab = gridTab; - tableModel = gridTab.getTableModel(); - - numColumns = tableModel.getColumnCount(); - - gridField = ((GridTable)tableModel).getFields(); + setupFields(gridTab); setupColumns(); render(); @@ -159,6 +159,58 @@ public class GridPanel extends Borderlayout implements EventListener this.init = true; } + private void setupFields(GridTab gridTab) { + this.gridTab = gridTab; + tableModel = gridTab.getTableModel(); + columnWidthMap = new HashMap(); + GridField[] tmpFields = ((GridTable)tableModel).getFields(); + MTabCustomization tabCustomization = MTabCustomization.get(Env.getCtx(), Env.getAD_User_ID(Env.getCtx()), gridTab.getAD_Tab_ID(), null); + if (tabCustomization != null && tabCustomization.getAD_Tab_Customization_ID() > 0 + && tabCustomization.getCustom() != null && tabCustomization.getCustom().trim().length() > 0) { + String custom = tabCustomization.getCustom().trim(); + String[] customComponent = custom.split(";"); + String[] fieldIds = customComponent[0].split("[,]"); + List fieldList = new ArrayList(); + for(String fieldIdStr : fieldIds) { + fieldIdStr = fieldIdStr.trim(); + if (fieldIdStr.length() == 0) continue; + int AD_Field_ID = Integer.parseInt(fieldIdStr); + for(GridField gridField : tmpFields) { + if (gridField.getAD_Field_ID() == AD_Field_ID) { + fieldList.add(gridField); + break; + } + } + } + gridField = fieldList.toArray(new GridField[0]); + if (customComponent.length == 2) { + String[] widths = customComponent[1].split("[,]"); + for(int i = 0; i< gridField.length; i++) { + columnWidthMap.put(gridField[i].getAD_Field_ID(), widths[i]); + } + } + } else { + ArrayList gridFieldList = new ArrayList(); + + for(GridField field:tmpFields){ + if(field.isDisplayedGrid()){ + gridFieldList.add(field); + } + } + + Collections.sort(gridFieldList, new Comparator() { + @Override + public int compare(GridField o1, GridField o2) { + return o1.getSeqNoGrid()-o2.getSeqNoGrid(); + } + }); + + gridField = new GridField[gridFieldList.size()]; + gridFieldList.toArray(gridField); + } + numColumns = gridField.length; + } + /** * * @return boolean @@ -292,41 +344,46 @@ public class GridPanel extends Borderlayout implements EventListener int index = 0; for (int i = 0; i < numColumns; i++) { - if (gridField[i].isDisplayed()) + if (gridField[i].isDisplayedGrid()) { colnames.put(index, gridField[i].getHeader()); index++; org.zkoss.zul.Column column = new Column(); - column.setSortAscending(new SortComparator(i, true, Env.getLanguage(Env.getCtx()))); - column.setSortDescending(new SortComparator(i, false, Env.getLanguage(Env.getCtx()))); + int colindex =tableModel.findColumn(gridField[i].getColumnName()); + column.setSortAscending(new SortComparator(colindex, true, Env.getLanguage(Env.getCtx()))); + column.setSortDescending(new SortComparator(colindex, false, Env.getLanguage(Env.getCtx()))); column.setLabel(gridField[i].getHeader()); - int l = DisplayType.isNumeric(gridField[i].getDisplayType()) - ? 120 : gridField[i].getDisplayLength() * 9; - //special treatment for line - if (DisplayType.isNumeric(gridField[i].getDisplayType()) && "Line".equals(gridField[i].getColumnName())) - { - l = 60; - } - else - { - if (gridField[i].getHeader().length() * 9 > l) - l = gridField[i].getHeader().length() * 9; - if (l > MAX_COLUMN_WIDTH) - l = MAX_COLUMN_WIDTH; - else if ( l < MIN_COLUMN_WIDTH) - l = MIN_COLUMN_WIDTH; - if (gridField[i].getDisplayType() == DisplayType.Table || gridField[i].getDisplayType() == DisplayType.TableDir) + if (columnWidthMap != null && columnWidthMap.get(gridField[i].getAD_Field_ID()) != null) { + column.setWidth(columnWidthMap.get(gridField[i].getAD_Field_ID())); + } else { + int l = DisplayType.isNumeric(gridField[i].getDisplayType()) + ? 120 : gridField[i].getDisplayLength() * 9; + //special treatment for line + if (DisplayType.isNumeric(gridField[i].getDisplayType()) && "Line".equals(gridField[i].getColumnName())) { - if (l < MIN_COMBOBOX_WIDTH) - l = MIN_COMBOBOX_WIDTH; + l = 60; } - else if (DisplayType.isNumeric(gridField[i].getDisplayType())) + else { - if (l < MIN_NUMERIC_COL_WIDTH) - l = MIN_NUMERIC_COL_WIDTH; + if (gridField[i].getHeader().length() * 9 > l) + l = gridField[i].getHeader().length() * 9; + if (l > MAX_COLUMN_WIDTH) + l = MAX_COLUMN_WIDTH; + else if ( l < MIN_COLUMN_WIDTH) + l = MIN_COLUMN_WIDTH; + if (gridField[i].getDisplayType() == DisplayType.Table || gridField[i].getDisplayType() == DisplayType.TableDir) + { + if (l < MIN_COMBOBOX_WIDTH) + l = MIN_COMBOBOX_WIDTH; + } + else if (DisplayType.isNumeric(gridField[i].getDisplayType())) + { + if (l < MIN_NUMERIC_COL_WIDTH) + l = MIN_NUMERIC_COL_WIDTH; + } } + column.setWidth(Integer.toString(l) + "px"); } - column.setWidth(Integer.toString(l) + "px"); columns.appendChild(column); } } @@ -707,4 +764,19 @@ public class GridPanel extends Borderlayout implements EventListener if (renderer != null) renderer.setADWindowPanel(windowPanel); } + + public void reInit() { + this.setupFields(gridTab); + if (listbox.getColumns() != null) { + listbox.removeChild(listbox.getColumns()); + } + init = false; + setupColumns(); + init = true; + updateModel(); + } + + public GridField[] getFields() { + return gridField; + } } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/GridTabListItemRenderer.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/GridTabListItemRenderer.java index 7aa850508a..31ee6a00c4 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/GridTabListItemRenderer.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/GridTabListItemRenderer.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import org.adempiere.webui.component.ListPanel; import org.adempiere.webui.editor.WButtonEditor; import org.adempiere.webui.editor.WEditor; import org.adempiere.webui.editor.WEditorPopupMenu; @@ -59,6 +60,7 @@ public class GridTabListItemRenderer implements ListitemRenderer, ListitemRender private GridTabDataBinder dataBinder; private Map editors = new HashMap(); private Paging paging; + private ListPanel listPanel; /** * @@ -79,30 +81,61 @@ public class GridTabListItemRenderer implements ListitemRenderer, ListitemRender @Override public void render(Listitem listitem, Object data, int index) throws Exception { //don't render if not visible + if (listPanel != null && !listPanel.isVisible()) { + return; + } + + GridField[] listPanelFields = listPanel.getFields(); + int columnCount = listPanelFields.length; + + GridField[] gridTabFields = gridTab.getFields(); + boolean isGridViewCustomized = gridTabFields.length != listPanelFields.length; + if (!isGridViewCustomized) { + for(int i = 0; i < gridTabFields.length; i++) { + if (listPanelFields[i].getAD_Field_ID() != gridTabFields[i].getAD_Field_ID()) { + isGridViewCustomized = true; + break; + } + } + } + for(Component c = listitem.getParent(); c != null; c = c.getParent()) { if (!c.isVisible()) return; } - Object[] values = (Object[])data; - int columnCount = gridTab.getTableModel().getColumnCount(); - GridField[] gridField = gridTab.getFields(); + Object[] values = null; + if (!isGridViewCustomized) { + values = (Object[])data; + } else { + List dataList = new ArrayList(); + for(GridField gridField : listPanelFields) { + for(int i = 0; i < gridTabFields.length; i++) { + if (gridField.getAD_Field_ID() == gridTabFields[i].getAD_Field_ID()) { + dataList.add(((Object[])data)[i]); + break; + } + } + } + values = dataList.toArray(new Object[0]); + } + for (int i = 0; i < columnCount; i++) { - if (!gridField[i].isDisplayed()) { + if (!listPanelFields[i].isDisplayed()) { continue; } - if (editors.get(gridField[i]) == null) - editors.put(gridField[i], WebEditorFactory.getEditor(gridField[i], true)); + if (editors.get(listPanelFields[i]) == null) + editors.put(listPanelFields[i], WebEditorFactory.getEditor(listPanelFields[i], true)); int rowIndex = listitem.getIndex(); if (paging != null && paging.getPageSize() > 0) { rowIndex = (paging.getActivePage() * paging.getPageSize()) + rowIndex; } Listcell cell = null; - if (rowIndex == gridTab.getCurrentRow() && gridField[i].isEditable(true)) { - cell = getEditorCell(gridField[i], values[i], i); + if (rowIndex == gridTab.getCurrentRow() && listPanelFields[i].isEditable(true)) { + cell = getEditorCell(listPanelFields[i], values[i], i); cell.setParent(listitem); } else { - if (gridField[i].getDisplayType() == DisplayType.YesNo) { + if (listPanelFields[i].getDisplayType() == DisplayType.YesNo) { cell = new Listcell("", null); cell.setParent(listitem); cell.setStyle("text-align:center"); @@ -116,9 +149,9 @@ public class GridTabListItemRenderer implements ListitemRenderer, ListitemRender cell.setParent(listitem); if (text != null && text.length() > MAX_TEXT_LENGTH) cell.setTooltiptext(text); - if (DisplayType.isNumeric(gridField[i].getDisplayType())) { + if (DisplayType.isNumeric(listPanelFields[i].getDisplayType())) { cell.setStyle("text-align:right"); - } else if (gridField[i].getDisplayType() == DisplayType.Image) { + } else if (listPanelFields[i].getDisplayType() == DisplayType.Image) { cell.setStyle("text-align:center"); } } @@ -203,7 +236,7 @@ public class GridTabListItemRenderer implements ListitemRenderer, ListitemRender } private int getColumnIndex(GridField field) { - GridField[] fields = gridTab.getFields(); + GridField[] fields = listPanel.getFields(); for(int i = 0; i < fields.length; i++) { if (fields[i] == field) return i; @@ -246,7 +279,7 @@ public class GridTabListItemRenderer implements ListitemRenderer, ListitemRender if (value == null) return ""; - GridField[] gridField = gridTab.getFields(); + GridField[] gridField = listPanel.getFields(); if (gridField[columnIndex].isEncryptedField()) { return "********"; @@ -286,7 +319,7 @@ public class GridTabListItemRenderer implements ListitemRenderer, ListitemRender else return ""; } - else if (gridTab.getTableModel().getColumnClass(columnIndex).equals(Timestamp.class)) + else if (DisplayType.getClass(gridField[columnIndex].getDisplayType(), false).equals(Timestamp.class)) { SimpleDateFormat dateFormat = DisplayType.getDateFormat(DisplayType.Date); return dateFormat.format((Timestamp)value); @@ -374,4 +407,12 @@ public class GridTabListItemRenderer implements ListitemRenderer, ListitemRender public void doTry() { lookupCache = new HashMap>(); } + + public void setListPanel(ListPanel listPanel) { + this.listPanel = listPanel; + } + + public ListPanel getListPanel() { + return listPanel; + } } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/GridTabRowRenderer.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/GridTabRowRenderer.java index 1b57c9fe4f..af06ba4ec9 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/GridTabRowRenderer.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/GridTabRowRenderer.java @@ -134,8 +134,8 @@ public class GridTabRowRenderer implements RowRenderer, RowRendererExt } } - private int getColumnIndex(GridField field) { - GridField[] fields = gridTab.getFields(); + public int getColumnIndex(GridField field) { + GridField[] fields = gridPanel.getFields(); for(int i = 0; i < fields.length; i++) { if (fields[i] == field) return i; @@ -195,7 +195,7 @@ public class GridTabRowRenderer implements RowRenderer, RowRendererExt else return ""; } - else if (gridTab.getTableModel().getColumnClass(getColumnIndex(gridField)).equals(Timestamp.class)) + else if (DisplayType.getClass(gridField.getDisplayType(), false).equals(Timestamp.class)) { SimpleDateFormat dateFormat = DisplayType.getDateFormat(gridField.getDisplayType(), AEnv.getLanguage(Env.getCtx())); return dateFormat.format((Timestamp)value); @@ -358,9 +358,35 @@ public class GridTabRowRenderer implements RowRenderer, RowRendererExt if (rowListener == null) rowListener = new RowListener((Grid)row.getParent().getParent()); - currentValues = data; - int columnCount = gridTab.getTableModel().getColumnCount(); - GridField[] gridField = gridTab.getFields(); + GridField[] gridPanelFields = gridPanel.getFields(); + int columnCount = gridPanelFields.length; + + GridField[] gridTabFields = gridTab.getFields(); + boolean isGridViewCustomized = gridTabFields.length != gridPanelFields.length; + if (!isGridViewCustomized) { + for(int i = 0; i < gridTabFields.length; i++) { + if (gridPanelFields[i].getAD_Field_ID() != gridTabFields[i].getAD_Field_ID()) { + isGridViewCustomized = true; + break; + } + } + } + if (!isGridViewCustomized) { + currentValues = data; + } else { + List dataList = new ArrayList(); + for(GridField gridField : gridPanelFields) { + for(int i = 0; i < gridTabFields.length; i++) { + if (gridField.getAD_Field_ID() == gridTabFields[i].getAD_Field_ID()) { + dataList.add(data[i]); + break; + } + } + } + currentValues = dataList.toArray(new Object[0]); + } + + Grid grid = (Grid) row.getParent().getParent(); org.zkoss.zul.Columns columns = grid.getColumns(); @@ -377,10 +403,10 @@ public class GridTabRowRenderer implements RowRenderer, RowRendererExt int colIndex = -1; for (int i = 0; i < columnCount; i++) { - if (editors.get(gridField[i]) == null) - editors.put(gridField[i], WebEditorFactory.getEditor(gridField[i], true)); + if (editors.get(gridPanelFields[i]) == null) + editors.put(gridPanelFields[i], WebEditorFactory.getEditor(gridPanelFields[i], true)); - if (!gridField[i].isDisplayed()) { + if (!gridPanelFields[i].isDisplayed()) { continue; } colIndex ++; @@ -389,19 +415,19 @@ public class GridTabRowRenderer implements RowRenderer, RowRendererExt String divStyle = "border: none; width: 100%; height: 100%; cursor: pointer;"; org.zkoss.zul.Column column = (org.zkoss.zul.Column) columns.getChildren().get(colIndex); if (column.isVisible()) { - Component component = getDisplayComponent(rowIndex, currentValues[i], gridField[i]); + Component component = getDisplayComponent(rowIndex, currentValues[i], gridPanelFields[i]); div.appendChild(component); div.setAttribute("display.component", component); - if (DisplayType.YesNo == gridField[i].getDisplayType() || DisplayType.Image == gridField[i].getDisplayType()) { + if (DisplayType.YesNo == gridPanelFields[i].getDisplayType() || DisplayType.Image == gridPanelFields[i].getDisplayType()) { divStyle += "text-align:center; "; } - else if (DisplayType.isNumeric(gridField[i].getDisplayType())) { + else if (DisplayType.isNumeric(gridPanelFields[i].getDisplayType())) { divStyle += "text-align:right; "; } } div.setStyle(divStyle); - div.setAttribute("columnName", gridField[i].getColumnName()); + div.setAttribute("columnName", gridPanelFields[i].getColumnName()); div.addEventListener(Events.ON_CLICK, rowListener); div.addEventListener(Events.ON_DOUBLE_CLICK, rowListener); row.addEventListener(Events.ON_CLICK, rowListener); @@ -466,22 +492,25 @@ public class GridTabRowRenderer implements RowRenderer, RowRendererExt public void editCurrentRow() { if (currentRow != null && currentRow.getParent() != null && currentRow.isVisible() && grid != null && grid.isVisible() && grid.getParent() != null && grid.getParent().isVisible()) { - int columnCount = gridTab.getTableModel().getColumnCount(); - GridField[] gridField = gridTab.getFields(); + GridField[] gridPanelFields = gridPanel.getFields(); + int columnCount = gridPanelFields.length; org.zkoss.zul.Columns columns = grid.getColumns(); //skip indicator column int colIndex = 0; for (int i = 0; i < columnCount; i++) { - if (!gridField[i].isDisplayed()) { + if (!gridPanelFields[i].isDisplayed()) { continue; } colIndex ++; + if (editors.get(gridPanelFields[i]) == null) + editors.put(gridPanelFields[i], WebEditorFactory.getEditor(gridPanelFields[i], true)); + org.zkoss.zul.Column column = (org.zkoss.zul.Column) columns.getChildren().get(colIndex); if (column.isVisible()) { Div div = (Div) currentRow.getChildren().get(colIndex); div.getChildren().clear(); - WEditor editor = getEditorCell(gridField[i]); + WEditor editor = getEditorCell(gridPanelFields[i]); div.appendChild(editor.getComponent()); WEditorPopupMenu popupMenu = editor.getPopupMenu(); @@ -493,11 +522,11 @@ public class GridTabRowRenderer implements RowRenderer, RowRendererExt } //check context - if (!gridField[i].isDisplayed(true)) + if (!gridPanelFields[i].isDisplayed(true)) { editor.setVisible(false); } - editor.setReadWrite(gridField[i].isEditable(true)); + editor.setReadWrite(gridPanelFields[i].isEditable(true)); } } editing = true; diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/ListPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/ListPanel.java index ce90aa6675..c78d829d59 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/ListPanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/ListPanel.java @@ -13,12 +13,14 @@ package org.adempiere.webui.component; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.swing.table.AbstractTableModel; +import org.adempiere.model.MTabCustomization; import org.adempiere.webui.LayoutUtils; import org.adempiere.webui.editor.WEditor; import org.compiere.model.GridField; @@ -26,6 +28,7 @@ import org.compiere.model.GridTab; import org.compiere.model.GridTable; import org.compiere.model.MSysConfig; import org.compiere.util.DisplayType; +import org.compiere.util.Env; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; @@ -74,6 +77,8 @@ public class ListPanel extends Borderlayout implements EventListener private South south; + private Map columnWidthMap; + public static final String PAGE_SIZE_KEY = "ZK_PAGING_SIZE"; public ListPanel() @@ -102,13 +107,8 @@ public class ListPanel extends Borderlayout implements EventListener public void init(GridTab gridTab) { if (init) return; - - this.gridTab = gridTab; - tableModel = gridTab.getTableModel(); - - numColumns = tableModel.getColumnCount(); - - gridField = ((GridTable)tableModel).getFields(); + + setupFields(gridTab); setupColumns(); render(); @@ -117,6 +117,41 @@ public class ListPanel extends Borderlayout implements EventListener this.init = true; } + + private void setupFields(GridTab gridTab) { + this.gridTab = gridTab; + tableModel = gridTab.getTableModel(); + GridField[] tmpFields = ((GridTable)tableModel).getFields(); + MTabCustomization tabCustomization = MTabCustomization.get(Env.getCtx(), Env.getAD_User_ID(Env.getCtx()), gridTab.getAD_Tab_ID(), null); + if (tabCustomization != null && tabCustomization.getAD_Tab_Customization_ID() > 0 + && tabCustomization.getCustom() != null && tabCustomization.getCustom().trim().length() > 0) { + String custom = tabCustomization.getCustom().trim(); + String[] customComponent = custom.split(";"); + String[] fieldIds = customComponent[0].split("[,]"); + List fieldList = new ArrayList(); + for(String fieldIdStr : fieldIds) { + fieldIdStr = fieldIdStr.trim(); + if (fieldIdStr.length() == 0) continue; + int AD_Field_ID = Integer.parseInt(fieldIdStr); + for(GridField gridField : tmpFields) { + if (gridField.getAD_Field_ID() == AD_Field_ID) { + fieldList.add(gridField); + break; + } + } + } + gridField = fieldList.toArray(new GridField[0]); + if (customComponent.length == 2) { + String[] widths = customComponent[1].split("[,]"); + for(int i = 0; i< gridField.length; i++) { + columnWidthMap.put(gridField[i].getAD_Field_ID(), widths[i]); + } + } + } else { + gridField = tmpFields; + } + numColumns = gridField.length; + } /** * @@ -264,15 +299,19 @@ public class ListPanel extends Borderlayout implements EventListener ListHeader colHeader = new ListHeader(); colHeader.setSort("auto"); colHeader.setLabel(gridField[i].getHeader()); - int l = DisplayType.isNumeric(gridField[i].getDisplayType()) - ? 100 : gridField[i].getDisplayLength() * 9; - if (gridField[i].getHeader().length() * 9 > l) - l = gridField[i].getHeader().length() * 9; - if (l > MAX_COLUMN_WIDTH) - l = MAX_COLUMN_WIDTH; - else if ( l < MIN_COLUMN_WIDTH) - l = MIN_COLUMN_WIDTH; - colHeader.setWidth(Integer.toString(l) + "px"); + if (columnWidthMap != null && columnWidthMap.get(gridField[i].getAD_Field_ID()) != null) { + colHeader.setWidth(columnWidthMap.get(gridField[i].getAD_Field_ID())); + } else { + int l = DisplayType.isNumeric(gridField[i].getDisplayType()) + ? 100 : gridField[i].getDisplayLength() * 9; + if (gridField[i].getHeader().length() * 9 > l) + l = gridField[i].getHeader().length() * 9; + if (l > MAX_COLUMN_WIDTH) + l = MAX_COLUMN_WIDTH; + else if ( l < MIN_COLUMN_WIDTH) + l = MIN_COLUMN_WIDTH; + colHeader.setWidth(Integer.toString(l) + "px"); + } header.appendChild(colHeader); } } @@ -429,4 +468,19 @@ public class ListPanel extends Borderlayout implements EventListener public void setWindowNo(int windowNo) { this.windowNo = windowNo; } + + public void reInit() { + this.setupFields(gridTab); + if (listbox.getListHead() != null) { + listbox.removeChild(listbox.getListHead()); + } + init = false; + setupColumns(); + init = true; + updateModel(); + } + + public GridField[] getFields() { + return gridField; + } } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/event/ToolbarListener.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/event/ToolbarListener.java index 112e610ddd..2332b71438 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/event/ToolbarListener.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/event/ToolbarListener.java @@ -169,4 +169,9 @@ public interface ToolbarListener * Export grid data */ public void onExport(); + + /** + * Customize grid view. + */ + public void onCustomize(); } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ADTabpanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ADTabpanel.java index a5fe304c4e..ff6804f447 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ADTabpanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ADTabpanel.java @@ -840,8 +840,12 @@ DataStatusListener, IADTabpanel, VetoableChangeListener public void onEvent(Event event) { if (event.getTarget() == listPanel.getListbox()) - { - this.switchRowPresentation(); + { + if (windowPanel != null) { + windowPanel.onToggle(); + } else { + this.switchRowPresentation(); + } } else if (event.getTarget() == treePanel.getTree()) { Treeitem item = treePanel.getTree().getSelectedItem(); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/AbstractADWindowPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/AbstractADWindowPanel.java index c0aedf8919..645ed57475 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/AbstractADWindowPanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/AbstractADWindowPanel.java @@ -22,6 +22,7 @@ import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; @@ -54,6 +55,7 @@ import org.adempiere.webui.exception.ApplicationException; import org.adempiere.webui.panel.action.ExportAction; import org.adempiere.webui.part.AbstractUIPart; import org.adempiere.webui.session.SessionManager; +import org.adempiere.webui.window.CustomizeGridViewDialog; import org.adempiere.webui.window.FDialog; import org.adempiere.webui.window.FindWindow; import org.adempiere.webui.window.WChat; @@ -90,6 +92,8 @@ import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; import org.zkoss.zul.Button; +import org.zkoss.zul.Column; +import org.zkoss.zul.Columns; import org.zkoss.zul.Div; import org.zkoss.zul.Hbox; import org.zkoss.zul.Listitem; @@ -966,6 +970,9 @@ public abstract class AbstractADWindowPanel extends AbstractUIPart implements To public void onToggle() { curTabpanel.switchRowPresentation(); + //Deepak-Enabling customize button IDEMPIERE-364 + if(!(curTabpanel instanceof ADSortTab)) + toolbar.enableCustomize(((ADTabpanel)curTabpanel).isGridView()); focusToActivePanel(); } @@ -1194,7 +1201,9 @@ public abstract class AbstractADWindowPanel extends AbstractUIPart implements To { toolbar.enableHistoryRecords(false); } - + //Deepak-Enabling customize button IDEMPIERE-364 + if(!(curTabpanel instanceof ADSortTab)) + toolbar.enableCustomize(((ADTabpanel)curTabpanel).isGridView()); } /** @@ -1396,6 +1405,9 @@ public abstract class AbstractADWindowPanel extends AbstractUIPart implements To toolbar.enableReport(true); toolbar.enableExport(!curTab.isSortTab()); + //Deepak-Enabling customize button IDEMPIERE-364 + if(!(curTabpanel instanceof ADSortTab)) + toolbar.enableCustomize(((ADTabpanel)curTabpanel).isGridView()); toolbar.updateToolBarAndMenuWithRestriction(gridWindow.getAD_Window_ID()); } @@ -2501,4 +2513,29 @@ public abstract class AbstractADWindowPanel extends AbstractUIPart implements To public int getWindowNo() { return curWindowNo; } + + /** + * @see ToolbarListener#onCustomize() + */ + public void onCustomize() { + ADTabpanel tabPanel = (ADTabpanel) getADTab().getSelectedTabpanel(); + Columns columns = tabPanel.getGridView().getListbox().getColumns(); + List columnList = columns.getChildren(); + GridField[] fields = tabPanel.getGridView().getFields(); + Map columnsWidth = new HashMap(); + ArrayList gridFieldIds = new ArrayList(); + for (int i = 0; i < columnList.size()-1; i++) { + Column column = (Column) columnList.get(i); + String width = column.getWidth(); + columnsWidth.put(fields[i].getAD_Field_ID(), width); + gridFieldIds.add(fields[i].getAD_Field_ID()); + + } + if (CustomizeGridViewDialog.showCustomize(0, curTab.getAD_Tab_ID(), columnsWidth,gridFieldIds)) { + + if (tabPanel.getGridView() != null) { + tabPanel.getGridView().reInit(); + } + } + } } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/CustomizeGridViewPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/CustomizeGridViewPanel.java new file mode 100644 index 0000000000..9945c7b4af --- /dev/null +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/CustomizeGridViewPanel.java @@ -0,0 +1,754 @@ +/****************************************************************************** + * Product: Adempiere ERP & CRM Smart Business Solution * + * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * + * This program is free software; you can redistribute it and/or modify it * + * under the terms version 2 of the GNU General Public License as published * + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * For the text or an alternative of this public license, you may reach us * + * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * + * or via info@compiere.org or http://www.compiere.org/license.html * + *****************************************************************************/ +package org.adempiere.webui.panel; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.logging.Level; + +import org.adempiere.model.MTabCustomization; +import org.adempiere.webui.component.Button; +import org.adempiere.webui.component.Checkbox; +import org.adempiere.webui.component.Label; +import org.adempiere.webui.component.ListHead; +import org.adempiere.webui.component.ListHeader; +import org.adempiere.webui.component.ListItem; +import org.adempiere.webui.component.Listbox; +import org.adempiere.webui.component.Panel; +import org.adempiere.webui.component.SimpleListModel; +import org.adempiere.webui.window.FDialog; +import org.compiere.model.GridTab; +import org.compiere.util.CLogger; +import org.compiere.util.DB; +import org.compiere.util.Env; +import org.compiere.util.Msg; +import org.compiere.util.NamePair; +import org.zkoss.zhtml.Span; +import org.zkoss.zk.au.out.AuFocus; +import org.zkoss.zk.ui.event.DropEvent; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zk.ui.event.Events; +import org.zkoss.zk.ui.util.Clients; +import org.zkoss.zul.Borderlayout; +import org.zkoss.zul.Center; +import org.zkoss.zul.Div; +import org.zkoss.zul.South; +import org.zkoss.zul.Vbox; + +/** + * + * @author hengsin + * + */ +public class CustomizeGridViewPanel extends Panel +{ + + private static final long serialVersionUID = 4289328613547509587L; + private Map m_columnsWidth; + ArrayList tableSeqs; + /** + * Sort Tab Constructor + * + * @param WindowNo Window No + * @param columnsWidth + * @param GridTab + */ + public CustomizeGridViewPanel(int WindowNo, int AD_Tab_ID, int AD_User_ID, Map columnsWidth,ArrayList gridFieldIds) + { + m_WindowNo = WindowNo; + + m_AD_Tab_ID = AD_Tab_ID; + m_AD_User_ID = AD_User_ID; + m_columnsWidth = columnsWidth; + tableSeqs = gridFieldIds; + this.setStyle("position : absolute;height: 460px; width:585px; margin: none; border: none;"); + } // + + /** Logger */ + static CLogger log = CLogger.getCLogger(CustomizeGridViewPanel.class); + private int m_WindowNo; + private int m_AD_Tab_ID; + private int m_AD_User_ID; + + // UI variables + private Label noLabel = new Label(); + private Label yesLabel = new Label(); + private Button bAdd = new Button(); + private Button bRemove = new Button(); + private Button bUp = new Button(); + private Button bDown = new Button(); + private Checkbox chkSaveWidth = new Checkbox(); + // + SimpleListModel noModel = new SimpleListModel(); + SimpleListModel yesModel = new SimpleListModel(); + Listbox noList = new Listbox(); + Listbox yesList = new Listbox(); + + private GridTab gridTab; + private boolean uiCreated; + private boolean m_saved = false; + + + /** + * Static Layout + * @throws Exception + */ + private void init() throws Exception + { + Borderlayout layout = new Borderlayout(); + layout.setStyle("position: absolute; width: 584px; height: 100%; border: none; margin: none;"); + Panel centerPanel = new Panel(); + centerPanel.setStyle("border: none; margin: none"); + centerPanel.setHeight("100%"); + Center center = new Center(); + center.setStyle("border: none; margin: none"); + + noLabel.setValue("No"); + yesLabel.setValue("Yes"); + noLabel.setValue(Msg.getMsg(Env.getCtx(), "Available")); + yesLabel.setValue(Msg.getMsg(Env.getCtx(), "Selected")); + + + yesList.setHeight("100%"); + noList.setHeight("100%"); + yesList.setVflex(true); + noList.setVflex(true); + + EventListener mouseListener = new EventListener() + { + + public void onEvent(Event event) throws Exception + { + if (Events.ON_DOUBLE_CLICK.equals(event.getName())) + { + migrateValueAcrossLists(event); + } + } + }; + yesList.addDoubleClickListener(mouseListener); + noList.addDoubleClickListener(mouseListener); + // + EventListener actionListener = new EventListener() + { + public void onEvent(Event event) throws Exception { + migrateValueAcrossLists(event); + } + }; + yesList.setSeltype("multiple"); + noList.setSeltype("multiple"); + + bAdd.setImage("images/Detail24.png"); + bAdd.addEventListener(Events.ON_CLICK, actionListener); + + bRemove.setImage("images/Parent24.png"); + bRemove.addEventListener(Events.ON_CLICK, actionListener); + + EventListener crossListMouseListener = new DragListener(); + yesList.addOnDropListener(crossListMouseListener); + noList.addOnDropListener(crossListMouseListener); + yesList.setItemDraggable(true); + noList.setItemDraggable(true); + + actionListener = new EventListener() + { + public void onEvent(Event event) throws Exception { + migrateValueWithinYesList(event); + } + }; + + bUp.setImage("images/Previous24.png"); + bUp.addEventListener(Events.ON_CLICK, actionListener); + + bDown.setImage("images/Next24.png"); + bDown.addEventListener(Events.ON_CLICK, actionListener); + + EventListener yesListMouseMotionListener = new EventListener() + { + public void onEvent(Event event) throws Exception { + if (event instanceof DropEvent) + { + DropEvent me = (DropEvent) event; + ListItem startItem = (ListItem) me.getDragged(); + ListItem endItem = (ListItem) me.getTarget(); + if (startItem.getListbox() == endItem.getListbox() && startItem.getListbox() == yesList) + { + int startIndex = yesList.getIndexOfItem(startItem); + int endIndex = yesList.getIndexOfItem(endItem); + Object endElement = yesModel.getElementAt(endIndex); + Object element = yesModel.getElementAt(startIndex); + yesModel.removeElement(element); + endIndex = yesModel.indexOf(endElement); + yesModel.add(endIndex, element); + yesList.setSelectedIndex(endIndex); + if ( yesList.getSelectedItem() != null) + { + AuFocus focus = new AuFocus(yesList.getSelectedItem()); + Clients.response(focus); + } + } + } + } + }; + yesList.addOnDropListener(yesListMouseMotionListener); + + ListHead listHead = new ListHead(); + listHead.setParent(yesList); + ListHeader listHeader = new ListHeader(); + listHeader.appendChild(yesLabel); + listHeader.setParent(listHead); + + listHead = new ListHead(); + listHead.setParent(noList); + listHeader = new ListHeader(); + listHeader.appendChild(noLabel); + listHeader.setParent(listHead); + + Span span = new Span(); + span.setParent(centerPanel); + span.setStyle("height: 90%; display: inline-block; width: 250px; border:none; margin: none;"); + span.appendChild(noList); + Vbox vbox = new Vbox(); + vbox.setStyle("border: none; margin: none;"); + vbox.appendChild(bAdd); + vbox.appendChild(bRemove); + span = new Span(); + span.setParent(centerPanel); + span.setStyle("height: 90%; display: inline-block; width: 40px; border:none; margin: none;"); + span.appendChild(vbox); + + span = new Span(); + span.setParent(centerPanel); + span.setStyle("height: 90%; display: inline-block; width: 250px; border:none; margin: none;"); + span.appendChild(yesList); + yesList.setStyle("margin: none"); + vbox = new Vbox(); + vbox.appendChild(bUp); + vbox.appendChild(bDown); + vbox.setStyle("border: none; margin: none"); + span = new Span(); + span.setParent(centerPanel); + span.setStyle("height: 90%; display: inline-block; width: 40px; border:none; margin: none;"); + span.appendChild(vbox); + + Div div = new Div(); + div.setStyle("margin-top:5px"); + div.appendChild(chkSaveWidth); + chkSaveWidth.setLabel("Save Column Width"); + centerPanel.appendChild(div); + + center.appendChild(centerPanel); + center.setFlex(true); + layout.appendChild(center); + + South south = new South(); + south.setStyle("border: none; margin: none"); + Panel southPanel = new Panel(); + south.setHeight("35px"); + southPanel.setAlign("Right"); + southPanel.setStyle("margin-top: 2px; margin-right: 4px"); + String label = Msg.getMsg(Env.getCtx(), "save"); + Button bOK = new Button(label); + bOK.setImage("/images/Ok16.png"); + bOK.setId("Ok"); + EventListener onClickListener = new EventListener() + { + + public void onEvent(Event event) throws Exception + { + if (Events.ON_CLICK.equals(event.getName())) + { + saveData(); + } + } + + }; + bOK.addActionListener(onClickListener); + bOK.setSclass("action-button"); + southPanel.appendChild(bOK); + label = Msg.getMsg(Env.getCtx(), "Cancel"); + Button btn = new Button(label.replaceAll("&", "")); + btn.setImage("/images/Cancel16.png"); + btn.setId("Cancel"); + EventListener onClickCancelListener = new EventListener() + { + + public void onEvent(Event event) throws Exception + { + if (Events.ON_CLICK.equals(event.getName())) + { + getParent().detach(); + } + } + }; + + btn.addActionListener(onClickCancelListener); + btn.setSclass("action-button"); + + southPanel.appendChild(btn); + south.appendChild(southPanel); + layout.appendChild(south); + + this.appendChild(layout); + + } // Init + + + /* (non-Javadoc) + * @see org.compiere.grid.APanelTab#loadData() + */ + public void loadData() + { + yesModel.removeAllElements(); + noModel.removeAllElements(); + + String sql = "SELECT t.AD_Field_ID,t.Name,t.SeqNoGrid,AD_Client_ID, AD_Org_ID FROM AD_Field t WHERE t.AD_Tab_ID=? AND t.IsDisplayedGrid ='Y' ORDER BY 3,2"; + PreparedStatement pstmt = null; + ResultSet rs = null; + try + { + pstmt = DB.prepareStatement(sql, null); + pstmt.setInt(1, m_AD_Tab_ID); + rs = pstmt.executeQuery(); + + while (rs.next()) + { + int key = rs.getInt(1); + String name = rs.getString(2); + int AD_Client_ID = rs.getInt(4); + int AD_Org_ID = rs.getInt(5); + ListElement pp = new ListElement(key, name, AD_Client_ID, AD_Org_ID); + if (tableSeqs != null && tableSeqs.size() > 0 ) { + if (tableSeqs.contains(key)) { + yesModel.addElement(pp); + } else { + noModel.addElement(pp); + } + } else { + noModel.addElement(pp); + } + } + } + catch (SQLException e) + { + log.log(Level.SEVERE, sql.toString(), e); + } + finally + { + DB.close(rs, pstmt); + rs = null; pstmt = null; + } + + bAdd.setEnabled(true); + bRemove.setEnabled(true); + bUp.setEnabled(true); + bDown.setEnabled(true); + yesList.setEnabled(true); + noList.setEnabled(true); + + yesList.setItemRenderer(yesModel); + yesList.setModel(yesModel); + noList.setItemRenderer(noModel); + noList.setModel(noModel); + } // loadData + + /** + * @param event + */ + void migrateValueAcrossLists (Event event) + { + Object source = event.getTarget(); + if (source instanceof ListItem) { + source = ((ListItem)source).getListbox(); + } + Listbox listFrom = (source == bAdd || source == noList) ? noList : yesList; + Listbox listTo = (source == bAdd || source == noList) ? yesList : noList; + SimpleListModel lmFrom = (source == bAdd || source == noList) ? + noModel : yesModel; + SimpleListModel lmTo = (lmFrom == yesModel) ? noModel : yesModel; + Set selectedItems = listFrom.getSelectedItems(); + List selObjects = new ArrayList(); + for (Object obj : selectedItems) { + ListItem listItem = (ListItem) obj; + int index = listFrom.getIndexOfItem(listItem); + ListElement selObject = (ListElement)lmFrom.getElementAt(index); + selObjects.add(selObject); + } + for (ListElement selObject : selObjects) + { + if (selObject == null || !selObject.isUpdateable()) + continue; + + lmFrom.removeElement(selObject); + lmTo.addElement(selObject); + } + + for (ListElement selObject : selObjects) + { + int index = lmTo.indexOf(selObject); + listTo.setSelectedIndex(index); + } + if ( listTo.getSelectedItem() != null) + { + AuFocus focus = new AuFocus(listTo.getSelectedItem()); + Clients.response(focus); + } + } // migrateValueAcrossLists + + + /** + * Move within Yes List + * @param event event + */ + void migrateValueWithinYesList (Event event) + { + Object[] selObjects = yesList.getSelectedItems().toArray(); + + if (selObjects == null) + return; + int length = selObjects.length; + if (length == 0) + return; + // + int[] indices = yesList.getSelectedIndices(); + // + boolean change = false; + // + Object source = event.getTarget(); + if (source == bUp) + { + for (int i = 0; i < length; i++) { + int index = indices[i]; + if (index == 0) + break; + ListElement selObject = (ListElement) yesModel.getElementAt(index); + ListElement newObject = (ListElement)yesModel.getElementAt(index - 1); + if (!selObject.isUpdateable() || !newObject.isUpdateable()) + break; + yesModel.setElementAt(newObject, index); + yesModel.setElementAt(selObject, index - 1); + indices[i] = index - 1; + change = true; + } + } // up + + else if (source == bDown) + { + for (int i = length - 1; i >= 0; i--) { + int index = indices[i]; + if (index >= yesModel.getSize() - 1) + break; + ListElement selObject = (ListElement) yesModel.getElementAt(index); + ListElement newObject = (ListElement)yesModel.getElementAt(index + 1); + if (!selObject.isUpdateable() || !newObject.isUpdateable()) + break; + yesModel.setElementAt(newObject, index); + yesModel.setElementAt(selObject, index + 1); + yesList.setSelectedIndex(index + 1); + indices[i] = index + 1; + change = true; + } + } // down + + // + if (change) { + yesList.setSelectedIndices(indices); + if ( yesList.getSelectedItem() != null) + { + AuFocus focus = new AuFocus(yesList.getSelectedItem()); + Clients.response(focus); + } + } + } // migrateValueWithinYesList + + + + + /** (non-Javadoc) + * @see org.compiere.grid.APanelTab#saveData() + */ + public void saveData() + { + log.fine(""); + // yesList + int index = 0; + boolean ok = true; + StringBuffer custom = new StringBuffer(); + for (int i = 0; i < yesModel.getSize(); i++) + { + ListElement pp = (ListElement)yesModel.getElementAt(i); + if (!pp.isUpdateable()) + continue; + index += 10; + + custom.append(pp.getKey()); + custom.append(","); + } + + if (chkSaveWidth.isSelected() && m_columnsWidth != null && !m_columnsWidth.isEmpty()) + { + for (int i = 0; i < yesModel.getSize(); i++) + { + if (i > 0) + custom.append(","); + else + custom.append(";"); + + ListElement pp = (ListElement)yesModel.getElementAt(i); + int fieldId = pp.getKey(); + String width = m_columnsWidth.get(fieldId); + if (width == null) width = ""; + custom.append(width); + } + } + + MTabCustomization uc = MTabCustomization.get(Env.getCtx(), m_AD_User_ID, m_AD_Tab_ID, null); + if (uc != null && uc.getAD_Tab_Customization_ID() > 0) { + uc.setCustom(custom.toString()); + } else{ + uc = new MTabCustomization(Env.getCtx(), 0, null); + uc.setAD_Tab_ID(m_AD_Tab_ID); + uc.setAD_User_ID(m_AD_User_ID); + uc.setCustom(custom.toString()); + } + if (uc.getCustom() == null || uc.getCustom().trim().length() == 0) + { + if (uc.is_new()) + { + //no action needed + getParent().detach(); + return; + } + else + { + ok = uc.delete(true); + } + } + else + { + ok = uc.save(); + } + // + if(ok) { + m_saved = true; + FDialog.info(m_WindowNo, null, "Saved"); + getParent().detach(); + } else { + FDialog.error(m_WindowNo, null, "SaveError", custom.toString()); + } + } // saveData + + /** + * List Item + * @author Teo Sarca + */ + private class ListElement extends NamePair { + /** + * + */ + private static final long serialVersionUID = -5645910649588308798L; + private int m_key; + private int m_AD_Client_ID; + private int m_AD_Org_ID; + /** Initial selection flag */ + + private boolean m_updateable; + + public ListElement(int key, String name, int AD_Client_ID, int AD_Org_ID) { + super(name); + this.m_key = key; + this.m_AD_Client_ID = AD_Client_ID; + this.m_AD_Org_ID = AD_Org_ID; + this.m_updateable = true; + } + + public int getKey() { + return m_key; + } + + public int getAD_Client_ID() { + return m_AD_Client_ID; + } + + public int getAD_Org_ID() { + return m_AD_Org_ID; + } + + public boolean isUpdateable() { + return m_updateable; + } + + @Override + public String getID() { + return m_key != -1 ? String.valueOf(m_key) : null; + } + + @Override + public int hashCode() { + return m_key; + } + + @Override + public boolean equals(Object obj) + { + if (obj instanceof ListElement) + { + ListElement li = (ListElement)obj; + return + li.getKey() == m_key + && li.getName() != null + && li.getName().equals(getName()) + && li.getAD_Client_ID() == m_AD_Client_ID + && li.getAD_Org_ID() == m_AD_Org_ID; + } + return false; + } // equals + + @Override + public String toString() { + String s = super.toString(); + if (s == null || s.trim().length() == 0) + s = "<" + getKey() + ">"; + return s; + } + } + + /** + * @author eslatis + * + */ + private class DragListener implements EventListener + { + + /** + * Creates a ADSortTab.DragListener. + */ + public DragListener() + { + } + + public void onEvent(Event event) throws Exception { + if (event instanceof DropEvent) + { + DropEvent me = (DropEvent) event; + + ListItem endItem = (ListItem) me.getTarget(); + if (!(endItem.getListbox() == yesList)) + { + return; // move within noList + } + + ListItem startItem = (ListItem) me.getDragged(); + if (startItem.getListbox() == endItem.getListbox()) + { + return; //move within same list + } + int startIndex = noList.getIndexOfItem(startItem); + Object element = noModel.getElementAt(startIndex); + noModel.removeElement(element); + int endIndex = yesList.getIndexOfItem(endItem); + yesModel.add(endIndex, element); + // + noList.clearSelection(); + yesList.clearSelection(); + + yesList.setSelectedIndex(endIndex); + // + } + } + } + + public void activate(boolean b) { + if (b && !uiCreated) createUI(); + } + + public void createUI() { + if (uiCreated) return; + try + { + init(); + // dynInit (m_AD_Tab_ID); + } + catch(Exception e) + { + log.log(Level.SEVERE, "", e); + } + uiCreated = true; + } + + public void dynamicDisplay(int i) { + } + + public void editRecord(boolean b) { + } + + public String getDisplayLogic() { + return gridTab.getDisplayLogic(); + } + + public GridTab getGridTab() { + return gridTab; + } + + public int getTabLevel() { + return gridTab.getTabLevel(); + } + + public String getTitle() { + return gridTab.getName(); + } + + public boolean isCurrent() { + return gridTab != null ? gridTab.isCurrent() : false; + } + + public void query() { + loadData(); + } + + public void query(boolean currentRows, int currentDays, int i) { + loadData(); + } + + public void refresh() { + loadData(); + } + + public void switchRowPresentation() { + } + + public String get_ValueAsString(String variableName) { + return Env.getContext(Env.getCtx(), m_WindowNo, variableName); + } + + public void afterSave(boolean onSaveEvent) { + } + + public boolean onEnterKey() { + return false; + } + + public boolean isSaved() { + return m_saved; + } +} //ADSortTab + diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/CustomizeGridViewDialog.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/CustomizeGridViewDialog.java new file mode 100644 index 0000000000..7f2d006827 --- /dev/null +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/CustomizeGridViewDialog.java @@ -0,0 +1,66 @@ +package org.adempiere.webui.window; + +import java.util.ArrayList; +import java.util.Map; + +import org.adempiere.webui.apps.AEnv; +import org.adempiere.webui.component.Window; +import org.adempiere.webui.panel.CustomizeGridViewPanel; +import org.compiere.util.Env; +import org.compiere.util.Msg; + +public class CustomizeGridViewDialog extends Window { + + /** + * generated serial id + */ + private static final long serialVersionUID = -4093048147438176240L; + + private CustomizeGridViewPanel customizePanel; + + /** + * Standard Constructor + * @param WindowNo window no + * @param AD_Tab_ID tab + * @param AD_User_ID user + * @param columnsWidth + */ + public CustomizeGridViewDialog(int windowNo, int AD_Tab_ID, int AD_User_ID, Map columnsWidth,ArrayList gridFieldIds) + { + setClosable(true); + setTitle(Msg.getMsg(Env.getCtx(), "Customize")); + initComponent(windowNo,AD_Tab_ID, AD_User_ID, columnsWidth,gridFieldIds); + } + + private void initComponent(int windowNo, int AD_Tab_ID, int AD_User_ID, Map columnsWidth,ArrayList gridFieldIds) { + customizePanel = new CustomizeGridViewPanel(windowNo, AD_Tab_ID, AD_User_ID, columnsWidth,gridFieldIds); + this.setStyle("position : absolute;"); + this.setWidth("600px"); + this.setHeight("500px"); + this.setBorder("normal"); + appendChild(customizePanel); + customizePanel.createUI(); + customizePanel.query(); + } + + /** + * @return whether change have been successfully save to db + */ + public boolean isSaved() { + return customizePanel.isSaved(); + } + + /** + * Show User customize (modal) + * @param WindowNo window no + * @param AD_Tab_ID + * @param columnsWidth + */ + public static boolean showCustomize (int WindowNo, int AD_Tab_ID, Map columnsWidth,ArrayList gridFieldIds) + { + CustomizeGridViewDialog customizeWindow = new CustomizeGridViewDialog(WindowNo, AD_Tab_ID, Env.getAD_User_ID(Env.getCtx()), columnsWidth,gridFieldIds); + AEnv.showWindow(customizeWindow); + return customizeWindow.isSaved(); + } // showProduct + +}