diff --git a/migration/i2.1/oracle/201501111521_IDEMPIERE-2064.sql b/migration/i2.1/oracle/201501111521_IDEMPIERE-2064.sql new file mode 100644 index 0000000000..c9673a86a3 --- /dev/null +++ b/migration/i2.1/oracle/201501111521_IDEMPIERE-2064.sql @@ -0,0 +1,177 @@ +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- Jan 11, 2015 3:18:55 PM COT +-- IDEMPIERE-2064 Implement toolbar+tab button +INSERT INTO AD_Reference (AD_Reference_ID,Name,ValidationType,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,IsOrderByValue,AD_Reference_UU) VALUES (200099,'IsToolbarButton','L',0,0,'Y',TO_DATE('2015-01-11 15:18:54','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-01-11 15:18:54','YYYY-MM-DD HH24:MI:SS'),100,'D','N','d90d1cd0-4cf1-41e0-84cb-53600a366a22') +; + +-- Jan 11, 2015 3:19:18 PM COT +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200285,'Toolbar',200099,'Y',0,0,'Y',TO_DATE('2015-01-11 15:19:18','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-01-11 15:19:18','YYYY-MM-DD HH24:MI:SS'),100,'D','5803fda0-fda8-4100-85f2-a4fe8142a059') +; + +-- Jan 11, 2015 3:19:35 PM COT +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200286,'Window',200099,'N',0,0,'Y',TO_DATE('2015-01-11 15:19:34','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-01-11 15:19:34','YYYY-MM-DD HH24:MI:SS'),100,'D','eb2f6365-a357-4655-9102-d622360aacce') +; + +-- Jan 11, 2015 3:19:45 PM COT +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200287,'Both',200099,'B',0,0,'Y',TO_DATE('2015-01-11 15:19:44','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-01-11 15:19:44','YYYY-MM-DD HH24:MI:SS'),100,'D','5b8b7285-d4da-4513-8941-a280d501ea19') +; + +-- Jan 11, 2015 3:20:17 PM COT +UPDATE AD_Column SET AD_Reference_ID=17, AD_Reference_Value_ID=200099,Updated=TO_DATE('2015-01-11 15:20:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200703 +; + +-- Jan 11, 2015 3:20:18 PM COT +UPDATE AD_Column SET AD_Reference_Value_ID=200099,Updated=TO_DATE('2015-01-11 15:20:18','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200949 +; + +-- Jan 11, 2015 3:20:20 PM COT +UPDATE AD_Column SET AD_Reference_Value_ID=200099,Updated=TO_DATE('2015-01-11 15:20:20','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200958 +; + +-- Jan 11, 2015 3:20:36 PM COT +UPDATE AD_Column SET IsToolbarButton='Y' WHERE IsToolbarButton IS NULL +; + +-- Jan 11, 2015 3:20:44 PM COT +ALTER TABLE AD_Field MODIFY IsToolbarButton CHAR(1) DEFAULT NULL +; + +-- Jan 11, 2015 3:20:50 PM COT +ALTER TABLE AD_UserDef_Field MODIFY IsToolbarButton CHAR(1) DEFAULT NULL +; + +-- to drop the constraint (unknown name) +alter table ad_column add (tmp_istoolbarbutton char(1) null); + +update ad_column set tmp_istoolbarbutton=istoolbarbutton; + +alter table ad_column drop (istoolbarbutton) cascade constraint; + +alter table ad_column rename column tmp_istoolbarbutton to istoolbarbutton; + +-- Jan 11, 2015 3:20:35 PM COT +ALTER TABLE AD_Column MODIFY IsToolbarButton CHAR(1) DEFAULT 'Y' +; + +-- Jan 11, 2015 4:53:13 PM COT +-- IDEMPIERE-2064 Implement toolbar+tab button +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=190, XPosition=4, ColumnSpan=2,Updated=TO_DATE('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200648 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=200,Updated=TO_DATE('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=59619 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=210,Updated=TO_DATE('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=171 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=220,Updated=TO_DATE('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=56279 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=230,Updated=TO_DATE('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=2574 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=240,Updated=TO_DATE('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=2573 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=250,Updated=TO_DATE('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202518 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=260,Updated=TO_DATE('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202519 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=270,Updated=TO_DATE('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=160 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=280,Updated=TO_DATE('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=161 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=290,Updated=TO_DATE('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=162 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=300,Updated=TO_DATE('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=166 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=310,Updated=TO_DATE('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5122 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=320,Updated=TO_DATE('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=169 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=330,Updated=TO_DATE('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=2370 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=340,Updated=TO_DATE('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=10128 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=350,Updated=TO_DATE('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=4941 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=360,Updated=TO_DATE('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50188 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=370,Updated=TO_DATE('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=168 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=380,Updated=TO_DATE('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=159 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=390,Updated=TO_DATE('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=4940 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=400,Updated=TO_DATE('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200288 +; + +-- Jan 11, 2015 4:55:14 PM COT +UPDATE AD_Element SET Description='Show the button on the toolbar, the window, or both', Help='The IsToolbarButton field indicates if this button is part of the toolbar''s process button popup list, or render as field in window, or both.',Updated=TO_DATE('2015-01-11 16:55:14','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200187 +; + +-- Jan 11, 2015 4:55:14 PM COT +UPDATE AD_Column SET ColumnName='IsToolbarButton', Name='Toolbar Button', Description='Show the button on the toolbar, the window, or both', Help='The IsToolbarButton field indicates if this button is part of the toolbar''s process button popup list, or render as field in window, or both.' WHERE AD_Element_ID=200187 +; + +-- Jan 11, 2015 4:55:14 PM COT +UPDATE AD_Process_Para SET ColumnName='IsToolbarButton', Name='Toolbar Button', Description='Show the button on the toolbar, the window, or both', Help='The IsToolbarButton field indicates if this button is part of the toolbar''s process button popup list, or render as field in window, or both.', AD_Element_ID=200187 WHERE UPPER(ColumnName)='ISTOOLBARBUTTON' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Jan 11, 2015 4:55:14 PM COT +UPDATE AD_Process_Para SET ColumnName='IsToolbarButton', Name='Toolbar Button', Description='Show the button on the toolbar, the window, or both', Help='The IsToolbarButton field indicates if this button is part of the toolbar''s process button popup list, or render as field in window, or both.' WHERE AD_Element_ID=200187 AND IsCentrallyMaintained='Y' +; + +-- Jan 11, 2015 4:55:14 PM COT +UPDATE AD_InfoColumn SET ColumnName='IsToolbarButton', Name='Toolbar Button', Description='Show the button on the toolbar, the window, or both', Help='The IsToolbarButton field indicates if this button is part of the toolbar''s process button popup list, or render as field in window, or both.' WHERE AD_Element_ID=200187 AND IsCentrallyMaintained='Y' +; + +-- Jan 11, 2015 4:55:14 PM COT +UPDATE AD_Field SET Name='Toolbar Button', Description='Show the button on the toolbar, the window, or both', Help='The IsToolbarButton field indicates if this button is part of the toolbar''s process button popup list, or render as field in window, or both.' WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=200187) AND IsCentrallyMaintained='Y' +; + +-- Jan 11, 2015 5:01:02 PM COT +UPDATE AD_Column SET IsToolbarButton='B',Updated=TO_DATE('2015-01-11 17:01:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=6487 +; + +SELECT register_migration_script('201501111521_IDEMPIERE-2064.sql') FROM dual +; + diff --git a/migration/i2.1/oracle/201501111840_IDEMPIERE-1425.sql b/migration/i2.1/oracle/201501111840_IDEMPIERE-1425.sql new file mode 100644 index 0000000000..c70dc7f7c4 --- /dev/null +++ b/migration/i2.1/oracle/201501111840_IDEMPIERE-1425.sql @@ -0,0 +1,67 @@ +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- Jan 11, 2015 6:38:54 PM COT +-- IDEMPIERE-1425 Account element improvements +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (202809,0,0,'Y',TO_DATE('2015-01-11 18:38:53','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-01-11 18:38:53','YYYY-MM-DD HH24:MI:SS'),100,'IsTreeDrivenByValue','Driven By Search Key','Defines if the tree is driven by the Search Key column','D','9ff38eb0-bbe7-4584-8682-f82f5cf9152b') +; + +-- Jan 11, 2015 6:39:16 PM COT +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure) VALUES (211812,0,'Driven By Search Key',288,'IsTreeDrivenByValue','N',1,'N','N','Y','N','N',0,'N',20,0,0,'Y',TO_DATE('2015-01-11 18:39:16','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-01-11 18:39:16','YYYY-MM-DD HH24:MI:SS'),100,202809,'Y','N','U','N','N','N','Y','a55184b0-1acc-433e-8df2-cd00b8aa77a3','Y',0,'N','N') +; + +-- Jan 11, 2015 6:39:17 PM COT +ALTER TABLE AD_Tree ADD IsTreeDrivenByValue CHAR(1) DEFAULT 'N' CHECK (IsTreeDrivenByValue IN ('Y','N')) NOT NULL +; + +-- Jan 11, 2015 6:39:32 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan) VALUES (203480,'Driven By Search Key',243,211812,'Y',1,100,'N','N','N','N',0,0,'Y',TO_DATE('2015-01-11 18:39:31','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-01-11 18:39:31','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','U','ac15015d-0eef-4e66-b2fb-6a2fa0f60a1f','Y',100,2,2) +; + +-- Jan 11, 2015 6:39:47 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=70, XPosition=5,Updated=TO_DATE('2015-01-11 18:39:47','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203480 +; + +-- Jan 11, 2015 6:39:47 PM COT +UPDATE AD_Field SET SeqNo=80,Updated=TO_DATE('2015-01-11 18:39:47','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5228 +; + +-- Jan 11, 2015 6:39:47 PM COT +UPDATE AD_Field SET SeqNo=90,Updated=TO_DATE('2015-01-11 18:39:47','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=12421 +; + +-- Jan 11, 2015 6:39:47 PM COT +UPDATE AD_Field SET SeqNo=100,Updated=TO_DATE('2015-01-11 18:39:47','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=8371 +; + +-- Jan 11, 2015 6:39:56 PM COT +UPDATE AD_Element SET Name='Driven by Search Key',Updated=TO_DATE('2015-01-11 18:39:56','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=202809 +; + +-- Jan 11, 2015 6:39:56 PM COT +UPDATE AD_Column SET ColumnName='IsTreeDrivenByValue', Name='Driven by Search Key', Description=NULL, Help=NULL WHERE AD_Element_ID=202809 +; + +-- Jan 11, 2015 6:39:56 PM COT +UPDATE AD_Process_Para SET ColumnName='IsTreeDrivenByValue', Name='Driven by Search Key', Description=NULL, Help=NULL, AD_Element_ID=202809 WHERE UPPER(ColumnName)='ISTREEDRIVENBYVALUE' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Jan 11, 2015 6:39:56 PM COT +UPDATE AD_Process_Para SET ColumnName='IsTreeDrivenByValue', Name='Driven by Search Key', Description=NULL, Help=NULL WHERE AD_Element_ID=202809 AND IsCentrallyMaintained='Y' +; + +-- Jan 11, 2015 6:39:56 PM COT +UPDATE AD_InfoColumn SET ColumnName='IsTreeDrivenByValue', Name='Driven by Search Key', Description=NULL, Help=NULL WHERE AD_Element_ID=202809 AND IsCentrallyMaintained='Y' +; + +-- Jan 11, 2015 6:39:56 PM COT +UPDATE AD_Field SET Name='Driven by Search Key', Description=NULL, Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=202809) AND IsCentrallyMaintained='Y' +; + +-- Jan 11, 2015 6:39:56 PM COT +UPDATE AD_PrintFormatItem SET PrintName='Defines if the tree is driven by the Search Key column', Name='Driven by Search Key' WHERE IsCentrallyMaintained='Y' AND EXISTS (SELECT * FROM AD_Column c WHERE c.AD_Column_ID=AD_PrintFormatItem.AD_Column_ID AND c.AD_Element_ID=202809) +; + +SELECT register_migration_script('201501111840_IDEMPIERE-1425.sql') FROM dual +; + diff --git a/migration/i2.1/postgresql/201501111521_IDEMPIERE-2064.sql b/migration/i2.1/postgresql/201501111521_IDEMPIERE-2064.sql new file mode 100644 index 0000000000..65dec3b9df --- /dev/null +++ b/migration/i2.1/postgresql/201501111521_IDEMPIERE-2064.sql @@ -0,0 +1,167 @@ +-- Jan 11, 2015 3:18:55 PM COT +-- IDEMPIERE-2064 Implement toolbar+tab button +INSERT INTO AD_Reference (AD_Reference_ID,Name,ValidationType,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,IsOrderByValue,AD_Reference_UU) VALUES (200099,'IsToolbarButton','L',0,0,'Y',TO_TIMESTAMP('2015-01-11 15:18:54','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-01-11 15:18:54','YYYY-MM-DD HH24:MI:SS'),100,'D','N','d90d1cd0-4cf1-41e0-84cb-53600a366a22') +; + +-- Jan 11, 2015 3:19:18 PM COT +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200285,'Toolbar',200099,'Y',0,0,'Y',TO_TIMESTAMP('2015-01-11 15:19:18','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-01-11 15:19:18','YYYY-MM-DD HH24:MI:SS'),100,'D','5803fda0-fda8-4100-85f2-a4fe8142a059') +; + +-- Jan 11, 2015 3:19:35 PM COT +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200286,'Window',200099,'N',0,0,'Y',TO_TIMESTAMP('2015-01-11 15:19:34','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-01-11 15:19:34','YYYY-MM-DD HH24:MI:SS'),100,'D','eb2f6365-a357-4655-9102-d622360aacce') +; + +-- Jan 11, 2015 3:19:45 PM COT +INSERT INTO AD_Ref_List (AD_Ref_List_ID,Name,AD_Reference_ID,Value,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Ref_List_UU) VALUES (200287,'Both',200099,'B',0,0,'Y',TO_TIMESTAMP('2015-01-11 15:19:44','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-01-11 15:19:44','YYYY-MM-DD HH24:MI:SS'),100,'D','5b8b7285-d4da-4513-8941-a280d501ea19') +; + +-- Jan 11, 2015 3:20:17 PM COT +UPDATE AD_Column SET AD_Reference_ID=17, AD_Reference_Value_ID=200099,Updated=TO_TIMESTAMP('2015-01-11 15:20:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200703 +; + +-- Jan 11, 2015 3:20:18 PM COT +UPDATE AD_Column SET AD_Reference_Value_ID=200099,Updated=TO_TIMESTAMP('2015-01-11 15:20:18','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200949 +; + +-- Jan 11, 2015 3:20:20 PM COT +UPDATE AD_Column SET AD_Reference_Value_ID=200099,Updated=TO_TIMESTAMP('2015-01-11 15:20:20','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200958 +; + +-- Jan 11, 2015 3:20:35 PM COT +INSERT INTO t_alter_column values('ad_column','IsToolbarButton','CHAR(1)',null,'Y') +; + +-- Jan 11, 2015 3:20:36 PM COT +UPDATE AD_Column SET IsToolbarButton='Y' WHERE IsToolbarButton IS NULL +; + +-- Jan 11, 2015 3:20:44 PM COT +INSERT INTO t_alter_column values('ad_field','IsToolbarButton','CHAR(1)',null,'NULL') +; + +-- Jan 11, 2015 3:20:50 PM COT +INSERT INTO t_alter_column values('ad_userdef_field','IsToolbarButton','CHAR(1)',null,'NULL') +; + +ALTER TABLE ad_column DROP CONSTRAINT ad_column_istoolbarbutton_check CASCADE +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=190, XPosition=4, ColumnSpan=2,Updated=TO_TIMESTAMP('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200648 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=200,Updated=TO_TIMESTAMP('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=59619 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=210,Updated=TO_TIMESTAMP('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=171 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=220,Updated=TO_TIMESTAMP('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=56279 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=230,Updated=TO_TIMESTAMP('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=2574 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=240,Updated=TO_TIMESTAMP('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=2573 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=250,Updated=TO_TIMESTAMP('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202518 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=260,Updated=TO_TIMESTAMP('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202519 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=270,Updated=TO_TIMESTAMP('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=160 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=280,Updated=TO_TIMESTAMP('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=161 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=290,Updated=TO_TIMESTAMP('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=162 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=300,Updated=TO_TIMESTAMP('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=166 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=310,Updated=TO_TIMESTAMP('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5122 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=320,Updated=TO_TIMESTAMP('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=169 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=330,Updated=TO_TIMESTAMP('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=2370 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=340,Updated=TO_TIMESTAMP('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=10128 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=350,Updated=TO_TIMESTAMP('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=4941 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=360,Updated=TO_TIMESTAMP('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50188 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=370,Updated=TO_TIMESTAMP('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=168 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=380,Updated=TO_TIMESTAMP('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=159 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=390,Updated=TO_TIMESTAMP('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=4940 +; + +-- Jan 11, 2015 4:53:13 PM COT +UPDATE AD_Field SET SeqNo=400,Updated=TO_TIMESTAMP('2015-01-11 16:53:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200288 +; + +-- Jan 11, 2015 4:55:14 PM COT +UPDATE AD_Element SET Description='Show the button on the toolbar, the window, or both', Help='The IsToolbarButton field indicates if this button is part of the toolbar''s process button popup list, or render as field in window, or both.',Updated=TO_TIMESTAMP('2015-01-11 16:55:14','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200187 +; + +-- Jan 11, 2015 4:55:14 PM COT +UPDATE AD_Column SET ColumnName='IsToolbarButton', Name='Toolbar Button', Description='Show the button on the toolbar, the window, or both', Help='The IsToolbarButton field indicates if this button is part of the toolbar''s process button popup list, or render as field in window, or both.' WHERE AD_Element_ID=200187 +; + +-- Jan 11, 2015 4:55:14 PM COT +UPDATE AD_Process_Para SET ColumnName='IsToolbarButton', Name='Toolbar Button', Description='Show the button on the toolbar, the window, or both', Help='The IsToolbarButton field indicates if this button is part of the toolbar''s process button popup list, or render as field in window, or both.', AD_Element_ID=200187 WHERE UPPER(ColumnName)='ISTOOLBARBUTTON' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Jan 11, 2015 4:55:14 PM COT +UPDATE AD_Process_Para SET ColumnName='IsToolbarButton', Name='Toolbar Button', Description='Show the button on the toolbar, the window, or both', Help='The IsToolbarButton field indicates if this button is part of the toolbar''s process button popup list, or render as field in window, or both.' WHERE AD_Element_ID=200187 AND IsCentrallyMaintained='Y' +; + +-- Jan 11, 2015 4:55:14 PM COT +UPDATE AD_InfoColumn SET ColumnName='IsToolbarButton', Name='Toolbar Button', Description='Show the button on the toolbar, the window, or both', Help='The IsToolbarButton field indicates if this button is part of the toolbar''s process button popup list, or render as field in window, or both.' WHERE AD_Element_ID=200187 AND IsCentrallyMaintained='Y' +; + +-- Jan 11, 2015 4:55:14 PM COT +UPDATE AD_Field SET Name='Toolbar Button', Description='Show the button on the toolbar, the window, or both', Help='The IsToolbarButton field indicates if this button is part of the toolbar''s process button popup list, or render as field in window, or both.' WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=200187) AND IsCentrallyMaintained='Y' +; + +-- Jan 11, 2015 5:01:02 PM COT +UPDATE AD_Column SET IsToolbarButton='B',Updated=TO_TIMESTAMP('2015-01-11 17:01:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=6487 +; + +SELECT register_migration_script('201501111521_IDEMPIERE-2064.sql') FROM dual +; + diff --git a/migration/i2.1/postgresql/201501111840_IDEMPIERE-1425.sql b/migration/i2.1/postgresql/201501111840_IDEMPIERE-1425.sql new file mode 100644 index 0000000000..0a3f63a42c --- /dev/null +++ b/migration/i2.1/postgresql/201501111840_IDEMPIERE-1425.sql @@ -0,0 +1,64 @@ +-- Jan 11, 2015 6:38:54 PM COT +-- IDEMPIERE-1425 Account element improvements +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (202809,0,0,'Y',TO_TIMESTAMP('2015-01-11 18:38:53','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-01-11 18:38:53','YYYY-MM-DD HH24:MI:SS'),100,'IsTreeDrivenByValue','Driven By Search Key','Defines if the tree is driven by the Search Key column','D','9ff38eb0-bbe7-4584-8682-f82f5cf9152b') +; + +-- Jan 11, 2015 6:39:16 PM COT +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,DefaultValue,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure) VALUES (211812,0,'Driven By Search Key',288,'IsTreeDrivenByValue','N',1,'N','N','Y','N','N',0,'N',20,0,0,'Y',TO_TIMESTAMP('2015-01-11 18:39:16','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-01-11 18:39:16','YYYY-MM-DD HH24:MI:SS'),100,202809,'Y','N','U','N','N','N','Y','a55184b0-1acc-433e-8df2-cd00b8aa77a3','Y',0,'N','N') +; + +-- Jan 11, 2015 6:39:17 PM COT +ALTER TABLE AD_Tree ADD COLUMN IsTreeDrivenByValue CHAR(1) DEFAULT 'N' CHECK (IsTreeDrivenByValue IN ('Y','N')) NOT NULL +; + +-- Jan 11, 2015 6:39:32 PM COT +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan) VALUES (203480,'Driven By Search Key',243,211812,'Y',1,100,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2015-01-11 18:39:31','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-01-11 18:39:31','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','U','ac15015d-0eef-4e66-b2fb-6a2fa0f60a1f','Y',100,2,2) +; + +-- Jan 11, 2015 6:39:47 PM COT +UPDATE AD_Field SET IsDisplayed='Y', SeqNo=70, XPosition=5,Updated=TO_TIMESTAMP('2015-01-11 18:39:47','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=203480 +; + +-- Jan 11, 2015 6:39:47 PM COT +UPDATE AD_Field SET SeqNo=80,Updated=TO_TIMESTAMP('2015-01-11 18:39:47','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5228 +; + +-- Jan 11, 2015 6:39:47 PM COT +UPDATE AD_Field SET SeqNo=90,Updated=TO_TIMESTAMP('2015-01-11 18:39:47','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=12421 +; + +-- Jan 11, 2015 6:39:47 PM COT +UPDATE AD_Field SET SeqNo=100,Updated=TO_TIMESTAMP('2015-01-11 18:39:47','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=8371 +; + +-- Jan 11, 2015 6:39:56 PM COT +UPDATE AD_Element SET Name='Driven by Search Key',Updated=TO_TIMESTAMP('2015-01-11 18:39:56','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=202809 +; + +-- Jan 11, 2015 6:39:56 PM COT +UPDATE AD_Column SET ColumnName='IsTreeDrivenByValue', Name='Driven by Search Key', Description=NULL, Help=NULL WHERE AD_Element_ID=202809 +; + +-- Jan 11, 2015 6:39:56 PM COT +UPDATE AD_Process_Para SET ColumnName='IsTreeDrivenByValue', Name='Driven by Search Key', Description=NULL, Help=NULL, AD_Element_ID=202809 WHERE UPPER(ColumnName)='ISTREEDRIVENBYVALUE' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Jan 11, 2015 6:39:56 PM COT +UPDATE AD_Process_Para SET ColumnName='IsTreeDrivenByValue', Name='Driven by Search Key', Description=NULL, Help=NULL WHERE AD_Element_ID=202809 AND IsCentrallyMaintained='Y' +; + +-- Jan 11, 2015 6:39:56 PM COT +UPDATE AD_InfoColumn SET ColumnName='IsTreeDrivenByValue', Name='Driven by Search Key', Description=NULL, Help=NULL WHERE AD_Element_ID=202809 AND IsCentrallyMaintained='Y' +; + +-- Jan 11, 2015 6:39:56 PM COT +UPDATE AD_Field SET Name='Driven by Search Key', Description=NULL, Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=202809) AND IsCentrallyMaintained='Y' +; + +-- Jan 11, 2015 6:39:56 PM COT +UPDATE AD_PrintFormatItem SET PrintName='Defines if the tree is driven by the Search Key column', Name='Driven by Search Key' WHERE IsCentrallyMaintained='Y' AND EXISTS (SELECT * FROM AD_Column c WHERE c.AD_Column_ID=AD_PrintFormatItem.AD_Column_ID AND c.AD_Element_ID=202809) +; + +SELECT register_migration_script('201501111840_IDEMPIERE-1425.sql') FROM dual +; + diff --git a/org.adempiere.base/src/org/compiere/model/GridField.java b/org.adempiere.base/src/org/compiere/model/GridField.java index 595bcdb2d5..258040e85d 100644 --- a/org.adempiere.base/src/org/compiere/model/GridField.java +++ b/org.adempiere.base/src/org/compiere/model/GridField.java @@ -81,7 +81,7 @@ public class GridField /** * */ - private static final long serialVersionUID = -3759342619253398035L; + private static final long serialVersionUID = -757531553169088955L; /** * Field Constructor. @@ -2156,7 +2156,13 @@ public class GridField public boolean isToolbarButton() { - return m_vo.displayType == DisplayType.Button && m_vo.IsToolbarButton; + return m_vo.displayType == DisplayType.Button && + (MColumn.ISTOOLBARBUTTON_Toolbar.equals(m_vo.IsToolbarButton) || MColumn.ISTOOLBARBUTTON_Both.equals(m_vo.IsToolbarButton)); + } + + public boolean isToolbarOnlyButton() + { + return m_vo.displayType == DisplayType.Button && MColumn.ISTOOLBARBUTTON_Toolbar.equals(m_vo.IsToolbarButton); } public GridField clone(Properties ctx) diff --git a/org.adempiere.base/src/org/compiere/model/GridFieldVO.java b/org.adempiere.base/src/org/compiere/model/GridFieldVO.java index f57479af59..6f9accc26b 100644 --- a/org.adempiere.base/src/org/compiere/model/GridFieldVO.java +++ b/org.adempiere.base/src/org/compiere/model/GridFieldVO.java @@ -47,7 +47,7 @@ public class GridFieldVO implements Serializable /** * */ - private static final long serialVersionUID = 6391887120974125904L; + private static final long serialVersionUID = 4367399601545064219L; /** * Return the SQL statement used for the MFieldVO.create @@ -227,7 +227,7 @@ public class GridFieldVO implements Serializable else if (columnName.equalsIgnoreCase("NumLines")) vo.NumLines=rs.getInt(i); else if (columnName.equalsIgnoreCase("IsToolbarButton")) - vo.IsToolbarButton = "Y".equals(rs.getString(i)); + vo.IsToolbarButton = rs.getString(i); else if (columnName.equalsIgnoreCase("AD_Chart_ID")) vo.AD_Chart_ID = rs.getInt (i); } @@ -298,7 +298,7 @@ public class GridFieldVO implements Serializable if (userDef.getNumLines() > 0) vo.NumLines=userDef.getNumLines(); if (userDef.getIsToolbarButton() != null) - vo.IsToolbarButton = "Y".equals(userDef.getIsToolbarButton()); + vo.IsToolbarButton = userDef.getIsToolbarButton(); //IDEMPIERE-1120 Implement Field SeqNo customization if (userDef.getSeqNo() > 0) vo.SeqNo = userDef.getSeqNo(); @@ -628,7 +628,7 @@ public class GridFieldVO implements Serializable /* Allow copy - IDEMPIERE-67 - Carlos Ruiz - globalqss */ public boolean IsAllowCopy = false; /** Toolbar Button **/ - public boolean IsToolbarButton = false; + public String IsToolbarButton = MColumn.ISTOOLBARBUTTON_Window; public int AD_Chart_ID = 0; diff --git a/org.adempiere.base/src/org/compiere/model/GridTab.java b/org.adempiere.base/src/org/compiere/model/GridTab.java index 74ac2160b8..d5dbd16dcc 100644 --- a/org.adempiere.base/src/org/compiere/model/GridTab.java +++ b/org.adempiere.base/src/org/compiere/model/GridTab.java @@ -3270,7 +3270,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable int maxcol=0; for (GridField gridField : getFields()) { - if (!gridField.isDisplayed() || gridField.isToolbarButton()) + if (!gridField.isDisplayed() || gridField.isToolbarOnlyButton()) continue; int col = gridField.getXPosition() + gridField.getColumnSpan(); if (gridField.isFieldOnly() diff --git a/org.adempiere.base/src/org/compiere/model/I_AD_Column.java b/org.adempiere.base/src/org/compiere/model/I_AD_Column.java index 8113ef7f5b..e2edcd5d38 100644 --- a/org.adempiere.base/src/org/compiere/model/I_AD_Column.java +++ b/org.adempiere.base/src/org/compiere/model/I_AD_Column.java @@ -515,12 +515,12 @@ public interface I_AD_Column /** Set Toolbar Button. * Add the column button to the toolbar */ - public void setIsToolbarButton (boolean IsToolbarButton); + public void setIsToolbarButton (String IsToolbarButton); /** Get Toolbar Button. * Add the column button to the toolbar */ - public boolean isToolbarButton(); + public String getIsToolbarButton(); /** Column name IsTranslated */ public static final String COLUMNNAME_IsTranslated = "IsTranslated"; diff --git a/org.adempiere.base/src/org/compiere/model/I_AD_Tree.java b/org.adempiere.base/src/org/compiere/model/I_AD_Tree.java index bb4fe607eb..d03a294ab6 100644 --- a/org.adempiere.base/src/org/compiere/model/I_AD_Tree.java +++ b/org.adempiere.base/src/org/compiere/model/I_AD_Tree.java @@ -152,6 +152,15 @@ public interface I_AD_Tree */ public boolean isDefault(); + /** Column name IsTreeDrivenByValue */ + public static final String COLUMNNAME_IsTreeDrivenByValue = "IsTreeDrivenByValue"; + + /** Set Driven by Search Key */ + public void setIsTreeDrivenByValue (boolean IsTreeDrivenByValue); + + /** Get Driven by Search Key */ + public boolean isTreeDrivenByValue(); + /** Column name Name */ public static final String COLUMNNAME_Name = "Name"; diff --git a/org.adempiere.base/src/org/compiere/model/MActivity.java b/org.adempiere.base/src/org/compiere/model/MActivity.java index d7a87b6560..0cfa7e8af8 100644 --- a/org.adempiere.base/src/org/compiere/model/MActivity.java +++ b/org.adempiere.base/src/org/compiere/model/MActivity.java @@ -109,6 +109,8 @@ public class MActivity extends X_C_Activity return success; if (newRecord) insert_Tree(MTree_Base.TREETYPE_Activity); + if (newRecord || is_ValueChanged(COLUMNNAME_Value)) + update_Tree(MTree_Base.TREETYPE_Activity); // Value/Name change if (!newRecord && (is_ValueChanged("Value") || is_ValueChanged("Name"))){ StringBuilder msguvd = new StringBuilder("C_Activity_ID=").append(getC_Activity_ID()); diff --git a/org.adempiere.base/src/org/compiere/model/MBPartner.java b/org.adempiere.base/src/org/compiere/model/MBPartner.java index c6eea18f51..28adf4c002 100644 --- a/org.adempiere.base/src/org/compiere/model/MBPartner.java +++ b/org.adempiere.base/src/org/compiere/model/MBPartner.java @@ -925,7 +925,9 @@ public class MBPartner extends X_C_BPartner */ protected boolean afterSave (boolean newRecord, boolean success) { - if (newRecord && success) + if (!success) + return success; + if (newRecord) { // Trees insert_Tree(MTree_Base.TREETYPE_BPartner); @@ -935,9 +937,11 @@ public class MBPartner extends X_C_BPartner insert_Accounting("C_BP_Vendor_Acct", "C_BP_Group_Acct",msgacc.toString()); // insert_Accounting("C_BP_Employee_Acct", "C_AcctSchema_Default", null); } + if (newRecord || is_ValueChanged(COLUMNNAME_Value)) + update_Tree(MTree_Base.TREETYPE_BPartner); // Value/Name change - if (success && !newRecord + if (!newRecord && (is_ValueChanged("Value") || is_ValueChanged("Name"))){ StringBuilder msgacc = new StringBuilder("C_BPartner_ID=").append(getC_BPartner_ID()); MAccount.updateValueDescription(getCtx(), msgacc.toString(), get_TrxName()); diff --git a/org.adempiere.base/src/org/compiere/model/MCampaign.java b/org.adempiere.base/src/org/compiere/model/MCampaign.java index 208332642a..af05b9eded 100644 --- a/org.adempiere.base/src/org/compiere/model/MCampaign.java +++ b/org.adempiere.base/src/org/compiere/model/MCampaign.java @@ -70,6 +70,8 @@ public class MCampaign extends X_C_Campaign return success; if (newRecord) insert_Tree(MTree_Base.TREETYPE_Campaign); + if (newRecord || is_ValueChanged(COLUMNNAME_Value)) + update_Tree(MTree_Base.TREETYPE_Campaign); // Value/Name change if (!newRecord && (is_ValueChanged("Value") || is_ValueChanged("Name"))) MAccount.updateValueDescription(getCtx(), "C_Campaign_ID=" + getC_Campaign_ID(), get_TrxName()); diff --git a/org.adempiere.base/src/org/compiere/model/MColumn.java b/org.adempiere.base/src/org/compiere/model/MColumn.java index 55d8a2ec0a..d8b9e45c67 100644 --- a/org.adempiere.base/src/org/compiere/model/MColumn.java +++ b/org.adempiere.base/src/org/compiere/model/MColumn.java @@ -241,9 +241,9 @@ public class MColumn extends X_AD_Column if (displayType != DisplayType.Button) { - if (isToolbarButton()) + if (! ISTOOLBARBUTTON_Window.equals(getIsToolbarButton())) { - setIsToolbarButton(false); + setIsToolbarButton(ISTOOLBARBUTTON_Window); } } diff --git a/org.adempiere.base/src/org/compiere/model/MElementValue.java b/org.adempiere.base/src/org/compiere/model/MElementValue.java index ef12535d3e..7c880550ab 100644 --- a/org.adempiere.base/src/org/compiere/model/MElementValue.java +++ b/org.adempiere.base/src/org/compiere/model/MElementValue.java @@ -246,14 +246,16 @@ public class MElementValue extends X_C_ElementValue { if (!success) return success; - if (newRecord) + if (newRecord || is_ValueChanged(COLUMNNAME_Value)) { // afalcone [Bugs #1837219] int ad_Tree_ID= (new MElement(getCtx(), getC_Element_ID(), get_TrxName())).getAD_Tree_ID(); String treeType= (new MTree(getCtx(),ad_Tree_ID,get_TrxName())).getTreeType(); - insert_Tree(treeType, getC_Element_ID()); - // insert_Tree(MTree_Base.TREETYPE_ElementValue, getC_Element_ID()); Old - + + if (newRecord) + insert_Tree(treeType, getC_Element_ID()); + + update_Tree(treeType); } // Value/Name change diff --git a/org.adempiere.base/src/org/compiere/model/MOrg.java b/org.adempiere.base/src/org/compiere/model/MOrg.java index b1d6dd9da3..f0ed6d80a2 100644 --- a/org.adempiere.base/src/org/compiere/model/MOrg.java +++ b/org.adempiere.base/src/org/compiere/model/MOrg.java @@ -156,6 +156,8 @@ public class MOrg extends X_AD_Org // TreeNode insert_Tree(MTree_Base.TREETYPE_Organization); } + if (newRecord || is_ValueChanged(COLUMNNAME_Value)) + update_Tree(MTree_Base.TREETYPE_Organization); // Value/Name change if (!newRecord && (is_ValueChanged("Value") || is_ValueChanged("Name"))) { diff --git a/org.adempiere.base/src/org/compiere/model/MProduct.java b/org.adempiere.base/src/org/compiere/model/MProduct.java index 8abfdcc2b2..d6c9ef5fb9 100644 --- a/org.adempiere.base/src/org/compiere/model/MProduct.java +++ b/org.adempiere.base/src/org/compiere/model/MProduct.java @@ -704,6 +704,8 @@ public class MProduct extends X_M_Product "p.M_Product_Category_ID=" + getM_Product_Category_ID()); insert_Tree(X_AD_Tree.TREETYPE_Product); } + if (newRecord || is_ValueChanged(COLUMNNAME_Value)) + update_Tree(MTree_Base.TREETYPE_Product); // New Costing if (newRecord || is_ValueChanged("M_Product_Category_ID")) diff --git a/org.adempiere.base/src/org/compiere/model/MProject.java b/org.adempiere.base/src/org/compiere/model/MProject.java index 271caa4438..19d33def5b 100644 --- a/org.adempiere.base/src/org/compiere/model/MProject.java +++ b/org.adempiere.base/src/org/compiere/model/MProject.java @@ -428,14 +428,18 @@ public class MProject extends X_C_Project */ protected boolean afterSave (boolean newRecord, boolean success) { - if (newRecord && success) + if (!success) + return success; + if (newRecord) { insert_Accounting("C_Project_Acct", "C_AcctSchema_Default", null); insert_Tree(MTree_Base.TREETYPE_Project); } + if (newRecord || is_ValueChanged(COLUMNNAME_Value)) + update_Tree(MTree_Base.TREETYPE_Project); // Value/Name change - if (success && !newRecord + if (!newRecord && (is_ValueChanged("Value") || is_ValueChanged("Name"))) MAccount.updateValueDescription(getCtx(), "C_Project_ID=" + getC_Project_ID(), get_TrxName()); diff --git a/org.adempiere.base/src/org/compiere/model/MSalesRegion.java b/org.adempiere.base/src/org/compiere/model/MSalesRegion.java index b537701167..e94add42a9 100644 --- a/org.adempiere.base/src/org/compiere/model/MSalesRegion.java +++ b/org.adempiere.base/src/org/compiere/model/MSalesRegion.java @@ -106,6 +106,8 @@ public class MSalesRegion extends X_C_SalesRegion return success; if (newRecord) insert_Tree(MTree_Base.TREETYPE_SalesRegion); + if (newRecord || is_ValueChanged(COLUMNNAME_Value)) + update_Tree(MTree_Base.TREETYPE_SalesRegion); // Value/Name change if (!newRecord && (is_ValueChanged("Value") || is_ValueChanged("Name"))) MAccount.updateValueDescription(getCtx(), "C_SalesRegion_ID=" + getC_SalesRegion_ID(), get_TrxName()); diff --git a/org.adempiere.base/src/org/compiere/model/MTree.java b/org.adempiere.base/src/org/compiere/model/MTree.java index b96f0bdb1e..669e751e78 100644 --- a/org.adempiere.base/src/org/compiere/model/MTree.java +++ b/org.adempiere.base/src/org/compiere/model/MTree.java @@ -408,8 +408,7 @@ public class MTree extends MTree_Base String fromClause = getSourceTableName(false); // fully qualified String columnNameX = getSourceTableName(true); String color = getActionColorName(); - if (getTreeType().equals(TREETYPE_Menu)) - { + if (getTreeType().equals(TREETYPE_Menu)) { boolean base = Env.isBaseLanguage(p_ctx, "AD_Menu"); sourceTable = "m"; if (base) @@ -450,9 +449,13 @@ public class MTree extends MTree_Base sqlNode.append("f.JSPURL"); sqlNode.append(" IS NOT NULL))"); } - } - else - { + } else if (isTreeDrivenByValue()) { + sqlNode.append("SELECT t.").append(columnNameX) + .append("_ID, t.Value || ' - ' || t.Name, t.Description, t.IsSummary,").append(color) + .append(" FROM ").append(fromClause); + if (!m_editable) + sqlNode.append(" WHERE t.IsActive='Y'"); + } else { if (columnNameX == null) throw new IllegalArgumentException("Unknown TreeType=" + getTreeType()); sqlNode.append("SELECT t.").append(columnNameX) diff --git a/org.adempiere.base/src/org/compiere/model/MTree_Base.java b/org.adempiere.base/src/org/compiere/model/MTree_Base.java index c9c4be663c..f0497df8bd 100644 --- a/org.adempiere.base/src/org/compiere/model/MTree_Base.java +++ b/org.adempiere.base/src/org/compiere/model/MTree_Base.java @@ -342,6 +342,17 @@ public class MTree_Base extends X_AD_Tree { if (!isActive() || !isAllNodes()) setIsDefault(false); + + if (isTreeDrivenByValue()) { + String tableName = getSourceTableName(true); + MTable table = MTable.get(getCtx(), tableName); + // Value and IsSummary are mandatory columns to have a tree driven by Value + if ( table.getColumn("Value") == null + || table.getColumn("IsSummary") == null) { + setIsTreeDrivenByValue(false); + } + } + return true; } // beforeSabe diff --git a/org.adempiere.base/src/org/compiere/model/PO.java b/org.adempiere.base/src/org/compiere/model/PO.java index 635501bd7e..50c8af2a14 100644 --- a/org.adempiere.base/src/org/compiere/model/PO.java +++ b/org.adempiere.base/src/org/compiere/model/PO.java @@ -106,7 +106,7 @@ public abstract class PO /** * */ - private static final long serialVersionUID = -591429462738850345L; + private static final long serialVersionUID = -2731993630208549493L; public static final String LOCAL_TRX_PREFIX = "POSave"; @@ -3869,6 +3869,63 @@ public abstract class PO return no > 0; } // insert_Tree + /** + * Update parent key and seqno based on value if the tree is driven by value + * @param treeType MTree TREETYPE_* + * @return true if inserted + */ + protected void update_Tree (String treeType) + { + int idxValueCol = get_ColumnIndex("Value"); + if (idxValueCol < 0) + return; + int idxValueIsSummary = get_ColumnIndex("IsSummary"); + if (idxValueIsSummary < 0) + return; + String value = get_Value(idxValueCol).toString(); + if (value == null) + return; + + String tableName = MTree_Base.getNodeTableName(treeType); + String sourceTableName = MTree_Base.getSourceTableName(treeType); + String updateSeqNo = "UPDATE " + tableName + " SET SeqNo=SeqNo+1 WHERE Parent_ID=? AND SeqNo>=? AND AD_Tree_ID=?"; + String update = "UPDATE " + tableName + " SET SeqNo=?, Parent_ID=? WHERE Node_ID=? AND AD_Tree_ID=?"; + String selMinSeqNo = "SELECT COALESCE(MIN(tn.SeqNo),-1) FROM AD_TreeNode tn JOIN " + sourceTableName + " n ON (tn.Node_ID=n." + sourceTableName + "_ID) WHERE tn.Parent_ID=? AND tn.AD_Tree_ID=? AND n.Value>?"; + String selMaxSeqNo = "SELECT COALESCE(MAX(tn.SeqNo)+1,999) FROM AD_TreeNode tn JOIN " + sourceTableName + " n ON (tn.Node_ID=n." + sourceTableName + "_ID) WHERE tn.Parent_ID=? AND tn.AD_Tree_ID=? AND n.Value trees = new Query(getCtx(), MTree_Base.Table_Name, "TreeType=?", get_TrxName()) + .setClient_ID() + .setOnlyActiveRecords(true) + .setParameters(treeType) + .list(); + + for (MTree_Base tree : trees) { + if (tree.isTreeDrivenByValue()) { + int newParentID = retrieveIdOfParentValue(value, sourceTableName, getAD_Client_ID(), get_TrxName()); + int seqNo = DB.getSQLValueEx(get_TrxName(), selMinSeqNo, newParentID, tree.getAD_Tree_ID(), value); + if (seqNo == -1) + seqNo = DB.getSQLValueEx(get_TrxName(), selMaxSeqNo, newParentID, tree.getAD_Tree_ID(), value); + DB.executeUpdateEx(updateSeqNo, new Object[] {newParentID, seqNo, tree.getAD_Tree_ID()}, get_TrxName()); + DB.executeUpdateEx(update, new Object[] {seqNo, newParentID, get_ID(), tree.getAD_Tree_ID()}, get_TrxName()); + } + } + } // update_Tree + + /** Returns the summary node with the corresponding value */ + public static int retrieveIdOfParentValue(String value, String tableName, int clientID, String trxName) + { + String sql = "SELECT " + tableName + "_ID FROM " + tableName + " WHERE IsSummary='Y' AND AD_Client_ID=? AND Value=?"; + int pos = value.length()-1; + while (pos > 0) { + String testParentValue = value.substring(0, pos); + int parentID = DB.getSQLValueEx(trxName, sql, clientID, testParentValue); + if (parentID > 0) + return parentID; + pos--; + } + return 0; // rootID + } + /** * Delete ID Tree Nodes * @param treeType MTree TREETYPE_* diff --git a/org.adempiere.base/src/org/compiere/model/X_AD_Column.java b/org.adempiere.base/src/org/compiere/model/X_AD_Column.java index 0ceea67303..fe602d84a9 100644 --- a/org.adempiere.base/src/org/compiere/model/X_AD_Column.java +++ b/org.adempiere.base/src/org/compiere/model/X_AD_Column.java @@ -32,7 +32,7 @@ public class X_AD_Column extends PO implements I_AD_Column, I_Persistent /** * */ - private static final long serialVersionUID = 20141030L; + private static final long serialVersionUID = 20150111L; /** Standard Constructor */ public X_AD_Column (Properties ctx, int AD_Column_ID, String trxName) @@ -62,7 +62,7 @@ public class X_AD_Column extends PO implements I_AD_Column, I_Persistent setIsSecure (false); // N setIsSelectionColumn (false); - setIsToolbarButton (true); + setIsToolbarButton (null); // Y setIsTranslated (false); setIsUpdateable (true); @@ -819,28 +819,30 @@ public class X_AD_Column extends PO implements I_AD_Column, I_Persistent return (String)get_Value(COLUMNNAME_IsSyncDatabase); } + /** IsToolbarButton AD_Reference_ID=200099 */ + public static final int ISTOOLBARBUTTON_AD_Reference_ID=200099; + /** Toolbar = Y */ + public static final String ISTOOLBARBUTTON_Toolbar = "Y"; + /** Window = N */ + public static final String ISTOOLBARBUTTON_Window = "N"; + /** Both = B */ + public static final String ISTOOLBARBUTTON_Both = "B"; /** Set Toolbar Button. @param IsToolbarButton Add the column button to the toolbar */ - public void setIsToolbarButton (boolean IsToolbarButton) + public void setIsToolbarButton (String IsToolbarButton) { - set_Value (COLUMNNAME_IsToolbarButton, Boolean.valueOf(IsToolbarButton)); + + set_Value (COLUMNNAME_IsToolbarButton, IsToolbarButton); } /** Get Toolbar Button. @return Add the column button to the toolbar */ - public boolean isToolbarButton () + public String getIsToolbarButton () { - Object oo = get_Value(COLUMNNAME_IsToolbarButton); - if (oo != null) - { - if (oo instanceof Boolean) - return ((Boolean)oo).booleanValue(); - return "Y".equals(oo); - } - return false; + return (String)get_Value(COLUMNNAME_IsToolbarButton); } /** Set Translated. 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 4dbaffabd6..706feda627 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 @@ -32,7 +32,7 @@ public class X_AD_Field extends PO implements I_AD_Field, I_Persistent /** * */ - private static final long serialVersionUID = 20141030L; + private static final long serialVersionUID = 20150111L; /** Standard Constructor */ public X_AD_Field (Properties ctx, int AD_Field_ID, String trxName) @@ -775,12 +775,14 @@ public class X_AD_Field extends PO implements I_AD_Field, I_Persistent return false; } - /** IsToolbarButton AD_Reference_ID=319 */ - public static final int ISTOOLBARBUTTON_AD_Reference_ID=319; - /** Yes = Y */ - public static final String ISTOOLBARBUTTON_Yes = "Y"; - /** No = N */ - public static final String ISTOOLBARBUTTON_No = "N"; + /** IsToolbarButton AD_Reference_ID=200099 */ + public static final int ISTOOLBARBUTTON_AD_Reference_ID=200099; + /** Toolbar = Y */ + public static final String ISTOOLBARBUTTON_Toolbar = "Y"; + /** Window = N */ + public static final String ISTOOLBARBUTTON_Window = "N"; + /** Both = B */ + public static final String ISTOOLBARBUTTON_Both = "B"; /** Set Toolbar Button. @param IsToolbarButton Add the column button to the toolbar diff --git a/org.adempiere.base/src/org/compiere/model/X_AD_Tree.java b/org.adempiere.base/src/org/compiere/model/X_AD_Tree.java index a5cfaacd2c..79a0bc6fb8 100644 --- a/org.adempiere.base/src/org/compiere/model/X_AD_Tree.java +++ b/org.adempiere.base/src/org/compiere/model/X_AD_Tree.java @@ -30,7 +30,7 @@ public class X_AD_Tree extends PO implements I_AD_Tree, I_Persistent /** * */ - private static final long serialVersionUID = 20141030L; + private static final long serialVersionUID = 20150111L; /** Standard Constructor */ public X_AD_Tree (Properties ctx, int AD_Tree_ID, String trxName) @@ -41,6 +41,8 @@ public class X_AD_Tree extends PO implements I_AD_Tree, I_Persistent setAD_Tree_ID (0); setIsAllNodes (false); setIsDefault (false); +// N + setIsTreeDrivenByValue (false); // N setName (null); setTreeType (null); @@ -177,6 +179,27 @@ public class X_AD_Tree extends PO implements I_AD_Tree, I_Persistent return false; } + /** Set Driven by Search Key. + @param IsTreeDrivenByValue Driven by Search Key */ + public void setIsTreeDrivenByValue (boolean IsTreeDrivenByValue) + { + set_Value (COLUMNNAME_IsTreeDrivenByValue, Boolean.valueOf(IsTreeDrivenByValue)); + } + + /** Get Driven by Search Key. + @return Driven by Search Key */ + public boolean isTreeDrivenByValue () + { + Object oo = get_Value(COLUMNNAME_IsTreeDrivenByValue); + if (oo != null) + { + if (oo instanceof Boolean) + return ((Boolean)oo).booleanValue(); + return "Y".equals(oo); + } + return false; + } + /** Set Name. @param Name Alphanumeric identifier of the entity diff --git a/org.adempiere.base/src/org/compiere/model/X_AD_UserDef_Field.java b/org.adempiere.base/src/org/compiere/model/X_AD_UserDef_Field.java index a3bd03b127..d9081d1919 100644 --- a/org.adempiere.base/src/org/compiere/model/X_AD_UserDef_Field.java +++ b/org.adempiere.base/src/org/compiere/model/X_AD_UserDef_Field.java @@ -30,7 +30,7 @@ public class X_AD_UserDef_Field extends PO implements I_AD_UserDef_Field, I_Pers /** * */ - private static final long serialVersionUID = 20141030L; + private static final long serialVersionUID = 20150111L; /** Standard Constructor */ public X_AD_UserDef_Field (Properties ctx, int AD_UserDef_Field_ID, String trxName) @@ -481,12 +481,14 @@ public class X_AD_UserDef_Field extends PO implements I_AD_UserDef_Field, I_Pers return (String)get_Value(COLUMNNAME_IsSameLine); } - /** IsToolbarButton AD_Reference_ID=319 */ - public static final int ISTOOLBARBUTTON_AD_Reference_ID=319; - /** Yes = Y */ - public static final String ISTOOLBARBUTTON_Yes = "Y"; - /** No = N */ - public static final String ISTOOLBARBUTTON_No = "N"; + /** IsToolbarButton AD_Reference_ID=200099 */ + public static final int ISTOOLBARBUTTON_AD_Reference_ID=200099; + /** Toolbar = Y */ + public static final String ISTOOLBARBUTTON_Toolbar = "Y"; + /** Window = N */ + public static final String ISTOOLBARBUTTON_Window = "N"; + /** Both = B */ + public static final String ISTOOLBARBUTTON_Both = "B"; /** Set Toolbar Button. @param IsToolbarButton Add the column button to the toolbar diff --git a/org.adempiere.ui.swing/src/org/compiere/grid/GridController.java b/org.adempiere.ui.swing/src/org/compiere/grid/GridController.java index 360400a0fa..661f7d38be 100644 --- a/org.adempiere.ui.swing/src/org/compiere/grid/GridController.java +++ b/org.adempiere.ui.swing/src/org/compiere/grid/GridController.java @@ -158,9 +158,9 @@ public class GridController extends CPanel VetoableChangeListener, PropertyChangeListener, MouseListener { /** - * + * */ - private static final long serialVersionUID = 7308782933999556880L; + private static final long serialVersionUID = -2830833057882006196L; /** * Constructor - you need to call initGrid for instanciation @@ -419,7 +419,7 @@ public class GridController extends CPanel // IDEMPIERE-587 Swing: Toolbar Button to start Process from button fields && !( mField.getDisplayType()==DisplayType.Button - && mField.isToolbarButton()) + && mField.isToolbarOnlyButton()) ) { VEditor vEditor = VEditorFactory.getEditor(m_mTab, mField, false); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java index 51b61c0841..6af215104d 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java @@ -70,6 +70,7 @@ import org.compiere.model.MToolBarButton; import org.compiere.model.MToolBarButtonRestrict; import org.compiere.model.MTree; import org.compiere.model.MTreeNode; +import org.compiere.model.PO; import org.compiere.model.Query; import org.compiere.model.X_AD_FieldGroup; import org.compiere.model.X_AD_ToolBarButton; @@ -436,8 +437,8 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer editors.add(editor); editor.getComponent().setId(field.getColumnName()); toolbarButtonEditors.add(editor); - - continue; + if (field.isToolbarOnlyButton()) + continue; } } @@ -1248,9 +1249,14 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer refresh = false; } } + // Remove the node if driven by value; will be re-added right after + if ("Saved".equals(e.getAD_Message()) && model.find(null, gridTab.getRecord_ID())!=null && isTreeDrivenByValue()) + model.removeNode(model.find(null, gridTab.getRecord_ID())); if ("Saved".equals(e.getAD_Message()) && model.find(null, gridTab.getRecord_ID())==null) { addNewNode(); + if (isTreeDrivenByValue()) + treePanel.prepareForRefresh(); } if (refresh) { @@ -1318,10 +1324,25 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer SimpleTreeModel model = (SimpleTreeModel)(TreeModel) treePanel.getTree().getModel(); DefaultTreeNode treeNode = model.getRoot(); MTreeNode root = (MTreeNode) treeNode.getData(); + + int parentID = root.getNode_ID(); + DefaultTreeNode parentNode = null; + if (isTreeDrivenByValue()) { + String value = gridTab.getValue("Value").toString(); + parentID = PO.retrieveIdOfParentValue(value, getTableName(), Env.getAD_Client_ID(Env.getCtx()), null); + parentNode = model.find(treeNode, parentID); + name = value + " - " + name; + } MTreeNode node = new MTreeNode (gridTab.getRecord_ID(), 0, name, description, - root.getNode_ID(), summary, imageIndicator, false, null); + parentID, summary, imageIndicator, false, null); DefaultTreeNode newNode = new DefaultTreeNode(node); - model.addNode(newNode); + + if (isTreeDrivenByValue() && parentNode != null) { + model.addNode(parentNode, newNode, 0); + } else { + model.addNode(newNode); + } + int[] path = model.getPath(newNode); Treeitem ti = treePanel.getTree().renderItemByPath(path); treePanel.getTree().setSelectedItem(ti); @@ -1349,7 +1370,16 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer } boolean changed = false; - if (Env.isBaseLanguage(Env.getCtx(), "AD_Menu")) { + if (isTreeDrivenByValue()) { + String value = (String) gridTab.getValue("Value"); + String name = (String) gridTab.getValue("Name"); + String full = value + " - " + name; + + if (full != null && !full.equals(data.getName())) { + data.setName(full); + changed = true; + } + } else if (Env.isBaseLanguage(Env.getCtx(), "AD_Menu")) { String name = (String) gridTab.getValue("Name"); if (name != null && !name.equals(data.getName())) { data.setName(name); @@ -1667,5 +1697,12 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer listPanel.onADTabPanelParentChanged(); } } -} + private boolean isTreeDrivenByValue() { + SimpleTreeModel model = (SimpleTreeModel)(TreeModel) treePanel.getTree().getModel(); + boolean retValue = false; + retValue = model.isTreeDrivenByValue(); + return retValue; + } + +} diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTreePanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTreePanel.java index afccfd5cc8..035ee11515 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTreePanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTreePanel.java @@ -41,7 +41,8 @@ public class ADTreePanel extends Panel implements EventListener /** * */ - private static final long serialVersionUID = -3046550099597437942L; + private static final long serialVersionUID = -6868506934553777046L; + private static final String ON_EXPAND_MENU_EVENT = "onExpandMenu"; private TreeSearchPanel pnlSearch; private Tree tree; @@ -180,4 +181,9 @@ public class ADTreePanel extends Panel implements EventListener collapseAll(); } // + + public void prepareForRefresh() { + this.AD_Tree_ID = -1; + } + } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java index 15df4f3a34..2e6ab1c288 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java @@ -1348,7 +1348,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements if (Util.isEmpty(header)) header = AEnv.getDialogHeader(Env.getCtx(), curWindowNo, prefix); - SessionManager.getAppDesktop().setTabTitle(header); + SessionManager.getAppDesktop().setTabTitle(header, curWindowNo); } else if (adTabbox.getSelectedDetailADTabpanel() == null) { diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridTabRowRenderer.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridTabRowRenderer.java index 72593c923d..9a785eadbc 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridTabRowRenderer.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridTabRowRenderer.java @@ -458,7 +458,7 @@ public class GridTabRowRenderer implements RowRenderer, RowRendererExt } // IDEMPIERE-2148: when has tab customize, ignore check properties isDisplayedGrid - if ((!isGridViewCustomized && gridPanelFields[i].isDisplayedGrid()) || gridPanelFields[i].isToolbarButton()) { + if ((!isGridViewCustomized && gridPanelFields[i].isDisplayedGrid()) || gridPanelFields[i].isToolbarOnlyButton()) { continue; } colIndex ++; @@ -590,7 +590,7 @@ public class GridTabRowRenderer implements RowRenderer, RowRendererExt //skip selection and indicator column int colIndex = 1; for (int i = 0; i < columnCount; i++) { - if ((!isGridViewCustomized && !gridPanelFields[i].isDisplayedGrid()) || gridPanelFields[i].isToolbarButton()) { + if ((!isGridViewCustomized && !gridPanelFields[i].isDisplayedGrid()) || gridPanelFields[i].isToolbarOnlyButton()) { continue; } colIndex ++; diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridView.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridView.java index 122a891682..6515f59aed 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridView.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridView.java @@ -275,7 +275,7 @@ public class GridView extends Vbox implements EventListener, IdSpace, IFi for(GridField gridField : tmpFields) { if (gridField.getAD_Field_ID() == AD_Field_ID) { // IDEMPIERE-2204 add field in tabCustomization list to display list event this field have showInGrid = false - if((gridField.isDisplayedGrid() || gridField.isDisplayed()) && !gridField.isToolbarButton()) + if((gridField.isDisplayedGrid() || gridField.isDisplayed()) && !gridField.isToolbarOnlyButton()) fieldList.add(gridField); break; @@ -293,7 +293,7 @@ public class GridView extends Vbox implements EventListener, IdSpace, IFi ArrayList gridFieldList = new ArrayList(); for(GridField field:tmpFields){ - if(field.isDisplayedGrid() && !field.isToolbarButton()) { + if(field.isDisplayedGrid() && !field.isToolbarOnlyButton()) { gridFieldList.add(field); } } @@ -494,7 +494,7 @@ public class GridView extends Vbox implements EventListener, IdSpace, IFi for (int i = 0; i < numColumns; i++) { // IDEMPIERE-2148: when has tab customize, ignore check properties isDisplayedGrid - if ((isHasCustomizeData || gridField[i].isDisplayedGrid()) && !gridField[i].isToolbarButton()) + if ((isHasCustomizeData || gridField[i].isDisplayedGrid()) && !gridField[i].isToolbarOnlyButton()) { colnames.put(index, gridField[i].getHeader()); index++; diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WTabEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WTabEditor.java index c02c72ce8d..b1e80d4e2b 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WTabEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WTabEditor.java @@ -207,7 +207,7 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe { MField field = getMField(gridField.getAD_Field_ID()); - if (!gridField.isDisplayed() || gridField.isToolbarButton()) + if (!gridField.isDisplayed() || gridField.isToolbarOnlyButton()) continue; // field group @@ -372,11 +372,11 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe int maxcol=0; for (GridField gridField : getGridFields()) { - if (!gridField.isDisplayed() || gridField.isToolbarButton()) + if (!gridField.isDisplayed() || gridField.isToolbarOnlyButton()) continue; int col = gridField.getXPosition() + gridField.getColumnSpan(); if (gridField.isFieldOnly() - || (gridField.getDisplayType() == DisplayType.Button && !gridField.isToolbarButton()) + || (gridField.getDisplayType() == DisplayType.Button && !gridField.isToolbarOnlyButton()) || gridField.getDisplayType() == DisplayType.YesNo) { col--; } @@ -804,7 +804,7 @@ public class WTabEditor extends TabEditor implements IFormController, EventListe for (MField field : getMFields()) { GridField gridField = getGridField(field); - if (!field.isActive() || gridField.isToolbarButton()) + if (!field.isActive() || gridField.isToolbarOnlyButton()) continue; KeyNamePair pair = new KeyNamePair(field.getAD_Field_ID(), field.getName()); if (field.isDisplayed()) { diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/SimpleTreeModel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/SimpleTreeModel.java index 582938ab0c..a477f557a2 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/SimpleTreeModel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/SimpleTreeModel.java @@ -43,11 +43,10 @@ import org.zkoss.zul.event.TreeDataEvent; * */ public class SimpleTreeModel extends org.zkoss.zul.DefaultTreeModel implements TreeitemRenderer, EventListener { - /** * */ - private static final long serialVersionUID = -4649471521757131755L; + private static final long serialVersionUID = -2689107390272278321L; private static final CLogger logger = CLogger.getCLogger(SimpleTreeModel.class); @@ -81,6 +80,7 @@ public class SimpleTreeModel extends org.zkoss.zul.DefaultTreeModel impl MTreeNode root = vTree.getRoot(); SimpleTreeModel treeModel = SimpleTreeModel.createFrom(root); treeModel.setItemDraggable(true); + treeModel.setTreeDrivenByValue(vTree.isTreeDrivenByValue()); treeModel.addOnDropEventListener(new ADTreeOnDropListener(tree, treeModel, vTree, windowNo)); if (tree.getTreecols() == null) @@ -102,7 +102,17 @@ public class SimpleTreeModel extends org.zkoss.zul.DefaultTreeModel impl return treeModel; } - + + private boolean isTreeDrivenByValue = false; + + public boolean isTreeDrivenByValue() { + return isTreeDrivenByValue; + } + + public void setTreeDrivenByValue(boolean isTreeDrivenByValue) { + this.isTreeDrivenByValue = isTreeDrivenByValue; + } + /** * * @param root @@ -168,6 +178,8 @@ public class SimpleTreeModel extends org.zkoss.zul.DefaultTreeModel impl ZkCssHelper.appendStyle(tc, "color: #" + hex); } ti.setTooltiptext(mNode.getDescription()); + if (mNode.isSummary()) + ZkCssHelper.appendStyle(tc, "font-weight: bold"); } // End color }else{ diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/IDesktop.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/IDesktop.java index 42fd01348f..6969a0a626 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/IDesktop.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/IDesktop.java @@ -212,7 +212,7 @@ public interface IDesktop extends UIPart { public boolean isPendingWindow(); - public void setTabTitle(String title); + public void setTabTitle(String title, int windowNo); public void renderHomeTab(); } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/TabbedDesktop.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/TabbedDesktop.java index 4f6357de6c..5c78ed9b5d 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/TabbedDesktop.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/TabbedDesktop.java @@ -397,8 +397,8 @@ public abstract class TabbedDesktop extends AbstractDesktop { } } - public void setTabTitle(String title) { - windowContainer.setTabTitle(title); + public void setTabTitle(String title, int windowNo) { + windowContainer.setTabTitle(title, windowNo); } } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/part/WindowContainer.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/part/WindowContainer.java index b197fa8baf..fdeaa1a913 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/part/WindowContainer.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/part/WindowContainer.java @@ -21,6 +21,7 @@ import org.adempiere.webui.component.Tabbox; import org.adempiere.webui.component.Tabpanel; import org.adempiere.webui.component.Tabpanels; import org.adempiere.webui.component.Tabs; +import org.adempiere.webui.desktop.TabbedDesktop; import org.adempiere.webui.panel.IHelpContext; import org.adempiere.webui.session.SessionManager; import org.compiere.model.X_AD_CtxHelp; @@ -264,11 +265,38 @@ public class WindowContainer extends AbstractUIPart return tab; } - public void setTabTitle(String title) { - setTabTitle(title, getSelectedTab()); + public void setTabTitle(String title, int windowNo) { + setTabTitle(title, getTab(windowNo)); + } + + /** + * IDEMPIERE-2333 / getTab - get the tab based on the windowNo + * @param windowNo + * @return org.zkoss.zul.Tab + */ + private org.zkoss.zul.Tab getTab(int windowNo) { + org.zkoss.zul.Tabpanels panels = tabbox.getTabpanels(); + List childrens = panels.getChildren(); + for (Object child : childrens) + { + Tabpanel panel = (Tabpanel) child; + Component component = panel.getFirstChild(); + Object att = component != null ? component.getAttribute(TabbedDesktop.WINDOWNO_ATTRIBUTE) : null; + if (att != null && (att instanceof Integer)) + { + if (windowNo == (Integer)att) + { + org.zkoss.zul.Tab tab = panel.getLinkedTab(); + return tab; + } + } + } + return null; } public void setTabTitle(String title, org.zkoss.zul.Tab tab) { + if (tab == null) + return; title = title.replaceAll("[&]", ""); if (title.length() <= MAX_TITLE_LENGTH) { @@ -277,7 +305,7 @@ public class WindowContainer extends AbstractUIPart else { tab.setTooltiptext(title); - title = title.substring(0, 27) + "..."; + title = title.substring(0, MAX_TITLE_LENGTH-3) + "..."; tab.setLabel(title); } }