IDEMPIERE-4900 SQL statement added as an option to define WF Next Nod… (#981)
* IDEMPIERE-4900 SQL statement added as an option to define WF Next Node Condition Base on pull request 813 (Anton Mostovenko) and patch from IDEMPIERE-1832 (Deepak Pansheriya) * IDEMPIERE-4900 SQL statement added as an option to define WF Next Node Condition Incorporate patch from carlos * IDEMPIERE-4900 SQL statement added as an option to define WF Next Node Condition Incorporate patch from Carlos
This commit is contained in:
parent
a1cef5b0fd
commit
5ccd54caf8
|
@ -0,0 +1,161 @@
|
|||
SET SQLBLANKLINES ON
|
||||
SET DEFINE OFF
|
||||
|
||||
-- Aug 2, 2021, 3:42:37 PM MSK
|
||||
INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,IsHtml) VALUES (214567,0,'SQLStatement',706,'SQLStatement',4000,'N','N','N','N','N',0,'N',10,0,0,'Y',TO_DATE('2021-08-02 15:42:36','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-08-02 15:42:36','YYYY-MM-DD HH24:MI:SS'),100,50028,'Y','N','D','N','N','N','Y','a3885450-50d5-41b6-a7f4-8cd4bcc9e465','Y',0,'N','N','N')
|
||||
;
|
||||
|
||||
-- Aug 2, 2021, 3:42:44 PM MSK
|
||||
ALTER TABLE AD_WF_NextCondition ADD SQLStatement VARCHAR2(4000 CHAR) DEFAULT NULL
|
||||
;
|
||||
|
||||
-- Aug 2, 2021, 3:42:59 PM MSK
|
||||
INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (206737,'SQLStatement',644,214567,'Y',4000,130,'N','N','N','N',0,0,'Y',TO_DATE('2021-08-02 15:42:58','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-08-02 15:42:58','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','f78eaea8-558a-4d74-8c50-26c59468c3a2','Y',130,5)
|
||||
;
|
||||
|
||||
-- Aug 2, 2021, 3:43:09 PM MSK
|
||||
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=110, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=1, IsToolbarButton=NULL,Updated=TO_DATE('2021-08-02 15:43:09','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206737
|
||||
;
|
||||
|
||||
-- Aug 2, 2021, 3:43:35 PM MSK
|
||||
UPDATE AD_Field SET DisplayLogic='@SQLStatement@=''''&@Operation@!''SQ''', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2021-08-02 15:43:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=10101
|
||||
;
|
||||
|
||||
-- Aug 2, 2021, 3:44:18 PM MSK
|
||||
UPDATE AD_Field SET DisplayLogic='@AD_Column_ID@=0|@Operation@=''SQ''', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2021-08-02 15:44:18','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206737
|
||||
;
|
||||
|
||||
-- Aug 2, 2021, 3:45:00 PM MSK
|
||||
UPDATE AD_Column SET IsMandatory='N',Updated=TO_DATE('2021-08-02 15:45:00','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=11579
|
||||
;
|
||||
|
||||
-- Aug 2, 2021, 3:45:05 PM MSK
|
||||
ALTER TABLE AD_WF_NextCondition MODIFY AD_Column_ID NUMBER(10) DEFAULT NULL
|
||||
;
|
||||
|
||||
-- Aug 2, 2021, 3:45:05 PM MSK
|
||||
ALTER TABLE AD_WF_NextCondition MODIFY AD_Column_ID NULL
|
||||
;
|
||||
|
||||
INSERT INTO AD_Message
|
||||
(MsgType,MsgText,AD_Message_ID,EntityType,AD_Message_UU,Value,IsActive,Updated,CreatedBy,UpdatedBy,Created,AD_Client_ID,AD_Org_ID)
|
||||
VALUES ('E','Please enter read-only SQL expression or statement',200259,'D','49c3be7e-16de-46ff-a2a9-f9411a6a4982','SQLReadOnly','Y',
|
||||
TO_DATE('2021-11-14 17:45:57','YYYY-MM-DD HH24:MI:SS'),100,100,TO_DATE('2021-11-14 17:45:57','YYYY-MM-DD HH24:MI:SS'),0,0)
|
||||
;
|
||||
|
||||
UPDATE AD_Column SET IsMandatory='N',
|
||||
MandatoryLogic='@Operation@!''SQ''&@SQLStatement@=''''',Updated=TO_DATE('2021-11-14 17:47:52','YYYY-MM-DD HH24:MI:SS'),
|
||||
UpdatedBy=100 WHERE AD_Column_ID=11579
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:08 AM MYT
|
||||
UPDATE AD_Field SET SeqNo=0,IsDisplayed='N', Updated=getDate(), UpdatedBy=100 WHERE AD_Field_ID=10102
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:08 AM MYT
|
||||
UPDATE AD_Field SET SeqNo=10,IsDisplayed='Y', Updated=getDate(), UpdatedBy=100 WHERE AD_Field_ID=10094
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:08 AM MYT
|
||||
UPDATE AD_Field SET SeqNo=20,IsDisplayed='Y', Updated=getDate(), UpdatedBy=100 WHERE AD_Field_ID=10105
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:08 AM MYT
|
||||
UPDATE AD_Field SET SeqNo=30,IsDisplayed='Y', Updated=getDate(), UpdatedBy=100 WHERE AD_Field_ID=10095
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:08 AM MYT
|
||||
UPDATE AD_Field SET SeqNo=40,IsDisplayed='Y', Updated=getDate(), UpdatedBy=100 WHERE AD_Field_ID=10096
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:08 AM MYT
|
||||
UPDATE AD_Field SET SeqNo=50,IsDisplayed='Y', Updated=getDate(), UpdatedBy=100 WHERE AD_Field_ID=10098
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:08 AM MYT
|
||||
UPDATE AD_Field SET SeqNo=60,IsDisplayed='Y', Updated=getDate(), UpdatedBy=100 WHERE AD_Field_ID=10103
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:08 AM MYT
|
||||
UPDATE AD_Field SET SeqNo=70,IsDisplayed='Y', Updated=getDate(), UpdatedBy=100 WHERE AD_Field_ID=10104
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:08 AM MYT
|
||||
UPDATE AD_Field SET SeqNo=90,IsDisplayed='Y', Updated=getDate(), UpdatedBy=100 WHERE AD_Field_ID=206737
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:22 AM MYT
|
||||
UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N', Updated=getDate(), UpdatedBy=100 WHERE AD_Field_ID=10102
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:22 AM MYT
|
||||
UPDATE AD_Field SET SeqNoGrid=10,IsDisplayedGrid='Y', Updated=getDate(), UpdatedBy=100 WHERE AD_Field_ID=10094
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:22 AM MYT
|
||||
UPDATE AD_Field SET SeqNoGrid=20,IsDisplayedGrid='Y', Updated=getDate(), UpdatedBy=100 WHERE AD_Field_ID=10105
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:22 AM MYT
|
||||
UPDATE AD_Field SET SeqNoGrid=30,IsDisplayedGrid='Y', Updated=getDate(), UpdatedBy=100 WHERE AD_Field_ID=10095
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:22 AM MYT
|
||||
UPDATE AD_Field SET SeqNoGrid=40,IsDisplayedGrid='Y', Updated=getDate(), UpdatedBy=100 WHERE AD_Field_ID=10096
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:22 AM MYT
|
||||
UPDATE AD_Field SET SeqNoGrid=50,IsDisplayedGrid='Y', Updated=getDate(), UpdatedBy=100 WHERE AD_Field_ID=10098
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:22 AM MYT
|
||||
UPDATE AD_Field SET SeqNoGrid=60,IsDisplayedGrid='Y', Updated=getDate(), UpdatedBy=100 WHERE AD_Field_ID=10103
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:22 AM MYT
|
||||
UPDATE AD_Field SET SeqNoGrid=70,IsDisplayedGrid='Y', Updated=getDate(), UpdatedBy=100 WHERE AD_Field_ID=10104
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:22 AM MYT
|
||||
UPDATE AD_Field SET SeqNoGrid=90,IsDisplayedGrid='Y', Updated=getDate(), UpdatedBy=100 WHERE AD_Field_ID=206737
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:47 AM MYT
|
||||
UPDATE AD_Field SET AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=1, IsToolbarButton=NULL,Updated=TO_DATE('2021-11-15 10:43:47','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=10104
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:50:21 AM MYT
|
||||
UPDATE AD_Element SET Name='SQL Expression/Statement', PrintName='SQL Expression/Statement',Updated=TO_DATE('2021-11-15 10:50:21','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=50028
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:50:21 AM MYT
|
||||
UPDATE AD_Column SET ColumnName='SQLStatement', Name='SQL Expression/Statement', Description=NULL, Help=NULL, Placeholder=NULL WHERE AD_Element_ID=50028
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:50:21 AM MYT
|
||||
UPDATE AD_Process_Para SET ColumnName='SQLStatement', Name='SQL Expression/Statement', Description=NULL, Help=NULL, AD_Element_ID=50028 WHERE UPPER(ColumnName)='SQLSTATEMENT' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:50:21 AM MYT
|
||||
UPDATE AD_Process_Para SET ColumnName='SQLStatement', Name='SQL Expression/Statement', Description=NULL, Help=NULL, Placeholder=NULL WHERE AD_Element_ID=50028 AND IsCentrallyMaintained='Y'
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:50:21 AM MYT
|
||||
UPDATE AD_InfoColumn SET ColumnName='SQLStatement', Name='SQL Expression/Statement', Description=NULL, Help=NULL, Placeholder=NULL WHERE AD_Element_ID=50028 AND IsCentrallyMaintained='Y'
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:50:21 AM MYT
|
||||
UPDATE AD_Field SET Name='SQL Expression/Statement', Description=NULL, Help=NULL, Placeholder=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=50028) AND IsCentrallyMaintained='Y'
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:50:21 AM MYT
|
||||
UPDATE AD_PrintFormatItem SET PrintName='SQL Expression/Statement', Name='SQL Expression/Statement' WHERE IsCentrallyMaintained='Y' AND EXISTS (SELECT * FROM AD_Column c WHERE c.AD_Column_ID=AD_PrintFormatItem.AD_Column_ID AND c.AD_Element_ID=50028)
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 11:21:22 AM MYT
|
||||
UPDATE AD_Column SET ReadOnlyLogic='@#ShowAdvanced@!''Y''',Updated=TO_DATE('2021-11-15 11:21:22','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=214567
|
||||
;
|
||||
|
||||
SELECT register_migration_script('202111141400_IDEMPIERE-4900.sql') FROM dual
|
||||
;
|
||||
|
|
@ -0,0 +1,158 @@
|
|||
-- Aug 2, 2021, 3:42:37 PM MSK
|
||||
INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,IsHtml) VALUES (214567,0,'SQLStatement',706,'SQLStatement',4000,'N','N','N','N','N',0,'N',10,0,0,'Y',TO_TIMESTAMP('2021-08-02 15:42:36','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-08-02 15:42:36','YYYY-MM-DD HH24:MI:SS'),100,50028,'Y','N','D','N','N','N','Y','a3885450-50d5-41b6-a7f4-8cd4bcc9e465','Y',0,'N','N','N')
|
||||
;
|
||||
|
||||
-- Aug 2, 2021, 3:42:44 PM MSK
|
||||
ALTER TABLE AD_WF_NextCondition ADD COLUMN SQLStatement VARCHAR(4000) DEFAULT NULL
|
||||
;
|
||||
|
||||
-- Aug 2, 2021, 3:42:59 PM MSK
|
||||
INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (206737,'SQLStatement',644,214567,'Y',4000,130,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-08-02 15:42:58','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-08-02 15:42:58','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','f78eaea8-558a-4d74-8c50-26c59468c3a2','Y',130,5)
|
||||
;
|
||||
|
||||
-- Aug 2, 2021, 3:43:09 PM MSK
|
||||
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=110, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2021-08-02 15:43:09','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206737
|
||||
;
|
||||
|
||||
-- Aug 2, 2021, 3:43:35 PM MSK
|
||||
UPDATE AD_Field SET DisplayLogic='@SQLStatement@=''''&@Operation@!''SQ''', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2021-08-02 15:43:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=10101
|
||||
;
|
||||
|
||||
-- Aug 2, 2021, 3:44:18 PM MSK
|
||||
UPDATE AD_Field SET DisplayLogic='@AD_Column_ID@=0|@Operation@=''SQ''', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2021-08-02 15:44:18','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206737
|
||||
;
|
||||
|
||||
-- Aug 2, 2021, 3:45:00 PM MSK
|
||||
UPDATE AD_Column SET IsMandatory='N',Updated=TO_TIMESTAMP('2021-08-02 15:45:00','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=11579
|
||||
;
|
||||
|
||||
-- Aug 2, 2021, 3:45:05 PM MSK
|
||||
INSERT INTO t_alter_column values('ad_wf_nextcondition','AD_Column_ID','NUMERIC(10)',null,'NULL')
|
||||
;
|
||||
|
||||
-- Aug 2, 2021, 3:45:05 PM MSK
|
||||
INSERT INTO t_alter_column values('ad_wf_nextcondition','AD_Column_ID',null,'NULL',null)
|
||||
;
|
||||
|
||||
INSERT INTO AD_Message
|
||||
(MsgType,MsgText,AD_Message_ID,EntityType,AD_Message_UU,Value,IsActive,Updated,CreatedBy,UpdatedBy,Created,AD_Client_ID,AD_Org_ID)
|
||||
VALUES ('E','Please enter read-only SQL expression or statement',200259,'D','49c3be7e-16de-46ff-a2a9-f9411a6a4982','SQLReadOnly','Y',
|
||||
TO_TIMESTAMP('2021-11-14 17:45:57','YYYY-MM-DD HH24:MI:SS'),100,100,TO_TIMESTAMP('2021-11-14 17:45:57','YYYY-MM-DD HH24:MI:SS'),0,0)
|
||||
;
|
||||
|
||||
UPDATE AD_Column SET IsMandatory='N',
|
||||
MandatoryLogic='@Operation@!''SQ''&@SQLStatement@=''''',Updated=TO_TIMESTAMP('2021-11-14 17:47:52','YYYY-MM-DD HH24:MI:SS'),
|
||||
UpdatedBy=100 WHERE AD_Column_ID=11579
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:08 AM MYT
|
||||
UPDATE AD_Field SET SeqNo=0,IsDisplayed='N', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=10102
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:08 AM MYT
|
||||
UPDATE AD_Field SET SeqNo=10,IsDisplayed='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=10094
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:08 AM MYT
|
||||
UPDATE AD_Field SET SeqNo=20,IsDisplayed='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=10105
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:08 AM MYT
|
||||
UPDATE AD_Field SET SeqNo=30,IsDisplayed='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=10095
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:08 AM MYT
|
||||
UPDATE AD_Field SET SeqNo=40,IsDisplayed='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=10096
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:08 AM MYT
|
||||
UPDATE AD_Field SET SeqNo=50,IsDisplayed='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=10098
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:08 AM MYT
|
||||
UPDATE AD_Field SET SeqNo=60,IsDisplayed='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=10103
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:08 AM MYT
|
||||
UPDATE AD_Field SET SeqNo=70,IsDisplayed='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=10104
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:08 AM MYT
|
||||
UPDATE AD_Field SET SeqNo=90,IsDisplayed='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=206737
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:22 AM MYT
|
||||
UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=10102
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:22 AM MYT
|
||||
UPDATE AD_Field SET SeqNoGrid=10,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=10094
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:22 AM MYT
|
||||
UPDATE AD_Field SET SeqNoGrid=20,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=10105
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:22 AM MYT
|
||||
UPDATE AD_Field SET SeqNoGrid=30,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=10095
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:22 AM MYT
|
||||
UPDATE AD_Field SET SeqNoGrid=40,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=10096
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:22 AM MYT
|
||||
UPDATE AD_Field SET SeqNoGrid=50,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=10098
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:22 AM MYT
|
||||
UPDATE AD_Field SET SeqNoGrid=60,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=10103
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:22 AM MYT
|
||||
UPDATE AD_Field SET SeqNoGrid=70,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=10104
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:22 AM MYT
|
||||
UPDATE AD_Field SET SeqNoGrid=90,IsDisplayedGrid='Y', Updated=statement_timestamp(), UpdatedBy=100 WHERE AD_Field_ID=206737
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:43:47 AM MYT
|
||||
UPDATE AD_Field SET AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, XPosition=1, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2021-11-15 10:43:47','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=10104
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:50:21 AM MYT
|
||||
UPDATE AD_Element SET Name='SQL Expression/Statement', PrintName='SQL Expression/Statement',Updated=TO_TIMESTAMP('2021-11-15 10:50:21','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=50028
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:50:21 AM MYT
|
||||
UPDATE AD_Column SET ColumnName='SQLStatement', Name='SQL Expression/Statement', Description=NULL, Help=NULL, Placeholder=NULL WHERE AD_Element_ID=50028
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:50:21 AM MYT
|
||||
UPDATE AD_Process_Para SET ColumnName='SQLStatement', Name='SQL Expression/Statement', Description=NULL, Help=NULL, AD_Element_ID=50028 WHERE UPPER(ColumnName)='SQLSTATEMENT' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:50:21 AM MYT
|
||||
UPDATE AD_Process_Para SET ColumnName='SQLStatement', Name='SQL Expression/Statement', Description=NULL, Help=NULL, Placeholder=NULL WHERE AD_Element_ID=50028 AND IsCentrallyMaintained='Y'
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:50:21 AM MYT
|
||||
UPDATE AD_InfoColumn SET ColumnName='SQLStatement', Name='SQL Expression/Statement', Description=NULL, Help=NULL, Placeholder=NULL WHERE AD_Element_ID=50028 AND IsCentrallyMaintained='Y'
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:50:21 AM MYT
|
||||
UPDATE AD_Field SET Name='SQL Expression/Statement', Description=NULL, Help=NULL, Placeholder=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=50028) AND IsCentrallyMaintained='Y'
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 10:50:21 AM MYT
|
||||
UPDATE AD_PrintFormatItem SET PrintName='SQL Expression/Statement', Name='SQL Expression/Statement' WHERE IsCentrallyMaintained='Y' AND EXISTS (SELECT * FROM AD_Column c WHERE c.AD_Column_ID=AD_PrintFormatItem.AD_Column_ID AND c.AD_Element_ID=50028)
|
||||
;
|
||||
|
||||
-- Nov 15, 2021, 11:21:22 AM MYT
|
||||
UPDATE AD_Column SET ReadOnlyLogic='@#ShowAdvanced@!''Y''',Updated=TO_TIMESTAMP('2021-11-15 11:21:22','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=214567
|
||||
;
|
||||
|
||||
SELECT register_migration_script('202111141400_IDEMPIERE-4900.sql') FROM dual
|
||||
;
|
||||
|
|
@ -199,6 +199,15 @@ public interface I_AD_WF_NextCondition
|
|||
*/
|
||||
public int getSeqNo();
|
||||
|
||||
/** Column name SQLStatement */
|
||||
public static final String COLUMNNAME_SQLStatement = "SQLStatement";
|
||||
|
||||
/** Set SQLStatement */
|
||||
public void setSQLStatement (String SQLStatement);
|
||||
|
||||
/** Get SQLStatement */
|
||||
public String getSQLStatement();
|
||||
|
||||
/** Column name Updated */
|
||||
public static final String COLUMNNAME_Updated = "Updated";
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ public class X_AD_WF_NextCondition extends PO implements I_AD_WF_NextCondition,
|
|||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 20210917L;
|
||||
private static final long serialVersionUID = 20211114L;
|
||||
|
||||
/** Standard Constructor */
|
||||
public X_AD_WF_NextCondition (Properties ctx, int AD_WF_NextCondition_ID, String trxName)
|
||||
|
@ -39,7 +39,6 @@ public class X_AD_WF_NextCondition extends PO implements I_AD_WF_NextCondition,
|
|||
super (ctx, AD_WF_NextCondition_ID, trxName);
|
||||
/** if (AD_WF_NextCondition_ID == 0)
|
||||
{
|
||||
setAD_Column_ID (0);
|
||||
setAD_WF_NextCondition_ID (0);
|
||||
setAD_WF_NodeNext_ID (0);
|
||||
// @4|AD_WF_NodeNext_ID@
|
||||
|
@ -279,6 +278,20 @@ public class X_AD_WF_NextCondition extends PO implements I_AD_WF_NextCondition,
|
|||
return ii.intValue();
|
||||
}
|
||||
|
||||
/** Set SQLStatement.
|
||||
@param SQLStatement SQLStatement */
|
||||
public void setSQLStatement (String SQLStatement)
|
||||
{
|
||||
set_Value (COLUMNNAME_SQLStatement, SQLStatement);
|
||||
}
|
||||
|
||||
/** Get SQLStatement.
|
||||
@return SQLStatement */
|
||||
public String getSQLStatement ()
|
||||
{
|
||||
return (String)get_Value(COLUMNNAME_SQLStatement);
|
||||
}
|
||||
|
||||
/** Set Search Key.
|
||||
@param Value
|
||||
Search key for the record in the format required - must be unique
|
||||
|
@ -320,4 +333,4 @@ public class X_AD_WF_NextCondition extends PO implements I_AD_WF_NextCondition,
|
|||
{
|
||||
return (String)get_Value(COLUMNNAME_Value2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2599,4 +2599,21 @@ public final class DB
|
|||
{
|
||||
return getDatabase().intersectClauseForCSV(columnName, csv);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param sql
|
||||
* @return true if it is select sql statement
|
||||
*/
|
||||
public static boolean isSelectStatement(String sql) {
|
||||
String removeComments = "/\\*(?:.|[\\n\\r])*?\\*/";
|
||||
String removeQuotedStrings = "'(?:.|[\\n\\r])*?'";
|
||||
String removeLeadingSpaces = "^\\s+";
|
||||
String cleanSql = sql.toLowerCase().replaceAll(removeComments, "").replaceAll(removeQuotedStrings, "").replaceFirst(removeLeadingSpaces, "");
|
||||
if(cleanSql.matches("^select\s.*$") && !cleanSql.contains(";"))
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
} // DB
|
||||
|
|
|
@ -17,12 +17,16 @@
|
|||
package org.compiere.wf;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Properties;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.compiere.model.PO;
|
||||
import org.compiere.util.DB;
|
||||
import org.compiere.util.Env;
|
||||
import org.compiere.util.Util;
|
||||
import org.idempiere.cache.ImmutablePOSupport;
|
||||
import org.compiere.model.X_AD_WF_NextCondition;
|
||||
|
||||
|
@ -40,7 +44,7 @@ public class MWFNextCondition extends X_AD_WF_NextCondition implements Immutable
|
|||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1694467559057544172L;
|
||||
private static final long serialVersionUID = 3119863973003103716L;
|
||||
|
||||
/**
|
||||
* Default Constructor
|
||||
|
@ -115,14 +119,42 @@ public class MWFNextCondition extends X_AD_WF_NextCondition implements Immutable
|
|||
*/
|
||||
public boolean evaluate (MWFActivity activity)
|
||||
{
|
||||
if (getAD_Column_ID() == 0)
|
||||
throw new IllegalStateException("No Column defined - " + this);
|
||||
return evaluate(activity.getPO());
|
||||
} // evaluate
|
||||
|
||||
/**
|
||||
* Evaluate Condition
|
||||
* @param po PO
|
||||
* @return true if true
|
||||
*/
|
||||
protected boolean evaluate (PO po)
|
||||
{
|
||||
if (getAD_Column_ID() == 0 && Util.isEmpty(getSQLStatement(), true))
|
||||
throw new IllegalStateException("No Column and SQL Statement defined - " + this);
|
||||
|
||||
PO po = activity.getPO();
|
||||
if (po == null || po.get_ID() == 0)
|
||||
throw new IllegalStateException("Could not evaluate " + po + " - " + this);
|
||||
//
|
||||
Object valueObj = po.get_ValueOfColumn(getAD_Column_ID());
|
||||
if (getOperation().equals(OPERATION_Sql)) {
|
||||
String sqlStatement = getSQLStatement();
|
||||
if (Util.isEmpty(getSQLStatement(), true))
|
||||
return false;
|
||||
if (sqlStatement.indexOf("@") >= 0)
|
||||
sqlStatement = Env.parseVariable(sqlStatement, po, po.get_TrxName(), false);
|
||||
String result = DB.getSQLValueStringEx(po.get_TrxName(), sqlStatement);
|
||||
return "true".equalsIgnoreCase(result) || "y".equalsIgnoreCase(result);
|
||||
}
|
||||
//
|
||||
Object valueObj = null;
|
||||
if (!Util.isEmpty(getSQLStatement(), true)) {
|
||||
try {
|
||||
valueObj = getColumnSQLValue(po);
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException("Could not get result from column sql: " + getSQLStatement(), e);
|
||||
}
|
||||
} else {
|
||||
valueObj = po.get_ValueOfColumn(getAD_Column_ID());
|
||||
}
|
||||
if (valueObj == null)
|
||||
valueObj = "";
|
||||
String value1 = getDecodedValue(getValue(), po); // F3P: added value decoding
|
||||
|
@ -133,8 +165,6 @@ public class MWFNextCondition extends X_AD_WF_NextCondition implements Immutable
|
|||
value2 = "";
|
||||
|
||||
String resultStr = "PO:{" + valueObj + "} " + getOperation() + " Condition:{" + value1 + "}";
|
||||
if (getOperation().equals(OPERATION_Sql))
|
||||
throw new IllegalArgumentException("SQL Operator not implemented yet: " + resultStr);
|
||||
if (getOperation().equals(OPERATION_X))
|
||||
resultStr += "{" + value2 + "}";
|
||||
|
||||
|
@ -342,5 +372,40 @@ public class MWFNextCondition extends X_AD_WF_NextCondition implements Immutable
|
|||
makeImmutable();
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get value from Column SQL (SQLStatement) instead of from AD_Column_ID
|
||||
* @param po
|
||||
* @return Value from Column SQL
|
||||
* @throws SQLException
|
||||
*/
|
||||
private Object getColumnSQLValue(PO po) throws SQLException {
|
||||
String columnSQL = getSQLStatement();
|
||||
if (columnSQL.indexOf("@") >= 0) {
|
||||
columnSQL = Env.parseVariable(columnSQL, po, po.get_TrxName(), false);
|
||||
}
|
||||
String tableName = po.get_TableName();
|
||||
String pkName = po.get_KeyColumns() != null && po.get_KeyColumns().length==1 ? po.get_KeyColumns()[0] : po.getUUIDColumnName();
|
||||
|
||||
String resultSql = String.format("SELECT (%s) FROM %s WHERE %s = ?", columnSQL, tableName, pkName);
|
||||
|
||||
try (PreparedStatement pstmt = DB.prepareStatement(resultSql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, po.get_TrxName())) {
|
||||
if (pkName.endsWith("_UU"))
|
||||
pstmt.setString(1, po.get_ValueAsString(po.getUUIDColumnName()));
|
||||
else
|
||||
pstmt.setInt(1, po.get_ID());
|
||||
ResultSet rs = pstmt.executeQuery();
|
||||
if (rs.next())
|
||||
return rs.getObject(1);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean beforeSave(boolean newRecord) {
|
||||
if (!Util.isEmpty(getSQLStatement(), true)) {
|
||||
setAD_Column_ID(0);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
} // MWFNextCondition
|
Loading…
Reference in New Issue