From 7f85ffeaf8a71be8804374db0ea86a6653ac726f Mon Sep 17 00:00:00 2001 From: Juliana Corredor Date: Wed, 12 Sep 2012 19:23:38 -0500 Subject: [PATCH] IDEMPIERE-366 Improve Role Inheritance --- .../oracle/899-IDEMPIERE-366.sql | 368 ++++++++++++++++++ .../postgresql/899-IDEMPIERE-366.sql | 365 +++++++++++++++++ .../src/org/compiere/model/MRole.java | 248 ++++++++---- .../src/org/compiere/util/Login.java | 1 + .../src/compiere/model/MyValidator.java | 6 +- 5 files changed, 907 insertions(+), 81 deletions(-) create mode 100644 migration/360lts-release/oracle/899-IDEMPIERE-366.sql create mode 100644 migration/360lts-release/postgresql/899-IDEMPIERE-366.sql diff --git a/migration/360lts-release/oracle/899-IDEMPIERE-366.sql b/migration/360lts-release/oracle/899-IDEMPIERE-366.sql new file mode 100644 index 0000000000..5381d6f9ef --- /dev/null +++ b/migration/360lts-release/oracle/899-IDEMPIERE-366.sql @@ -0,0 +1,368 @@ +-- Sep 4, 2012 10:34:50 AM COT +-- Element Master Role +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 ('IsMasterRole',200117,'D','MasterRole','MasterRole','4bad6035-f81b-4e25-81d9-bbf55b099113',0,TO_DATE('2012-09-04 10:34:49','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2012-09-04 10:34:49','YYYY-MM-DD HH24:MI:SS'),0,100,100,'Y') +; + +-- Sep 4, 2012 10:34:50 AM COT +INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Name,Description,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Name,t.Description,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 FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=200117 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) +; + +-- Sep 4, 2012 10:36:19 AM COT +-- Column master Role +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,SeqNoSelection,DefaultValue) VALUES (0,156,200410,'D','Y','N','N',0,'N',1,'N',20,'N','N',200117,'N','Y','5ec60b3e-f1a7-447c-a7ea-f3575dcb24d4','N','Y','N','IsMasterRole','MasterRole','Y',100,TO_DATE('2012-09-04 10:36:18','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_DATE('2012-09-04 10:36:18','YYYY-MM-DD HH24:MI:SS'),100,0,0,'N') +; + +-- Sep 4, 2012 10:36:19 AM COT +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy ) 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 FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200410 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) +; + + +-- Sep 4, 2012 10:37:58 AM COT +-- Field Master Role +INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,EntityType,Name,IsDisplayed,IsFieldOnly,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,AD_Client_ID,CreatedBy,Updated,IsActive) VALUES ('N',119,1,'N','N',200410,'Y',200411,'N','D','MasterRole','Y','N','b57a3894-98be-44fa-a834-6883c8824d92',100,0,TO_DATE('2012-09-04 10:37:58','YYYY-MM-DD HH24:MI:SS'),0,100,TO_DATE('2012-09-04 10:37:58','YYYY-MM-DD HH24:MI:SS'),'Y') +; + +-- Sep 4, 2012 10:37:58 AM COT +INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy ) 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 FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=200411 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) +; + +-- Sep 4, 2012 10:38:27 AM COT +-- seq +UPDATE AD_Field SET SeqNo=440,IsDisplayed='Y' WHERE AD_Field_ID=200411 +; + +-- Sep 4, 2012 10:38:40 AM COT +-- Position web +UPDATE AD_Field SET XPosition=2,Updated=TO_DATE('2012-09-04 10:38:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200411 +; + + +-- Sep 4, 2012 4:12:10 PM COT +-- Validation for just Master Role in included roles +INSERT INTO AD_Val_Rule (Code,AD_Val_Rule_ID,EntityType,Name,Type,AD_Val_Rule_UU,CreatedBy,UpdatedBy,Updated,Created,AD_Client_ID,IsActive,AD_Org_ID) VALUES ('AD_Role.IsMasterRole=''Y''',200006,'D','MasterRoles','S','5d5fa599-0937-4e88-905b-b0814fc7fc84',100,100,TO_DATE('2012-09-04 16:12:08','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2012-09-04 16:12:08','YYYY-MM-DD HH24:MI:SS'),0,'Y',0) +; + + +-- Sep 4, 2012 4:13:06 PM COT +UPDATE AD_Column SET AD_Val_Rule_ID=200006, IsUpdateable='N',Updated=TO_DATE('2012-09-04 16:13:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=57949 +; + +-- Sep 4, 2012 4:55:32 PM COT +-- Display Logic Window Role +UPDATE AD_Tab SET DisplayLogic='@IsMasterRole@=N',Updated=TO_DATE('2012-09-04 16:55:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=351 +; + +-- Sep 4, 2012 4:55:40 PM COT +-- Display Logic Window Role +UPDATE AD_Tab SET DisplayLogic='@IsMasterRole@=N',Updated=TO_DATE('2012-09-04 16:55:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=120 +; + +-- Sep 4, 2012 4:55:53 PM COT +-- Display Logic Window Role +UPDATE AD_Tab SET DisplayLogic='@IsMasterRole@=N',Updated=TO_DATE('2012-09-04 16:55:53','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=53240 +; + +-- Sep 5, 2012 2:26:43 PM COT +-- Roles are manual for default +UPDATE AD_Column SET DefaultValue='Y',Updated=TO_DATE('2012-09-05 14:26:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=9593 +; + +-- Sep 11, 2012 6:56:24 PM COT +ALTER TABLE AD_Role ADD IsMasterRole CHAR(1) DEFAULT 'N' CHECK (IsMasterRole IN ('Y','N')) NOT NULL +; + +-- Sep 11, 2012 6:56:46 PM COT +ALTER TABLE AD_Role MODIFY IsManual CHAR(1) DEFAULT 'Y' +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=80,IsDisplayed='Y' WHERE AD_Field_ID=200411 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=90,IsDisplayed='Y' WHERE AD_Field_ID=930 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=100,IsDisplayed='Y' WHERE AD_Field_ID=931 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=110,IsDisplayed='Y' WHERE AD_Field_ID=59592 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=120,IsDisplayed='Y' WHERE AD_Field_ID=59591 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=130,IsDisplayed='Y' WHERE AD_Field_ID=10126 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=140,IsDisplayed='Y' WHERE AD_Field_ID=52018 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=150,IsDisplayed='Y' WHERE AD_Field_ID=8740 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=160,IsDisplayed='Y' WHERE AD_Field_ID=5227 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=170,IsDisplayed='Y' WHERE AD_Field_ID=11006 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=180,IsDisplayed='Y' WHERE AD_Field_ID=11003 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=190,IsDisplayed='Y' WHERE AD_Field_ID=11002 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=200,IsDisplayed='Y' WHERE AD_Field_ID=8311 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=210,IsDisplayed='Y' WHERE AD_Field_ID=10813 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=220,IsDisplayed='Y' WHERE AD_Field_ID=11256 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=230,IsDisplayed='Y' WHERE AD_Field_ID=11257 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=240,IsDisplayed='Y' WHERE AD_Field_ID=8313 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=250,IsDisplayed='Y' WHERE AD_Field_ID=8314 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=260,IsDisplayed='Y' WHERE AD_Field_ID=8312 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=270,IsDisplayed='Y' WHERE AD_Field_ID=8310 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=280,IsDisplayed='Y' WHERE AD_Field_ID=12367 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=290,IsDisplayed='Y' WHERE AD_Field_ID=12368 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=300,IsDisplayed='Y' WHERE AD_Field_ID=12641 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=310,IsDisplayed='Y' WHERE AD_Field_ID=200071 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=320,IsDisplayed='Y' WHERE AD_Field_ID=50168 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=330,IsDisplayed='Y' WHERE AD_Field_ID=50169 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=340,IsDisplayed='Y' WHERE AD_Field_ID=50170 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=350,IsDisplayed='Y' WHERE AD_Field_ID=50171 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=360,IsDisplayed='Y' WHERE AD_Field_ID=50172 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=370,IsDisplayed='Y' WHERE AD_Field_ID=50173 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=380,IsDisplayed='Y' WHERE AD_Field_ID=50174 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=390,IsDisplayed='Y' WHERE AD_Field_ID=50175 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=400,IsDisplayed='Y' WHERE AD_Field_ID=50176 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=410,IsDisplayed='Y' WHERE AD_Field_ID=50177 +; + +-- Sep 11, 2012 8:39:23 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=420,IsDisplayed='Y' WHERE AD_Field_ID=50178 +; + +-- Sep 11, 2012 8:39:23 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=430,IsDisplayed='Y' WHERE AD_Field_ID=55432 +; + +-- Sep 11, 2012 8:39:23 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=440,IsDisplayed='Y' WHERE AD_Field_ID=55433 +; + +-- Sep 11, 2012 8:43:59 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Element SET Name='Master Role', Description='A master role cannot be assigned to users, it is intended to define access to menu option and documents and inherit to other roles', PrintName='Master Role',Updated=TO_DATE('2012-09-11 20:43:59','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200117 +; + +-- Sep 11, 2012 8:43:59 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Element_Trl SET IsTranslated='N' WHERE AD_Element_ID=200117 +; + +-- Sep 11, 2012 8:43:59 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Column SET ColumnName='IsMasterRole', Name='Master Role', Description='A master role cannot be assigned to users, it is intended to define access to menu option and documents and inherit to other roles', Help=NULL WHERE AD_Element_ID=200117 +; + +-- Sep 11, 2012 8:43:59 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Process_Para SET ColumnName='IsMasterRole', Name='Master Role', Description='A master role cannot be assigned to users, it is intended to define access to menu option and documents and inherit to other roles', Help=NULL, AD_Element_ID=200117 WHERE UPPER(ColumnName)='ISMASTERROLE' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Sep 11, 2012 8:43:59 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Process_Para SET ColumnName='IsMasterRole', Name='Master Role', Description='A master role cannot be assigned to users, it is intended to define access to menu option and documents and inherit to other roles', Help=NULL WHERE AD_Element_ID=200117 AND IsCentrallyMaintained='Y' +; + +-- Sep 11, 2012 8:43:59 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET Name='Master Role', Description='A master role cannot be assigned to users, it is intended to define access to menu option and documents and inherit to other roles', Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=200117) AND IsCentrallyMaintained='Y' +; + +-- Sep 11, 2012 8:43:59 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_PrintFormatItem pi SET PrintName='Master Role', Name='Master Role' WHERE IsCentrallyMaintained='Y' AND EXISTS (SELECT * FROM AD_Column c WHERE c.AD_Column_ID=pi.AD_Column_ID AND c.AD_Element_ID=200117) +; + +-- Sep 11, 2012 10:48:11 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType=''GLJ'' AND AD_Client_ID=@AD_Client_ID@',Updated=TO_DATE('2012-09-11 22:48:11','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=102 +; + +-- Sep 12, 2012 11:38:13 AM COT +-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType IN (''ARI'', ''API'',''ARC'',''APC'') AND C_DocType.IsSOTrx=''@IsSOTrx@'' AND AD_Client_ID=@AD_Client_ID@''',Updated=TO_DATE('2012-09-12 11:38:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=124 +; + + +-- Sep 12, 2012 11:40:18 AM COT +-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType=''GLD'' AND AD_Client_ID=@AD_Client_ID@''',Updated=TO_DATE('2012-09-12 11:40:18','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=121 +; + +-- Sep 12, 2012 11:41:16 AM COT +-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType IN (''ARI'', ''API'',''ARC'',''APC'') AND AD_Client_ID=@AD_Client_ID@''',Updated=TO_DATE('2012-09-12 11:41:16','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=173 +; + +-- Sep 12, 2012 11:41:30 AM COT +-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType=''MMI'' AND AD_Client_ID=@AD_Client_ID@''',Updated=TO_DATE('2012-09-12 11:41:30','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=209 +; + +-- Sep 12, 2012 11:41:39 AM COT +-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType IN (''MMR'') AND IsSOTrx=''N'' AND AD_Client_ID=@AD_Client_ID@''',Updated=TO_DATE('2012-09-12 11:41:39','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=52054 +; + + +-- Sep 12, 2012 11:41:55 AM COT +-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType IN (''MMR'', ''MMS'') AND AD_Client_ID=@AD_Client_ID@''',Updated=TO_DATE('2012-09-12 11:41:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=125 +; + +-- Sep 12, 2012 11:42:02 AM COT +-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType=''MMM'' AND AD_Client_ID=@AD_Client_ID@''',Updated=TO_DATE('2012-09-12 11:42:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=201 +; + +-- Sep 12, 2012 11:42:08 AM COT +-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType=''DOO'' AND AD_Client_ID=@AD_Client_ID@''',Updated=TO_DATE('2012-09-12 11:42:08','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=52004 +; + +-- Sep 12, 2012 11:42:16 AM COT +-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType IN (''SOO'', ''POO'') AND C_DocType.DocSubTypeSO=''RM'' AND C_DocType.AD_Client_ID=@#AD_Client_ID@ AND IsSOTrx=''N'' AND AD_Client_ID=@AD_Client_ID@''',Updated=TO_DATE('2012-09-12 11:42:16','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=52066 +; + + +-- Sep 12, 2012 6:20:08 PM COT +-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType=''MMI'' AND AD_Client_ID=@AD_Client_ID@',Updated=TO_DATE('2012-09-12 18:20:08','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=209 +; + + +-- Sep 12, 2012 6:28:44 PM COT +-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType IN (''ARR'', ''APP'') AND AD_Client_ID=@AD_Client_ID@',Updated=TO_DATE('2012-09-12 18:28:44','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=149 +; + + +UPDATE AD_System + SET LastMigrationScriptApplied='899_IDEMPIERE_366.sql' +WHERE LastMigrationScriptApplied<'899_IDEMPIERE_366.sql' + OR LastMigrationScriptApplied IS NULL +; + diff --git a/migration/360lts-release/postgresql/899-IDEMPIERE-366.sql b/migration/360lts-release/postgresql/899-IDEMPIERE-366.sql new file mode 100644 index 0000000000..3257868f03 --- /dev/null +++ b/migration/360lts-release/postgresql/899-IDEMPIERE-366.sql @@ -0,0 +1,365 @@ +-- Sep 4, 2012 10:34:50 AM COT +-- Element Master Role +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 ('IsMasterRole',200117,'D','MasterRole','MasterRole','4bad6035-f81b-4e25-81d9-bbf55b099113',0,TO_TIMESTAMP('2012-09-04 10:34:49','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2012-09-04 10:34:49','YYYY-MM-DD HH24:MI:SS'),0,100,100,'Y') +; + +-- Sep 4, 2012 10:34:50 AM COT +INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Name,Description,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Name,t.Description,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 FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=200117 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) +; + +-- Sep 4, 2012 10:36:19 AM COT +-- Column master Role +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,SeqNoSelection,DefaultValue) VALUES (0,156,200410,'D','Y','N','N',0,'N',1,'N',20,'N','N',200117,'N','Y','5ec60b3e-f1a7-447c-a7ea-f3575dcb24d4','N','Y','N','IsMasterRole','MasterRole','Y',100,TO_TIMESTAMP('2012-09-04 10:36:18','YYYY-MM-DD HH24:MI:SS'),0,'Y',TO_TIMESTAMP('2012-09-04 10:36:18','YYYY-MM-DD HH24:MI:SS'),100,0,0,'N') +; + +-- Sep 4, 2012 10:36:19 AM COT +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy ) 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 FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=200410 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) +; + +-- Sep 4, 2012 10:37:58 AM COT +-- Field Master Role +INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,EntityType,Name,IsDisplayed,IsFieldOnly,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,AD_Client_ID,CreatedBy,Updated,IsActive) VALUES ('N',119,1,'N','N',200410,'Y',200411,'N','D','MasterRole','Y','N','b57a3894-98be-44fa-a834-6883c8824d92',100,0,TO_TIMESTAMP('2012-09-04 10:37:58','YYYY-MM-DD HH24:MI:SS'),0,100,TO_TIMESTAMP('2012-09-04 10:37:58','YYYY-MM-DD HH24:MI:SS'),'Y') +; + +-- Sep 4, 2012 10:37:58 AM COT +INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy ) 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 FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=200411 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) +; + +-- Sep 4, 2012 10:38:27 AM COT +-- seq +UPDATE AD_Field SET SeqNo=440,IsDisplayed='Y' WHERE AD_Field_ID=200411 +; + +-- Sep 4, 2012 10:38:40 AM COT +-- Position web +UPDATE AD_Field SET XPosition=2,Updated=TO_TIMESTAMP('2012-09-04 10:38:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200411 +; + +-- Sep 4, 2012 4:12:10 PM COT +-- Validation for just Master Role in included roles +INSERT INTO AD_Val_Rule (Code,AD_Val_Rule_ID,EntityType,Name,Type,AD_Val_Rule_UU,CreatedBy,UpdatedBy,Updated,Created,AD_Client_ID,IsActive,AD_Org_ID) VALUES ('AD_Role.IsMasterRole=''Y''',200006,'D','MasterRoles','S','5d5fa599-0937-4e88-905b-b0814fc7fc84',100,100,TO_TIMESTAMP('2012-09-04 16:12:08','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2012-09-04 16:12:08','YYYY-MM-DD HH24:MI:SS'),0,'Y',0) +; + +-- Sep 4, 2012 4:13:06 PM COT +UPDATE AD_Column SET AD_Val_Rule_ID=200006, IsUpdateable='N',Updated=TO_TIMESTAMP('2012-09-04 16:13:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=57949 +; + +-- Sep 4, 2012 4:55:32 PM COT +-- Display Logic Window Role +UPDATE AD_Tab SET DisplayLogic='@IsMasterRole@=N',Updated=TO_TIMESTAMP('2012-09-04 16:55:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=351 +; + +-- Sep 4, 2012 4:55:40 PM COT +-- Display Logic Window Role +UPDATE AD_Tab SET DisplayLogic='@IsMasterRole@=N',Updated=TO_TIMESTAMP('2012-09-04 16:55:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=120 +; + +-- Sep 4, 2012 4:55:53 PM COT +-- Display Logic Window Role +UPDATE AD_Tab SET DisplayLogic='@IsMasterRole@=N',Updated=TO_TIMESTAMP('2012-09-04 16:55:53','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=53240 +; + + +-- Sep 5, 2012 2:26:43 PM COT +-- Roles are manual for default +UPDATE AD_Column SET DefaultValue='Y',Updated=TO_TIMESTAMP('2012-09-05 14:26:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=9593 +; + +-- Sep 11, 2012 6:56:24 PM COT +ALTER TABLE AD_Role ADD COLUMN IsMasterRole CHAR(1) DEFAULT 'N' CHECK (IsMasterRole IN ('Y','N')) NOT NULL +; + +-- Sep 11, 2012 6:56:46 PM COT +INSERT INTO t_alter_column values('ad_role','IsManual','CHAR(1)','not null','Y') +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=80,IsDisplayed='Y' WHERE AD_Field_ID=200411 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=90,IsDisplayed='Y' WHERE AD_Field_ID=930 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=100,IsDisplayed='Y' WHERE AD_Field_ID=931 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=110,IsDisplayed='Y' WHERE AD_Field_ID=59592 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=120,IsDisplayed='Y' WHERE AD_Field_ID=59591 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=130,IsDisplayed='Y' WHERE AD_Field_ID=10126 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=140,IsDisplayed='Y' WHERE AD_Field_ID=52018 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=150,IsDisplayed='Y' WHERE AD_Field_ID=8740 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=160,IsDisplayed='Y' WHERE AD_Field_ID=5227 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=170,IsDisplayed='Y' WHERE AD_Field_ID=11006 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=180,IsDisplayed='Y' WHERE AD_Field_ID=11003 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=190,IsDisplayed='Y' WHERE AD_Field_ID=11002 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=200,IsDisplayed='Y' WHERE AD_Field_ID=8311 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=210,IsDisplayed='Y' WHERE AD_Field_ID=10813 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=220,IsDisplayed='Y' WHERE AD_Field_ID=11256 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=230,IsDisplayed='Y' WHERE AD_Field_ID=11257 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=240,IsDisplayed='Y' WHERE AD_Field_ID=8313 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=250,IsDisplayed='Y' WHERE AD_Field_ID=8314 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=260,IsDisplayed='Y' WHERE AD_Field_ID=8312 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=270,IsDisplayed='Y' WHERE AD_Field_ID=8310 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=280,IsDisplayed='Y' WHERE AD_Field_ID=12367 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=290,IsDisplayed='Y' WHERE AD_Field_ID=12368 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=300,IsDisplayed='Y' WHERE AD_Field_ID=12641 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=310,IsDisplayed='Y' WHERE AD_Field_ID=200071 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=320,IsDisplayed='Y' WHERE AD_Field_ID=50168 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=330,IsDisplayed='Y' WHERE AD_Field_ID=50169 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=340,IsDisplayed='Y' WHERE AD_Field_ID=50170 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=350,IsDisplayed='Y' WHERE AD_Field_ID=50171 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=360,IsDisplayed='Y' WHERE AD_Field_ID=50172 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=370,IsDisplayed='Y' WHERE AD_Field_ID=50173 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=380,IsDisplayed='Y' WHERE AD_Field_ID=50174 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=390,IsDisplayed='Y' WHERE AD_Field_ID=50175 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=400,IsDisplayed='Y' WHERE AD_Field_ID=50176 +; + +-- Sep 11, 2012 8:39:22 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=410,IsDisplayed='Y' WHERE AD_Field_ID=50177 +; + +-- Sep 11, 2012 8:39:23 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=420,IsDisplayed='Y' WHERE AD_Field_ID=50178 +; + +-- Sep 11, 2012 8:39:23 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=430,IsDisplayed='Y' WHERE AD_Field_ID=55432 +; + +-- Sep 11, 2012 8:39:23 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET SeqNo=440,IsDisplayed='Y' WHERE AD_Field_ID=55433 +; + +-- Sep 11, 2012 8:43:59 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Element SET Name='Master Role', Description='A master role cannot be assigned to users, it is intended to define access to menu option and documents and inherit to other roles', PrintName='Master Role',Updated=TO_TIMESTAMP('2012-09-11 20:43:59','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200117 +; + +-- Sep 11, 2012 8:43:59 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Element_Trl SET IsTranslated='N' WHERE AD_Element_ID=200117 +; + +-- Sep 11, 2012 8:43:59 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Column SET ColumnName='IsMasterRole', Name='Master Role', Description='A master role cannot be assigned to users, it is intended to define access to menu option and documents and inherit to other roles', Help=NULL WHERE AD_Element_ID=200117 +; + +-- Sep 11, 2012 8:43:59 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Process_Para SET ColumnName='IsMasterRole', Name='Master Role', Description='A master role cannot be assigned to users, it is intended to define access to menu option and documents and inherit to other roles', Help=NULL, AD_Element_ID=200117 WHERE UPPER(ColumnName)='ISMASTERROLE' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Sep 11, 2012 8:43:59 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Process_Para SET ColumnName='IsMasterRole', Name='Master Role', Description='A master role cannot be assigned to users, it is intended to define access to menu option and documents and inherit to other roles', Help=NULL WHERE AD_Element_ID=200117 AND IsCentrallyMaintained='Y' +; + +-- Sep 11, 2012 8:43:59 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Field SET Name='Master Role', Description='A master role cannot be assigned to users, it is intended to define access to menu option and documents and inherit to other roles', Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=200117) AND IsCentrallyMaintained='Y' +; + +-- Sep 11, 2012 8:43:59 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_PrintFormatItem SET PrintName='Master Role', Name='Master Role' 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=200117) +; + +-- Sep 11, 2012 10:48:11 PM COT +-- IDEMPIERE-366 Improve Role Inheritance +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType=''GLJ'' AND AD_Client_ID=@AD_Client_ID@',Updated=TO_TIMESTAMP('2012-09-11 22:48:11','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=102 +; + +-- Sep 12, 2012 11:38:13 AM COT +-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType IN (''ARI'', ''API'',''ARC'',''APC'') AND C_DocType.IsSOTrx=''@IsSOTrx@'' AND AD_Client_ID=@AD_Client_ID@''',Updated=TO_TIMESTAMP('2012-09-12 11:38:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=124 +; + + +-- Sep 12, 2012 11:40:18 AM COT +-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType=''GLD'' AND AD_Client_ID=@AD_Client_ID@''',Updated=TO_TIMESTAMP('2012-09-12 11:40:18','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=121 +; + +-- Sep 12, 2012 11:41:16 AM COT +-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType IN (''ARI'', ''API'',''ARC'',''APC'') AND AD_Client_ID=@AD_Client_ID@''',Updated=TO_TIMESTAMP('2012-09-12 11:41:16','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=173 +; + +-- Sep 12, 2012 11:41:30 AM COT +-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType=''MMI'' AND AD_Client_ID=@AD_Client_ID@''',Updated=TO_TIMESTAMP('2012-09-12 11:41:30','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=209 +; + +-- Sep 12, 2012 11:41:39 AM COT +-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType IN (''MMR'') AND IsSOTrx=''N'' AND AD_Client_ID=@AD_Client_ID@''',Updated=TO_TIMESTAMP('2012-09-12 11:41:39','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=52054 +; + +-- Sep 12, 2012 11:41:55 AM COT +-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType IN (''MMR'', ''MMS'') AND AD_Client_ID=@AD_Client_ID@''',Updated=TO_TIMESTAMP('2012-09-12 11:41:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=125 +; + +-- Sep 12, 2012 11:42:02 AM COT +-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType=''MMM'' AND AD_Client_ID=@AD_Client_ID@''',Updated=TO_TIMESTAMP('2012-09-12 11:42:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=201 +; + +-- Sep 12, 2012 11:42:08 AM COT +-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType=''DOO'' AND AD_Client_ID=@AD_Client_ID@''',Updated=TO_TIMESTAMP('2012-09-12 11:42:08','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=52004 +; + +-- Sep 12, 2012 11:42:16 AM COT +-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType IN (''SOO'', ''POO'') AND C_DocType.DocSubTypeSO=''RM'' AND C_DocType.AD_Client_ID=@#AD_Client_ID@ AND IsSOTrx=''N'' AND AD_Client_ID=@AD_Client_ID@''',Updated=TO_TIMESTAMP('2012-09-12 11:42:16','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=52066 +; + + +-- Sep 12, 2012 6:20:08 PM COT +-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType=''MMI'' AND AD_Client_ID=@AD_Client_ID@',Updated=TO_TIMESTAMP('2012-09-12 18:20:08','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=209 +; + +-- Sep 12, 2012 6:28:44 PM COT +-- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator +UPDATE AD_Val_Rule SET Code='C_DocType.DocBaseType IN (''ARR'', ''APP'') AND AD_Client_ID=@AD_Client_ID@',Updated=TO_TIMESTAMP('2012-09-12 18:28:44','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Val_Rule_ID=149 +; + + + +UPDATE AD_System + SET LastMigrationScriptApplied='899_IDEMPIERE_366.sql' +WHERE LastMigrationScriptApplied<'899_IDEMPIERE_366.sql' + OR LastMigrationScriptApplied IS NULL +; + diff --git a/org.adempiere.base/src/org/compiere/model/MRole.java b/org.adempiere.base/src/org/compiere/model/MRole.java index 871e5e394b..8717c5ca17 100644 --- a/org.adempiere.base/src/org/compiere/model/MRole.java +++ b/org.adempiere.base/src/org/compiere/model/MRole.java @@ -16,6 +16,9 @@ *****************************************************************************/ package org.compiere.model; +import static org.compiere.model.SystemIDs.USER_SUPERUSER; +import static org.compiere.model.SystemIDs.USER_SYSTEM; + import java.io.Serializable; import java.lang.reflect.Array; import java.sql.PreparedStatement; @@ -27,10 +30,10 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Map.Entry; import java.util.Properties; import java.util.Set; import java.util.Vector; -import java.util.Map.Entry; import java.util.logging.Level; import org.adempiere.exceptions.AdempiereException; @@ -42,7 +45,6 @@ import org.compiere.util.Ini; import org.compiere.util.KeyNamePair; import org.compiere.util.Msg; import org.compiere.util.Trace; -import static org.compiere.model.SystemIDs.*; /** * Role Model. @@ -60,7 +62,7 @@ public final class MRole extends X_AD_Role /** * */ - private static final long serialVersionUID = 3684323160980498188L; + private static final long serialVersionUID = 2716871587637082891L; /** * Get Default (Client) Role @@ -1467,7 +1469,9 @@ public final class MRole extends X_AD_Role if (m_windowAccess == null) { m_windowAccess = new HashMap(100); - + // first get the window access from the included and substitute roles + mergeIncludedAccess("m_windowAccess"); // Load included accesses - metas-2009_0021_AP1_G94 + // and now get the window access directly from this role MClient client = MClient.get(getCtx(), getAD_Client_ID()); String ASPFilter = ""; if (client.isUseASP()) @@ -1504,16 +1508,26 @@ public final class MRole extends X_AD_Role + " AND ce.AD_Tab_ID IS NULL " + " AND ce.AD_Field_ID IS NULL " + " AND ce.ASP_Status = 'H')"; // Hide - String sql = "SELECT AD_Window_ID, IsReadWrite FROM AD_Window_Access WHERE AD_Role_ID=? AND IsActive='Y'" + ASPFilter; + String sql = "SELECT AD_Window_ID, IsReadWrite, IsActive FROM AD_Window_Access WHERE AD_Role_ID=?" + ASPFilter; PreparedStatement pstmt = null; ResultSet rs = null; + HashMap directAccess = new HashMap(100); try { pstmt = DB.prepareStatement(sql, get_TrxName()); pstmt.setInt(1, getAD_Role_ID()); rs = pstmt.executeQuery(); - while (rs.next()) - m_windowAccess.put(new Integer(rs.getInt(1)), new Boolean("Y".equals(rs.getString(2)))); + while (rs.next()) { + Integer winId = new Integer(rs.getInt(1)); + if ("N".equals(rs.getString(3))) { + // inactive window on direct access + if (m_windowAccess.containsKey(winId)) { + m_windowAccess.remove(winId); + } + } else { + directAccess.put(winId, new Boolean("Y".equals(rs.getString(2)))); + } + } } catch (Exception e) { @@ -1524,23 +1538,11 @@ public final class MRole extends X_AD_Role DB.close(rs, pstmt); } // + setAccessMap("m_windowAccess", mergeAccess(getAccessMap("m_windowAccess"), directAccess, true)); log.fine("#" + m_windowAccess.size()); - mergeIncludedAccess("m_windowAccess"); // Load included accesses - metas-2009_0021_AP1_G94 } // reload Boolean retValue = m_windowAccess.get(AD_Window_ID); - // - // Check included roles - metas-2009_0021_AP1_G94 - if (retValue == null) - { - for (MRole includedRole : getIncludedRoles(false)) - { - retValue = includedRole.getWindowAccess(AD_Window_ID); - if (retValue != null) - break; - } - } - // - // log.fine("getWindowAccess - AD_Window_ID=" + AD_Window_ID + " - " + retValue); + log.fine("getWindowAccess - AD_Window_ID=" + AD_Window_ID + " - " + retValue); return retValue; } // getWindowAccess @@ -1554,7 +1556,9 @@ public final class MRole extends X_AD_Role if (m_processAccess == null) { m_processAccess = new HashMap(50); - + // first get the process access from the included and substitute roles + mergeIncludedAccess("m_processAccess"); // Load included accesses - metas-2009_0021_AP1_G94 + // and now get the process access directly from this role MClient client = MClient.get(getCtx(), getAD_Client_ID()); String ASPFilter = ""; if (client.isUseASP()) @@ -1589,16 +1593,26 @@ public final class MRole extends X_AD_Role + " AND ce.AD_Process_ID IS NOT NULL " + " AND ce.AD_Process_Para_ID IS NULL " + " AND ce.ASP_Status = 'H')"; // Hide - String sql = "SELECT AD_Process_ID, IsReadWrite FROM AD_Process_Access WHERE AD_Role_ID=? AND IsActive='Y'" + ASPFilter; + String sql = "SELECT AD_Process_ID, IsReadWrite, IsActive FROM AD_Process_Access WHERE AD_Role_ID=?" + ASPFilter; PreparedStatement pstmt = null; ResultSet rs = null; + HashMap directAccess = new HashMap(100); try { pstmt = DB.prepareStatement(sql, get_TrxName()); pstmt.setInt(1, getAD_Role_ID()); rs = pstmt.executeQuery(); - while (rs.next()) - m_processAccess.put(new Integer(rs.getInt(1)), new Boolean("Y".equals(rs.getString(2)))); + while (rs.next()) { + Integer procId = new Integer(rs.getInt(1)); + if ("N".equals(rs.getString(3))) { + // inactive process on direct access + if (m_processAccess.containsKey(procId)) { + m_processAccess.remove(procId); + } + } else { + directAccess.put(procId, new Boolean("Y".equals(rs.getString(2)))); + } + } } catch (Exception e) { @@ -1608,7 +1622,7 @@ public final class MRole extends X_AD_Role { DB.close(rs, pstmt); } - mergeIncludedAccess("m_processAccess"); // Load included accesses - metas-2009_0021_AP1_G94 + setAccessMap("m_processAccess", mergeAccess(getAccessMap("m_processAccess"), directAccess, true)); } // reload Boolean retValue = m_processAccess.get(AD_Process_ID); return retValue; @@ -1624,6 +1638,9 @@ public final class MRole extends X_AD_Role if (m_taskAccess == null) { m_taskAccess = new HashMap(10); + // first get the task access from the included and substitute roles + mergeIncludedAccess("m_taskAccess"); // Load included accesses - metas-2009_0021_AP1_G94 + // and now get the task access directly from this role MClient client = MClient.get(getCtx(), getAD_Client_ID()); String ASPFilter = ""; if (client.isUseASP()) @@ -1656,16 +1673,26 @@ public final class MRole extends X_AD_Role + " AND ce.IsActive = 'Y' " + " AND ce.AD_Task_ID IS NOT NULL " + " AND ce.ASP_Status = 'H')"; // Hide - String sql = "SELECT AD_Task_ID, IsReadWrite FROM AD_Task_Access WHERE AD_Role_ID=? AND IsActive='Y'" + ASPFilter; + String sql = "SELECT AD_Task_ID, IsReadWrite, IsActive FROM AD_Task_Access WHERE AD_Role_ID=?" + ASPFilter; PreparedStatement pstmt = null; ResultSet rs = null; + HashMap directAccess = new HashMap(100); try { pstmt = DB.prepareStatement(sql, get_TrxName()); pstmt.setInt(1, getAD_Role_ID()); rs = pstmt.executeQuery(); - while (rs.next()) - m_taskAccess.put(new Integer(rs.getInt(1)), new Boolean("Y".equals(rs.getString(2)))); + while (rs.next()) { + Integer taskId = new Integer(rs.getInt(1)); + if ("N".equals(rs.getString(3))) { + // inactive task on direct access + if (m_taskAccess.containsKey(taskId)) { + m_taskAccess.remove(taskId); + } + } else { + directAccess.put(taskId, new Boolean("Y".equals(rs.getString(2)))); + } + } } catch (Exception e) { @@ -1675,7 +1702,7 @@ public final class MRole extends X_AD_Role { DB.close(rs, pstmt); } - mergeIncludedAccess("m_taskAccess"); // Load included accesses - metas-2009_0021_AP1_G94 + setAccessMap("m_taskAccess", mergeAccess(getAccessMap("m_taskAccess"), directAccess, true)); } // reload Boolean retValue = m_taskAccess.get(AD_Task_ID); return retValue; @@ -1691,7 +1718,9 @@ public final class MRole extends X_AD_Role if (m_formAccess == null) { m_formAccess = new HashMap(20); - + // first get the form access from the included and substitute roles + mergeIncludedAccess("m_formAccess"); // Load included accesses - metas-2009_0021_AP1_G94 + // and now get the form access directly from this role MClient client = MClient.get(getCtx(), getAD_Client_ID()); String ASPFilter = ""; if (client.isUseASP()) @@ -1724,16 +1753,26 @@ public final class MRole extends X_AD_Role + " AND ce.IsActive = 'Y' " + " AND ce.AD_Form_ID IS NOT NULL " + " AND ce.ASP_Status = 'H')"; // Hide - String sql = "SELECT AD_Form_ID, IsReadWrite FROM AD_Form_Access WHERE AD_Role_ID=? AND IsActive='Y'" + ASPFilter; + String sql = "SELECT AD_Form_ID, IsReadWrite, IsActive FROM AD_Form_Access WHERE AD_Role_ID=?" + ASPFilter; PreparedStatement pstmt = null; ResultSet rs = null; + HashMap directAccess = new HashMap(100); try { pstmt = DB.prepareStatement(sql, get_TrxName()); pstmt.setInt(1, getAD_Role_ID()); rs = pstmt.executeQuery(); - while (rs.next()) - m_formAccess.put(new Integer(rs.getInt(1)), new Boolean("Y".equals(rs.getString(2)))); + while (rs.next()) { + Integer formId = new Integer(rs.getInt(1)); + if ("N".equals(rs.getString(3))) { + // inactive form on direct access + if (m_formAccess.containsKey(formId)) { + m_formAccess.remove(formId); + } + } else { + directAccess.put(formId, new Boolean("Y".equals(rs.getString(2)))); + } + } } catch (Exception e) { @@ -1743,23 +1782,11 @@ public final class MRole extends X_AD_Role { DB.close(rs, pstmt); } - mergeIncludedAccess("m_formAccess"); // Load included accesses - metas-2009_0021_AP1_G94 + setAccessMap("m_formAccess", mergeAccess(getAccessMap("m_formAccess"), directAccess, true)); } // reload Boolean retValue = m_formAccess.get(AD_Form_ID); - // - // Check included roles - metas-2009_0021_AP1_G94 - if (retValue == null) - { - for (MRole includedRole : getIncludedRoles(false)) - { - retValue = includedRole.getFormAccess(AD_Form_ID); - if (retValue != null) - break; - } - } - // return retValue; - } // getTaskAccess + } // getFormAccess /** * Get Workflow Access @@ -1771,6 +1798,9 @@ public final class MRole extends X_AD_Role if (m_workflowAccess == null) { m_workflowAccess = new HashMap(20); + // first get the workflow access from the included and substitute roles + mergeIncludedAccess("m_workflowAccess"); // Load included accesses - metas-2009_0021_AP1_G94 + // and now get the workflow access directly from this role MClient client = MClient.get(getCtx(), getAD_Client_ID()); String ASPFilter = ""; if (client.isUseASP()) @@ -1803,16 +1833,26 @@ public final class MRole extends X_AD_Role + " AND ce.IsActive = 'Y' " + " AND ce.AD_Workflow_ID IS NOT NULL " + " AND ce.ASP_Status = 'H')"; // Hide - String sql = "SELECT AD_Workflow_ID, IsReadWrite FROM AD_Workflow_Access WHERE AD_Role_ID=? AND IsActive='Y'" + ASPFilter; + String sql = "SELECT AD_Workflow_ID, IsReadWrite, IsActive FROM AD_Workflow_Access WHERE AD_Role_ID=?" + ASPFilter; PreparedStatement pstmt = null; ResultSet rs = null; + HashMap directAccess = new HashMap(100); try { pstmt = DB.prepareStatement(sql, get_TrxName()); pstmt.setInt(1, getAD_Role_ID()); rs = pstmt.executeQuery(); - while (rs.next()) - m_workflowAccess.put(new Integer(rs.getInt(1)), new Boolean("Y".equals(rs.getString(2)))); + while (rs.next()) { + Integer formId = new Integer(rs.getInt(1)); + if ("N".equals(rs.getString(3))) { + // inactive workflow on direct access + if (m_workflowAccess.containsKey(formId)) { + m_workflowAccess.remove(formId); + } + } else { + directAccess.put(formId, new Boolean("Y".equals(rs.getString(2)))); + } + } } catch (Exception e) { @@ -1822,7 +1862,7 @@ public final class MRole extends X_AD_Role { DB.close(rs, pstmt); } - mergeIncludedAccess("m_workflowAccess"); // Load included accesses - metas-2009_0021_AP1_G94 + setAccessMap("m_workflowAccess", mergeAccess(getAccessMap("m_workflowAccess"), directAccess, true)); } // reload Boolean retValue = m_workflowAccess.get(AD_Workflow_ID); return retValue; @@ -2449,8 +2489,8 @@ public final class MRole extends X_AD_Role * @return number of valid actions in the String[] options * @see metas-2009_0021_AP1_G94 */ - public int checkActionAccess(int clientId, int docTypeId, String[] options, int maxIndex) - { + public int checkActionAccess(int clientId, int docTypeId, String[] options, + int maxIndex) { if (maxIndex <= 0) return maxIndex; // @@ -2460,45 +2500,96 @@ public final class MRole extends X_AD_Role params.add(docTypeId); // final StringBuffer sql_values = new StringBuffer(); - for (int i = 0; i < maxIndex; i++) - { + for (int i = 0; i < maxIndex; i++) { if (sql_values.length() > 0) sql_values.append(","); sql_values.append("?"); params.add(options[i]); } // - final String sql = "SELECT DISTINCT rl.Value FROM AD_Document_Action_Access a" - + " INNER JOIN AD_Ref_List rl ON (rl.AD_Reference_ID=135 and rl.AD_Ref_List_ID=a.AD_Ref_List_ID)" - + " WHERE a.IsActive='Y' AND a.AD_Client_ID=? AND a.C_DocType_ID=?" // #1,2 - + " AND rl.Value IN ("+sql_values+")" - + " AND "+getIncludedRolesWhereClause("a.AD_Role_ID", params) - ; PreparedStatement pstmt = null; ResultSet rs = null; - try - { + PreparedStatement pstmt1 = null; + ResultSet rs1 = null; + String sql=null; + + List roles = getIncludedRoles(true); + try { + + if (roles.size() > 0) { + + MDocType doc = new MDocType(getCtx(), docTypeId, get_TrxName()); + Vector option = new Vector(); + for (int j = 0; j < options.length; j++) { + if (options[j] != null) + option.add(options[j]); + } + + String sql1 = "SELECT rl.Value" + + " FROM AD_Document_Action_Access da1" + + " INNER JOIN AD_Ref_List rl ON (rl.AD_Reference_ID=135 and rl.AD_Ref_List_ID=da1.AD_Ref_List_ID)" + + " INNER JOIN AD_Role_Included ri ON (da1.AD_Role_ID=ri.Included_Role_ID)" + + " INNER JOIN AD_Role ro ON (ri.AD_Role_ID=ro.AD_Role_ID)" + + " INNER JOIN C_Doctype ty ON (da1.C_Doctype_ID=ty.C_Doctype_ID)" + + " WHERE ro.AD_Role_ID=?" + + " AND ty.DocBaseType IN (?)" + + " AND da1.IsActive='Y'"; + + pstmt1 = DB.prepareStatement(sql1, get_TrxName()); + pstmt1.setInt(1, getAD_Role_ID()); + pstmt1.setString(2, doc.getDocBaseType()); + + s_log.info(sql1 + " : " + getAD_Role_ID() + " " + + doc.getDocBaseType()); + rs1 = pstmt1.executeQuery(); + + while (rs1.next() && rs1 != null) { + String op = rs1.getString(1); + if (option.contains(op)) { + validOptions.add(op); + } + + } + + } + + sql = "SELECT DISTINCT rl.Value, a.IsActive FROM AD_Document_Action_Access a" + + " INNER JOIN AD_Ref_List rl ON (rl.AD_Reference_ID=135 and rl.AD_Ref_List_ID=a.AD_Ref_List_ID)" + + " WHERE a.AD_Client_ID=? AND a.C_DocType_ID=?" // #1,2 + + " AND rl.Value IN (" + + sql_values + + ")" + + " AND " + + getIncludedRolesWhereClause("a.AD_Role_ID", params); + pstmt = DB.prepareStatement(sql, null); DB.setParameters(pstmt, params); + s_log.info(sql + " : " ); rs = pstmt.executeQuery(); - while (rs.next()) - { + while (rs.next()) { String op = rs.getString(1); - validOptions.add(op); + String active=rs.getString(2); + if(active.equals("N") && validOptions.contains(op) ){ + validOptions.remove(op); + }else{ + if(!validOptions.contains(op)) + validOptions.add(op); + } } + validOptions.toArray(options); - } - catch (SQLException e) - { + } catch (SQLException e) { log.log(Level.SEVERE, sql, e); - } - finally - { + } finally { DB.close(rs, pstmt); - rs = null; pstmt = null; + DB.close(rs1, pstmt1); + rs = null; + pstmt = null; + rs1 = null; + pstmt1 = null; } // - int newMaxIndex = validOptions.size(); + int newMaxIndex = validOptions.size(); return newMaxIndex; } @@ -2529,7 +2620,7 @@ public final class MRole extends X_AD_Role } } - System.out.println("Include "+role); + s_log.info("Include "+role); this.m_includedRoles.add(role); role.setParentRole(this); role.m_includedSeqNo = seqNo; @@ -2717,7 +2808,7 @@ public final class MRole extends X_AD_Role { if (array1 == null) { - System.out.println("null !!!"); + s_log.info("array1 null !!!"); } List list = new ArrayList(); for (T po : array1) @@ -2803,7 +2894,7 @@ public final class MRole extends X_AD_Role } // end for array1 if (!found) { - //System.out.println("add "+o2); + //s_log.info("add "+o2); list.add(o2); } } @@ -2964,4 +3055,5 @@ public final class MRole extends X_AD_Role whereClause.insert(0, roleColumnSQL+" IN (").append(")"); return whereClause.toString(); } + } // MRole diff --git a/org.adempiere.base/src/org/compiere/util/Login.java b/org.adempiere.base/src/org/compiere/util/Login.java index 47e3740c4e..db1f9d9cbc 100644 --- a/org.adempiere.base/src/org/compiere/util/Login.java +++ b/org.adempiere.base/src/org/compiere/util/Login.java @@ -1526,6 +1526,7 @@ public class Login sql.append("u.EMail=?"); else sql.append("COALESCE(u.LDAPUser,u.Name)=?"); + sql.append(" AND r.IsMasterRole='N'"); sql.append(" AND u.IsActive='Y'").append(" AND EXISTS (SELECT * FROM AD_Client c WHERE u.AD_Client_ID=c.AD_Client_ID AND c.IsActive='Y')"); sql.append(" ORDER BY r.Name"); diff --git a/org.adempiere.extend/src/compiere/model/MyValidator.java b/org.adempiere.extend/src/compiere/model/MyValidator.java index ee09625e2b..cb50223f09 100644 --- a/org.adempiere.extend/src/compiere/model/MyValidator.java +++ b/org.adempiere.extend/src/compiere/model/MyValidator.java @@ -218,15 +218,15 @@ public class MyValidator implements ModelValidator } // toString /** - * Sample Validator Before Save Properties - to set mandatory properties on users + * Sample Validator BefoMRolere Save Properties - to set mandatory properties on users * avoid users changing properties */ public void beforeSaveProperties() { // not for SuperUser or role SysAdmin if ( m_AD_User_ID == 0 // System || m_AD_User_ID == 100 // SuperUser - || m_AD_Role_ID == 0 // System Administrator - || m_AD_Role_ID == 1000000) // ECO Admin + || m_AD_Role_ID == 0) // System Administrator + return; log.info("Setting default Properties");