hg merge release-6.2 (merge release6.2 into default)

This commit is contained in:
Carlos Ruiz 2019-03-23 21:38:25 -03:00
commit cee4edc557
55 changed files with 2341 additions and 213 deletions

View File

@ -0,0 +1,8 @@
UPDATE ad_treebar SET ad_client_id=(SELECT ad_client_id FROM ad_user WHERE ad_user.ad_user_id=ad_treebar.ad_user_id)
WHERE ad_client_id!=(SELECT ad_client_id FROM ad_user WHERE ad_user.ad_user_id=ad_treebar.ad_user_id);
UPDATE ad_treebar SET ad_org_id=0 WHERE ad_org_id!=0;
SELECT register_migration_script('201903181955_IDEMPIERE-3528.sql') FROM dual
;

View File

@ -0,0 +1,10 @@
-- IDEMPIERE-2395 - clean orphan ad_note in seed
DELETE FROM ad_note WHERE ad_table_id=53043 AND record_id NOT IN (SELECT PP_MRP_ID FROM PP_MRP);
DELETE FROM ad_attachment WHERE ad_table_id=389 AND record_id NOT IN (SELECT ad_note_id FROM ad_note);
DELETE FROM ad_treenodecmt WHERE node_id>0 AND node_id NOT IN (SELECT cm_template_id FROM cm_template);
SELECT register_migration_script('201903191017_IDEMPIERE-2395.sql') FROM dual
;

View File

@ -0,0 +1,15 @@
SET SQLBLANKLINES ON
SET DEFINE OFF
-- IDEMPIERE-2395
-- Mar 19, 2019, 3:24:55 PM BRT
INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,Help,PrintName,EntityType,AD_Element_UU) VALUES (203300,0,0,'Y',TO_DATE('2019-03-19 15:24:31','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-19 15:24:31','YYYY-MM-DD HH24:MI:SS'),100,'IsCleanChangeLog','Clean Change Log',NULL,NULL,'Clean Change Log','D','c6e68794-2989-4a46-9151-a94a3254cf93')
;
-- Mar 19, 2019, 3:25:19 PM BRT
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,DefaultValue,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted) VALUES (200269,0,0,'Y',TO_DATE('2019-03-19 15:25:18','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-19 15:25:18','YYYY-MM-DD HH24:MI:SS'),100,'Clean Change Log',200102,10,20,'N',1,'Y','N','IsCleanChangeLog','Y','D',203300,'459a7f88-ec79-47cf-9c7b-7429ac565f55','N')
;
SELECT register_migration_script('201903191533_IDEMPIERE-2395.sql') FROM dual
;

View File

@ -0,0 +1,115 @@
SET SQLBLANKLINES ON
SET DEFINE OFF
-- IDEMPIERE-3916 Copy Template
-- Mar 19, 2019, 3:57:52 PM BRT
UPDATE AD_Process SET Name='Copy Client', Description='Process to copy a client', Help='This process can be used to copy a client from an external database to the current database, or to duplicate a template client within the current database.',Updated=TO_DATE('2019-03-19 15:57:52','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_ID=200110
;
-- Mar 19, 2019, 3:57:52 PM BRT
UPDATE AD_Menu SET Name='Copy Client', Description='Process to copy a client', IsActive='Y',Updated=TO_DATE('2019-03-19 15:57:52','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Menu_ID=200168
;
-- Mar 19, 2019, 3:59:09 PM BRT
INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,Help,PrintName,EntityType,AD_Element_UU) VALUES (203301,0,0,'Y',TO_DATE('2019-03-19 15:58:39','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-19 15:58:39','YYYY-MM-DD HH24:MI:SS'),100,'IsCopyClient','Copy Template Client',NULL,NULL,'Copy Template Client','D','a5e530c4-15aa-4e5e-9d43-afb7b7528ce1')
;
-- Mar 19, 2019, 3:59:42 PM BRT
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,DefaultValue,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted) VALUES (200270,0,0,'Y',TO_DATE('2019-03-19 15:59:42','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-19 15:59:42','YYYY-MM-DD HH24:MI:SS'),100,'Copy Template Client',200110,5,20,'N',1,'Y','N','IsCopyClient','Y','D',203301,'c7f81809-5948-47fd-8a37-a6614266c104','N')
;
-- Mar 19, 2019, 4:00:55 PM BRT
UPDATE AD_Process_Para SET IsMandatory='N', DisplayLogic='IsCopyClient=N', MandatoryLogic='IsCopyClient=N',Updated=TO_DATE('2019-03-19 16:00:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200256
;
-- Mar 19, 2019, 4:01:02 PM BRT
UPDATE AD_Process_Para SET DisplayLogic='IsCopyClient=N',Updated=TO_DATE('2019-03-19 16:01:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200257
;
-- Mar 19, 2019, 4:01:04 PM BRT
UPDATE AD_Process_Para SET DisplayLogic='IsCopyClient=N',Updated=TO_DATE('2019-03-19 16:01:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200258
;
-- Mar 19, 2019, 4:01:29 PM BRT
UPDATE AD_Process_Para SET DisplayLogic='IsCopyClient=N',Updated=TO_DATE('2019-03-19 16:01:29','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200261
;
-- Mar 19, 2019, 4:01:43 PM BRT
UPDATE AD_Process_Para SET DisplayLogic='IsCopyClient=N',Updated=TO_DATE('2019-03-19 16:01:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200263
;
-- Mar 19, 2019, 4:03:09 PM BRT
UPDATE AD_Process_Para SET SeqNo=110,Updated=TO_DATE('2019-03-19 16:03:09','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200263
;
-- Mar 19, 2019, 4:03:17 PM BRT
UPDATE AD_Process_Para SET SeqNo=100,Updated=TO_DATE('2019-03-19 16:03:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200262
;
-- Mar 19, 2019, 4:03:21 PM BRT
UPDATE AD_Process_Para SET SeqNo=90,Updated=TO_DATE('2019-03-19 16:03:21','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200261
;
-- Mar 19, 2019, 4:03:28 PM BRT
UPDATE AD_Process_Para SET SeqNo=80,Updated=TO_DATE('2019-03-19 16:03:28','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200260
;
-- Mar 19, 2019, 4:03:32 PM BRT
UPDATE AD_Process_Para SET SeqNo=70,Updated=TO_DATE('2019-03-19 16:03:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200259
;
-- Mar 19, 2019, 4:03:41 PM BRT
UPDATE AD_Process_Para SET SeqNo=40,Updated=TO_DATE('2019-03-19 16:03:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200258
;
-- Mar 19, 2019, 4:03:45 PM BRT
UPDATE AD_Process_Para SET SeqNo=30,Updated=TO_DATE('2019-03-19 16:03:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200257
;
-- Mar 19, 2019, 4:03:48 PM BRT
UPDATE AD_Process_Para SET SeqNo=20,Updated=TO_DATE('2019-03-19 16:03:48','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200256
;
-- Mar 19, 2019, 4:03:53 PM BRT
UPDATE AD_Process_Para SET SeqNo=10,Updated=TO_DATE('2019-03-19 16:03:53','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200270
;
-- Mar 19, 2019, 4:06:44 PM BRT
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Help,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,DisplayLogic,AD_Process_Para_UU,IsEncrypted,MandatoryLogic) VALUES (200271,0,0,'Y',TO_DATE('2019-03-19 16:06:44','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-19 16:06:44','YYYY-MM-DD HH24:MI:SS'),100,'Client Name','Client in which current session user logged in',200110,50,10,'N',60,'N','ClientName','Y','D',200186,'@IsCopyClient@=Y','edbacdb3-9a07-490a-ba53-33d0cab63c47','N','@IsCopyClient@=Y')
;
-- Mar 19, 2019, 4:07:17 PM BRT
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,DisplayLogic,AD_Process_Para_UU,IsEncrypted,MandatoryLogic) VALUES (200272,0,0,'Y',TO_DATE('2019-03-19 16:07:16','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-19 16:07:16','YYYY-MM-DD HH24:MI:SS'),100,'Client Key','Key of the Client',200110,60,10,'N',40,'N','ClientValue','Y','D',2097,'@IsCopyClient@=Y','55b77a95-1564-41d2-9177-97fbcf264e66','N','@IsCopyClient@=Y')
;
-- Mar 19, 2019, 4:07:45 PM BRT
UPDATE AD_Process_Para SET DisplayLogic='@IsCopyClient@=N', MandatoryLogic='@IsCopyClient@=N',Updated=TO_DATE('2019-03-19 16:07:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200256
;
-- Mar 19, 2019, 4:07:51 PM BRT
UPDATE AD_Process_Para SET DisplayLogic='@IsCopyClient@=N',Updated=TO_DATE('2019-03-19 16:07:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200257
;
-- Mar 19, 2019, 4:07:56 PM BRT
UPDATE AD_Process_Para SET DisplayLogic='@IsCopyClient@=N',Updated=TO_DATE('2019-03-19 16:07:56','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200258
;
-- Mar 19, 2019, 4:08:11 PM BRT
UPDATE AD_Process_Para SET DisplayLogic='@IsCopyClient@=N',Updated=TO_DATE('2019-03-19 16:08:11','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200261
;
-- Mar 19, 2019, 4:08:21 PM BRT
UPDATE AD_Process_Para SET DisplayLogic='@IsCopyClient@=N',Updated=TO_DATE('2019-03-19 16:08:21','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200263
;
-- Mar 19, 2019, 4:09:44 PM BRT
INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,Help,PrintName,EntityType,AD_Element_UU) VALUES (203302,0,0,'Y',TO_DATE('2019-03-19 16:09:00','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-19 16:09:00','YYYY-MM-DD HH24:MI:SS'),100,'IsSkipSomeValidations','Skip Some Validations',NULL,NULL,'Skip Some Validations','D','b061fb74-6d5f-49dd-a7ff-2e94eeca9fe4')
;
-- Mar 19, 2019, 4:10:39 PM BRT
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,DefaultValue,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,DisplayLogic,AD_Process_Para_UU,IsEncrypted) VALUES (200273,0,0,'Y',TO_DATE('2019-03-19 16:10:38','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-19 16:10:38','YYYY-MM-DD HH24:MI:SS'),100,'Skip Some Validations',200110,120,20,'N',1,'Y','N','IsSkipSomeValidations','Y','D',203302,'@IsCopyClient@=Y','976f2e77-2354-4724-89a8-d13176211649','N')
;
SELECT register_migration_script('201903191614_IDEMPIERE-3916_CopyClient.sql') FROM dual
;

View File

@ -0,0 +1,222 @@
SET SQLBLANKLINES ON
SET DEFINE OFF
-- IDEMPIERE-3926 Restrict roles in login by type
-- Mar 21, 2019, 2:17:02 PM BRT
INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,Help,PrintName,EntityType,AD_Element_UU) VALUES (203303,0,0,'Y',TO_DATE('2019-03-21 14:16:45','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-21 14:16:45','YYYY-MM-DD HH24:MI:SS'),100,'RoleType','Role Type',NULL,NULL,'Role Type','D','d5790909-7831-4e65-ae23-2621d6916933')
;
-- Mar 21, 2019, 2:17:50 PM BRT
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 (200166,'AD_Role RoleType','L',0,0,'Y',TO_DATE('2019-03-21 14:17:49','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-21 14:17:49','YYYY-MM-DD HH24:MI:SS'),100,'D','N','88b0c074-0f6f-4a8b-b76e-e230e340f670')
;
-- Mar 21, 2019, 2:18:17 PM BRT
INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_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,IsHtml) VALUES (213856,0,'Role Type',156,'RoleType',2,'N','N','N','N','N',0,'N',17,200166,0,0,'Y',TO_DATE('2019-03-21 14:18:16','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-21 14:18:16','YYYY-MM-DD HH24:MI:SS'),100,203303,'Y','N','D','N','N','N','Y','ab062f58-46e1-4a1a-9245-bfa6dd7f42bb','Y',0,'N','N','N')
;
-- Mar 21, 2019, 2:18:20 PM BRT
ALTER TABLE AD_Role ADD RoleType VARCHAR2(2) DEFAULT NULL
;
-- Mar 21, 2019, 2:21:49 PM BRT
INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,SortNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,AD_FieldGroup_ID,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField) VALUES (205947,'Role Type',119,213856,'Y',0,450,0,'N','N','N','N',0,0,'Y',TO_DATE('2019-03-21 14:21:48','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-21 14:21:48','YYYY-MM-DD HH24:MI:SS'),100,'N','Y',135,'D','69560ba0-28c5-481b-b06f-ba1fb8cf468f','Y',440,1,1,1,'N','N','N')
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET SeqNo=50, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=364
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET SeqNo=60, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=7833
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=70, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=6, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=363
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=90, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=5, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200071
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=100, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=6, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11002
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET SeqNo=110, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=930
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=120, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=3, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=931
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=130, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=5, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=59591
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET SeqNo=140, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=59592
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=150, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=4, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=10126
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=160, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=1, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=205947
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=170, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=3, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11003
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=180, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=5, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5227
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=190, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=2, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202366
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=200, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=3, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=10813
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=210, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=4, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11257
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=220, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=5, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=8312
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=230, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=6, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=8310
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET SeqNo=240, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=8313
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=250, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=3, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=8314
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=260, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=5, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=8311
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=270, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=6, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11006
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET SeqNo=280, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=12367
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=290, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=3, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=12368
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=300, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=5, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11256
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET SeqNo=310, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50168
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET SeqNo=320, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50178
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET SeqNo=330, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50176
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=340, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=3, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50170
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=350, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=4, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50174
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET SeqNo=360, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50173
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=370, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=6, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50172
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=380, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=2, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50175
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=390, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=3, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50169
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=400, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=4, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50177
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET SeqNo=0, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=204590
;
-- Mar 21, 2019, 2:35:20 PM BRT
UPDATE AD_Field SET DisplayLogic='@IsMasterRole@=N', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 14:35:20','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=205947
;
-- Mar 21, 2019, 2:37:34 PM BRT
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 (200457,'WebUI',200166,'ZK',0,0,'Y',TO_DATE('2019-03-21 14:37:33','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-21 14:37:33','YYYY-MM-DD HH24:MI:SS'),100,'D','af5be523-6318-4b6c-bc8b-f51ecd0de2d0')
;
-- Mar 21, 2019, 2:37:43 PM BRT
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 (200458,'WebService',200166,'WS',0,0,'Y',TO_DATE('2019-03-21 14:37:43','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-21 14:37:43','YYYY-MM-DD HH24:MI:SS'),100,'D','ff7ae569-ea86-4c21-9aff-6a9073f4b677')
;
-- Mar 21, 2019, 2:37:53 PM BRT
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 (200459,'System Support',200166,'SS',0,0,'Y',TO_DATE('2019-03-21 14:37:53','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-21 14:37:53','YYYY-MM-DD HH24:MI:SS'),100,'D','3b6ad66c-e962-46a5-a3ec-b8787ee4c754')
;
-- Mar 21, 2019, 2:38:04 PM BRT
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 (200460,'Mobile',200166,'MO',0,0,'Y',TO_DATE('2019-03-21 14:38:03','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-21 14:38:03','YYYY-MM-DD HH24:MI:SS'),100,'D','78962d5b-b6bb-4798-8f9d-fd36381b58ed')
;
-- Mar 21, 2019, 2:38:13 PM BRT
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 (200461,'Swing',200166,'SW',0,0,'Y',TO_DATE('2019-03-21 14:38:12','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-21 14:38:12','YYYY-MM-DD HH24:MI:SS'),100,'D','b6d02ebf-6845-47d9-b91e-b956084333e8')
;
-- Mar 21, 2019, 2:38:27 PM BRT
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 (200462,'External App 1',200166,'E1',0,0,'Y',TO_DATE('2019-03-21 14:38:27','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-21 14:38:27','YYYY-MM-DD HH24:MI:SS'),100,'D','d6bc8c6d-d5bf-458c-81f7-4d3f11303d6d')
;
-- Mar 21, 2019, 2:38:41 PM BRT
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 (200463,'External App 2',200166,'E2',0,0,'Y',TO_DATE('2019-03-21 14:38:40','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-21 14:38:40','YYYY-MM-DD HH24:MI:SS'),100,'D','79a2e44a-dfd6-4114-b835-5392c4736eb9')
;
-- Mar 21, 2019, 2:38:46 PM BRT
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 (200464,'External App 3',200166,'E3',0,0,'Y',TO_DATE('2019-03-21 14:38:46','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-21 14:38:46','YYYY-MM-DD HH24:MI:SS'),100,'D','f158da0d-6ad6-4f2e-aa65-099417d6217b')
;
-- Mar 21, 2019, 2:38:54 PM BRT
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 (200465,'External App 4',200166,'E4',0,0,'Y',TO_DATE('2019-03-21 14:38:53','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-21 14:38:53','YYYY-MM-DD HH24:MI:SS'),100,'D','d136b0f9-658a-4e79-b22f-3cf995da34ff')
;
-- Mar 21, 2019, 2:39:00 PM BRT
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 (200466,'External App 5',200166,'E5',0,0,'Y',TO_DATE('2019-03-21 14:38:59','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-21 14:38:59','YYYY-MM-DD HH24:MI:SS'),100,'D','b06729fb-ce8e-4bff-b6da-0f38bdefa55e')
;
-- Mar 21, 2019, 2:43:43 PM BRT
UPDATE AD_Role SET RoleType='WS',Updated=TO_DATE('2019-03-21 14:43:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Role_ID=50004
;
UPDATE AD_Role SET RoleType='SS',Updated=TO_DATE('2019-03-21 14:43:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Role_ID=0
;
SELECT register_migration_script('201903211444_IDEMPIERE-3926.sql') FROM dual
;

View File

@ -0,0 +1,291 @@
SET SQLBLANKLINES ON
SET DEFINE OFF
-- IDEMPIERE-3352 Enhancement of Batch Level Costing
-- Mar 21, 2019, 5:27:07 PM BRT
INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,Help,PrintName,EntityType,AD_Element_UU) VALUES (203304,0,0,'Y',TO_DATE('2019-03-21 17:25:13','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-21 17:25:13','YYYY-MM-DD HH24:MI:SS'),100,'IsSupportUser','Support User',NULL,NULL,'Support User','D','d25abb34-0978-4475-b27f-c9141985b1db')
;
-- Mar 21, 2019, 5:27:36 PM BRT
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,IsHtml) VALUES (213857,0,'Support User',114,'IsSupportUser','N',1,'N','N','Y','N','N',0,'N',20,0,0,'Y',TO_DATE('2019-03-21 17:27:36','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-21 17:27:36','YYYY-MM-DD HH24:MI:SS'),100,203304,'Y','N','D','N','N','N','Y','fe4fbe00-ff30-4810-bc60-9608ac6fc885','Y',0,'N','N','N')
;
-- Mar 21, 2019, 5:27:38 PM BRT
ALTER TABLE AD_User ADD IsSupportUser CHAR(1) DEFAULT 'N' CHECK (IsSupportUser IN ('Y','N')) NOT NULL
;
-- Mar 21, 2019, 5:30:34 PM BRT
INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,SortNo,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,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField) VALUES (205948,'Support User',118,213857,'Y',0,430,0,'N','N','N','N',0,0,'Y',TO_DATE('2019-03-21 17:30:34','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2019-03-21 17:30:34','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','01a94208-4db0-4b76-81ff-273561203926','Y',430,1,1,1,'N','N','N')
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=204217
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=5884
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=12640
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=52010
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=302
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=10,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=309
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=20,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=300
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=110,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=6521
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=120,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=6515
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=130,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=6517
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=140,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=6514
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=150,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=6518
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=160,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=11679
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=170,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=12324
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=180,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=12323
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=190,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=5883
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=200,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=4261
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=210,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=10491
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=220,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=6511
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=230,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=200072
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=240,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=202876
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=250,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=202875
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=260,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=6513
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=270,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=11525
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=280,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=6520
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=290,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=8342
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=300,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=6519
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=310,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=200405
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=320,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=200400
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=330,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=200403
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=340,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=200401
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=350,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=200406
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=360,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=200402
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=370,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=200474
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=380,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=200475
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=390,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=200473
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=400,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=205948
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=410,IsDisplayedGrid='Y', Updated=sysdate, UpdatedBy=100 WHERE AD_Field_ID=205827
;
-- Mar 21, 2019, 5:37:45 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=140, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=4, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=6515
;
-- Mar 21, 2019, 5:37:45 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=150, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=6, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=12323
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET SeqNo=160, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=6517
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=170, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=3, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=6514
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=180, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=5, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=6518
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=190, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=1, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11679
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=200, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=3, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=12324
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=210, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=5, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=52010
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET SeqNo=250, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=10491
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=260, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=6, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=205948
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=270, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=1, ColumnSpan=2, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=6511
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=280, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=4, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200072
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET SeqNo=290, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=6513
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET SeqNo=300, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11525
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=310, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202876
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=320, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=5, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202875
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET SeqNo=330, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=6520
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET SeqNo=340, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=8342
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET SeqNo=350, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=6519
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=360, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=1, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200400
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=370, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=3, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200405
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=380, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=4, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200406
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=390, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=5, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200474
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=400, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=6, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=205827
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET SeqNo=410, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200403
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET SeqNo=420, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200401
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET SeqNo=430, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200402
;
-- Mar 21, 2019, 5:38:17 PM BRT
UPDATE AD_Field SET AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL, IsAdvancedField='Y',Updated=TO_DATE('2019-03-21 17:38:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=205948
;
-- Mar 21, 2019, 5:41:32 PM BRT
UPDATE AD_User SET IsSupportUser='Y',Updated=TO_DATE('2019-03-21 17:41:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_User_ID=100
;
SELECT register_migration_script('201903211743_IDEMPIERE-3439_IsSupportUser.sql') FROM dual
;

View File

@ -0,0 +1,8 @@
UPDATE ad_treebar SET ad_client_id=(SELECT ad_client_id FROM ad_user WHERE ad_user.ad_user_id=ad_treebar.ad_user_id)
WHERE ad_client_id!=(SELECT ad_client_id FROM ad_user WHERE ad_user.ad_user_id=ad_treebar.ad_user_id);
UPDATE ad_treebar SET ad_org_id=0 WHERE ad_org_id!=0;
SELECT register_migration_script('201903181955_IDEMPIERE-3528.sql') FROM dual
;

View File

@ -0,0 +1,10 @@
-- IDEMPIERE-2395 - clean orphan ad_note in seed
DELETE FROM ad_note WHERE ad_table_id=53043 AND record_id NOT IN (SELECT PP_MRP_ID FROM PP_MRP);
DELETE FROM ad_attachment WHERE ad_table_id=389 AND record_id NOT IN (SELECT ad_note_id FROM ad_note);
DELETE FROM ad_treenodecmt WHERE node_id>0 AND node_id NOT IN (SELECT cm_template_id FROM cm_template);
SELECT register_migration_script('201903191017_IDEMPIERE-2395.sql') FROM dual
;

View File

@ -0,0 +1,12 @@
-- IDEMPIERE-2395
-- Mar 19, 2019, 3:24:55 PM BRT
INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,Help,PrintName,EntityType,AD_Element_UU) VALUES (203300,0,0,'Y',TO_TIMESTAMP('2019-03-19 15:24:31','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-19 15:24:31','YYYY-MM-DD HH24:MI:SS'),100,'IsCleanChangeLog','Clean Change Log',NULL,NULL,'Clean Change Log','D','c6e68794-2989-4a46-9151-a94a3254cf93')
;
-- Mar 19, 2019, 3:25:19 PM BRT
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,DefaultValue,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted) VALUES (200269,0,0,'Y',TO_TIMESTAMP('2019-03-19 15:25:18','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-19 15:25:18','YYYY-MM-DD HH24:MI:SS'),100,'Clean Change Log',200102,10,20,'N',1,'Y','N','IsCleanChangeLog','Y','D',203300,'459a7f88-ec79-47cf-9c7b-7429ac565f55','N')
;
SELECT register_migration_script('201903191533_IDEMPIERE-2395.sql') FROM dual
;

View File

@ -0,0 +1,112 @@
-- IDEMPIERE-3916 Copy Template
-- Mar 19, 2019, 3:57:52 PM BRT
UPDATE AD_Process SET Name='Copy Client', Description='Process to copy a client', Help='This process can be used to copy a client from an external database to the current database, or to duplicate a template client within the current database.',Updated=TO_TIMESTAMP('2019-03-19 15:57:52','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_ID=200110
;
-- Mar 19, 2019, 3:57:52 PM BRT
UPDATE AD_Menu SET Name='Copy Client', Description='Process to copy a client', IsActive='Y',Updated=TO_TIMESTAMP('2019-03-19 15:57:52','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Menu_ID=200168
;
-- Mar 19, 2019, 3:59:09 PM BRT
INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,Help,PrintName,EntityType,AD_Element_UU) VALUES (203301,0,0,'Y',TO_TIMESTAMP('2019-03-19 15:58:39','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-19 15:58:39','YYYY-MM-DD HH24:MI:SS'),100,'IsCopyClient','Copy Template Client',NULL,NULL,'Copy Template Client','D','a5e530c4-15aa-4e5e-9d43-afb7b7528ce1')
;
-- Mar 19, 2019, 3:59:42 PM BRT
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,DefaultValue,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted) VALUES (200270,0,0,'Y',TO_TIMESTAMP('2019-03-19 15:59:42','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-19 15:59:42','YYYY-MM-DD HH24:MI:SS'),100,'Copy Template Client',200110,5,20,'N',1,'Y','N','IsCopyClient','Y','D',203301,'c7f81809-5948-47fd-8a37-a6614266c104','N')
;
-- Mar 19, 2019, 4:00:55 PM BRT
UPDATE AD_Process_Para SET IsMandatory='N', DisplayLogic='IsCopyClient=N', MandatoryLogic='IsCopyClient=N',Updated=TO_TIMESTAMP('2019-03-19 16:00:55','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200256
;
-- Mar 19, 2019, 4:01:02 PM BRT
UPDATE AD_Process_Para SET DisplayLogic='IsCopyClient=N',Updated=TO_TIMESTAMP('2019-03-19 16:01:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200257
;
-- Mar 19, 2019, 4:01:04 PM BRT
UPDATE AD_Process_Para SET DisplayLogic='IsCopyClient=N',Updated=TO_TIMESTAMP('2019-03-19 16:01:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200258
;
-- Mar 19, 2019, 4:01:29 PM BRT
UPDATE AD_Process_Para SET DisplayLogic='IsCopyClient=N',Updated=TO_TIMESTAMP('2019-03-19 16:01:29','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200261
;
-- Mar 19, 2019, 4:01:43 PM BRT
UPDATE AD_Process_Para SET DisplayLogic='IsCopyClient=N',Updated=TO_TIMESTAMP('2019-03-19 16:01:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200263
;
-- Mar 19, 2019, 4:03:09 PM BRT
UPDATE AD_Process_Para SET SeqNo=110,Updated=TO_TIMESTAMP('2019-03-19 16:03:09','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200263
;
-- Mar 19, 2019, 4:03:17 PM BRT
UPDATE AD_Process_Para SET SeqNo=100,Updated=TO_TIMESTAMP('2019-03-19 16:03:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200262
;
-- Mar 19, 2019, 4:03:21 PM BRT
UPDATE AD_Process_Para SET SeqNo=90,Updated=TO_TIMESTAMP('2019-03-19 16:03:21','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200261
;
-- Mar 19, 2019, 4:03:28 PM BRT
UPDATE AD_Process_Para SET SeqNo=80,Updated=TO_TIMESTAMP('2019-03-19 16:03:28','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200260
;
-- Mar 19, 2019, 4:03:32 PM BRT
UPDATE AD_Process_Para SET SeqNo=70,Updated=TO_TIMESTAMP('2019-03-19 16:03:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200259
;
-- Mar 19, 2019, 4:03:41 PM BRT
UPDATE AD_Process_Para SET SeqNo=40,Updated=TO_TIMESTAMP('2019-03-19 16:03:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200258
;
-- Mar 19, 2019, 4:03:45 PM BRT
UPDATE AD_Process_Para SET SeqNo=30,Updated=TO_TIMESTAMP('2019-03-19 16:03:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200257
;
-- Mar 19, 2019, 4:03:48 PM BRT
UPDATE AD_Process_Para SET SeqNo=20,Updated=TO_TIMESTAMP('2019-03-19 16:03:48','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200256
;
-- Mar 19, 2019, 4:03:53 PM BRT
UPDATE AD_Process_Para SET SeqNo=10,Updated=TO_TIMESTAMP('2019-03-19 16:03:53','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200270
;
-- Mar 19, 2019, 4:06:44 PM BRT
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Help,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,DisplayLogic,AD_Process_Para_UU,IsEncrypted,MandatoryLogic) VALUES (200271,0,0,'Y',TO_TIMESTAMP('2019-03-19 16:06:44','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-19 16:06:44','YYYY-MM-DD HH24:MI:SS'),100,'Client Name','Client in which current session user logged in',200110,50,10,'N',60,'N','ClientName','Y','D',200186,'@IsCopyClient@=Y','edbacdb3-9a07-490a-ba53-33d0cab63c47','N','@IsCopyClient@=Y')
;
-- Mar 19, 2019, 4:07:17 PM BRT
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,DisplayLogic,AD_Process_Para_UU,IsEncrypted,MandatoryLogic) VALUES (200272,0,0,'Y',TO_TIMESTAMP('2019-03-19 16:07:16','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-19 16:07:16','YYYY-MM-DD HH24:MI:SS'),100,'Client Key','Key of the Client',200110,60,10,'N',40,'N','ClientValue','Y','D',2097,'@IsCopyClient@=Y','55b77a95-1564-41d2-9177-97fbcf264e66','N','@IsCopyClient@=Y')
;
-- Mar 19, 2019, 4:07:45 PM BRT
UPDATE AD_Process_Para SET DisplayLogic='@IsCopyClient@=N', MandatoryLogic='@IsCopyClient@=N',Updated=TO_TIMESTAMP('2019-03-19 16:07:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200256
;
-- Mar 19, 2019, 4:07:51 PM BRT
UPDATE AD_Process_Para SET DisplayLogic='@IsCopyClient@=N',Updated=TO_TIMESTAMP('2019-03-19 16:07:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200257
;
-- Mar 19, 2019, 4:07:56 PM BRT
UPDATE AD_Process_Para SET DisplayLogic='@IsCopyClient@=N',Updated=TO_TIMESTAMP('2019-03-19 16:07:56','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200258
;
-- Mar 19, 2019, 4:08:11 PM BRT
UPDATE AD_Process_Para SET DisplayLogic='@IsCopyClient@=N',Updated=TO_TIMESTAMP('2019-03-19 16:08:11','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200261
;
-- Mar 19, 2019, 4:08:21 PM BRT
UPDATE AD_Process_Para SET DisplayLogic='@IsCopyClient@=N',Updated=TO_TIMESTAMP('2019-03-19 16:08:21','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200263
;
-- Mar 19, 2019, 4:09:44 PM BRT
INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,Help,PrintName,EntityType,AD_Element_UU) VALUES (203302,0,0,'Y',TO_TIMESTAMP('2019-03-19 16:09:00','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-19 16:09:00','YYYY-MM-DD HH24:MI:SS'),100,'IsSkipSomeValidations','Skip Some Validations',NULL,NULL,'Skip Some Validations','D','b061fb74-6d5f-49dd-a7ff-2e94eeca9fe4')
;
-- Mar 19, 2019, 4:10:39 PM BRT
INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,IsRange,FieldLength,IsMandatory,DefaultValue,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,DisplayLogic,AD_Process_Para_UU,IsEncrypted) VALUES (200273,0,0,'Y',TO_TIMESTAMP('2019-03-19 16:10:38','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-19 16:10:38','YYYY-MM-DD HH24:MI:SS'),100,'Skip Some Validations',200110,120,20,'N',1,'Y','N','IsSkipSomeValidations','Y','D',203302,'@IsCopyClient@=Y','976f2e77-2354-4724-89a8-d13176211649','N')
;
SELECT register_migration_script('201903191614_IDEMPIERE-3916_CopyClient.sql') FROM dual
;

View File

@ -0,0 +1,219 @@
-- IDEMPIERE-3926 Restrict roles in login by type
-- Mar 21, 2019, 2:17:02 PM BRT
INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,Help,PrintName,EntityType,AD_Element_UU) VALUES (203303,0,0,'Y',TO_TIMESTAMP('2019-03-21 14:16:45','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-21 14:16:45','YYYY-MM-DD HH24:MI:SS'),100,'RoleType','Role Type',NULL,NULL,'Role Type','D','d5790909-7831-4e65-ae23-2621d6916933')
;
-- Mar 21, 2019, 2:17:50 PM BRT
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 (200166,'AD_Role RoleType','L',0,0,'Y',TO_TIMESTAMP('2019-03-21 14:17:49','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-21 14:17:49','YYYY-MM-DD HH24:MI:SS'),100,'D','N','88b0c074-0f6f-4a8b-b76e-e230e340f670')
;
-- Mar 21, 2019, 2:18:17 PM BRT
INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_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,IsHtml) VALUES (213856,0,'Role Type',156,'RoleType',2,'N','N','N','N','N',0,'N',17,200166,0,0,'Y',TO_TIMESTAMP('2019-03-21 14:18:16','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-21 14:18:16','YYYY-MM-DD HH24:MI:SS'),100,203303,'Y','N','D','N','N','N','Y','ab062f58-46e1-4a1a-9245-bfa6dd7f42bb','Y',0,'N','N','N')
;
-- Mar 21, 2019, 2:18:20 PM BRT
ALTER TABLE AD_Role ADD COLUMN RoleType VARCHAR(2) DEFAULT NULL
;
-- Mar 21, 2019, 2:21:49 PM BRT
INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,SortNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,AD_FieldGroup_ID,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField) VALUES (205947,'Role Type',119,213856,'Y',0,450,0,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2019-03-21 14:21:48','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-21 14:21:48','YYYY-MM-DD HH24:MI:SS'),100,'N','Y',135,'D','69560ba0-28c5-481b-b06f-ba1fb8cf468f','Y',440,1,1,1,'N','N','N')
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET SeqNo=50, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=364
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET SeqNo=60, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=7833
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=70, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=6, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=363
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=90, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=5, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200071
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=100, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=6, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11002
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET SeqNo=110, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=930
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=120, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=3, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=931
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=130, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=5, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=59591
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET SeqNo=140, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=59592
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=150, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=4, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=10126
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=160, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=1, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=205947
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=170, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=3, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11003
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=180, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=5, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5227
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=190, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=2, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202366
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=200, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=3, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=10813
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=210, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=4, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11257
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=220, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=5, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=8312
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=230, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=6, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=8310
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET SeqNo=240, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=8313
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=250, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=3, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=8314
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=260, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=5, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=8311
;
-- Mar 21, 2019, 2:34:40 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=270, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=6, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11006
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET SeqNo=280, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=12367
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=290, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=3, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=12368
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=300, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=5, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11256
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET SeqNo=310, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50168
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET SeqNo=320, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50178
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET SeqNo=330, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50176
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=340, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=3, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50170
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=350, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=4, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50174
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET SeqNo=360, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50173
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=370, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=6, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50172
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=380, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=2, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50175
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=390, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=3, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50169
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=400, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=4, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50177
;
-- Mar 21, 2019, 2:34:41 PM BRT
UPDATE AD_Field SET SeqNo=0, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:34:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=204590
;
-- Mar 21, 2019, 2:35:20 PM BRT
UPDATE AD_Field SET DisplayLogic='@IsMasterRole@=N', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 14:35:20','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=205947
;
-- Mar 21, 2019, 2:37:34 PM BRT
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 (200457,'WebUI',200166,'ZK',0,0,'Y',TO_TIMESTAMP('2019-03-21 14:37:33','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-21 14:37:33','YYYY-MM-DD HH24:MI:SS'),100,'D','af5be523-6318-4b6c-bc8b-f51ecd0de2d0')
;
-- Mar 21, 2019, 2:37:43 PM BRT
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 (200458,'WebService',200166,'WS',0,0,'Y',TO_TIMESTAMP('2019-03-21 14:37:43','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-21 14:37:43','YYYY-MM-DD HH24:MI:SS'),100,'D','ff7ae569-ea86-4c21-9aff-6a9073f4b677')
;
-- Mar 21, 2019, 2:37:53 PM BRT
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 (200459,'System Support',200166,'SS',0,0,'Y',TO_TIMESTAMP('2019-03-21 14:37:53','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-21 14:37:53','YYYY-MM-DD HH24:MI:SS'),100,'D','3b6ad66c-e962-46a5-a3ec-b8787ee4c754')
;
-- Mar 21, 2019, 2:38:04 PM BRT
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 (200460,'Mobile',200166,'MO',0,0,'Y',TO_TIMESTAMP('2019-03-21 14:38:03','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-21 14:38:03','YYYY-MM-DD HH24:MI:SS'),100,'D','78962d5b-b6bb-4798-8f9d-fd36381b58ed')
;
-- Mar 21, 2019, 2:38:13 PM BRT
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 (200461,'Swing',200166,'SW',0,0,'Y',TO_TIMESTAMP('2019-03-21 14:38:12','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-21 14:38:12','YYYY-MM-DD HH24:MI:SS'),100,'D','b6d02ebf-6845-47d9-b91e-b956084333e8')
;
-- Mar 21, 2019, 2:38:27 PM BRT
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 (200462,'External App 1',200166,'E1',0,0,'Y',TO_TIMESTAMP('2019-03-21 14:38:27','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-21 14:38:27','YYYY-MM-DD HH24:MI:SS'),100,'D','d6bc8c6d-d5bf-458c-81f7-4d3f11303d6d')
;
-- Mar 21, 2019, 2:38:41 PM BRT
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 (200463,'External App 2',200166,'E2',0,0,'Y',TO_TIMESTAMP('2019-03-21 14:38:40','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-21 14:38:40','YYYY-MM-DD HH24:MI:SS'),100,'D','79a2e44a-dfd6-4114-b835-5392c4736eb9')
;
-- Mar 21, 2019, 2:38:46 PM BRT
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 (200464,'External App 3',200166,'E3',0,0,'Y',TO_TIMESTAMP('2019-03-21 14:38:46','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-21 14:38:46','YYYY-MM-DD HH24:MI:SS'),100,'D','f158da0d-6ad6-4f2e-aa65-099417d6217b')
;
-- Mar 21, 2019, 2:38:54 PM BRT
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 (200465,'External App 4',200166,'E4',0,0,'Y',TO_TIMESTAMP('2019-03-21 14:38:53','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-21 14:38:53','YYYY-MM-DD HH24:MI:SS'),100,'D','d136b0f9-658a-4e79-b22f-3cf995da34ff')
;
-- Mar 21, 2019, 2:39:00 PM BRT
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 (200466,'External App 5',200166,'E5',0,0,'Y',TO_TIMESTAMP('2019-03-21 14:38:59','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-21 14:38:59','YYYY-MM-DD HH24:MI:SS'),100,'D','b06729fb-ce8e-4bff-b6da-0f38bdefa55e')
;
-- Mar 21, 2019, 2:43:43 PM BRT
UPDATE AD_Role SET RoleType='WS',Updated=TO_TIMESTAMP('2019-03-21 14:43:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Role_ID=50004
;
UPDATE AD_Role SET RoleType='SS',Updated=TO_TIMESTAMP('2019-03-21 14:43:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Role_ID=0
;
SELECT register_migration_script('201903211444_IDEMPIERE-3926.sql') FROM dual
;

View File

@ -0,0 +1,288 @@
-- IDEMPIERE-3352 Enhancement of Batch Level Costing
-- Mar 21, 2019, 5:27:07 PM BRT
INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,Help,PrintName,EntityType,AD_Element_UU) VALUES (203304,0,0,'Y',TO_TIMESTAMP('2019-03-21 17:25:13','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-21 17:25:13','YYYY-MM-DD HH24:MI:SS'),100,'IsSupportUser','Support User',NULL,NULL,'Support User','D','d25abb34-0978-4475-b27f-c9141985b1db')
;
-- Mar 21, 2019, 5:27:36 PM BRT
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,IsHtml) VALUES (213857,0,'Support User',114,'IsSupportUser','N',1,'N','N','Y','N','N',0,'N',20,0,0,'Y',TO_TIMESTAMP('2019-03-21 17:27:36','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-21 17:27:36','YYYY-MM-DD HH24:MI:SS'),100,203304,'Y','N','D','N','N','N','Y','fe4fbe00-ff30-4810-bc60-9608ac6fc885','Y',0,'N','N','N')
;
-- Mar 21, 2019, 5:27:38 PM BRT
ALTER TABLE AD_User ADD COLUMN IsSupportUser CHAR(1) DEFAULT 'N' CHECK (IsSupportUser IN ('Y','N')) NOT NULL
;
-- Mar 21, 2019, 5:30:34 PM BRT
INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,SortNo,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,NumLines,IsQuickEntry,IsDefaultFocus,IsAdvancedField) VALUES (205948,'Support User',118,213857,'Y',0,430,0,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2019-03-21 17:30:34','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2019-03-21 17:30:34','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','01a94208-4db0-4b76-81ff-273561203926','Y',430,1,1,1,'N','N','N')
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=204217
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=5884
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=12640
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=52010
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=302
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=10,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=309
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=20,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=300
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=110,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=6521
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=120,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=6515
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=130,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=6517
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=140,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=6514
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=150,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=6518
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=160,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=11679
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=170,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=12324
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=180,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=12323
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=190,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=5883
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=200,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=4261
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=210,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=10491
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=220,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=6511
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=230,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=200072
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=240,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=202876
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=250,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=202875
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=260,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=6513
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=270,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=11525
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=280,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=6520
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=290,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=8342
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=300,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=6519
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=310,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=200405
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=320,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=200400
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=330,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=200403
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=340,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=200401
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=350,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=200406
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=360,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=200402
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=370,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=200474
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=380,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=200475
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=390,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=200473
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=400,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=205948
;
-- Mar 21, 2019, 5:31:23 PM BRT
UPDATE AD_Field SET SeqNoGrid=410,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=205827
;
-- Mar 21, 2019, 5:37:45 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=140, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=4, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=6515
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=150, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=6, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=12323
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET SeqNo=160, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=6517
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=170, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=3, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=6514
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=180, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=5, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=6518
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=190, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=1, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11679
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=200, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=3, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=12324
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=210, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=5, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=52010
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET SeqNo=250, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=10491
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=260, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=6, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=205948
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=270, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=1, ColumnSpan=2, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=6511
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=280, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=4, ColumnSpan=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200072
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET SeqNo=290, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=6513
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET SeqNo=300, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11525
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=310, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202876
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=320, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=5, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202875
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET SeqNo=330, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=6520
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET SeqNo=340, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=8342
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET SeqNo=350, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=6519
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=360, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200400
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=370, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=3, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200405
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=380, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=4, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200406
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=390, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=5, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200474
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=400, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=6, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=205827
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET SeqNo=410, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200403
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET SeqNo=420, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200401
;
-- Mar 21, 2019, 5:37:46 PM BRT
UPDATE AD_Field SET SeqNo=430, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-03-21 17:37:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200402
;
-- Mar 21, 2019, 5:38:17 PM BRT
UPDATE AD_Field SET AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL, IsAdvancedField='Y',Updated=TO_TIMESTAMP('2019-03-21 17:38:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=205948
;
-- Mar 21, 2019, 5:41:32 PM BRT
UPDATE AD_User SET IsSupportUser='Y',Updated=TO_TIMESTAMP('2019-03-21 17:41:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_User_ID=100
;
SELECT register_migration_script('201903211743_IDEMPIERE-3439_IsSupportUser.sql') FROM dual
;

View File

@ -31,11 +31,14 @@ import java.util.logging.Level;
import org.compiere.model.MArchive; import org.compiere.model.MArchive;
import org.compiere.model.MAttachment; import org.compiere.model.MAttachment;
import org.compiere.model.MTable; import org.compiere.model.MTable;
import org.compiere.model.MTree_Base;
import org.compiere.model.Query; import org.compiere.model.Query;
import org.compiere.model.X_AD_Package_UUID_Map;
import org.compiere.process.ProcessInfoParameter; import org.compiere.process.ProcessInfoParameter;
import org.compiere.process.SvrProcess; import org.compiere.process.SvrProcess;
import org.compiere.util.DB; import org.compiere.util.DB;
import org.compiere.util.Msg; import org.compiere.util.Msg;
import org.compiere.util.ValueNamePair;
/** /**
* IDEMPIERE-2395 * IDEMPIERE-2395
@ -44,6 +47,8 @@ import org.compiere.util.Msg;
public class CleanOrphanCascade extends SvrProcess public class CleanOrphanCascade extends SvrProcess
{ {
private boolean p_IsCleanChangeLog;
/** /**
* Prepare - e.g., get Parameters. * Prepare - e.g., get Parameters.
*/ */
@ -52,8 +57,12 @@ public class CleanOrphanCascade extends SvrProcess
for (ProcessInfoParameter para : getParameter()) for (ProcessInfoParameter para : getParameter())
{ {
String name = para.getParameterName(); String name = para.getParameterName();
if ("IsCleanChangeLog".equals(name)) {
p_IsCleanChangeLog = para.getParameterAsBoolean();
} else {
log.log(Level.SEVERE, "Unknown Parameter: " + name); log.log(Level.SEVERE, "Unknown Parameter: " + name);
} }
}
} // prepare } // prepare
/** /**
@ -65,9 +74,38 @@ public class CleanOrphanCascade extends SvrProcess
{ {
if (log.isLoggable(Level.INFO)) log.info(""); if (log.isLoggable(Level.INFO)) log.info("");
ValueNamePair[] treeTables = new ValueNamePair[] {
new ValueNamePair("AD_TreeBar", "AD_Menu"),
new ValueNamePair("AD_TreeNodeBP", "C_BPartner"),
new ValueNamePair("AD_TreeNodeCMC", "CM_Container"),
new ValueNamePair("AD_TreeNodeCMM", "CM_Media"),
new ValueNamePair("AD_TreeNodeCMS", "CM_CStage"),
new ValueNamePair("AD_TreeNodeCMT", "CM_Template"),
new ValueNamePair("AD_TreeNodeMM", "AD_Menu"),
new ValueNamePair("AD_TreeNodePR", "M_Product"),
new ValueNamePair("AD_TreeNodeU1", "C_ElementValue"),
new ValueNamePair("AD_TreeNodeU2", "C_ElementValue"),
new ValueNamePair("AD_TreeNodeU3", "C_ElementValue"),
new ValueNamePair("AD_TreeNodeU4", "C_ElementValue")
};
for (ValueNamePair vnp : treeTables) {
String treeTable = vnp.getValue();
String foreignTable = vnp.getName();
delTree(treeTable,foreignTable, "Node_ID", 0);
if (! "AD_TreeBar".equalsIgnoreCase(treeTable)) {
delTree(treeTable,foreignTable, "Parent_ID", 0);
}
}
List<MTree_Base> trees = new Query(getCtx(), MTree_Base.Table_Name, null, get_TrxName()).list();
String treeTable = "AD_TreeNode";
for (MTree_Base tree : trees) {
String foreignTable = tree.getSourceTableName(true);
delTree(treeTable,foreignTable, "Parent_ID", tree.getAD_Tree_ID());
}
String whereTables = "" String whereTables = ""
+ " IsView = 'N' " + " IsView = 'N' "
+ "AND TableName != 'AD_ChangeLog' "
+ "AND EXISTS (SELECT 1 " + "AND EXISTS (SELECT 1 "
+ " FROM AD_Column ct " + " FROM AD_Column ct "
+ " WHERE ct.IsActive='Y' AND ct.AD_Table_ID = AD_Table.AD_Table_ID " + " WHERE ct.IsActive='Y' AND ct.AD_Table_ID = AD_Table.AD_Table_ID "
@ -80,13 +118,18 @@ public class CleanOrphanCascade extends SvrProcess
+ " FROM AD_Column ck " + " FROM AD_Column ck "
+ " WHERE ck.IsActive='Y' AND ck.AD_Table_ID = AD_Table.AD_Table_ID " + " WHERE ck.IsActive='Y' AND ck.AD_Table_ID = AD_Table.AD_Table_ID "
+ " AND ck.ColumnName = AD_Table.TableName || '_ID')"; + " AND ck.ColumnName = AD_Table.TableName || '_ID')";
if (! p_IsCleanChangeLog) {
whereTables += " AND TableName != 'AD_ChangeLog'";
}
List<MTable> tables = new Query(getCtx(), "AD_Table", whereTables, get_TrxName()) List<MTable> tables = new Query(getCtx(), "AD_Table", whereTables, get_TrxName())
.setOnlyActiveRecords(true) .setOnlyActiveRecords(true)
.setOrderBy("TableName") .setOrderBy("TableName")
.list(); .list();
tables.add(MTable.get(getCtx(), X_AD_Package_UUID_Map.Table_Name));
for (MTable table : tables) { for (MTable table : tables) {
String tableName = table.getTableName(); String tableName = table.getTableName();
boolean isUUIDMap = X_AD_Package_UUID_Map.Table_Name.equals(tableName);
StringBuilder sqlRef = new StringBuilder(); StringBuilder sqlRef = new StringBuilder();
sqlRef.append("SELECT DISTINCT t.AD_Table_ID, "); sqlRef.append("SELECT DISTINCT t.AD_Table_ID, ");
@ -101,17 +144,26 @@ public class CleanOrphanCascade extends SvrProcess
String refTableName = row.get(1).toString(); String refTableName = row.get(1).toString();
MTable refTable = MTable.get(getCtx(), refTableID); MTable refTable = MTable.get(getCtx(), refTableID);
if (refTable.getKeyColumns().length != 1) {
log.warning("Wrong reference for table " + tableName + " -> " + refTableName);
continue;
}
String colRef = refTable.getKeyColumns()[0];
StringBuilder whereClause = new StringBuilder(); StringBuilder whereClause = new StringBuilder();
whereClause.append("AD_Table_ID = ").append(refTableID); whereClause.append("AD_Table_ID = ").append(refTableID);
if (refTable.getKeyColumns().length != 1 && !isUUIDMap) {
log.warning("Wrong reference for table " + tableName + " -> " + refTableName);
whereClause.append(" AND Record_ID>0");
} else {
String colRef = refTable.getKeyColumns()[0];
if (isUUIDMap) {
colRef = MTable.getUUIDColumnName(refTable.getTableName());
}
whereClause.append(" AND NOT EXISTS (SELECT ").append(colRef); whereClause.append(" AND NOT EXISTS (SELECT ").append(colRef);
whereClause.append(" FROM ").append(refTableName).append(" "); whereClause.append(" FROM ").append(refTableName).append(" ");
whereClause.append(" WHERE ").append(refTableName).append(".").append(colRef).append(" = ").append(tableName).append(".Record_ID)"); whereClause.append(" WHERE ").append(refTableName).append(".").append(colRef).append(" = ").append(tableName);
if (isUUIDMap) {
whereClause.append(".Target_UUID)");
} else {
whereClause.append(".Record_ID)");
}
}
int noDel = 0; int noDel = 0;
if (MAttachment.Table_Name.equals(tableName)) { if (MAttachment.Table_Name.equals(tableName)) {
@ -144,4 +196,19 @@ public class CleanOrphanCascade extends SvrProcess
return "@OK@"; return "@OK@";
} // doIt } // doIt
private void delTree(String treeTable, String foreignTable, String columnName, int treeId) {
StringBuilder sqlDelete = new StringBuilder()
.append("DELETE FROM ").append(treeTable)
.append(" WHERE ").append(columnName).append(">0 AND ")
.append(columnName).append(" NOT IN (SELECT ").append(foreignTable).append("_ID FROM ").append(foreignTable).append(")");
if (treeId > 0) {
sqlDelete.append(" AND AD_Tree_ID=").append(treeId);
}
int noDel = DB.executeUpdateEx(sqlDelete.toString(), get_TrxName());
if (noDel > 0) {
addLog(Msg.parseTranslation(getCtx(), noDel + " " + treeTable + " " + "@Deleted@ -> " + foreignTable
+ (treeId > 0 ? " Tree=" + treeId: "" )));
}
} // delTree
} // CleanOrphanCascade } // CleanOrphanCascade

View File

@ -85,11 +85,11 @@ public class PackInFolderApplication implements IApplication {
.append("\n Logs=\n").append(pi.getLogInfo(false).replaceAll("<br>", "\n")); .append("\n Logs=\n").append(pi.getLogInfo(false).replaceAll("<br>", "\n"));
System.out.println(msgout.toString()); System.out.println(msgout.toString());
if (!success) if (!success)
return new Integer(1); return Integer.valueOf(1);
} else { } else {
System.out.println("Apply PackIn from Folder usage:"); System.out.println("Apply PackIn from Folder usage:");
System.out.println("RUN_ApplyPackInFromFolder.sh folder"); System.out.println("RUN_ApplyPackInFromFolder.sh folder");
return new Integer(1); return Integer.valueOf(1);
} }

View File

@ -14,8 +14,10 @@
package org.adempiere.base.event; package org.adempiere.base.event;
import java.util.List; import java.util.List;
import java.util.UUID;
import org.compiere.model.PO; import org.compiere.model.PO;
import org.compiere.process.ProcessInfo;
import org.osgi.service.event.Event; import org.osgi.service.event.Event;
import org.osgi.service.event.EventHandler; import org.osgi.service.event.EventHandler;
@ -105,6 +107,21 @@ public abstract class AbstractEventHandler implements EventHandler {
registerEvent(topic, filter); registerEvent(topic, filter);
} }
/**
* @param topic
* @param classOrUUID className or ProcessUUID
*/
protected void registerProcessEvent(String topic, String classOrUUID) {
String prop = "processUUID";
try {
UUID.fromString(classOrUUID);
} catch (Exception e) {
prop = "className";
}
String filter = "("+prop+"="+classOrUUID+")";
registerEvent(topic, filter);
}
/** /**
* @param event * @param event
* @return PO * @return PO
@ -113,6 +130,14 @@ public abstract class AbstractEventHandler implements EventHandler {
return getEventProperty(event, IEventManager.EVENT_DATA); return getEventProperty(event, IEventManager.EVENT_DATA);
} }
/**
* @param event
* @return ProcessInfo
*/
protected ProcessInfo getProcessInfo(Event event) {
return getEventProperty(event, IEventManager.EVENT_DATA);
}
/** /**
* *
* @param <T> * @param <T>

View File

@ -97,5 +97,12 @@ public interface IEventTopics {
public static final String BROADCAST_MESSAGE = "idempiere/broadcastMsg"; public static final String BROADCAST_MESSAGE = "idempiere/broadcastMsg";
public static final String REQUEST_SEND_EMAIL = "idempiere/requestSendEMail"; public static final String REQUEST_SEND_EMAIL = "idempiere/requestSendEMail";
}
/** Called before starting a process, after prepared */
public static final String BEFORE_PROCESS = "idempiere/beforeProcess";
/** Called after a process finishes, before commit */
public static final String AFTER_PROCESS = "idempiere/afterProcess";
/** Called after a process is committed */
public static final String POST_PROCESS = "idempiere/postProcess";
}

View File

@ -38,6 +38,7 @@ import org.compiere.util.DisplayType;
import org.compiere.util.Env; import org.compiere.util.Env;
import org.compiere.util.Msg; import org.compiere.util.Msg;
import org.compiere.util.Trx; import org.compiere.util.Trx;
import org.compiere.util.Util;
import org.compiere.util.ValueNamePair; import org.compiere.util.ValueNamePair;
/** /**
@ -127,13 +128,19 @@ public class UUIDGenerator extends SvrProcess {
//update db //update db
if (isFillUUID) { if (isFillUUID) {
// COMMENT NEXT LINE ON RELEASE WORK // COMMENT NEXT LINE ON RELEASE WORK
updateUUID(mColumn, null); String msg = updateUUID(mColumn, null);
if (! Util.isEmpty(msg)) {
addBufferLog(0, null, null, msg, 0, 0);
}
} }
} else { } else {
if (isFillUUID) { if (isFillUUID) {
MColumn mColumn = MColumn.get(getCtx(), AD_Column_ID); MColumn mColumn = MColumn.get(getCtx(), AD_Column_ID);
// COMMENT NEXT LINE ON RELEASE WORK // COMMENT NEXT LINE ON RELEASE WORK
updateUUID(mColumn, null); String msg = updateUUID(mColumn, null);
if (! Util.isEmpty(msg)) {
addBufferLog(0, null, null, msg, 0, 0);
}
} }
} }
@ -157,11 +164,11 @@ public class UUIDGenerator extends SvrProcess {
return msgreturn.toString(); return msgreturn.toString();
} }
public static void updateUUID(MColumn column, String trxName) { public static String updateUUID(MColumn column, String trxName) {
MTable table = (MTable) column.getAD_Table(); MTable table = (MTable) column.getAD_Table();
if (table.getTableName().startsWith("T_")) { if (table.getTableName().startsWith("T_")) {
// don't update UUID for temporary tables // don't update UUID for temporary tables
return; return "";
} }
int AD_Column_ID = 0; int AD_Column_ID = 0;
StringBuilder sql = new StringBuilder("SELECT "); StringBuilder sql = new StringBuilder("SELECT ");
@ -175,7 +182,7 @@ public class UUIDGenerator extends SvrProcess {
if ((compositeKeys == null || compositeKeys.length == 0) && keyColumn == null) { if ((compositeKeys == null || compositeKeys.length == 0) && keyColumn == null) {
// TODO: Update using rowid for oracle or ctid for postgresql // TODO: Update using rowid for oracle or ctid for postgresql
log.warning("Cannot update orphan table " + table.getTableName() + " (not ID neither parents)"); log.warning("Cannot update orphan table " + table.getTableName() + " (not ID neither parents)");
return; return "";
} }
if (compositeKeys == null) { if (compositeKeys == null) {
sql.append(keyColumn); sql.append(keyColumn);
@ -211,19 +218,21 @@ public class UUIDGenerator extends SvrProcess {
trx.setDisplayName(UUIDGenerator.class.getName()+"_updateUUID"); trx.setDisplayName(UUIDGenerator.class.getName()+"_updateUUID");
localTrx = true; localTrx = true;
} }
String msg = "";
try { try {
if (localTrx) if (localTrx)
trx.start(); trx.start();
stmt = DB.prepareStatement(sql.toString(), trx.getTrxName()); stmt = DB.prepareStatement(sql.toString(), trx.getTrxName());
stmt.setFetchSize(100); stmt.setFetchSize(100);
rs = stmt.executeQuery(); rs = stmt.executeQuery();
int no = 0;
while (rs.next()) { while (rs.next()) {
if (AD_Column_ID > 0) { if (AD_Column_ID > 0) {
int recordId = rs.getInt(1); int recordId = rs.getInt(1);
// this line is to avoid users generating official UUIDs - comment it to do official migration script work // this line is to avoid users generating official UUIDs - comment it to do official migration script work
if (recordId > MTable.MAX_OFFICIAL_ID) { if (recordId > MTable.MAX_OFFICIAL_ID) {
UUID uuid = UUID.randomUUID(); UUID uuid = UUID.randomUUID();
DB.executeUpdateEx(updateSQL.toString(),new Object[]{uuid.toString(), recordId}, trx.getTrxName()); no += DB.executeUpdateEx(updateSQL.toString(),new Object[]{uuid.toString(), recordId}, trx.getTrxName());
} }
} else { } else {
UUID uuid = UUID.randomUUID(); UUID uuid = UUID.randomUUID();
@ -232,9 +241,12 @@ public class UUIDGenerator extends SvrProcess {
for (String s : compositeKeys) { for (String s : compositeKeys) {
params.add(rs.getObject(s)); params.add(rs.getObject(s));
} }
DB.executeUpdateEx(updateSQL.toString(),params.toArray(),trx.getTrxName()); no += DB.executeUpdateEx(updateSQL.toString(),params.toArray(),trx.getTrxName());
} }
} }
if (no > 0) {
msg = no + " UUID assigned for table " + table.getTableName();
}
if (localTrx) { if (localTrx) {
trx.commit(true); trx.commit(true);
} }
@ -249,6 +261,7 @@ public class UUIDGenerator extends SvrProcess {
trx.close(); trx.close();
} }
} }
return msg;
} }
private void syncColumn(MColumn column) { private void syncColumn(MColumn column) {

View File

@ -31,10 +31,8 @@ import java.util.Calendar;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Properties; import java.util.Properties;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level; import java.util.logging.Level;
import org.adempiere.base.ILookupFactory; import org.adempiere.base.ILookupFactory;
@ -358,7 +356,7 @@ public class GridField
{ {
boolean retValue = false; boolean retValue = false;
if (m_vo.MandatoryLogic != null && m_vo.MandatoryLogic.startsWith("@SQL=")) { if (m_vo.MandatoryLogic != null && m_vo.MandatoryLogic.startsWith("@SQL=")) {
retValue = parseSQLLogic(m_vo.MandatoryLogic); retValue = Evaluator.parseSQLLogic(m_vo.MandatoryLogic, m_vo.ctx, m_vo.WindowNo, m_vo.TabNo, m_vo.ColumnName);
} else{ } else{
retValue= Evaluator.evaluateLogic(this, m_vo.MandatoryLogic); retValue= Evaluator.evaluateLogic(this, m_vo.MandatoryLogic);
@ -390,57 +388,6 @@ public class GridField
return isDisplayed (checkContext); return isDisplayed (checkContext);
} // isMandatory } // isMandatory
private boolean parseSQLLogic(String sqlLogic) {
String sql = sqlLogic.substring(5); // remove @SQL=
boolean reverse = false;
if (sql.startsWith("!")) {
reverse = true;
sql = sql.substring(1); //remove !
}
sql = Env.parseContext(m_vo.ctx, m_vo.WindowNo, m_vo.TabNo, sql, false, false); // replace
// variables
if (sql.equals("")) {
log.log(Level.WARNING,"(" + m_vo.ColumnName + ") - SQL variable parse failed: " + sqlLogic);
} else {
SQLLogicResult cache = sqlLogicCache.get(sql);
if (cache != null) {
long since = System.currentTimeMillis() - cache.timestamp;
if (since <= 500) {
cache.timestamp = System.currentTimeMillis();
if (cache.value)
return reverse ? false : true;
else
return reverse ? true : false;
}
}
PreparedStatement stmt = null;
ResultSet rs = null;
try {
stmt = DB.prepareStatement(sql, null);
rs = stmt.executeQuery();
boolean hasNext = rs.next();
if (cache == null) {
cache = new SQLLogicResult();
sqlLogicCache.put(sql, cache);
}
cache.value = hasNext;
cache.timestamp = System.currentTimeMillis();
if (hasNext)
return reverse ? false : true;
else
return reverse ? true : false;
} catch (SQLException e) {
log.log(Level.WARNING, "(" + m_vo.ColumnName + ") " + sql, e);
} finally {
DB.close(rs, stmt);
rs = null;
stmt = null;
}
}
return false;
}
/** /**
* Is parameter Editable - checks if parameter is Read Only * Is parameter Editable - checks if parameter is Read Only
* @param checkContext if true checks Context * @param checkContext if true checks Context
@ -451,7 +398,7 @@ public class GridField
{ {
if (m_vo.ReadOnlyLogic.startsWith("@SQL=")) if (m_vo.ReadOnlyLogic.startsWith("@SQL="))
{ {
boolean retValue = !parseSQLLogic(m_vo.ReadOnlyLogic); boolean retValue = !Evaluator.parseSQLLogic(m_vo.ReadOnlyLogic, m_vo.ctx, m_vo.WindowNo, m_vo.TabNo, m_vo.ColumnName);
if (!retValue) if (!retValue)
return false; return false;
} }
@ -563,7 +510,7 @@ public class GridField
{ {
if (m_vo.ReadOnlyLogic.startsWith("@SQL=")) if (m_vo.ReadOnlyLogic.startsWith("@SQL="))
{ {
boolean retValue = !parseSQLLogic(m_vo.ReadOnlyLogic); boolean retValue = !Evaluator.parseSQLLogic(m_vo.ReadOnlyLogic, m_vo.ctx, m_vo.WindowNo, m_vo.TabNo, m_vo.ColumnName);
if (!retValue) if (!retValue)
return false; return false;
} }
@ -1245,6 +1192,9 @@ public class GridField
// ** dynamic content ** // ** dynamic content **
if (checkContext) if (checkContext)
{ {
if (m_vo.DisplayLogic.startsWith("@SQL=")) {
return Evaluator.parseSQLLogic(m_vo.DisplayLogic, m_vo.ctx, m_vo.WindowNo, m_vo.TabNo, m_vo.ColumnName);
}
Evaluatee evaluatee = new Evaluatee() { Evaluatee evaluatee = new Evaluatee() {
public String get_ValueAsString(String variableName) { public String get_ValueAsString(String variableName) {
return GridField.this.get_ValueAsString(ctx, variableName); return GridField.this.get_ValueAsString(ctx, variableName);
@ -2605,13 +2555,6 @@ public class GridField
return m_lookupEditorSettingValue; return m_lookupEditorSettingValue;
} }
private static final Map<String, SQLLogicResult> sqlLogicCache = new ConcurrentHashMap<>();
private class SQLLogicResult {
long timestamp;
boolean value;
}
public void processUIVirtualColumn() { public void processUIVirtualColumn() {
String sql = m_vo.ColumnSQL.substring(5); String sql = m_vo.ColumnSQL.substring(5);
sql = Env.parseContext(Env.getCtx(), getWindowNo(), sql, false); sql = Env.parseContext(Env.getCtx(), getWindowNo(), sql, false);

View File

@ -1026,7 +1026,7 @@ public class GridTable extends AbstractTableModel
} }
} }
return null; return null;
} // getKeyID } // getUUID
/** /**
* Get Key ColumnName * Get Key ColumnName

View File

@ -548,6 +548,15 @@ public interface I_AD_Role
*/ */
public String getPreferenceType(); public String getPreferenceType();
/** Column name RoleType */
public static final String COLUMNNAME_RoleType = "RoleType";
/** Set Role Type */
public void setRoleType (String RoleType);
/** Get Role Type */
public String getRoleType();
/** Column name Supervisor_ID */ /** Column name Supervisor_ID */
public static final String COLUMNNAME_Supervisor_ID = "Supervisor_ID"; public static final String COLUMNNAME_Supervisor_ID = "Supervisor_ID";

View File

@ -516,6 +516,15 @@ public interface I_AD_User
*/ */
public boolean isSalesLead(); public boolean isSalesLead();
/** Column name IsSupportUser */
public static final String COLUMNNAME_IsSupportUser = "IsSupportUser";
/** Set Support User */
public void setIsSupportUser (boolean IsSupportUser);
/** Get Support User */
public boolean isSupportUser();
/** Column name LastContact */ /** Column name LastContact */
public static final String COLUMNNAME_LastContact = "LastContact"; public static final String COLUMNNAME_LastContact = "LastContact";

View File

@ -44,6 +44,7 @@ import org.compiere.util.Ini;
import org.compiere.util.KeyNamePair; import org.compiere.util.KeyNamePair;
import org.compiere.util.Msg; import org.compiere.util.Msg;
import org.compiere.util.Trace; import org.compiere.util.Trace;
import org.compiere.util.Util;
/** /**
* Role Model. * Role Model.
@ -61,7 +62,7 @@ public final class MRole extends X_AD_Role
/** /**
* *
*/ */
private static final long serialVersionUID = 8952907008982481439L; private static final long serialVersionUID = -4649095180532036099L;
/** /**
* Get Default (Client) Role * Get Default (Client) Role
@ -3198,4 +3199,50 @@ public final class MRole extends X_AD_Role
return m_canAccess_Info_Product.booleanValue(); return m_canAccess_Info_Product.booleanValue();
} }
/**
* Get where clause for a role types list
* @param roleType - comma separated list of role types, NULL can be used
* @param tableName - if table needs to be qualified
* @return whereClause - return null if roleType is null or empty
*/
public static String getWhereRoleType(String roleType, String tableName) {
if (Util.isEmpty(roleType, true)) {
return null;
}
boolean includeNull = false;
String types[] = roleType.split(",");
StringBuilder whereClause = new StringBuilder("(");
boolean start = true;
for (String type : types) {
if ("null".equalsIgnoreCase(type)) {
includeNull = true;
} else {
if (start) {
if (! Util.isEmpty(tableName)) {
whereClause.append(tableName).append(".");
}
whereClause.append(COLUMNNAME_RoleType).append(" IN (");
start = false;
} else {
whereClause.append(",");
}
whereClause.append(DB.TO_STRING(type));
}
}
if (! start) {
whereClause.append(")");
}
if (includeNull) {
if (! start) {
whereClause.append(" OR ");
}
if (! Util.isEmpty(tableName)) {
whereClause.append(tableName).append(".");
}
whereClause.append(COLUMNNAME_RoleType).append(" IS NULL");
}
whereClause.append(")");
return whereClause.toString();
}
} // MRole } // MRole

View File

@ -899,11 +899,10 @@ public class MUser extends X_AD_User
} }
} }
if (getPassword() != null && getPassword().length() > 0 && (newRecord || is_ValueChanged("Password"))) { boolean hasPassword = ! Util.isEmpty(getPassword());
if (hasPassword && (newRecord || is_ValueChanged("Password"))) {
// Validate password policies / IDEMPIERE-221 // Validate password policies / IDEMPIERE-221
if (get_ValueOld("Salt") == null && get_Value("Salt") != null) { // being hashed if (! (get_ValueOld("Salt") == null && get_Value("Salt") != null)) { // not being hashed
;
} else {
MPasswordRule pwdrule = MPasswordRule.getRules(getCtx(), get_TrxName()); MPasswordRule pwdrule = MPasswordRule.getRules(getCtx(), get_TrxName());
if (pwdrule != null){ if (pwdrule != null){
List<MPasswordHistory> passwordHistorys = MPasswordHistory.getPasswordHistoryForCheck(pwdrule.getDays_Reuse_Password(), this.getAD_User_ID()); List<MPasswordHistory> passwordHistorys = MPasswordHistory.getPasswordHistoryForCheck(pwdrule.getDays_Reuse_Password(), this.getAD_User_ID());
@ -911,12 +910,15 @@ public class MUser extends X_AD_User
} }
setDatePasswordChanged(new Timestamp(new Date().getTime())); setDatePasswordChanged(new Timestamp(new Date().getTime()));
} }
}
// Hash password - IDEMPIERE-347
boolean hash_password = MSysConfig.getBooleanValue(MSysConfig.USER_PASSWORD_HASH, false); boolean hash_password = MSysConfig.getBooleanValue(MSysConfig.USER_PASSWORD_HASH, false);
if ( hasPassword
&& is_ValueChanged("Password")
&& (!newRecord || (hash_password && getSalt() == null))) {
// Hash password - IDEMPIERE-347
if (hash_password) if (hash_password)
setPassword(getPassword()); setPassword(getPassword());
} }
return true; return true;

View File

@ -58,6 +58,15 @@ public class SystemIDs
public final static int MESSAGE_WORKFLOWRESULT = 753; public final static int MESSAGE_WORKFLOWRESULT = 753;
public final static int PRINTFORMAT_STATEMENTOFACCOUNT = 134; public final static int PRINTFORMAT_STATEMENTOFACCOUNT = 134;
public final static int PRINTFORMAT_ORDER_HEADER_TEMPLATE = 100;
public final static int PRINTFORMAT_ORDER_LINETAX_TEMPLATE = 101;
public final static int PRINTFORMAT_INVOICE_HEADER_TEMPLATE = 102;
public final static int PRINTFORMAT_INVOICE_LINETAX_TEMPLATE = 103;
public final static int PRINTFORMAT_INOUT_HEADER_TEMPLATE = 104;
public final static int PRINTFORMAT_INOUT_LINE_TEMPLATE = 105;
public final static int PRINTFORMAT_PAYSELECTION_CHECK_TEMPLATE = 106;
public final static int PRINTFORMAT_PAYSELECTION_REMITTANCE_LINES_TEMPLATE = 107;
public final static int PRINTFORMAT_PAYSELECTION_REMITTANCE__TEMPLATE = 108;
public final static int PROCESS_AD_WORKFLOW_DOCVALUE = 305; public final static int PROCESS_AD_WORKFLOW_DOCVALUE = 305;
public final static int PROCESS_AD_CHANGELOG_UNDO = 306; public final static int PROCESS_AD_CHANGELOG_UNDO = 306;

View File

@ -32,7 +32,7 @@ public class X_AD_Role extends PO implements I_AD_Role, I_Persistent
/** /**
* *
*/ */
private static final long serialVersionUID = 20190106L; private static final long serialVersionUID = 20190321L;
/** Standard Constructor */ /** Standard Constructor */
public X_AD_Role (Properties ctx, int AD_Role_ID, String trxName) public X_AD_Role (Properties ctx, int AD_Role_ID, String trxName)
@ -1003,6 +1003,43 @@ public class X_AD_Role extends PO implements I_AD_Role, I_Persistent
return (String)get_Value(COLUMNNAME_PreferenceType); return (String)get_Value(COLUMNNAME_PreferenceType);
} }
/** RoleType AD_Reference_ID=200166 */
public static final int ROLETYPE_AD_Reference_ID=200166;
/** WebUI = ZK */
public static final String ROLETYPE_WebUI = "ZK";
/** WebService = WS */
public static final String ROLETYPE_WebService = "WS";
/** System Support = SS */
public static final String ROLETYPE_SystemSupport = "SS";
/** Mobile = MO */
public static final String ROLETYPE_Mobile = "MO";
/** Swing = SW */
public static final String ROLETYPE_Swing = "SW";
/** External App 1 = E1 */
public static final String ROLETYPE_ExternalApp1 = "E1";
/** External App 2 = E2 */
public static final String ROLETYPE_ExternalApp2 = "E2";
/** External App 3 = E3 */
public static final String ROLETYPE_ExternalApp3 = "E3";
/** External App 4 = E4 */
public static final String ROLETYPE_ExternalApp4 = "E4";
/** External App 5 = E5 */
public static final String ROLETYPE_ExternalApp5 = "E5";
/** Set Role Type.
@param RoleType Role Type */
public void setRoleType (String RoleType)
{
set_Value (COLUMNNAME_RoleType, RoleType);
}
/** Get Role Type.
@return Role Type */
public String getRoleType ()
{
return (String)get_Value(COLUMNNAME_RoleType);
}
public org.compiere.model.I_AD_User getSupervisor() throws RuntimeException public org.compiere.model.I_AD_User getSupervisor() throws RuntimeException
{ {
return (org.compiere.model.I_AD_User)MTable.get(getCtx(), org.compiere.model.I_AD_User.Table_Name) return (org.compiere.model.I_AD_User)MTable.get(getCtx(), org.compiere.model.I_AD_User.Table_Name)

View File

@ -31,7 +31,7 @@ public class X_AD_User extends PO implements I_AD_User, I_Persistent
/** /**
* *
*/ */
private static final long serialVersionUID = 20190106L; private static final long serialVersionUID = 20190321L;
/** Standard Constructor */ /** Standard Constructor */
public X_AD_User (Properties ctx, int AD_User_ID, String trxName) public X_AD_User (Properties ctx, int AD_User_ID, String trxName)
@ -57,10 +57,12 @@ public class X_AD_User extends PO implements I_AD_User, I_Persistent
setIsNoPasswordReset (false); setIsNoPasswordReset (false);
// 'N' // 'N'
setIsSalesLead (false); setIsSalesLead (false);
// N
setIsSupportUser (false);
// N // N
setName (null); setName (null);
setNotificationType (null); setNotificationType (null);
// E // X
} */ } */
} }
@ -815,6 +817,27 @@ public class X_AD_User extends PO implements I_AD_User, I_Persistent
return false; return false;
} }
/** Set Support User.
@param IsSupportUser Support User */
public void setIsSupportUser (boolean IsSupportUser)
{
set_Value (COLUMNNAME_IsSupportUser, Boolean.valueOf(IsSupportUser));
}
/** Get Support User.
@return Support User */
public boolean isSupportUser ()
{
Object oo = get_Value(COLUMNNAME_IsSupportUser);
if (oo != null)
{
if (oo instanceof Boolean)
return ((Boolean)oo).booleanValue();
return "Y".equals(oo);
}
return false;
}
/** Set Last Contact. /** Set Last Contact.
@param LastContact @param LastContact
Date this individual was last contacted Date this individual was last contacted

View File

@ -16,6 +16,16 @@
*****************************************************************************/ *****************************************************************************/
package org.compiere.print; package org.compiere.print;
import static org.compiere.model.SystemIDs.PRINTFORMAT_INOUT_HEADER_TEMPLATE;
import static org.compiere.model.SystemIDs.PRINTFORMAT_INOUT_LINE_TEMPLATE;
import static org.compiere.model.SystemIDs.PRINTFORMAT_INVOICE_HEADER_TEMPLATE;
import static org.compiere.model.SystemIDs.PRINTFORMAT_INVOICE_LINETAX_TEMPLATE;
import static org.compiere.model.SystemIDs.PRINTFORMAT_ORDER_HEADER_TEMPLATE;
import static org.compiere.model.SystemIDs.PRINTFORMAT_ORDER_LINETAX_TEMPLATE;
import static org.compiere.model.SystemIDs.PRINTFORMAT_PAYSELECTION_CHECK_TEMPLATE;
import static org.compiere.model.SystemIDs.PRINTFORMAT_PAYSELECTION_REMITTANCE_LINES_TEMPLATE;
import static org.compiere.model.SystemIDs.PRINTFORMAT_PAYSELECTION_REMITTANCE__TEMPLATE;
import java.awt.print.PageFormat; import java.awt.print.PageFormat;
import java.awt.print.Pageable; import java.awt.print.Pageable;
import java.awt.print.PrinterException; import java.awt.print.PrinterException;
@ -546,23 +556,23 @@ public class PrintUtil
CLogMgt.enable(false); CLogMgt.enable(false);
// //
// Order Template // Order Template
int Order_PrintFormat_ID = MPrintFormat.copyToClient(ctx, 100, AD_Client_ID).get_ID(); int Order_PrintFormat_ID = MPrintFormat.copyToClient(ctx, PRINTFORMAT_ORDER_HEADER_TEMPLATE, AD_Client_ID).get_ID();
int OrderLine_PrintFormat_ID = MPrintFormat.copyToClient(ctx, 101, AD_Client_ID).get_ID(); int OrderLine_PrintFormat_ID = MPrintFormat.copyToClient(ctx, PRINTFORMAT_ORDER_LINETAX_TEMPLATE, AD_Client_ID).get_ID();
updatePrintFormatHeader(Order_PrintFormat_ID, OrderLine_PrintFormat_ID); updatePrintFormatHeader(Order_PrintFormat_ID, OrderLine_PrintFormat_ID);
// Invoice // Invoice
int Invoice_PrintFormat_ID = MPrintFormat.copyToClient(ctx, 102, AD_Client_ID).get_ID(); int Invoice_PrintFormat_ID = MPrintFormat.copyToClient(ctx, PRINTFORMAT_INVOICE_HEADER_TEMPLATE, AD_Client_ID).get_ID();
int InvoiceLine_PrintFormat_ID = MPrintFormat.copyToClient(ctx, 103, AD_Client_ID).get_ID(); int InvoiceLine_PrintFormat_ID = MPrintFormat.copyToClient(ctx, PRINTFORMAT_INVOICE_LINETAX_TEMPLATE, AD_Client_ID).get_ID();
updatePrintFormatHeader(Invoice_PrintFormat_ID, InvoiceLine_PrintFormat_ID); updatePrintFormatHeader(Invoice_PrintFormat_ID, InvoiceLine_PrintFormat_ID);
// Shipment // Shipment
int Shipment_PrintFormat_ID = MPrintFormat.copyToClient(ctx, 104, AD_Client_ID).get_ID(); int Shipment_PrintFormat_ID = MPrintFormat.copyToClient(ctx, PRINTFORMAT_INOUT_HEADER_TEMPLATE, AD_Client_ID).get_ID();
int ShipmentLine_PrintFormat_ID = MPrintFormat.copyToClient(ctx, 105, AD_Client_ID).get_ID(); int ShipmentLine_PrintFormat_ID = MPrintFormat.copyToClient(ctx, PRINTFORMAT_INOUT_LINE_TEMPLATE, AD_Client_ID).get_ID();
updatePrintFormatHeader(Shipment_PrintFormat_ID, ShipmentLine_PrintFormat_ID); updatePrintFormatHeader(Shipment_PrintFormat_ID, ShipmentLine_PrintFormat_ID);
// Check // Check
int Check_PrintFormat_ID = MPrintFormat.copyToClient(ctx, 106, AD_Client_ID).get_ID(); int Check_PrintFormat_ID = MPrintFormat.copyToClient(ctx, PRINTFORMAT_PAYSELECTION_CHECK_TEMPLATE, AD_Client_ID).get_ID();
int RemittanceLine_PrintFormat_ID = MPrintFormat.copyToClient(ctx, 107, AD_Client_ID).get_ID(); int RemittanceLine_PrintFormat_ID = MPrintFormat.copyToClient(ctx, PRINTFORMAT_PAYSELECTION_REMITTANCE_LINES_TEMPLATE, AD_Client_ID).get_ID();
updatePrintFormatHeader(Check_PrintFormat_ID, RemittanceLine_PrintFormat_ID); updatePrintFormatHeader(Check_PrintFormat_ID, RemittanceLine_PrintFormat_ID);
// Remittance // Remittance
int Remittance_PrintFormat_ID = MPrintFormat.copyToClient(ctx, 108, AD_Client_ID).get_ID(); int Remittance_PrintFormat_ID = MPrintFormat.copyToClient(ctx, PRINTFORMAT_PAYSELECTION_REMITTANCE__TEMPLATE, AD_Client_ID).get_ID();
updatePrintFormatHeader(Remittance_PrintFormat_ID, RemittanceLine_PrintFormat_ID); updatePrintFormatHeader(Remittance_PrintFormat_ID, RemittanceLine_PrintFormat_ID);
// TODO: MPrintForm // TODO: MPrintForm

View File

@ -24,6 +24,7 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.adempiere.util.IProcessUI;
import org.compiere.model.MPInstance; import org.compiere.model.MPInstance;
import org.compiere.model.MPInstancePara; import org.compiere.model.MPInstancePara;
import org.compiere.model.MProcess; import org.compiere.model.MProcess;
@ -49,7 +50,7 @@ public class ProcessInfo implements Serializable
/** /**
* *
*/ */
private static final long serialVersionUID = 2167823616151648814L; private static final long serialVersionUID = -4600747909096993053L;
/** /**
* Constructor * Constructor
@ -203,6 +204,8 @@ public class ProcessInfo implements Serializable
sb.append(",Transient=").append(m_TransientObject); sb.append(",Transient=").append(m_TransientObject);
if (m_SerializableObject != null) if (m_SerializableObject != null)
sb.append(",Serializable=").append(m_SerializableObject); sb.append(",Serializable=").append(m_SerializableObject);
if (m_transactionName != null)
sb.append(",Trx=").append(m_transactionName);
sb.append(",Summary=").append(getSummary()) sb.append(",Summary=").append(getSummary())
.append(",Log=").append(m_logs == null ? 0 : m_logs.size()); .append(",Log=").append(m_logs == null ? 0 : m_logs.size());
// .append(getLogInfo(false)); // .append(getLogInfo(false));
@ -919,4 +922,14 @@ public class ProcessInfo implements Serializable
return lastServerSession.getCreated(); return lastServerSession.getCreated();
} }
private IProcessUI processUI;
public void setProcessUI(IProcessUI processUI) {
this.processUI = processUI;
}
public IProcessUI getProcessUI() {
return processUI;
}
} // ProcessInfo } // ProcessInfo

View File

@ -27,6 +27,10 @@ import java.util.List;
import java.util.Properties; import java.util.Properties;
import java.util.logging.Level; import java.util.logging.Level;
import org.adempiere.base.event.EventManager;
import org.adempiere.base.event.EventProperty;
import org.adempiere.base.event.IEventManager;
import org.adempiere.base.event.IEventTopics;
import org.adempiere.util.IProcessUI; import org.adempiere.util.IProcessUI;
import org.compiere.model.MPInstance; import org.compiere.model.MPInstance;
import org.compiere.model.PO; import org.compiere.model.PO;
@ -35,6 +39,7 @@ import org.compiere.util.DB;
import org.compiere.util.Env; import org.compiere.util.Env;
import org.compiere.util.Msg; import org.compiere.util.Msg;
import org.compiere.util.Trx; import org.compiere.util.Trx;
import org.osgi.service.event.Event;
/** /**
* Server Process Template * Server Process Template
@ -128,6 +133,8 @@ public abstract class SvrProcess implements ProcessCall
m_trx = Trx.get(Trx.createTrxName("SvrProcess"), true); m_trx = Trx.get(Trx.createTrxName("SvrProcess"), true);
m_trx.setDisplayName(getClass().getName()+"_startProcess"); m_trx.setDisplayName(getClass().getName()+"_startProcess");
} }
m_pi.setTransactionName(m_trx.getTrxName());
m_pi.setProcessUI(processUI);
// //
ClassLoader contextLoader = Thread.currentThread().getContextClassLoader(); ClassLoader contextLoader = Thread.currentThread().getContextClassLoader();
ClassLoader processLoader = getClass().getClassLoader(); ClassLoader processLoader = getClass().getClassLoader();
@ -168,6 +175,7 @@ public abstract class SvrProcess implements ProcessCall
m_trx.rollback(); m_trx.rollback();
m_trx.close(); m_trx.close();
m_trx = null; m_trx = null;
m_pi.setTransactionName(null);
} }
unlock(); unlock();
@ -175,6 +183,9 @@ public abstract class SvrProcess implements ProcessCall
// outside transaction processing [ teo_sarca, 1646891 ] // outside transaction processing [ teo_sarca, 1646891 ]
postProcess(!m_pi.isError()); postProcess(!m_pi.isError());
@SuppressWarnings("unused")
Event eventPP = sendProcessEvent(IEventTopics.POST_PROCESS);
Thread.currentThread().setContextClassLoader(contextLoader); Thread.currentThread().setContextClassLoader(contextLoader);
} }
} finally { } finally {
@ -198,7 +209,24 @@ public abstract class SvrProcess implements ProcessCall
try try
{ {
prepare(); prepare();
// event before process
Event eventBP = sendProcessEvent(IEventTopics.BEFORE_PROCESS);
@SuppressWarnings("unchecked")
List<String> errorsBP = (List<String>) eventBP.getProperty(IEventManager.EVENT_ERROR_MESSAGES);
if (errorsBP != null && !errorsBP.isEmpty()) {
msg = "@Error@:" + errorsBP.get(0);
} else {
msg = doIt(); msg = doIt();
if (msg != null && ! msg.startsWith("@Error@")) {
Event eventAP = sendProcessEvent(IEventTopics.AFTER_PROCESS);
@SuppressWarnings("unchecked")
List<String> errorsAP = (List<String>) eventAP.getProperty(IEventManager.EVENT_ERROR_MESSAGES);
if (errorsAP != null && !errorsAP.isEmpty()) {
msg = "@Error@:" + errorsAP.get(0);
}
}
}
} }
catch (Throwable e) catch (Throwable e)
{ {
@ -227,6 +255,15 @@ public abstract class SvrProcess implements ProcessCall
return success; return success;
} // process } // process
private Event sendProcessEvent(String topic) {
Event event = EventManager.newEvent(topic,
new EventProperty(EventManager.EVENT_DATA, m_pi),
new EventProperty("processUUID", m_pi.getAD_Process_UU()),
new EventProperty("className", m_pi.getClassName()));
EventManager.getInstance().sendEvent(event);
return event;
}
/** /**
* Prepare - e.g., get Parameters. * Prepare - e.g., get Parameters.
* <code> * <code>

View File

@ -17,8 +17,14 @@
package org.compiere.util; package org.compiere.util;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Map;
import java.util.Properties;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level; import java.util.logging.Level;
@ -33,6 +39,13 @@ public class Evaluator
/** Static Logger */ /** Static Logger */
private static CLogger s_log = CLogger.getCLogger (Evaluator.class); private static CLogger s_log = CLogger.getCLogger (Evaluator.class);
private static final Map<String, SQLLogicResult> sqlLogicCache = new ConcurrentHashMap<>();
public static class SQLLogicResult {
long timestamp;
boolean value;
}
/** /**
* Check if All Variables are Defined * Check if All Variables are Defined
* @param source source * @param source source
@ -299,4 +312,63 @@ public class Evaluator
} }
} // parseDepends } // parseDepends
/**
* evaluator a expression logic base on sql
* @param sqlLogic
* @param ctx
* @param windowNo
* @param tabNo
* @param targetObjectName expression logic is evaluated for, that target object (purpose for logging) can be field name, toolbar button name,..
* @return
*/
public static boolean parseSQLLogic(String sqlLogic, Properties ctx, int windowNo, int tabNo, String targetObjectName) {
String sql = sqlLogic.substring(5); // remove @SQL=
boolean reverse = false;
if (sql.startsWith("!")) {
reverse = true;
sql = sql.substring(1); //remove !
}
sql = Env.parseContext(ctx, windowNo, tabNo, sql, false, false); // replace
// variables
if (sql.equals("")) {
s_log.log(Level.WARNING,"(" + targetObjectName + ") - SQL variable parse failed: " + sqlLogic);
} else {
SQLLogicResult cache = sqlLogicCache.get(sql);
if (cache != null) {
long since = System.currentTimeMillis() - cache.timestamp;
if (since <= 500) {
cache.timestamp = System.currentTimeMillis();
if (cache.value)
return reverse ? false : true;
else
return reverse ? true : false;
}
}
PreparedStatement stmt = null;
ResultSet rs = null;
try {
stmt = DB.prepareStatement(sql, null);
rs = stmt.executeQuery();
boolean hasNext = rs.next();
if (cache == null) {
cache = new SQLLogicResult();
sqlLogicCache.put(sql, cache);
}
cache.value = hasNext;
cache.timestamp = System.currentTimeMillis();
if (hasNext)
return reverse ? false : true;
else
return reverse ? true : false;
} catch (SQLException e) {
s_log.log(Level.WARNING, "(" + targetObjectName + ") " + sql, e);
} finally {
DB.close(rs, stmt);
rs = null;
stmt = null;
}
}
return false;
}
} // Evaluator } // Evaluator

View File

@ -420,7 +420,6 @@ public final class Ini implements Serializable
{ {
fis = new FileInputStream(filename); fis = new FileInputStream(filename);
s_prop.load(fis); s_prop.load(fis);
fis.close();
} }
catch (FileNotFoundException e) catch (FileNotFoundException e)
{ {
@ -437,6 +436,17 @@ public final class Ini implements Serializable
log.log(Level.SEVERE, filename + " - " + t.toString()); log.log(Level.SEVERE, filename + " - " + t.toString());
loadOK = false; loadOK = false;
} }
finally
{
if (fis != null)
{
try
{
fis.close();
}
catch (Exception e) {}
}
}
if (!loadOK || s_prop.getProperty(P_TODAY, "").equals("")) if (!loadOK || s_prop.getProperty(P_TODAY, "").equals(""))
{ {
if (log.isLoggable(Level.CONFIG)) log.config(filename); if (log.isLoggable(Level.CONFIG)) log.config(filename);

View File

@ -1239,14 +1239,19 @@ public class Login
return null; return null;
} // getPrincipal } // getPrincipal
public KeyNamePair[] getClients(String app_user, String app_pwd) {
return getClients(app_user, app_pwd, null);
}
/** /**
* Validate Client Login. * Validate Client Login.
* Sets Context with login info * Sets Context with login info
* @param app_user user id * @param app_user user id
* @param app_pwd password * @param app_pwd password
* @param roleTypes comma separated list of the role types allowed to login (NULL can be added)
* @return client array or null if in error. * @return client array or null if in error.
*/ */
public KeyNamePair[] getClients(String app_user, String app_pwd) { public KeyNamePair[] getClients(String app_user, String app_pwd, String roleTypes) {
if (log.isLoggable(Level.INFO)) log.info("User=" + app_user); if (log.isLoggable(Level.INFO)) log.info("User=" + app_user);
if (Util.isEmpty(app_user)) if (Util.isEmpty(app_user))
@ -1287,10 +1292,15 @@ public class Login
where.append("EMail=?"); where.append("EMail=?");
else else
where.append("COALESCE(LDAPUser,Name)=?"); where.append("COALESCE(LDAPUser,Name)=?");
String whereRoleType = MRole.getWhereRoleType(roleTypes, "r");
where.append(" AND") where.append(" AND")
.append(" EXISTS (SELECT * FROM AD_User_Roles ur") .append(" EXISTS (SELECT * FROM AD_User_Roles ur")
.append(" INNER JOIN AD_Role r ON (ur.AD_Role_ID=r.AD_Role_ID)") .append(" INNER JOIN AD_Role r ON (ur.AD_Role_ID=r.AD_Role_ID)")
.append(" WHERE ur.AD_User_ID=AD_User.AD_User_ID AND ur.IsActive='Y' AND r.IsActive='Y') AND ") .append(" WHERE ur.AD_User_ID=AD_User.AD_User_ID AND ur.IsActive='Y' AND r.IsActive='Y'");
if (! Util.isEmpty(whereRoleType)) {
where.append(" AND ").append(whereRoleType);
}
where.append(") AND ")
.append(" EXISTS (SELECT * FROM AD_Client c") .append(" EXISTS (SELECT * FROM AD_Client c")
.append(" WHERE c.AD_Client_ID=AD_User.AD_Client_ID") .append(" WHERE c.AD_Client_ID=AD_User.AD_Client_ID")
.append(" AND c.IsActive='Y') AND ") .append(" AND c.IsActive='Y') AND ")
@ -1511,17 +1521,24 @@ public class Login
} }
return retValue; return retValue;
} }
public KeyNamePair[] getRoles(String app_user, KeyNamePair client) {
return getRoles(app_user, client, null);
}
/************************************************************************** /**************************************************************************
* Load Roles. * Load Roles.
* <p> * <p>
* Sets Client info in context and loads its roles * Sets Client info in context and loads its roles
* @param client client information * @param client client information
* @param roleTypes comma separated list of the role types allowed to login (NULL can be added)
* @return list of valid roles KeyNodePairs or null if in error * @return list of valid roles KeyNodePairs or null if in error
*/ */
public KeyNamePair[] getRoles(String app_user, KeyNamePair client) { public KeyNamePair[] getRoles(String app_user, KeyNamePair client, String roleTypes) {
if (client == null) if (client == null)
throw new IllegalArgumentException("Client missing"); throw new IllegalArgumentException("Client missing");
String whereRoleType = MRole.getWhereRoleType(roleTypes, "r");
ArrayList<KeyNamePair> rolesList = new ArrayList<KeyNamePair>(); ArrayList<KeyNamePair> rolesList = new ArrayList<KeyNamePair>();
KeyNamePair[] retValue = null; KeyNamePair[] retValue = null;
StringBuffer sql = new StringBuffer("SELECT u.AD_User_ID, r.AD_Role_ID,r.Name ") StringBuffer sql = new StringBuffer("SELECT u.AD_User_ID, r.AD_Role_ID,r.Name ")
@ -1535,6 +1552,9 @@ public class Login
else else
sql.append("COALESCE(u.LDAPUser,u.Name)=?"); sql.append("COALESCE(u.LDAPUser,u.Name)=?");
sql.append(" AND r.IsMasterRole='N'"); sql.append(" AND r.IsMasterRole='N'");
if (! Util.isEmpty(whereRoleType)) {
sql.append(" AND ").append(whereRoleType);
}
sql.append(" AND u.IsActive='Y' AND EXISTS (SELECT * FROM AD_Client c WHERE u.AD_Client_ID=c.AD_Client_ID AND c.IsActive='Y')"); sql.append(" AND u.IsActive='Y' AND EXISTS (SELECT * FROM AD_Client c WHERE u.AD_Client_ID=c.AD_Client_ID AND c.IsActive='Y')");
// don't show roles without org access // don't show roles without org access
sql.append(" AND ("); sql.append(" AND (");

View File

@ -32,6 +32,7 @@ import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.UUID;
import java.util.logging.Level; import java.util.logging.Level;
import org.adempiere.exceptions.AdempiereException; import org.adempiere.exceptions.AdempiereException;
@ -40,6 +41,7 @@ import org.compiere.model.MColumn;
import org.compiere.model.MSequence; import org.compiere.model.MSequence;
import org.compiere.model.MTable; import org.compiere.model.MTable;
import org.compiere.model.Query; import org.compiere.model.Query;
import org.compiere.model.X_AD_Package_UUID_Map;
import org.compiere.process.ProcessInfoParameter; import org.compiere.process.ProcessInfoParameter;
import org.compiere.process.SvrProcess; import org.compiere.process.SvrProcess;
import org.compiere.util.AdempiereUserError; import org.compiere.util.AdempiereUserError;
@ -49,8 +51,9 @@ import org.compiere.util.Util;
public class MoveClient extends SvrProcess { public class MoveClient extends SvrProcess {
// Process to move a client from a external database to current // Process to move a client from a external database to current, or copy a template in current database
private boolean p_IsCopyClient; // Define if the process is to copy a template client, or bring from external database
private String p_JDBC_URL; // JDBC URL of the external database private String p_JDBC_URL; // JDBC URL of the external database
private String p_UserName; // optional to connect to the JDBC URL, if empty use the same as target private String p_UserName; // optional to connect to the JDBC URL, if empty use the same as target
private String p_Password; // optional to connect to the JDBC URL, if empty use the same as target private String p_Password; // optional to connect to the JDBC URL, if empty use the same as target
@ -58,7 +61,10 @@ public class MoveClient extends SvrProcess {
private String p_ClientsToInclude; // optional, comma separated list, if empty then all clients >= 1000000 will be moved private String p_ClientsToInclude; // optional, comma separated list, if empty then all clients >= 1000000 will be moved
private String p_ClientsToExclude; // optional, comma separated list of clients to exclude private String p_ClientsToExclude; // optional, comma separated list of clients to exclude
private boolean p_IsValidateOnly; // to do just validation and not execute the process private boolean p_IsValidateOnly; // to do just validation and not execute the process
private String p_IsPreserveIDs; // optional, comma separated list of tables that require to preserve IDs private String p_TablesToPreserveIDs; // optional, comma separated list of tables that require to preserve IDs, * for all
private String p_ClientName; // New client name when copying from template
private String p_ClientValue; // New client value when copying from template
private boolean p_IsSkipSomeValidations; // skip some validations to make the process faster
final static String insertConversionId = "INSERT INTO T_MoveClient (AD_PInstance_ID, TableName, Source_ID, Target_ID) VALUES (?, ?, ?, ?)"; final static String insertConversionId = "INSERT INTO T_MoveClient (AD_PInstance_ID, TableName, Source_ID, Target_ID) VALUES (?, ?, ?, ?)";
@ -71,6 +77,7 @@ public class MoveClient extends SvrProcess {
private List<String> p_tablesToExcludeList = new ArrayList<String>(); private List<String> p_tablesToExcludeList = new ArrayList<String>();
private List<String> p_columnsVerifiedList = new ArrayList<String>(); private List<String> p_columnsVerifiedList = new ArrayList<String>();
private List<String> p_idSystemConversionList = new ArrayList<String>(); // can consume lot of memory but it helps for performance private List<String> p_idSystemConversionList = new ArrayList<String>(); // can consume lot of memory but it helps for performance
private boolean p_isPreserveAll = false;
@Override @Override
protected void prepare() { protected void prepare() {
@ -79,12 +86,18 @@ public class MoveClient extends SvrProcess {
// //
for (ProcessInfoParameter para : getParameter()) { for (ProcessInfoParameter para : getParameter()) {
String name = para.getParameterName(); String name = para.getParameterName();
if ("JDBC_URL".equals(name)) { if ("IsCopyClient".equals(name)) {
p_IsCopyClient = para.getParameterAsBoolean();
} else if ("JDBC_URL".equals(name)) {
p_JDBC_URL = para.getParameterAsString(); p_JDBC_URL = para.getParameterAsString();
} else if ("UserName".equals(name)) { } else if ("UserName".equals(name)) {
p_UserName = para.getParameterAsString(); p_UserName = para.getParameterAsString();
} else if ("Password".equals(name)) { } else if ("Password".equals(name)) {
p_Password = para.getParameterAsString(); p_Password = para.getParameterAsString();
} else if ("ClientName".equals(name)) {
p_ClientName = para.getParameterAsString();
} else if ("ClientValue".equals(name)) {
p_ClientValue = para.getParameterAsString();
} else if ("TablesToExclude".equals(name)) { } else if ("TablesToExclude".equals(name)) {
p_TablesToExclude = para.getParameterAsString(); p_TablesToExclude = para.getParameterAsString();
} else if ("ClientsToInclude".equals(name)) { } else if ("ClientsToInclude".equals(name)) {
@ -94,9 +107,11 @@ public class MoveClient extends SvrProcess {
} else if ("IsValidateOnly".equals(name)) { } else if ("IsValidateOnly".equals(name)) {
p_IsValidateOnly = para.getParameterAsBoolean(); p_IsValidateOnly = para.getParameterAsBoolean();
} else if ("IsPreserveIDs".equals(name)) { } else if ("IsPreserveIDs".equals(name)) {
p_IsPreserveIDs = para.getParameterAsString(); p_TablesToPreserveIDs = para.getParameterAsString();
} else if ("IsSkipSomeValidations".equals(name)) {
p_IsSkipSomeValidations = para.getParameterAsBoolean();
} else { } else {
log.log(Level.SEVERE, "Unknown Parameter: " + name); if (log.isLoggable(Level.INFO)) log.log(Level.INFO, "Custom Parameter: " + name + "=" + para.getInfo());
} }
} }
} }
@ -104,8 +119,20 @@ public class MoveClient extends SvrProcess {
@Override @Override
protected String doIt() throws Exception { protected String doIt() throws Exception {
// validate parameters // validate parameters
if (p_IsCopyClient) {
if (! Util.isEmpty(p_ClientsToExclude, true))
throw new AdempiereException("Clients to exclude must be empty when copying from template");
if (! Util.isEmpty(p_TablesToPreserveIDs, true))
throw new AdempiereException("Preserve IDs must be empty when copying from template");
try {
Integer.parseInt(p_ClientsToInclude);
} catch (NumberFormatException e) {
throw new AdempiereException("Error in parameter Clients to Include, must be just one integer");
}
} else {
if (Util.isEmpty(p_JDBC_URL, true)) if (Util.isEmpty(p_JDBC_URL, true))
throw new AdempiereException("Fill mandatory JDBC_URL"); throw new AdempiereException("Fill mandatory JDBC_URL");
}
if (! Util.isEmpty(p_ClientsToInclude, true) && ! Util.isEmpty(p_ClientsToExclude, true)) if (! Util.isEmpty(p_ClientsToInclude, true) && ! Util.isEmpty(p_ClientsToExclude, true))
throw new AdempiereException("Clients to exclude and include cannot be used at the same time"); throw new AdempiereException("Clients to exclude and include cannot be used at the same time");
if (Util.isEmpty(p_UserName, true)) if (Util.isEmpty(p_UserName, true))
@ -115,6 +142,10 @@ public class MoveClient extends SvrProcess {
// Construct the where clauses // Construct the where clauses
p_excludeTablesWhere.append("(UPPER(AD_Table.TableName) NOT LIKE 'T|_%' ESCAPE '|'"); // exclude temporary tables p_excludeTablesWhere.append("(UPPER(AD_Table.TableName) NOT LIKE 'T|_%' ESCAPE '|'"); // exclude temporary tables
if (p_IsCopyClient) {
// exclude always AD_ChangeLog when copying from template client
p_excludeTablesWhere.append(" AND UPPER(TableName) != 'AD_CHANGELOG'");
}
if (Util.isEmpty(p_TablesToExclude, true)) { if (Util.isEmpty(p_TablesToExclude, true)) {
p_excludeTablesWhere.append(")"); p_excludeTablesWhere.append(")");
} else { } else {
@ -166,17 +197,26 @@ public class MoveClient extends SvrProcess {
p_whereClient.append(")"); p_whereClient.append(")");
} }
if (! Util.isEmpty(p_IsPreserveIDs, true)) { if (! Util.isEmpty(p_TablesToPreserveIDs, true)) {
for (String tableName : p_IsPreserveIDs.split(",")) { if ("*".equals(p_TablesToPreserveIDs)) {
p_isPreserveAll = true;
} else {
p_isPreserveAll = false;
for (String tableName : p_TablesToPreserveIDs.split(",")) {
p_tablesToPreserveIDsList.add(tableName.toUpperCase()); p_tablesToPreserveIDsList.add(tableName.toUpperCase());
} }
} }
}
// Make the connection to external database // Make the connection to external database
externalConn = null; externalConn = null;
try { try {
try { try {
if (p_IsCopyClient) {
externalConn = DB.getConnectionRO();
} else {
externalConn = DB.getDatabase(p_JDBC_URL).getDriverConnection(p_JDBC_URL, p_UserName, p_Password); externalConn = DB.getDatabase(p_JDBC_URL).getDriverConnection(p_JDBC_URL, p_UserName, p_Password);
}
} catch (Exception e) { } catch (Exception e) {
throw new AdempiereException("Could not get a connection to " + p_JDBC_URL + ",\nCause: " + e.getLocalizedMessage()); throw new AdempiereException("Could not get a connection to " + p_JDBC_URL + ",\nCause: " + e.getLocalizedMessage());
} }
@ -203,6 +243,19 @@ public class MoveClient extends SvrProcess {
} }
private void validate() { private void validate() {
if (p_IsCopyClient) {
// Validate that the newtenant value/name doesn't exist
int cntCN = DB.getSQLValueEx(get_TrxName(), "SELECT COUNT(*) FROM AD_Client WHERE Name=?", p_ClientName);
if (cntCN > 0)
throw new AdempiereUserError("Client with name " + p_ClientName + " already exists in database");
int cntCV = DB.getSQLValueEx(get_TrxName(), "SELECT COUNT(*) FROM AD_Client WHERE Value=?", p_ClientValue);
if (cntCV > 0)
throw new AdempiereUserError("Client with search key " + p_ClientValue + " already exists in database");
int cntCW = DB.getSQLValueEx(get_TrxName(), "SELECT COUNT(*) FROM W_Store WHERE WebContext=?", p_ClientValue.toLowerCase());
if (cntCW > 0)
throw new AdempiereUserError("WebStore with context " + p_ClientValue.toLowerCase() + " already exists in database");
}
// validate there are clients to move, and doesn't exist in target // validate there are clients to move, and doesn't exist in target
StringBuilder sqlValidClientsSB = new StringBuilder() StringBuilder sqlValidClientsSB = new StringBuilder()
.append("SELECT AD_Client_ID, Value, Name, AD_Client_UU FROM AD_Client WHERE ") .append("SELECT AD_Client_ID, Value, Name, AD_Client_UU FROM AD_Client WHERE ")
@ -210,7 +263,7 @@ public class MoveClient extends SvrProcess {
.append(" ORDER BY Value"); .append(" ORDER BY Value");
StringBuilder sqlValidateLocalClient = new StringBuilder() StringBuilder sqlValidateLocalClient = new StringBuilder()
.append("SELECT COUNT(*) FROM AD_Client WHERE Value=? OR Name=? OR AD_Client_UU=?"); .append("SELECT COUNT(*) FROM AD_Client WHERE Value=? OR Name=? OR AD_Client_UU=?");
if (p_tablesToPreserveIDsList.contains("AD_CLIENT")) { if (p_isPreserveAll || p_tablesToPreserveIDsList.contains("AD_CLIENT")) {
sqlValidateLocalClient.append(" OR AD_Client_ID=?"); sqlValidateLocalClient.append(" OR AD_Client_ID=?");
} }
String sqlValidClients = DB.getDatabase().convertStatement(sqlValidClientsSB.toString()); String sqlValidClients = DB.getDatabase().convertStatement(sqlValidClientsSB.toString());
@ -226,20 +279,22 @@ public class MoveClient extends SvrProcess {
String clientValue = rsVC.getString(2); String clientValue = rsVC.getString(2);
String clientName = rsVC.getString(3); String clientName = rsVC.getString(3);
String clientUUID = rsVC.getString(4); String clientUUID = rsVC.getString(4);
if (! p_IsCopyClient) {
int cnt = 0; int cnt = 0;
if (p_tablesToPreserveIDsList.contains("AD_CLIENT")) { if (p_isPreserveAll || p_tablesToPreserveIDsList.contains("AD_CLIENT")) {
cnt = DB.getSQLValueEx(get_TrxName(), sqlValidateLocalClient.toString(), clientValue, clientName, clientUUID, clientID); cnt = DB.getSQLValueEx(get_TrxName(), sqlValidateLocalClient.toString(), clientValue, clientName, clientUUID, clientID);
} else { } else {
cnt = DB.getSQLValueEx(get_TrxName(), sqlValidateLocalClient.toString(), clientValue, clientName, clientUUID); cnt = DB.getSQLValueEx(get_TrxName(), sqlValidateLocalClient.toString(), clientValue, clientName, clientUUID);
} }
if (cnt > 0) { if (cnt > 0) {
String msg = "Client " + clientValue + "/" + clientName + " already exists. UUID=" + clientUUID; String msg = "Client " + clientValue + "/" + clientName + " already exists. UUID=" + clientUUID;
if (p_tablesToPreserveIDsList.contains("AD_CLIENT")) { if (p_isPreserveAll || p_tablesToPreserveIDsList.contains("AD_CLIENT")) {
msg += ", ID=" + clientID; msg += ", ID=" + clientID;
} }
p_errorList.add(msg); p_errorList.add(msg);
} }
} }
}
} catch (SQLException e) { } catch (SQLException e) {
throw new AdempiereException("Could not execute external query: " + sqlValidClients + "\nCause = " + e.getLocalizedMessage()); throw new AdempiereException("Could not execute external query: " + sqlValidClients + "\nCause = " + e.getLocalizedMessage());
} finally { } finally {
@ -312,9 +367,11 @@ public class MoveClient extends SvrProcess {
DB.close(rsRT, stmtRT); DB.close(rsRT, stmtRT);
} }
if (! p_IsSkipSomeValidations) {
for (String tableName : p_tablesVerifiedList) { for (String tableName : p_tablesVerifiedList) {
validateOrphan(tableName); validateOrphan(tableName);
} }
}
} }
@ -420,7 +477,7 @@ public class MoveClient extends SvrProcess {
throw new AdempiereUserError("There is data in unsupported Multi-ID column " + tableName + "." + columnName); throw new AdempiereUserError("There is data in unsupported Multi-ID column " + tableName + "." + columnName);
} }
} }
if (refID > MTable.MAX_OFFICIAL_ID) { if (!p_IsSkipSomeValidations && refID > MTable.MAX_OFFICIAL_ID) {
int cntET = countInExternal(sqlDataNotNullInColumn.toString()); int cntET = countInExternal(sqlDataNotNullInColumn.toString());
if (cntET > 0) { if (cntET > 0) {
// TODO: Implement support for non-official data types (must implement how to obtain the foreign table with MColumn.getReferenceTableName) // TODO: Implement support for non-official data types (must implement how to obtain the foreign table with MColumn.getReferenceTableName)
@ -436,6 +493,9 @@ public class MoveClient extends SvrProcess {
} else if ("C_BPartner".equalsIgnoreCase(tableName) && "AD_OrgBP_ID".equalsIgnoreCase(columnName)) { } else if ("C_BPartner".equalsIgnoreCase(tableName) && "AD_OrgBP_ID".equalsIgnoreCase(columnName)) {
// Special case for C_BPartner.AD_OrgBP_ID defined as Button in dictionary // Special case for C_BPartner.AD_OrgBP_ID defined as Button in dictionary
foreignTable = "AD_Org"; foreignTable = "AD_Org";
} else if ("C_Project".equalsIgnoreCase(tableName) && "C_ProjectType_ID".equalsIgnoreCase(columnName)) {
// Special case for C_Project.C_ProjectType_ID defined as Button in dictionary
foreignTable = "C_ProjectType";
} }
if (! Util.isEmpty(foreignTable)) { if (! Util.isEmpty(foreignTable)) {
// verify all foreign keys pointing to a different client // verify all foreign keys pointing to a different client
@ -476,8 +536,13 @@ public class MoveClient extends SvrProcess {
if (! "AD_Client".equalsIgnoreCase(tableName)) { if (! "AD_Client".equalsIgnoreCase(tableName)) {
sqlForeignClientSB.append(" JOIN AD_Client ON (").append(tableName).append(".AD_Client_ID=AD_Client.AD_Client_ID)"); sqlForeignClientSB.append(" JOIN AD_Client ON (").append(tableName).append(".AD_Client_ID=AD_Client.AD_Client_ID)");
} }
if ("AD_Client".equalsIgnoreCase(foreignTable)) { // fix issue with foreign AD_Client_ID like AD_Replication.Remote_Client_ID
sqlForeignClientSB.append(" JOIN ").append(foreignTable)
.append(" c ON (").append(tableName).append(".").append(columnName).append("=c.");
} else {
sqlForeignClientSB.append(" JOIN ").append(foreignTable) sqlForeignClientSB.append(" JOIN ").append(foreignTable)
.append(" ON (").append(tableName).append(".").append(columnName).append("=").append(foreignTable).append("."); .append(" ON (").append(tableName).append(".").append(columnName).append("=").append(foreignTable).append(".");
}
if ("AD_Language".equalsIgnoreCase(foreignTable) && !columnName.equalsIgnoreCase("AD_Language_ID")) { if ("AD_Language".equalsIgnoreCase(foreignTable) && !columnName.equalsIgnoreCase("AD_Language_ID")) {
sqlForeignClientSB.append("AD_Language"); sqlForeignClientSB.append("AD_Language");
} else if ("AD_EntityType".equalsIgnoreCase(foreignTable) && !columnName.equalsIgnoreCase("AD_EntityType_ID")) { } else if ("AD_EntityType".equalsIgnoreCase(foreignTable) && !columnName.equalsIgnoreCase("AD_EntityType_ID")) {
@ -504,7 +569,7 @@ public class MoveClient extends SvrProcess {
p_errorList.add("Column " + tableName + "." + columnName + " has invalid cross-client reference to client " + clientID + " on ID=" + foreignID); p_errorList.add("Column " + tableName + "." + columnName + " has invalid cross-client reference to client " + clientID + " on ID=" + foreignID);
continue; continue;
} }
if (foreignID > MTable.MAX_OFFICIAL_ID) { if (foreignID > 0) {
if (! p_idSystemConversionList.contains(foreignTable.toUpperCase() + "." + foreignID)) { if (! p_idSystemConversionList.contains(foreignTable.toUpperCase() + "." + foreignID)) {
int localID = getFromUUID(foreignTable, uuidCol, tableName, columnName, foreignUU, foreignID); int localID = getFromUUID(foreignTable, uuidCol, tableName, columnName, foreignUU, foreignID);
if (localID < 0) { if (localID < 0) {
@ -538,6 +603,9 @@ public class MoveClient extends SvrProcess {
if ("C_BPartner".equalsIgnoreCase(tableName) && "AD_OrgBP_ID".equalsIgnoreCase(columnName)) { if ("C_BPartner".equalsIgnoreCase(tableName) && "AD_OrgBP_ID".equalsIgnoreCase(columnName)) {
// Special case for C_BPartner.AD_OrgBP_ID defined as Button in dictionary // Special case for C_BPartner.AD_OrgBP_ID defined as Button in dictionary
foreignTable = "AD_Org"; foreignTable = "AD_Org";
} else if ("C_Project".equalsIgnoreCase(tableName) && "C_ProjectType_ID".equalsIgnoreCase(columnName)) {
// Special case for C_Project.C_ProjectType_ID defined as Button in dictionary
foreignTable = "C_ProjectType";
} }
if (! Util.isEmpty(foreignTable) && ! "AD_Ref_List".equalsIgnoreCase(foreignTable)) { if (! Util.isEmpty(foreignTable) && ! "AD_Ref_List".equalsIgnoreCase(foreignTable)) {
MTable tableFK = MTable.get(getCtx(), foreignTable); MTable tableFK = MTable.get(getCtx(), foreignTable);
@ -637,7 +705,7 @@ public class MoveClient extends SvrProcess {
while (rsGI.next()) { while (rsGI.next()) {
int sourceID = rsGI.getInt(1); int sourceID = rsGI.getInt(1);
int targetID = -1; int targetID = -1;
if (p_tablesToPreserveIDsList.contains(tableName.toUpperCase())) { if (p_isPreserveAll || p_tablesToPreserveIDsList.contains(tableName.toUpperCase())) {
int localID = DB.getSQLValueEx(get_TrxName(), selectVerifyIdSB.toString(), sourceID); int localID = DB.getSQLValueEx(get_TrxName(), selectVerifyIdSB.toString(), sourceID);
if (localID < 0) { if (localID < 0) {
targetID = sourceID; targetID = sourceID;
@ -645,8 +713,18 @@ public class MoveClient extends SvrProcess {
throw new AdempiereException("In " + tableName + "." + tableName + "_ID already exist the ID=" + sourceID); throw new AdempiereException("In " + tableName + "." + tableName + "_ID already exist the ID=" + sourceID);
} }
} else { } else {
if ("AD_ChangeLog".equalsIgnoreCase(tableName)) {
// AD_ChangeLog_ID is not really a unique key - validate if it was already converted before
int clId = DB.getSQLValueEx(get_TrxName(),
"SELECT Target_ID FROM T_MoveClient WHERE AD_PInstance_ID=? AND TableName=? AND Source_ID=?",
getAD_PInstance_ID(), "AD_CHANGELOG", sourceID);
if (clId == -1) {
targetID = DB.getNextID(getAD_Client_ID(), tableName, get_TrxName()); targetID = DB.getNextID(getAD_Client_ID(), tableName, get_TrxName());
} }
} else {
targetID = DB.getNextID(getAD_Client_ID(), tableName, get_TrxName());
}
}
if (targetID >= 0) { if (targetID >= 0) {
DB.executeUpdateEx(insertConversionId, DB.executeUpdateEx(insertConversionId,
new Object[] {getAD_PInstance_ID(), tableName.toUpperCase(), sourceID, targetID}, new Object[] {getAD_PInstance_ID(), tableName.toUpperCase(), sourceID, targetID},
@ -667,6 +745,22 @@ public class MoveClient extends SvrProcess {
throw new AdempiereException(e1); throw new AdempiereException(e1);
} }
int newADClientID = -1;
String oldClientValue = null;
if (p_IsCopyClient) {
int clientInt;
try {
clientInt = Integer.parseInt(p_ClientsToInclude);
} catch (NumberFormatException e) {
throw new AdempiereException("Error in parameter Clients to Include, must be just one integer");
}
newADClientID = DB.getSQLValueEx(get_TrxName(),
"SELECT Target_ID FROM T_MoveClient WHERE AD_PInstance_ID=? AND TableName=? AND Source_ID=?",
getAD_PInstance_ID(), "AD_CLIENT", clientInt);
oldClientValue = DB.getSQLValueStringEx(get_TrxName(),
"SELECT Value FROM AD_Client WHERE AD_Client_ID=?", clientInt);
}
// get the source data and insert into target converting the IDs // get the source data and insert into target converting the IDs
for (MTable table : tables) { for (MTable table : tables) {
String tableName = table.getTableName(); String tableName = table.getTableName();
@ -728,6 +822,9 @@ public class MoveClient extends SvrProcess {
} else if ("C_BPartner".equalsIgnoreCase(tableName) && "AD_OrgBP_ID".equalsIgnoreCase(columnName)) { } else if ("C_BPartner".equalsIgnoreCase(tableName) && "AD_OrgBP_ID".equalsIgnoreCase(columnName)) {
// Special case for C_BPartner.AD_OrgBP_ID defined as Button in dictionary // Special case for C_BPartner.AD_OrgBP_ID defined as Button in dictionary
convertTable = "AD_Org"; convertTable = "AD_Org";
} else if ("C_Project".equalsIgnoreCase(tableName) && "C_ProjectType_ID".equalsIgnoreCase(columnName)) {
// Special case for C_Project.C_ProjectType_ID defined as Button in dictionary
convertTable = "C_ProjectType";
} else if (convertTable != null } else if (convertTable != null
&& ("AD_Ref_List".equalsIgnoreCase(convertTable) && ("AD_Ref_List".equalsIgnoreCase(convertTable)
|| "AD_Language".equalsIgnoreCase(columnName) || "AD_Language".equalsIgnoreCase(columnName)
@ -779,7 +876,8 @@ public class MoveClient extends SvrProcess {
|| "AD_TreeNodeU4".equalsIgnoreCase(tableName))) { || "AD_TreeNodeU4".equalsIgnoreCase(tableName))) {
// Special case for AD_TreeNodeU*.Node/Parent_ID // Special case for AD_TreeNodeU*.Node/Parent_ID
convertTable = "C_ElementValue"; convertTable = "C_ElementValue";
} else if (("Node_ID".equalsIgnoreCase(columnName) || "Parent_ID".equalsIgnoreCase(columnName)) && "AD_TreeNode".equalsIgnoreCase(tableName)) { } else if (("Node_ID".equalsIgnoreCase(columnName) || "Parent_ID".equalsIgnoreCase(columnName))
&& "AD_TreeNode".equalsIgnoreCase(tableName)) {
// Special case for AD_TreeNode.Node/Parent_ID - depends on AD_Tree -> TreeType and AD_Table_ID // Special case for AD_TreeNode.Node/Parent_ID - depends on AD_Tree -> TreeType and AD_Table_ID
int treeId = rsGD.getInt("AD_Tree_ID"); int treeId = rsGD.getInt("AD_Tree_ID");
convertTable = getExternalTableFromTree(treeId); convertTable = getExternalTableFromTree(treeId);
@ -790,6 +888,11 @@ public class MoveClient extends SvrProcess {
convertTable = att.substring(0, att.length()-3); convertTable = att.substring(0, att.length()-3);
if ("C_DocTypeTarget".equals(convertTable)) { if ("C_DocTypeTarget".equals(convertTable)) {
convertTable = "C_DocType"; convertTable = "C_DocType";
} else {
// validate that AD_Preference points to a valid table, ignore otherwise
if (MTable.getTable_ID(convertTable, get_TrxName()) <= 0) {
convertTable = "";
}
} }
} else { } else {
convertTable = ""; convertTable = "";
@ -801,7 +904,8 @@ public class MoveClient extends SvrProcess {
if (rsGD.wasNull()) { if (rsGD.wasNull()) {
parameters[i] = null; parameters[i] = null;
} else { } else {
if (id >= MTable.MAX_OFFICIAL_ID) { if (! (id == 0 && ("Parent_ID".equalsIgnoreCase(columnName) || "Node_ID".equalsIgnoreCase(columnName))) // Parent_ID/Node_ID=0 is valid
&& (id >= MTable.MAX_OFFICIAL_ID || p_IsCopyClient)) {
int convertedId = -1; int convertedId = -1;
final String query = "SELECT Target_ID FROM T_MoveClient WHERE AD_PInstance_ID=? AND TableName=? AND Source_ID=?"; final String query = "SELECT Target_ID FROM T_MoveClient WHERE AD_PInstance_ID=? AND TableName=? AND Source_ID=?";
try { try {
@ -813,15 +917,34 @@ public class MoveClient extends SvrProcess {
} }
if (convertedId < 0) { if (convertedId < 0) {
// not found in the table - try to get it again - could be missed in first pass // not found in the table - try to get it again - could be missed in first pass
convertedId = getLocalIDFor(convertTable, id); convertedId = getLocalIDFor(convertTable, id, tableName);
if (convertedId < 0) { if (convertedId < 0) {
if ("Record_ID".equalsIgnoreCase(columnName) && table.getColumnIndex("AD_Table_ID") > 0) { if (("Record_ID".equalsIgnoreCase(columnName) && table.getColumnIndex("AD_Table_ID") > 0)
|| (("Node_ID".equalsIgnoreCase(columnName) || "Parent_ID".equalsIgnoreCase(columnName))
&& ( "AD_TreeNode".equalsIgnoreCase(tableName)
|| "AD_TreeNodeMM".equalsIgnoreCase(tableName)
|| "AD_TreeNodeBP".equalsIgnoreCase(tableName)
|| "AD_TreeNodeCMC".equalsIgnoreCase(tableName)
|| "AD_TreeNodeCMM".equalsIgnoreCase(tableName)
|| "AD_TreeNodeCMS".equalsIgnoreCase(tableName)
|| "AD_TreeNodeCMT".equalsIgnoreCase(tableName)
|| "AD_TreeNodePR".equalsIgnoreCase(tableName)
|| "AD_TreeNodeU1".equalsIgnoreCase(tableName)
|| "AD_TreeNodeU2".equalsIgnoreCase(tableName)
|| "AD_TreeNodeU3".equalsIgnoreCase(tableName)
|| "AD_TreeNodeU4".equalsIgnoreCase(tableName)
|| "AD_TreeBar".equalsIgnoreCase(tableName)))) {
if (p_tablesToExcludeList.contains(convertTable.toUpperCase())) { if (p_tablesToExcludeList.contains(convertTable.toUpperCase())) {
// record is pointing to a table that is not included, ignore it // record is pointing to a table that is not included, ignore it
insertRecord = false; insertRecord = false;
break; break;
} }
} }
if ("AD_ChangeLog".equalsIgnoreCase(tableName)) {
// skip orphan records in AD_ChangeLog, can be log of deleted records, skip
insertRecord = false;
break;
}
throw new AdempiereException("Found orphan record in " + tableName + "." + columnName + ": " + id + " related to table " + convertTable); throw new AdempiereException("Found orphan record in " + tableName + "." + columnName + ": " + id + " related to table " + convertTable);
} }
} }
@ -838,6 +961,56 @@ public class MoveClient extends SvrProcess {
if (rsGD.wasNull()) { if (rsGD.wasNull()) {
parameters[i] = null; parameters[i] = null;
} }
if (p_IsCopyClient) {
String uuidCol = MTable.getUUIDColumnName(tableName);
if (columnName.equals(uuidCol)) {
String oldUUID = (String) parameters[i];
String newUUID = UUID.randomUUID().toString();
parameters[i] = newUUID;
if (! Util.isEmpty(oldUUID)) {
X_AD_Package_UUID_Map map = new X_AD_Package_UUID_Map(getCtx(), 0, get_TrxName());
map.setAD_Table_ID(table.getAD_Table_ID());
map.set_ValueNoCheck("AD_Client_ID", newADClientID);
map.setSource_UUID(oldUUID);
map.setTarget_UUID(newUUID);
map.saveEx();
}
} else if ("AD_Client".equalsIgnoreCase(tableName) && "Value".equalsIgnoreCase(columnName)) {
parameters[i] = p_ClientValue;
} else if ("AD_Client".equalsIgnoreCase(tableName) && "Name".equalsIgnoreCase(columnName)) {
parameters[i] = p_ClientName;
} else if (
("W_Store".equalsIgnoreCase(tableName) && "WebContext".equalsIgnoreCase(columnName))
|| ("AD_User".equalsIgnoreCase(tableName) && "Value".equalsIgnoreCase(columnName))
) {
parameters[i] = p_ClientValue.toLowerCase();
} else if (
("AD_User".equalsIgnoreCase(tableName) && "Password".equalsIgnoreCase(columnName))
|| ("AD_User".equalsIgnoreCase(tableName) && "Salt".equalsIgnoreCase(columnName))
) {
parameters[i] = null; // do not assign passwords to new users, must be managed by SuperUser or plugin
} else if (
("AD_Org".equalsIgnoreCase(tableName) && "Value".equalsIgnoreCase(columnName))
|| ("AD_Org".equalsIgnoreCase(tableName) && "Name".equalsIgnoreCase(columnName))
|| ("AD_Role".equalsIgnoreCase(tableName) && "Name".equalsIgnoreCase(columnName))
|| ("AD_Tree".equalsIgnoreCase(tableName) && "Name".equalsIgnoreCase(columnName))
|| ("AD_User".equalsIgnoreCase(tableName) && "Name".equalsIgnoreCase(columnName))
|| ("AD_User".equalsIgnoreCase(tableName) && "Description".equalsIgnoreCase(columnName))
|| ("C_AcctProcessor".equalsIgnoreCase(tableName) && "Name".equalsIgnoreCase(columnName))
|| ("C_AcctSchema".equalsIgnoreCase(tableName) && "Name".equalsIgnoreCase(columnName))
|| ("C_BPartner".equalsIgnoreCase(tableName) && "Value".equalsIgnoreCase(columnName))
|| ("C_BPartner".equalsIgnoreCase(tableName) && "Name".equalsIgnoreCase(columnName))
|| ("C_Calendar".equalsIgnoreCase(tableName) && "Name".equalsIgnoreCase(columnName))
|| ("C_Element".equalsIgnoreCase(tableName) && "Name".equalsIgnoreCase(columnName))
|| ("M_CostType".equalsIgnoreCase(tableName) && "Name".equalsIgnoreCase(columnName))
|| ("R_RequestProcessor".equalsIgnoreCase(tableName) && "Name".equalsIgnoreCase(columnName))
) {
if (parameters[i] != null) {
String value = parameters[i].toString();
parameters[i] = value.replaceFirst(oldClientValue, p_ClientValue);
}
}
}
} }
} }
if (insertRecord) { if (insertRecord) {
@ -930,6 +1103,14 @@ public class MoveClient extends SvrProcess {
} }
private void checkSequences() { private void checkSequences() {
if (p_isPreserveAll) {
for (String tableName : p_tablesVerifiedList) {
MSequence seq = MSequence.get(getCtx(), tableName, get_TrxName());
if (seq != null) {
seq.validateTableIDValue(); // ignore output messages
}
}
} else {
for (String tableName : p_tablesToPreserveIDsList) { for (String tableName : p_tablesToPreserveIDsList) {
MSequence seq = MSequence.get(getCtx(), tableName, get_TrxName()); MSequence seq = MSequence.get(getCtx(), tableName, get_TrxName());
if (seq != null) { if (seq != null) {
@ -937,8 +1118,9 @@ public class MoveClient extends SvrProcess {
} }
} }
} }
}
private int getLocalIDFor(String tableName, int foreignId) { private int getLocalIDFor(String tableName, int foreignId, String tableNameSource) {
String uuidCol = MTable.getUUIDColumnName(tableName); String uuidCol = MTable.getUUIDColumnName(tableName);
StringBuilder sqlRemoteUUSB = new StringBuilder() StringBuilder sqlRemoteUUSB = new StringBuilder()
.append("SELECT ").append(uuidCol).append(" FROM ").append(tableName) .append("SELECT ").append(uuidCol).append(" FROM ").append(tableName)
@ -954,7 +1136,7 @@ public class MoveClient extends SvrProcess {
if (rs.next()) if (rs.next())
remoteUUID = rs.getString(1); remoteUUID = rs.getString(1);
} catch (SQLException e) { } catch (SQLException e) {
throw new AdempiereException("Could not execute external query: " + sqlRemoteUU + "\nCause = " + e.getLocalizedMessage()); throw new AdempiereException("Could not execute external query for table " + tableNameSource + ": " + sqlRemoteUU + "\nCause = " + e.getLocalizedMessage());
} finally { } finally {
DB.close(rs, stmtUU); DB.close(rs, stmtUU);
} }

View File

@ -20,11 +20,12 @@ import java.util.List;
import javax.xml.transform.sax.TransformerHandler; import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.exceptions.AdempiereException;
import org.adempiere.pipo2.AbstractElementHandler; import org.adempiere.pipo2.AbstractElementHandler;
import org.adempiere.pipo2.Element;
import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PIPOContext;
import org.adempiere.pipo2.PackOut; import org.adempiere.pipo2.PackOut;
import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoExporter;
import org.adempiere.pipo2.Element;
import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.PoFiller;
import org.compiere.model.I_AD_Form_Access; import org.compiere.model.I_AD_Form_Access;
import org.compiere.model.MFormAccess; import org.compiere.model.MFormAccess;
@ -90,10 +91,28 @@ public class FormAccessElementHandler extends AbstractElementHandler {
filler.export(excludes); filler.export(excludes);
} }
@Override
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler, int recordId)
throws Exception {
throw new AdempiereException("AD_Form_Access doesn't have ID, use method with UUID");
}
@Override @Override
public void packOut(PackOut packout, TransformerHandler packoutHandler, public void packOut(PackOut packout, TransformerHandler packoutHandler,
TransformerHandler docHandler, TransformerHandler docHandler,
int recordId) throws Exception { int recordId, String uuid) throws Exception {
MFormAccess po = new Query(packout.getCtx().ctx, MFormAccess.Table_Name, "AD_Form_Access_UU=?", getTrxName(packout.getCtx()))
.setParameters(uuid)
.first();
if (po != null) {
Env.setContext(packout.getCtx().ctx, X_AD_Form.COLUMNNAME_AD_Form_ID, po.getAD_Form_ID());
Env.setContext(packout.getCtx().ctx, X_AD_Role.COLUMNNAME_AD_Role_ID, po.getAD_Role_ID());
this.create(packout.getCtx(), packoutHandler);
packout.getCtx().ctx.remove(X_AD_Form.COLUMNNAME_AD_Form_ID);
packout.getCtx().ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
} else {
throw new AdempiereException("AD_Form_Access_UU not found = " + uuid);
}
} }
} }

View File

@ -29,6 +29,7 @@ import java.util.List;
import javax.xml.transform.sax.TransformerHandler; import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.exceptions.AdempiereException;
import org.adempiere.pipo2.AbstractElementHandler; import org.adempiere.pipo2.AbstractElementHandler;
import org.adempiere.pipo2.Element; import org.adempiere.pipo2.Element;
import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PIPOContext;
@ -90,7 +91,24 @@ public class InfoWindowAccessElementHandler extends AbstractElementHandler {
} }
@Override @Override
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler, int recordId) throws Exception { public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler, int recordId)
create(packout.getCtx(), packoutHandler); throws Exception {
throw new AdempiereException("AD_InfoWindow_Access doesn't have ID, use method with UUID");
}
@Override
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler, int recordId, String uuid) throws Exception {
X_AD_InfoWindow_Access po = new Query(packout.getCtx().ctx, X_AD_InfoWindow_Access.Table_Name, "AD_InfoWindow_Access_UU=?", getTrxName(packout.getCtx()))
.setParameters(uuid)
.first();
if (po != null) {
Env.setContext(packout.getCtx().ctx, X_AD_InfoWindow.COLUMNNAME_AD_InfoWindow_ID, po.getAD_InfoWindow_ID());
Env.setContext(packout.getCtx().ctx, X_AD_Role.COLUMNNAME_AD_Role_ID, po.getAD_Role_ID());
this.create(packout.getCtx(), packoutHandler);
packout.getCtx().ctx.remove(X_AD_InfoWindow.COLUMNNAME_AD_InfoWindow_ID);
packout.getCtx().ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
} else {
throw new AdempiereException("AD_InfoWindow_Access_UU not found = " + uuid);
}
} }
} }

View File

@ -20,6 +20,7 @@ import java.util.List;
import javax.xml.transform.sax.TransformerHandler; import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.exceptions.AdempiereException;
import org.adempiere.pipo2.AbstractElementHandler; import org.adempiere.pipo2.AbstractElementHandler;
import org.adempiere.pipo2.Element; import org.adempiere.pipo2.Element;
import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PIPOContext;
@ -59,7 +60,7 @@ public class OrgRoleElementHandler extends AbstractElementHandler {
public void create(PIPOContext ctx, TransformerHandler document) public void create(PIPOContext ctx, TransformerHandler document)
throws SAXException { throws SAXException {
int AD_Org_ID = Env.getContextAsInt(ctx.ctx, "AD_Org_ID"); int AD_Org_ID = Env.getContextAsInt(ctx.ctx, X_AD_Role.COLUMNNAME_AD_Org_ID);
int AD_Role_ID = Env.getContextAsInt(ctx.ctx, X_AD_Role.COLUMNNAME_AD_Role_ID); int AD_Role_ID = Env.getContextAsInt(ctx.ctx, X_AD_Role.COLUMNNAME_AD_Role_ID);
Query query = new Query(ctx.ctx, "AD_Role_OrgAccess", "AD_Role_ID=? and AD_Org_ID=?", getTrxName(ctx)); Query query = new Query(ctx.ctx, "AD_Role_OrgAccess", "AD_Role_ID=? and AD_Org_ID=?", getTrxName(ctx));
@ -86,10 +87,27 @@ public class OrgRoleElementHandler extends AbstractElementHandler {
filler.export(excludes); filler.export(excludes);
} }
@Override
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler, int recordId)
throws Exception {
throw new AdempiereException("AD_Role_OrgAccess doesn't have ID, use method with UUID");
}
@Override @Override
public void packOut(PackOut packout, TransformerHandler packoutHandler, public void packOut(PackOut packout, TransformerHandler packoutHandler,
TransformerHandler docHandler, TransformerHandler docHandler,
int recordId) throws Exception { int recordId, String uuid) throws Exception {
create(packout.getCtx(), packoutHandler); X_AD_Role_OrgAccess po = new Query(packout.getCtx().ctx, X_AD_Role_OrgAccess.Table_Name, "AD_Role_OrgAccess_UU=?", getTrxName(packout.getCtx()))
.setParameters(uuid)
.first();
if (po != null) {
Env.setContext(packout.getCtx().ctx, X_AD_Role.COLUMNNAME_AD_Org_ID, po.getAD_Org_ID());
Env.setContext(packout.getCtx().ctx, X_AD_Role.COLUMNNAME_AD_Role_ID, po.getAD_Role_ID());
this.create(packout.getCtx(), packoutHandler);
packout.getCtx().ctx.remove(X_AD_Role.COLUMNNAME_AD_Org_ID);
packout.getCtx().ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
} else {
throw new AdempiereException("AD_Role_OrgAccess_UU not found = " + uuid);
}
} }
} }

View File

@ -20,13 +20,15 @@ import java.util.List;
import javax.xml.transform.sax.TransformerHandler; import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.exceptions.AdempiereException;
import org.adempiere.pipo2.AbstractElementHandler; import org.adempiere.pipo2.AbstractElementHandler;
import org.adempiere.pipo2.Element;
import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PIPOContext;
import org.adempiere.pipo2.PackOut; import org.adempiere.pipo2.PackOut;
import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoExporter;
import org.adempiere.pipo2.Element;
import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.PoFiller;
import org.compiere.model.I_AD_Process_Access; import org.compiere.model.I_AD_Process_Access;
import org.compiere.model.MProcessAccess;
import org.compiere.model.Query; import org.compiere.model.Query;
import org.compiere.model.X_AD_Process; import org.compiere.model.X_AD_Process;
import org.compiere.model.X_AD_Process_Access; import org.compiere.model.X_AD_Process_Access;
@ -88,10 +90,28 @@ public class ProcessAccessElementHandler extends AbstractElementHandler {
filler.export(excludes); filler.export(excludes);
} }
@Override
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler, int recordId)
throws Exception {
throw new AdempiereException("AD_Process_Access doesn't have ID, use method with UUID");
}
@Override @Override
public void packOut(PackOut packout, TransformerHandler packoutHandler, public void packOut(PackOut packout, TransformerHandler packoutHandler,
TransformerHandler docHandler, TransformerHandler docHandler,
int recordId) throws Exception { int recordId, String uuid) throws Exception {
create(packout.getCtx(), packoutHandler); MProcessAccess po = new Query(packout.getCtx().ctx, MProcessAccess.Table_Name, "AD_Process_Access_UU=?", getTrxName(packout.getCtx()))
.setParameters(uuid)
.first();
if (po != null) {
Env.setContext(packout.getCtx().ctx, X_AD_Process.COLUMNNAME_AD_Process_ID, po.getAD_Process_ID());
Env.setContext(packout.getCtx().ctx, X_AD_Role.COLUMNNAME_AD_Role_ID, po.getAD_Role_ID());
this.create(packout.getCtx(), packoutHandler);
packout.getCtx().ctx.remove(X_AD_Process.COLUMNNAME_AD_Process_ID);
packout.getCtx().ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
} else {
throw new AdempiereException("AD_Process_Access_UU not found = " + uuid);
} }
}
} }

View File

@ -20,11 +20,12 @@ import java.util.List;
import javax.xml.transform.sax.TransformerHandler; import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.exceptions.AdempiereException;
import org.adempiere.pipo2.AbstractElementHandler; import org.adempiere.pipo2.AbstractElementHandler;
import org.adempiere.pipo2.Element;
import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PIPOContext;
import org.adempiere.pipo2.PackOut; import org.adempiere.pipo2.PackOut;
import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoExporter;
import org.adempiere.pipo2.Element;
import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.PoFiller;
import org.compiere.model.I_AD_Task_Access; import org.compiere.model.I_AD_Task_Access;
import org.compiere.model.Query; import org.compiere.model.Query;
@ -82,10 +83,28 @@ public class TaskAccessElementHandler extends AbstractElementHandler {
filler.export(excludes); filler.export(excludes);
} }
@Override
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler, int recordId)
throws Exception {
throw new AdempiereException("AD_Task_Access doesn't have ID, use method with UUID");
}
@Override @Override
public void packOut(PackOut packout, TransformerHandler packoutHandler, public void packOut(PackOut packout, TransformerHandler packoutHandler,
TransformerHandler docHandler, TransformerHandler docHandler,
int recordId) throws Exception { int recordId, String uuid) throws Exception {
create(packout.getCtx(), packoutHandler); X_AD_Task_Access po = new Query(packout.getCtx().ctx, X_AD_Task_Access.Table_Name, "AD_Task_Access_UU=?", getTrxName(packout.getCtx()))
.setParameters(uuid)
.first();
if (po != null) {
Env.setContext(packout.getCtx().ctx, X_AD_Task.COLUMNNAME_AD_Task_ID, po.getAD_Task_ID());
Env.setContext(packout.getCtx().ctx, X_AD_Role.COLUMNNAME_AD_Role_ID, po.getAD_Role_ID());
this.create(packout.getCtx(), packoutHandler);
packout.getCtx().ctx.remove(X_AD_Task.COLUMNNAME_AD_Task_ID);
packout.getCtx().ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
} else {
throw new AdempiereException("AD_Task_Access_UU not found = " + uuid);
} }
}
} }

View File

@ -20,11 +20,12 @@ import java.util.List;
import javax.xml.transform.sax.TransformerHandler; import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.exceptions.AdempiereException;
import org.adempiere.pipo2.AbstractElementHandler; import org.adempiere.pipo2.AbstractElementHandler;
import org.adempiere.pipo2.Element;
import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PIPOContext;
import org.adempiere.pipo2.PackOut; import org.adempiere.pipo2.PackOut;
import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoExporter;
import org.adempiere.pipo2.Element;
import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.PoFiller;
import org.compiere.model.I_AD_User_Roles; import org.compiere.model.I_AD_User_Roles;
import org.compiere.model.Query; import org.compiere.model.Query;
@ -63,11 +64,10 @@ public class UserRoleElementHandler extends AbstractElementHandler {
throws SAXException { throws SAXException {
int AD_User_ID = Env.getContextAsInt(ctx.ctx, X_AD_User.COLUMNNAME_AD_User_ID); int AD_User_ID = Env.getContextAsInt(ctx.ctx, X_AD_User.COLUMNNAME_AD_User_ID);
int AD_Role_ID = Env.getContextAsInt(ctx.ctx, X_AD_Role.COLUMNNAME_AD_Role_ID); int AD_Role_ID = Env.getContextAsInt(ctx.ctx, X_AD_Role.COLUMNNAME_AD_Role_ID);
int AD_Org_ID = Env.getContextAsInt(ctx.ctx, "AD_Org_ID");
Query query = new Query(ctx.ctx, "AD_User_Roles", Query query = new Query(ctx.ctx, "AD_User_Roles",
"AD_User_ID = ? AND AD_Role_ID = ? AND AD_Org_ID = ?", getTrxName(ctx)); "AD_User_ID = ? AND AD_Role_ID = ?", getTrxName(ctx));
X_AD_User_Roles po = query.setParameters( X_AD_User_Roles po = query.setParameters(
new Object[] { AD_User_ID, AD_Role_ID, AD_Org_ID }).first(); new Object[] { AD_User_ID, AD_Role_ID}).first();
if (po != null) { if (po != null) {
if (!isPackOutElement(ctx, po)) if (!isPackOutElement(ctx, po))
return; return;
@ -90,10 +90,28 @@ public class UserRoleElementHandler extends AbstractElementHandler {
filler.export(excludes, true); filler.export(excludes, true);
} }
@Override
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler, int recordId)
throws Exception {
throw new AdempiereException("AD_User_Roles doesn't have ID, use method with UUID");
}
@Override @Override
public void packOut(PackOut packout, TransformerHandler packoutHandler, public void packOut(PackOut packout, TransformerHandler packoutHandler,
TransformerHandler docHandler, TransformerHandler docHandler,
int recordId) throws Exception { int recordId, String uuid) throws Exception {
create(packout.getCtx(), packoutHandler); X_AD_User_Roles po = new Query(packout.getCtx().ctx, X_AD_User_Roles.Table_Name, "AD_User_Roles_UU=?", getTrxName(packout.getCtx()))
.setParameters(uuid)
.first();
if (po != null) {
Env.setContext(packout.getCtx().ctx, X_AD_User.COLUMNNAME_AD_User_ID, po.getAD_User_ID());
Env.setContext(packout.getCtx().ctx, X_AD_Role.COLUMNNAME_AD_Role_ID, po.getAD_Role_ID());
this.create(packout.getCtx(), packoutHandler);
packout.getCtx().ctx.remove(X_AD_User.COLUMNNAME_AD_User_ID);
packout.getCtx().ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
} else {
throw new AdempiereException("AD_User_Roles_UU not found = " + uuid);
} }
}
} }

View File

@ -20,13 +20,15 @@ import java.util.List;
import javax.xml.transform.sax.TransformerHandler; import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.exceptions.AdempiereException;
import org.adempiere.pipo2.AbstractElementHandler; import org.adempiere.pipo2.AbstractElementHandler;
import org.adempiere.pipo2.Element;
import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PIPOContext;
import org.adempiere.pipo2.PackOut; import org.adempiere.pipo2.PackOut;
import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoExporter;
import org.adempiere.pipo2.Element;
import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.PoFiller;
import org.compiere.model.I_AD_Window_Access; import org.compiere.model.I_AD_Window_Access;
import org.compiere.model.MWindowAccess;
import org.compiere.model.Query; import org.compiere.model.Query;
import org.compiere.model.X_AD_Role; import org.compiere.model.X_AD_Role;
import org.compiere.model.X_AD_Window; import org.compiere.model.X_AD_Window;
@ -83,10 +85,28 @@ public class WindowAccessElementHandler extends AbstractElementHandler {
filler.export(excludes); filler.export(excludes);
} }
@Override
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler, int recordId)
throws Exception {
throw new AdempiereException("AD_Window_Access doesn't have ID, use method with UUID");
}
@Override @Override
public void packOut(PackOut packout, TransformerHandler packoutHandler, public void packOut(PackOut packout, TransformerHandler packoutHandler,
TransformerHandler docHandler, TransformerHandler docHandler,
int recordId) throws Exception { int recordId, String uuid) throws Exception {
create(packout.getCtx(), packoutHandler); MWindowAccess po = new Query(packout.getCtx().ctx, MWindowAccess.Table_Name, "AD_Window_Access_UU=?", getTrxName(packout.getCtx()))
.setParameters(uuid)
.first();
if (po != null) {
Env.setContext(packout.getCtx().ctx, X_AD_Window.COLUMNNAME_AD_Window_ID, po.getAD_Window_ID());
Env.setContext(packout.getCtx().ctx, X_AD_Role.COLUMNNAME_AD_Role_ID, po.getAD_Role_ID());
this.create(packout.getCtx(), packoutHandler);
packout.getCtx().ctx.remove(X_AD_Window.COLUMNNAME_AD_Window_ID);
packout.getCtx().ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
} else {
throw new AdempiereException("AD_Window_Access_UU not found = " + uuid);
} }
}
} }

View File

@ -20,11 +20,12 @@ import java.util.List;
import javax.xml.transform.sax.TransformerHandler; import javax.xml.transform.sax.TransformerHandler;
import org.adempiere.exceptions.AdempiereException;
import org.adempiere.pipo2.AbstractElementHandler; import org.adempiere.pipo2.AbstractElementHandler;
import org.adempiere.pipo2.Element;
import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PIPOContext;
import org.adempiere.pipo2.PackOut; import org.adempiere.pipo2.PackOut;
import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoExporter;
import org.adempiere.pipo2.Element;
import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.PoFiller;
import org.compiere.model.I_AD_Workflow_Access; import org.compiere.model.I_AD_Workflow_Access;
import org.compiere.model.Query; import org.compiere.model.Query;
@ -86,10 +87,28 @@ public class WorkflowAccessElementHandler extends AbstractElementHandler {
filler.export(excludes); filler.export(excludes);
} }
@Override
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler, int recordId)
throws Exception {
throw new AdempiereException("AD_Workflow_Access doesn't have ID, use method with UUID");
}
@Override @Override
public void packOut(PackOut packout, TransformerHandler packoutHandler, public void packOut(PackOut packout, TransformerHandler packoutHandler,
TransformerHandler docHandler, TransformerHandler docHandler,
int recordId) throws Exception { int recordId, String uuid) throws Exception {
create(packout.getCtx(), packoutHandler); MWorkflowAccess po = new Query(packout.getCtx().ctx, MWorkflowAccess.Table_Name, "AD_Workflow_Access_UU=?", getTrxName(packout.getCtx()))
.setParameters(uuid)
.first();
if (po != null) {
Env.setContext(packout.getCtx().ctx, X_AD_Workflow.COLUMNNAME_AD_Workflow_ID, po.getAD_Workflow_ID());
Env.setContext(packout.getCtx().ctx, X_AD_Role.COLUMNNAME_AD_Role_ID, po.getAD_Role_ID());
this.create(packout.getCtx(), packoutHandler);
packout.getCtx().ctx.remove(X_AD_Workflow.COLUMNNAME_AD_Workflow_ID);
packout.getCtx().ctx.remove(X_AD_Role.COLUMNNAME_AD_Role_ID);
} else {
throw new AdempiereException("AD_Workflow_Access_UU not found = " + uuid);
} }
}
} }

View File

@ -52,4 +52,18 @@ public interface ElementHandler {
* @throws Exception * @throws Exception
*/ */
public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception; public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception;
/**
* @param packout
* @param packoutHandler
* @param docHandler
* @param recordId
* @param uuid
* @throws Exception
*/
default public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId, String uuid) throws Exception {
// element handlers for tables without ID must implement this method
packOut(packout, packoutHandler, docHandler, recordId); // defaults to calling the method without uuid
}
} }

View File

@ -20,6 +20,7 @@ import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.UUID;
import org.adempiere.base.IGridTabExporter; import org.adempiere.base.IGridTabExporter;
import org.adempiere.exceptions.AdempiereException; import org.adempiere.exceptions.AdempiereException;
@ -87,13 +88,27 @@ public class GridTab2PackExporter implements IGridTabExporter {
packoutItems.add(packoutItem); packoutItems.add(packoutItem);
} else { } else {
if (currentRowOnly) { if (currentRowOnly) {
PackoutItem packoutItem = new PackoutItem(tableName, gridTab.getRecord_ID(), int recordID = gridTab.getRecord_ID();
properties); String uuid = null;
if (recordID == -1) {
UUID uuidObj = gridTab.getTableModel().getUUID(gridTab.getCurrentRow());
if (uuidObj != null) {
uuid = uuidObj.toString();
}
}
PackoutItem packoutItem = new PackoutItem(tableName, recordID, uuid, properties);
packoutItems.add(packoutItem); packoutItems.add(packoutItem);
} else { } else {
for(int i = 0; i < gridTab.getRowCount(); i++) { for(int i = 0; i < gridTab.getRowCount(); i++) {
PackoutItem packoutItem = new PackoutItem(tableName, gridTab.getKeyID(i), int recordID = gridTab.getKeyID(i);
properties); String uuid = null;
if (recordID == -1) {
UUID uuidObj = gridTab.getTableModel().getUUID(i);
if (uuidObj != null) {
uuid = uuidObj.toString();
}
}
PackoutItem packoutItem = new PackoutItem(tableName, recordID, uuid, properties);
packoutItems.add(packoutItem); packoutItems.add(packoutItem);
} }
} }

View File

@ -58,10 +58,10 @@ public class IDFinder {
* @param trxName * @param trxName
*/ */
public static int findIdByColumn (String tableName, String columnName, Object value, int AD_Client_ID, boolean ignorecase, String trxName) { public static int findIdByColumn (String tableName, String columnName, Object value, int AD_Client_ID, boolean ignorecase, String trxName) {
int id = 0;
if (value == null) if (value == null)
return id; return 0;
int id = -1;
//construct cache key //construct cache key
StringBuilder key = new StringBuilder(); StringBuilder key = new StringBuilder();
@ -168,7 +168,7 @@ public class IDFinder {
} }
//update cache //update cache
if (id > 0) if (id >= 0)
idCache.put(key.toString(), id); idCache.put(key.toString(), id);
return id; return id;

View File

@ -141,7 +141,7 @@ public class PackOut
ElementHandler handler = handlerRegistry.getHandler(type); ElementHandler handler = handlerRegistry.getHandler(type);
if (handler != null) if (handler != null)
handler.packOut(this,packoutHandler,docHandler,packoutItem.getRecordId()); handler.packOut(this,packoutHandler,docHandler,packoutItem.getRecordId(),packoutItem.getUUID());
else else
throw new IllegalArgumentException("Packout handler not found for type " + type); throw new IllegalArgumentException("Packout handler not found for type " + type);

View File

@ -24,6 +24,7 @@ public class PackoutItem {
private String type; private String type;
private int recordId; private int recordId;
private String uuid;
private Map<String, Object> properties; private Map<String, Object> properties;
/** /**
@ -31,9 +32,18 @@ public class PackoutItem {
* @param recordId * @param recordId
*/ */
public PackoutItem(String type, int recordId, Map<String, Object> properties) { public PackoutItem(String type, int recordId, Map<String, Object> properties) {
this(type, recordId, null, properties);
}
/**
* @param type
* @param recordId
*/
public PackoutItem(String type, int recordId, String uuid, Map<String, Object> properties) {
super(); super();
this.type = type; this.type = type;
this.recordId = recordId; this.recordId = recordId;
this.uuid = uuid;
this.properties = properties; this.properties = properties;
} }
@ -51,6 +61,13 @@ public class PackoutItem {
return recordId; return recordId;
} }
/**
* @return the uuid
*/
public String getUUID() {
return uuid;
}
/** /**
* *
* @param key * @param key

View File

@ -80,7 +80,7 @@ public final class ALogin extends CDialog
/** /**
* *
*/ */
private static final long serialVersionUID = -3057525535969948097L; private static final long serialVersionUID = -4397663968578607998L;
/** /**
* Construct the dialog. * Construct the dialog.
@ -109,6 +109,7 @@ public final class ALogin extends CDialog
} // ALogin } // ALogin
public static final String ROLE_TYPES_SWING = "NULL,SW,SS"; //swing,support+null
protected static final String RESOURCE = "org.compiere.apps.ALoginRes"; protected static final String RESOURCE = "org.compiere.apps.ALoginRes";
private static ResourceBundle res = ResourceBundle.getBundle(RESOURCE); private static ResourceBundle res = ResourceBundle.getBundle(RESOURCE);
/** Logger */ /** Logger */
@ -871,7 +872,7 @@ public final class ALogin extends CDialog
KeyNamePair[] clients = null; KeyNamePair[] clients = null;
try try
{ {
clients = m_login.getClients(m_user, new String(m_pwd)); clients = m_login.getClients(m_user, new String(m_pwd), ROLE_TYPES_SWING);
if (clients == null || clients.length == 0) if (clients == null || clients.length == 0)
{ {
String loginErrMsg = m_login.getLoginErrMsg(); String loginErrMsg = m_login.getLoginErrMsg();
@ -976,7 +977,7 @@ public final class ALogin extends CDialog
Env.setContext(m_ctx, "#SalesRep_ID", user.getAD_User_ID()); Env.setContext(m_ctx, "#SalesRep_ID", user.getAD_User_ID());
} }
// //
KeyNamePair[] roles = m_login.getRoles(userTextField.getText(), client); KeyNamePair[] roles = m_login.getRoles(userTextField.getText(), client, ROLE_TYPES_SWING);
// Make role Combo visible // Make role Combo visible
roleCombo.setVisible(true); roleCombo.setVisible(true);
roleLabel.setVisible(true); roleLabel.setVisible(true);

View File

@ -5,7 +5,8 @@ Bundle-SymbolicName: org.adempiere.ui.zk.example
Bundle-Version: 1.0.0.qualifier Bundle-Version: 1.0.0.qualifier
Bundle-Activator: org.adempiere.ui.zk.example.Activator Bundle-Activator: org.adempiere.ui.zk.example.Activator
Bundle-ActivationPolicy: lazy Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Comment: Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version>=1.11))"
Import-Package: org.adempiere.base, Import-Package: org.adempiere.base,
org.adempiere.base.equinox, org.adempiere.base.equinox,
org.adempiere.exceptions, org.adempiere.exceptions,
@ -19,13 +20,15 @@ Import-Package: org.adempiere.base,
org.adempiere.webui.window, org.adempiere.webui.window,
org.compiere.model, org.compiere.model,
org.compiere.util, org.compiere.util,
org.osgi.framework;version="1.3.0", org.osgi.framework;version="1.3.0"
org.zkoss.util.media, Require-Bundle: zcommon;bundle-version="0.0.0",
org.zkoss.zk.ui, zel;bundle-version="0.0.0",
org.zkoss.zk.ui.event, zhtml;bundle-version="0.0.0",
org.zkoss.zul, zk;bundle-version="0.0.0",
org.zkoss.zul.event, zkbind;bundle-version="0.0.0",
org.zkoss.zul.impl zkplus;bundle-version="0.0.0",
zul;bundle-version="0.0.0",
zweb;bundle-version="0.0.0"
Service-Component: OSGI-INF/export.xml, Service-Component: OSGI-INF/export.xml,
OSGI-INF/paymentwindowvalidator.xml OSGI-INF/paymentwindowvalidator.xml
Export-Package: action.images Export-Package: action.images

View File

@ -77,7 +77,21 @@ public class ToolbarCustomButton implements EventListener<Event>, Evaluatee {
if (displayLogic == null || displayLogic.trim().length() == 0) if (displayLogic == null || displayLogic.trim().length() == 0)
return; return;
boolean visible = Evaluator.evaluateLogic(this, displayLogic); boolean visible = true;
if (displayLogic.startsWith("@SQL=")) {
ADWindow adwindow = ADWindow.get(windowNo);
if (adwindow == null)
return;
IADTabpanel adTabpanel = adwindow.getADWindowContent().getADTab().getSelectedTabpanel();
if (adTabpanel == null)
return;
visible = Evaluator.parseSQLLogic(displayLogic, Env.getCtx(), windowNo, adTabpanel.getTabNo(), mToolbarButton.getActionName());
}else {
visible = Evaluator.evaluateLogic(this, displayLogic);
}
toolbarButton.setVisible(visible); toolbarButton.setVisible(visible);
} }

View File

@ -119,7 +119,13 @@ public class ToolbarProcessButton implements IProcessButton, Evaluatee {
if (displayLogic == null || displayLogic.trim().length() == 0) if (displayLogic == null || displayLogic.trim().length() == 0)
return; return;
boolean visible = Evaluator.evaluateLogic(this, displayLogic); boolean visible = true;
if (displayLogic.startsWith("@SQL=")) {
visible = Evaluator.parseSQLLogic(displayLogic, Env.getCtx(), windowNo, adTabpanel.getTabNo(), mToolbarButton.getActionName());
}else {
visible = Evaluator.evaluateLogic(this, displayLogic);
}
button.setVisible(visible); button.setVisible(visible);
} }

View File

@ -3,6 +3,8 @@
*/ */
package org.adempiere.webui.desktop; package org.adempiere.webui.desktop;
import static org.compiere.model.SystemIDs.TREE_MENUPRIMARY;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
@ -12,12 +14,11 @@ import java.util.Map;
import org.adempiere.util.Callback; import org.adempiere.util.Callback;
import org.compiere.model.MTree; import org.compiere.model.MTree;
import org.compiere.model.MTreeNode; import org.compiere.model.MTreeNode;
import org.compiere.model.MUser;
import org.compiere.util.DB; import org.compiere.util.DB;
import org.compiere.util.Env; import org.compiere.util.Env;
import org.zkoss.zk.ui.Session; import org.zkoss.zk.ui.Session;
import static org.compiere.model.SystemIDs.TREE_MENUPRIMARY;
/** /**
* @author hengsin * @author hengsin
* *
@ -83,8 +84,8 @@ public class FavouriteController {
private boolean barDBupdate(boolean add, int Node_ID) private boolean barDBupdate(boolean add, int Node_ID)
{ {
int AD_Client_ID = Env.getAD_Client_ID(Env.getCtx()); int AD_Client_ID = MUser.get(Env.getCtx()).getAD_Client_ID();
int AD_Org_ID = Env.getContextAsInt(Env.getCtx(), "#AD_Org_ID"); int AD_Org_ID = 0;
int AD_User_ID = Env.getContextAsInt(Env.getCtx(), "#AD_User_ID"); int AD_User_ID = Env.getContextAsInt(Env.getCtx(), "#AD_User_ID");
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
if (add) if (add)

View File

@ -101,7 +101,9 @@ public class LoginPanel extends Window implements EventListener<Event>
/** /**
* *
*/ */
private static final long serialVersionUID = -3361823499124119753L; private static final long serialVersionUID = -6130436148212949636L;
public static final String ROLE_TYPES_WEBUI = "NULL,ZK,SS"; //webui,support+null
private static LogAuthFailure logAuthFailure = new LogAuthFailure(); private static LogAuthFailure logAuthFailure = new LogAuthFailure();
@ -575,7 +577,7 @@ public class LoginPanel extends Window implements EventListener<Event>
Session currSess = Executions.getCurrent().getDesktop().getSession(); Session currSess = Executions.getCurrent().getDesktop().getSession();
KeyNamePair clientsKNPairs[] = login.getClients(userId, userPassword); KeyNamePair clientsKNPairs[] = login.getClients(userId, userPassword, ROLE_TYPES_WEBUI);
if (clientsKNPairs == null || clientsKNPairs.length == 0) if (clientsKNPairs == null || clientsKNPairs.length == 0)
{ {

View File

@ -423,7 +423,7 @@ public class RolePanel extends Window implements EventListener<Event>, Deferrabl
initDefault=m_userpreference.getProperty( UserPreference.P_ROLE ); initDefault=m_userpreference.getProperty( UserPreference.P_ROLE );
} }
KeyNamePair clientKNPair = new KeyNamePair(Integer.valueOf((String)lstItemClient.getValue()), lstItemClient.getLabel()); KeyNamePair clientKNPair = new KeyNamePair(Integer.valueOf((String)lstItemClient.getValue()), lstItemClient.getLabel());
KeyNamePair roleKNPairs[] = login.getRoles(m_userName, clientKNPair); KeyNamePair roleKNPairs[] = login.getRoles(m_userName, clientKNPair, LoginPanel.ROLE_TYPES_WEBUI);
if (roleKNPairs != null && roleKNPairs.length > 0) if (roleKNPairs != null && roleKNPairs.length > 0)
{ {
for (int i = 0; i < roleKNPairs.length; i++) for (int i = 0; i < roleKNPairs.length; i++)

View File

@ -14,6 +14,7 @@
package org.adempiere.webui.window; package org.adempiere.webui.window;
import java.io.File; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.util.Properties; import java.util.Properties;
import java.util.Vector; import java.util.Vector;
@ -59,6 +60,7 @@ import org.compiere.util.Env;
import org.compiere.util.Ini; import org.compiere.util.Ini;
import org.compiere.util.KeyNamePair; import org.compiere.util.KeyNamePair;
import org.compiere.util.Msg; import org.compiere.util.Msg;
import org.compiere.util.SecureEngine;
import org.compiere.util.Util; import org.compiere.util.Util;
import org.osgi.framework.Bundle; import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext; import org.osgi.framework.BundleContext;
@ -91,7 +93,7 @@ public class AboutWindow extends Window implements EventListener<Event> {
/** /**
* *
*/ */
private static final long serialVersionUID = 8527444729510721269L; private static final long serialVersionUID = 7922577248288156723L;
private Checkbox bErrorsOnly; private Checkbox bErrorsOnly;
private Listbox logTable; private Listbox logTable;
@ -104,6 +106,7 @@ public class AboutWindow extends Window implements EventListener<Event> {
protected Tab tabPlugins; protected Tab tabPlugins;
protected Button btnAdempiereLog; protected Button btnAdempiereLog;
protected Button btnReloadLogProps;
private Listbox levelListBox; private Listbox levelListBox;
@ -268,14 +271,20 @@ public class AboutWindow extends Window implements EventListener<Event> {
levelListBox.setEnabled(true); levelListBox.setEnabled(true);
levelListBox.setTooltiptext("Set trace level. Warning: this will effect all session not just the current session"); levelListBox.setTooltiptext("Set trace level. Warning: this will effect all session not just the current session");
levelLabel.setTooltiptext("Set trace level. Warning: this will effect all session not just the current session"); levelLabel.setTooltiptext("Set trace level. Warning: this will effect all session not just the current session");
btnAdempiereLog = new Button("iDempiere Log"); btnAdempiereLog = new Button("iDempiere Log");
btnAdempiereLog.setTooltiptext("Download iDempiere log file from server"); btnAdempiereLog.setTooltiptext("Download iDempiere log file from server");
LayoutUtils.addSclass("txt-btn", btnAdempiereLog); LayoutUtils.addSclass("txt-btn", btnAdempiereLog);
btnAdempiereLog.addEventListener(Events.ON_CLICK, this); btnAdempiereLog.addEventListener(Events.ON_CLICK, this);
hbox.appendChild(new Space()); hbox.appendChild(new Space());
hbox.appendChild(btnAdempiereLog); hbox.appendChild(btnAdempiereLog);
btnReloadLogProps = new Button("Reload Log Props");
btnReloadLogProps.setTooltiptext("Reload the configuration of log levels from idempiere.properties file");
LayoutUtils.addSclass("txt-btn", btnReloadLogProps);
btnReloadLogProps.addEventListener(Events.ON_CLICK, this);
hbox.appendChild(new Space());
hbox.appendChild(btnReloadLogProps);
} }
} }
@ -716,6 +725,8 @@ public class AboutWindow extends Window implements EventListener<Event> {
cmd_errorEMail(); cmd_errorEMail();
else if (event.getTarget() == btnAdempiereLog) else if (event.getTarget() == btnAdempiereLog)
downloadAdempiereLogFile(); downloadAdempiereLogFile();
else if (event.getTarget() == btnReloadLogProps)
reloadLogProps();
else if (event.getTarget() == levelListBox) else if (event.getTarget() == levelListBox)
setTraceLevel(); setTraceLevel();
else if (Events.ON_SELECT.equals(event.getName()) && event.getTarget() == pluginsTable) else if (Events.ON_SELECT.equals(event.getName()) && event.getTarget() == pluginsTable)
@ -728,6 +739,53 @@ public class AboutWindow extends Window implements EventListener<Event> {
} }
} }
private void reloadLogProps() {
Properties props = new Properties();
String propertyFileName = Ini.getFileName(false);
FileInputStream fis = null;
try {
fis = new FileInputStream(propertyFileName);
props.load(fis);
} catch (Exception e) {
throw new AdempiereException("Could not load properties file, cause: " + e.getLocalizedMessage());
} finally {
if (fis != null) {
try {
fis.close();
} catch (Exception e) {}
}
}
String globalLevel = props.getProperty(Ini.P_TRACELEVEL);
if (! Util.isEmpty(globalLevel)) {
globalLevel = SecureEngine.decrypt(globalLevel, 0);
if (! Util.isEmpty(globalLevel)) {
CLogMgt.setLevel(globalLevel);
Level level = CLogMgt.getLevel();
for (int i = 0; i < CLogMgt.LEVELS.length; i++) {
if (CLogMgt.LEVELS[i].intValue() == level.intValue()) {
levelListBox.setSelectedIndex(i);
break;
}
}
}
}
for(Object key : props.keySet()) {
if (key instanceof String) {
String s = (String)key;
if (s.endsWith("."+Ini.P_TRACELEVEL)) {
String level = props.getProperty(s);
if (! Util.isEmpty(level)) {
level = SecureEngine.decrypt(level, 0);
if (! Util.isEmpty(level)) {
s = s.substring(0, s.length() - ("."+Ini.P_TRACELEVEL).length());
CLogMgt.setLevel(s, level);
}
}
}
}
}
}
private void setTraceLevel() { private void setTraceLevel() {
Listitem item = levelListBox.getSelectedItem(); Listitem item = levelListBox.getSelectedItem();
if (item != null && item.getValue() != null) { if (item != null && item.getValue() != null) {

View File

@ -66,6 +66,7 @@ import org.idempiere.webservices.fault.IdempiereServiceFault;
*/ */
public class AbstractService { public class AbstractService {
public static final String ROLE_TYPES_WEBSERVICE = "NULL,WS"; //webservice+null
private static final String ROLE_ACCESS_SQL = "SELECT IsActive FROM WS_WebServiceTypeAccess WHERE AD_Role_ID IN (" private static final String ROLE_ACCESS_SQL = "SELECT IsActive FROM WS_WebServiceTypeAccess WHERE AD_Role_ID IN ("
+ "SELECT AD_Role_ID FROM AD_Role WHERE AD_Role_ID=? UNION " + "SELECT AD_Role_ID FROM AD_Role WHERE AD_Role_ID=? UNION "
+ "SELECT Included_Role_ID as AD_Role_ID FROM AD_Role_Included WHERE AD_Role_ID=?) " + "SELECT Included_Role_ID as AD_Role_ID FROM AD_Role_Included WHERE AD_Role_ID=?) "
@ -110,7 +111,7 @@ public class AbstractService {
return ret; return ret;
Login login = new Login(m_cs.getCtx()); Login login = new Login(m_cs.getCtx());
KeyNamePair[] clients = login.getClients(loginRequest.getUser(), loginRequest.getPass()); KeyNamePair[] clients = login.getClients(loginRequest.getUser(), loginRequest.getPass(), ROLE_TYPES_WEBSERVICE);
if (clients == null) if (clients == null)
return "Error login - User invalid"; return "Error login - User invalid";
m_cs.setPassword(loginRequest.getPass()); m_cs.setPassword(loginRequest.getPass());
@ -140,7 +141,7 @@ public class AbstractService {
Env.setContext(m_cs.getCtx(), "#UserAgent", userAgent == null ? "Unknown" : userAgent); Env.setContext(m_cs.getCtx(), "#UserAgent", userAgent == null ? "Unknown" : userAgent);
} }
KeyNamePair[] roles = login.getRoles(loginRequest.getUser(), selectedClient); KeyNamePair[] roles = login.getRoles(loginRequest.getUser(), selectedClient, ROLE_TYPES_WEBSERVICE);
if (roles != null) { if (roles != null) {
boolean okrole = false; boolean okrole = false;
for (KeyNamePair role : roles) { for (KeyNamePair role : roles) {