IDEMPIERE-5538 - Add isValid to Drill Rule allow validate parameters with beforesave (#1632)
* IDEMPIERE-5538 - Add isValid to Drill Rule allow validate parameters with beforesave * IDEMPIERE-5538 - beforeSave, capture process parameters * IDEMPIERE-5538 - validate only through process * IDEMPIERE-5538 - isValid check in getByTable method * IDEMPIERE-5538 - add validation to before save/after delete * IDEMPIERE-5538 - validate system drill rules * IDEMPIERE-5538 - fix validation logic The mandatory validation have to skip the key parameter since it is not loaded from Drill Rule Para. * IDEMPIERE-5538 - fix Drill Rule window definition * IDEMPIERE-5538 - bug fix scripts to iD10 * IDEMPIERE-5538 - fix missing read only logic * IDEMPIERE-5538 - all scripts to iD10
This commit is contained in:
parent
21e4f610eb
commit
47987c0314
|
@ -0,0 +1,46 @@
|
||||||
|
-- IDEMPIERE-5538
|
||||||
|
SELECT register_migration_script('202301091502_IDEMPIERE-5538.sql') FROM dual;
|
||||||
|
|
||||||
|
SET SQLBLANKLINES ON
|
||||||
|
SET DEFINE OFF
|
||||||
|
|
||||||
|
-- Jan 9, 2023, 3:02:37 PM CET
|
||||||
|
INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,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 (215738,0,'Valid','Element is valid','The element passed the validation check',200335,'IsValid','N',1,'N','N','Y','N','N',0,'N',20,0,0,'Y',TO_TIMESTAMP('2023-01-09 15:02:36','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-01-09 15:02:36','YYYY-MM-DD HH24:MI:SS'),100,2002,'Y','N','D','N','N','N','Y','8b4d9a1c-ef04-4b39-bab3-d35ebbbaa399','Y',0,'N','N','N')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jan 9, 2023, 3:02:49 PM CET
|
||||||
|
ALTER TABLE AD_Process_DrillRule ADD IsValid CHAR(1) DEFAULT 'N' CHECK (IsValid IN ('Y','N')) NOT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jan 9, 2023, 3:03:06 PM CET
|
||||||
|
INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan) VALUES (207523,'Valid','Element is valid','The element passed the validation check',200308,215738,'Y',1,120,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2023-01-09 15:03:06','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-01-09 15:03:06','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','aa4a1aca-cf2c-4754-bbd2-c84ab8b6934c','Y',110,2,2)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jan 9, 2023, 3:03:46 PM CET
|
||||||
|
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=100, XPosition=5,Updated=TO_TIMESTAMP('2023-01-09 15:03:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=207523
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jan 9, 2023, 3:03:46 PM CET
|
||||||
|
UPDATE AD_Field SET SeqNo=110,Updated=TO_TIMESTAMP('2023-01-09 15:03:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206930
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jan 9, 2023, 3:03:46 PM CET
|
||||||
|
UPDATE AD_Field SET SeqNo=120,Updated=TO_TIMESTAMP('2023-01-09 15:03:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=207109
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jan 9, 2023, 3:29:30 PM CET
|
||||||
|
UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_TIMESTAMP('2023-01-09 15:29:30','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=207523
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jan 9, 2023, 4:27:35 PM CET
|
||||||
|
INSERT INTO AD_Process (AD_Process_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,Help,IsReport,Value,IsDirectPrint,Classname,AccessLevel,EntityType,Statistic_Count,Statistic_Seconds,IsBetaFunctionality,ShowHelp,AD_Process_UU) VALUES (200147,0,0,'Y',TO_TIMESTAMP('2023-01-09 16:27:35','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-01-09 16:27:35','YYYY-MM-DD HH24:MI:SS'),100,'Validate','Validate Drill Rule Parameters','Validate the Drill Rule, if all mandatory parameters are set.','N','AD_Process_DrillRule_Validate','N','org.compiere.process.DrillRuleValidate','6','D',0,0,'N','Y','858ac391-3f7e-498d-bbef-caa1ad94e5f6')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jan 9, 2023, 4:29:11 PM CET
|
||||||
|
INSERT INTO AD_ToolBarButton (AD_Client_ID,AD_Org_ID,Created,CreatedBy,ComponentName,IsActive,AD_ToolBarButton_ID,Name,Updated,UpdatedBy,IsCustomization,AD_ToolBarButton_UU,Action,AD_Tab_ID,AD_Process_ID,SeqNo,EntityType) VALUES (0,0,TO_TIMESTAMP('2023-01-09 16:29:10','YYYY-MM-DD HH24:MI:SS'),100,'Validate','Y',200128,'Validate',TO_TIMESTAMP('2023-01-09 16:29:10','YYYY-MM-DD HH24:MI:SS'),100,'N','b739ac8e-704e-4c34-8eab-87e3eb087dba','W',200308,200147,20,'D')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jan 9, 2023, 4:31:45 PM CET
|
||||||
|
UPDATE AD_ToolBarButton SET DisplayLogic='@AD_Client_ID@=@#AD_Client_ID@',Updated=TO_TIMESTAMP('2023-01-09 16:31:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_ToolBarButton_ID=200128
|
||||||
|
;
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
-- IDEMPIERE-5538
|
||||||
|
SELECT register_migration_script('202302281202_IDEMPIERE-5538.sql') FROM dual;
|
||||||
|
|
||||||
|
SET SQLBLANKLINES ON
|
||||||
|
SET DEFINE OFF
|
||||||
|
|
||||||
|
-- Feb 28, 2023, 12:02:28 PM CET
|
||||||
|
UPDATE AD_Message SET MsgText='Cannot find any valid Drill Rules for the selected Column.', MsgTip='You can define new definitions in Drill Rule window, then run the ''Validate'' process.',Updated=TO_TIMESTAMP('2023-02-28 12:02:28','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Message_ID=200762
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Feb 28, 2023, 12:04:40 PM CET
|
||||||
|
INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','All Drill Rules in System which have at least one Drill Rule Parameter with a mandatory Process Parameter must have the Show Help field set to value ''Show Help''',0,0,'Y',TO_TIMESTAMP('2023-02-28 12:04:39','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-02-28 12:04:39','YYYY-MM-DD HH24:MI:SS'),100,200823,'DrillParameterTenantCheck','D','c93f3c2c-4d1f-4a13-a41d-05b31402453d')
|
||||||
|
;
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
-- IDEMPIERE-5538
|
||||||
|
SELECT register_migration_script('202303101612_IDEMPIERE-5538.sql') FROM dual;
|
||||||
|
|
||||||
|
SET SQLBLANKLINES ON
|
||||||
|
SET DEFINE OFF
|
||||||
|
|
||||||
|
-- Mar 10, 2023, 4:12:07 PM CET
|
||||||
|
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2023-03-10 16:12:07','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=214733
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Mar 10, 2023, 4:13:51 PM CET
|
||||||
|
UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2023-03-10 16:13:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206939
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Mar 10, 2023, 4:13:56 PM CET
|
||||||
|
UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2023-03-10 16:13:56','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206941
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Mar 15, 2023, 1:35:41 PM CET
|
||||||
|
UPDATE AD_ToolBarButton SET DisplayLogic='@AD_Client_ID@=@#AD_Client_ID@',Updated=TO_TIMESTAMP('2023-03-15 13:35:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_ToolBarButton_ID=200123
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Mar 15, 2023, 3:27:28 PM CET
|
||||||
|
UPDATE AD_Tab SET ReadOnlyLogic='@AD_Client_ID@!@#AD_Client_ID@',Updated=TO_TIMESTAMP('2023-03-15 15:27:28','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=200309
|
||||||
|
;
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
-- IDEMPIERE-5538
|
||||||
|
SELECT register_migration_script('202301091502_IDEMPIERE-5538.sql') FROM dual;
|
||||||
|
|
||||||
|
-- Jan 9, 2023, 3:02:37 PM CET
|
||||||
|
INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,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 (215738,0,'Valid','Element is valid','The element passed the validation check',200335,'IsValid','N',1,'N','N','Y','N','N',0,'N',20,0,0,'Y',TO_TIMESTAMP('2023-01-09 15:02:36','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-01-09 15:02:36','YYYY-MM-DD HH24:MI:SS'),100,2002,'Y','N','D','N','N','N','Y','8b4d9a1c-ef04-4b39-bab3-d35ebbbaa399','Y',0,'N','N','N')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jan 9, 2023, 3:02:49 PM CET
|
||||||
|
ALTER TABLE AD_Process_DrillRule ADD COLUMN IsValid CHAR(1) DEFAULT 'N' CHECK (IsValid IN ('Y','N')) NOT NULL
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jan 9, 2023, 3:03:06 PM CET
|
||||||
|
INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,XPosition,ColumnSpan) VALUES (207523,'Valid','Element is valid','The element passed the validation check',200308,215738,'Y',1,120,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2023-01-09 15:03:06','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-01-09 15:03:06','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','aa4a1aca-cf2c-4754-bbd2-c84ab8b6934c','Y',110,2,2)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jan 9, 2023, 3:03:46 PM CET
|
||||||
|
UPDATE AD_Field SET IsDisplayed='Y', SeqNo=100, XPosition=5,Updated=TO_TIMESTAMP('2023-01-09 15:03:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=207523
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jan 9, 2023, 3:03:46 PM CET
|
||||||
|
UPDATE AD_Field SET SeqNo=110,Updated=TO_TIMESTAMP('2023-01-09 15:03:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206930
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jan 9, 2023, 3:03:46 PM CET
|
||||||
|
UPDATE AD_Field SET SeqNo=120,Updated=TO_TIMESTAMP('2023-01-09 15:03:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=207109
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jan 9, 2023, 3:29:30 PM CET
|
||||||
|
UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_TIMESTAMP('2023-01-09 15:29:30','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=207523
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jan 9, 2023, 4:27:35 PM CET
|
||||||
|
INSERT INTO AD_Process (AD_Process_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,Help,IsReport,Value,IsDirectPrint,Classname,AccessLevel,EntityType,Statistic_Count,Statistic_Seconds,IsBetaFunctionality,ShowHelp,AD_Process_UU) VALUES (200147,0,0,'Y',TO_TIMESTAMP('2023-01-09 16:27:35','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-01-09 16:27:35','YYYY-MM-DD HH24:MI:SS'),100,'Validate','Validate Drill Rule Parameters','Validate the Drill Rule, if all mandatory parameters are set.','N','AD_Process_DrillRule_Validate','N','org.compiere.process.DrillRuleValidate','6','D',0,0,'N','Y','858ac391-3f7e-498d-bbef-caa1ad94e5f6')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jan 9, 2023, 4:29:11 PM CET
|
||||||
|
INSERT INTO AD_ToolBarButton (AD_Client_ID,AD_Org_ID,Created,CreatedBy,ComponentName,IsActive,AD_ToolBarButton_ID,Name,Updated,UpdatedBy,IsCustomization,AD_ToolBarButton_UU,"action",AD_Tab_ID,AD_Process_ID,SeqNo,EntityType) VALUES (0,0,TO_TIMESTAMP('2023-01-09 16:29:10','YYYY-MM-DD HH24:MI:SS'),100,'Validate','Y',200128,'Validate',TO_TIMESTAMP('2023-01-09 16:29:10','YYYY-MM-DD HH24:MI:SS'),100,'N','b739ac8e-704e-4c34-8eab-87e3eb087dba','W',200308,200147,20,'D')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Jan 9, 2023, 4:31:45 PM CET
|
||||||
|
UPDATE AD_ToolBarButton SET DisplayLogic='@AD_Client_ID@=@#AD_Client_ID@',Updated=TO_TIMESTAMP('2023-01-09 16:31:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_ToolBarButton_ID=200128
|
||||||
|
;
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
-- IDEMPIERE-5538
|
||||||
|
SELECT register_migration_script('202302281202_IDEMPIERE-5538.sql') FROM dual;
|
||||||
|
|
||||||
|
-- Feb 28, 2023, 12:02:28 PM CET
|
||||||
|
UPDATE AD_Message SET MsgText='Cannot find any valid Drill Rules for the selected Column.', MsgTip='You can define new definitions in Drill Rule window, then run the ''Validate'' process.',Updated=TO_TIMESTAMP('2023-02-28 12:02:28','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Message_ID=200762
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Feb 28, 2023, 12:04:40 PM CET
|
||||||
|
INSERT INTO AD_Message (MsgType,MsgText,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Message_ID,Value,EntityType,AD_Message_UU) VALUES ('I','All Drill Rules in System which have at least one Drill Rule Parameter with a mandatory Process Parameter must have the Show Help field set to value ''Show Help''',0,0,'Y',TO_TIMESTAMP('2023-02-28 12:04:39','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2023-02-28 12:04:39','YYYY-MM-DD HH24:MI:SS'),100,200823,'DrillParameterTenantCheck','D','c93f3c2c-4d1f-4a13-a41d-05b31402453d')
|
||||||
|
;
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
-- IDEMPIERE-5538
|
||||||
|
SELECT register_migration_script('202303101612_IDEMPIERE-5538.sql') FROM dual;
|
||||||
|
|
||||||
|
-- Mar 10, 2023, 4:12:07 PM CET
|
||||||
|
UPDATE AD_Column SET IsUpdateable='N',Updated=TO_TIMESTAMP('2023-03-10 16:12:07','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=214733
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Mar 10, 2023, 4:13:51 PM CET
|
||||||
|
UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2023-03-10 16:13:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206939
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Mar 10, 2023, 4:13:56 PM CET
|
||||||
|
UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2023-03-10 16:13:56','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=206941
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Mar 15, 2023, 1:35:41 PM CET
|
||||||
|
UPDATE AD_ToolBarButton SET DisplayLogic='@AD_Client_ID@=@#AD_Client_ID@',Updated=TO_TIMESTAMP('2023-03-15 13:35:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_ToolBarButton_ID=200123
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Mar 15, 2023, 3:27:28 PM CET
|
||||||
|
UPDATE AD_Tab SET ReadOnlyLogic='@AD_Client_ID@!@#AD_Client_ID@',Updated=TO_TIMESTAMP('2023-03-15 15:27:28','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=200309
|
||||||
|
;
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
/**********************************************************************
|
||||||
|
* This file is part of iDempiere ERP Open Source *
|
||||||
|
* http://www.idempiere.org *
|
||||||
|
* *
|
||||||
|
* Copyright (C) Contributors *
|
||||||
|
* *
|
||||||
|
* This program is free software; you can redistribute it and/or *
|
||||||
|
* modify it under the terms of the GNU General Public License *
|
||||||
|
* as published by the Free Software Foundation; either version 2 *
|
||||||
|
* of the License, or (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License *
|
||||||
|
* along with this program; if not, write to the Free Software *
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
|
||||||
|
* MA 02110-1301, USA. *
|
||||||
|
* *
|
||||||
|
* Contributors: *
|
||||||
|
* - Peter Takacs, Cloudempiere *
|
||||||
|
**********************************************************************/
|
||||||
|
package org.compiere.process;
|
||||||
|
|
||||||
|
import org.compiere.model.MProcessDrillRule;
|
||||||
|
import org.compiere.util.Msg;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validate Drill Rule Parameters
|
||||||
|
*
|
||||||
|
* @author Peter Takacs, Cloudempiere
|
||||||
|
*/
|
||||||
|
@org.adempiere.base.annotation.Process
|
||||||
|
public class DrillRuleValidate extends SvrProcess
|
||||||
|
{
|
||||||
|
/** Drill Rule */
|
||||||
|
private int p_AD_Process_DrillRule_ID = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prepare
|
||||||
|
*/
|
||||||
|
protected void prepare ()
|
||||||
|
{
|
||||||
|
p_AD_Process_DrillRule_ID = getRecord_ID();
|
||||||
|
} // prepare
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Process
|
||||||
|
* @return info
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
protected String doIt ()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
MProcessDrillRule drillRule = new MProcessDrillRule(getCtx(), p_AD_Process_DrillRule_ID, null);
|
||||||
|
drillRule.validate();
|
||||||
|
drillRule.saveEx();
|
||||||
|
if(getAD_Client_ID() == 0 && drillRule.hasMandatoryProcessPara()
|
||||||
|
&& !MProcessDrillRule.SHOWHELP_ShowHelp.equalsIgnoreCase(drillRule.getShowHelp())) {
|
||||||
|
return "@NotValid@" + ": " + Msg.getMsg(getCtx(), "DrillParameterTenantCheck");
|
||||||
|
}
|
||||||
|
return drillRule.isValid() ? "@OK@" : "@NotValid@";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -22,7 +22,7 @@ import org.compiere.util.KeyNamePair;
|
||||||
|
|
||||||
/** Generated Interface for AD_Process_DrillRule
|
/** Generated Interface for AD_Process_DrillRule
|
||||||
* @author iDempiere (generated)
|
* @author iDempiere (generated)
|
||||||
* @version Release 10
|
* @version Release 11
|
||||||
*/
|
*/
|
||||||
public interface I_AD_Process_DrillRule
|
public interface I_AD_Process_DrillRule
|
||||||
{
|
{
|
||||||
|
@ -193,6 +193,19 @@ public interface I_AD_Process_DrillRule
|
||||||
*/
|
*/
|
||||||
public boolean isActive();
|
public boolean isActive();
|
||||||
|
|
||||||
|
/** Column name IsValid */
|
||||||
|
public static final String COLUMNNAME_IsValid = "IsValid";
|
||||||
|
|
||||||
|
/** Set Valid.
|
||||||
|
* Element is valid
|
||||||
|
*/
|
||||||
|
public void setIsValid (boolean IsValid);
|
||||||
|
|
||||||
|
/** Get Valid.
|
||||||
|
* Element is valid
|
||||||
|
*/
|
||||||
|
public boolean isValid();
|
||||||
|
|
||||||
/** Column name Name */
|
/** Column name Name */
|
||||||
public static final String COLUMNNAME_Name = "Name";
|
public static final String COLUMNNAME_Name = "Name";
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@ import java.util.List;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
|
import org.compiere.util.Util;
|
||||||
import org.idempiere.cache.ImmutableIntPOCache;
|
import org.idempiere.cache.ImmutableIntPOCache;
|
||||||
import org.idempiere.cache.ImmutablePOSupport;
|
import org.idempiere.cache.ImmutablePOSupport;
|
||||||
|
|
||||||
|
@ -135,10 +136,9 @@ public class MProcessDrillRule extends X_AD_Process_DrillRule implements Immutab
|
||||||
*/
|
*/
|
||||||
public static MProcessDrillRule[] getByTable(Properties ctx, int AD_Table_ID, String trxName) {
|
public static MProcessDrillRule[] getByTable(Properties ctx, int AD_Table_ID, String trxName) {
|
||||||
|
|
||||||
String whereClause = " AD_Table_ID = ? ";
|
String whereClause = " AD_Table_ID = ? AND IsValid = 'Y' AND " + MProcessDrillRule.Table_Name + "." + MProcessDrillRule.COLUMNNAME_AD_Client_ID + " IN (0,?)";
|
||||||
List<MProcessDrillRule> processDrillRules = new Query(ctx, MProcessDrillRule.Table_Name, whereClause, trxName)
|
List<MProcessDrillRule> processDrillRules = new Query(ctx, MProcessDrillRule.Table_Name, whereClause, trxName)
|
||||||
.setParameters(AD_Table_ID)
|
.setParameters(AD_Table_ID, Env.getAD_Client_ID(ctx))
|
||||||
.setClient_ID()
|
|
||||||
.setOnlyActiveRecords(true)
|
.setOnlyActiveRecords(true)
|
||||||
.list();
|
.list();
|
||||||
|
|
||||||
|
@ -154,13 +154,12 @@ public class MProcessDrillRule extends X_AD_Process_DrillRule implements Immutab
|
||||||
*/
|
*/
|
||||||
public static MProcessDrillRule[] getByColumnName(Properties ctx, String columnName, String trxName) {
|
public static MProcessDrillRule[] getByColumnName(Properties ctx, String columnName, String trxName) {
|
||||||
|
|
||||||
String whereClause = "";
|
String whereClause = " IsValid = 'Y' AND " + MProcessDrillRule.Table_Name + "." + MProcessDrillRule.COLUMNNAME_AD_Client_ID + " IN (0,?)";
|
||||||
List<MProcessDrillRule> processDrillRules = new Query(ctx, MProcessDrillRule.Table_Name, whereClause, trxName)
|
List<MProcessDrillRule> processDrillRules = new Query(ctx, MProcessDrillRule.Table_Name, whereClause, trxName)
|
||||||
.addJoinClause(" INNER JOIN AD_Process_Para pp ON "
|
.addJoinClause(" INNER JOIN AD_Process_Para pp ON "
|
||||||
+ MProcessDrillRule.Table_Name + "." + MProcessDrillRule.COLUMNNAME_AD_Process_Para_ID + " = pp." + MProcessPara.COLUMNNAME_AD_Process_Para_ID
|
+ MProcessDrillRule.Table_Name + "." + MProcessDrillRule.COLUMNNAME_AD_Process_Para_ID + " = pp." + MProcessPara.COLUMNNAME_AD_Process_Para_ID
|
||||||
+ " AND " + MProcessPara.COLUMNNAME_ColumnName + " = ?")
|
+ " AND " + MProcessPara.COLUMNNAME_ColumnName + " = ?")
|
||||||
.setParameters(columnName)
|
.setParameters(columnName, Env.getAD_Client_ID(ctx))
|
||||||
.setClient_ID()
|
|
||||||
.setOnlyActiveRecords(true)
|
.setOnlyActiveRecords(true)
|
||||||
.list();
|
.list();
|
||||||
|
|
||||||
|
@ -178,9 +177,10 @@ public class MProcessDrillRule extends X_AD_Process_DrillRule implements Immutab
|
||||||
setAD_Table_ID(reportView.getAD_Table_ID());
|
setAD_Table_ID(reportView.getAD_Table_ID());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
validate();
|
||||||
return super.beforeSave(newRecord);
|
return super.beforeSave(newRecord);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Parameters
|
* Get Parameters
|
||||||
* @param reload reload
|
* @param reload reload
|
||||||
|
@ -211,4 +211,58 @@ public class MProcessDrillRule extends X_AD_Process_DrillRule implements Immutab
|
||||||
makeImmutable();
|
makeImmutable();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Are all mandatory parameters defined among the Drill Rule Parameters
|
||||||
|
* @return true - all mandatory parameters are set; false - at least one mandatory parameter is not set
|
||||||
|
*/
|
||||||
|
private boolean allMandatoryParaSet() {
|
||||||
|
boolean isValid = false;
|
||||||
|
MProcess process = new MProcess(Env.getCtx(), getAD_Process_ID(), get_TrxName());
|
||||||
|
for(MProcessPara processPara : process.getParameters()) {
|
||||||
|
if(processPara.isMandatory() && processPara.getAD_Process_Para_ID() != getAD_Process_Para_ID()) {
|
||||||
|
for(MProcessDrillRulePara drillRulePara : getParameters(true)) {
|
||||||
|
if(drillRulePara.getAD_Process_Para_ID() == processPara.getAD_Process_Para_ID()) {
|
||||||
|
String defPara = drillRulePara.getParameterDefault();
|
||||||
|
String defParaTo = drillRulePara.getParameterToDefault();
|
||||||
|
isValid = (processPara.isRange() && (!Util.isEmpty(defPara)) || (!Util.isEmpty(defParaTo))) ||
|
||||||
|
(!processPara.isRange() && (!Util.isEmpty(defPara)));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!isValid)
|
||||||
|
return false;
|
||||||
|
isValid = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Has any Drill Rule Parameters with a mandatory Process Parameter
|
||||||
|
* @return boolean true if has at least one Drill Rule Parameter with a mandatory Process Parameter
|
||||||
|
*/
|
||||||
|
public boolean hasMandatoryProcessPara() {
|
||||||
|
MProcess process = new MProcess(Env.getCtx(), getAD_Process_ID(), null);
|
||||||
|
for(MProcessPara processPara : process.getParameters()) {
|
||||||
|
if(processPara.isMandatory())
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validate Drill Rule - set IsValid
|
||||||
|
*/
|
||||||
|
public void validate() {
|
||||||
|
if(getAD_Client_ID() == 0 && hasMandatoryProcessPara() && !SHOWHELP_ShowHelp.equalsIgnoreCase(getShowHelp())) {
|
||||||
|
setIsValid(false);
|
||||||
|
}
|
||||||
|
else if(SHOWHELP_ShowHelp.equalsIgnoreCase(getShowHelp())) {
|
||||||
|
setIsValid(true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setIsValid(allMandatoryParaSet());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -58,6 +58,8 @@ public class MProcessDrillRulePara extends X_AD_Process_DrillRule_Para implement
|
||||||
|
|
||||||
/** Parameter Column Name */
|
/** Parameter Column Name */
|
||||||
private MProcessPara m_parameter = null;
|
private MProcessPara m_parameter = null;
|
||||||
|
/** Parent */
|
||||||
|
private MProcessDrillRule m_parent = null;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -95,4 +97,33 @@ public class MProcessDrillRulePara extends X_AD_Process_DrillRule_Para implement
|
||||||
public void setParentID(int id) {
|
public void setParentID(int id) {
|
||||||
setAD_Process_DrillRule_ID(id);
|
setAD_Process_DrillRule_ID(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Parent
|
||||||
|
* @return parent
|
||||||
|
*/
|
||||||
|
public MProcessDrillRule getParent()
|
||||||
|
{
|
||||||
|
if (m_parent == null)
|
||||||
|
m_parent = new MProcessDrillRule(getCtx(), getAD_Process_DrillRule_ID(), get_TrxName());
|
||||||
|
return m_parent;
|
||||||
|
} // getParent
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean afterSave(boolean newRecord, boolean success) {
|
||||||
|
if(success) {
|
||||||
|
getParent().validate();
|
||||||
|
getParent().saveEx(get_TrxName());
|
||||||
|
}
|
||||||
|
return super.afterSave(newRecord, success);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean afterDelete (boolean success) {
|
||||||
|
if(success) {
|
||||||
|
getParent().validate();
|
||||||
|
getParent().saveEx(get_TrxName());
|
||||||
|
}
|
||||||
|
return super.afterDelete(success);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -22,7 +22,7 @@ import java.util.Properties;
|
||||||
|
|
||||||
/** Generated Model for AD_Process_DrillRule
|
/** Generated Model for AD_Process_DrillRule
|
||||||
* @author iDempiere (generated)
|
* @author iDempiere (generated)
|
||||||
* @version Release 10 - $Id$ */
|
* @version Release 11 - $Id$ */
|
||||||
@org.adempiere.base.Model(table="AD_Process_DrillRule")
|
@org.adempiere.base.Model(table="AD_Process_DrillRule")
|
||||||
public class X_AD_Process_DrillRule extends PO implements I_AD_Process_DrillRule, I_Persistent
|
public class X_AD_Process_DrillRule extends PO implements I_AD_Process_DrillRule, I_Persistent
|
||||||
{
|
{
|
||||||
|
@ -30,7 +30,7 @@ public class X_AD_Process_DrillRule extends PO implements I_AD_Process_DrillRule
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 20221224L;
|
private static final long serialVersionUID = 20230109L;
|
||||||
|
|
||||||
/** Standard Constructor */
|
/** Standard Constructor */
|
||||||
public X_AD_Process_DrillRule (Properties ctx, int AD_Process_DrillRule_ID, String trxName)
|
public X_AD_Process_DrillRule (Properties ctx, int AD_Process_DrillRule_ID, String trxName)
|
||||||
|
@ -41,6 +41,8 @@ public class X_AD_Process_DrillRule extends PO implements I_AD_Process_DrillRule
|
||||||
setAD_Process_DrillRule_ID (0);
|
setAD_Process_DrillRule_ID (0);
|
||||||
setAD_Process_ID (0);
|
setAD_Process_ID (0);
|
||||||
setAD_Process_Para_ID (0);
|
setAD_Process_Para_ID (0);
|
||||||
|
setIsValid (false);
|
||||||
|
// N
|
||||||
setName (null);
|
setName (null);
|
||||||
} */
|
} */
|
||||||
}
|
}
|
||||||
|
@ -54,6 +56,8 @@ public class X_AD_Process_DrillRule extends PO implements I_AD_Process_DrillRule
|
||||||
setAD_Process_DrillRule_ID (0);
|
setAD_Process_DrillRule_ID (0);
|
||||||
setAD_Process_ID (0);
|
setAD_Process_ID (0);
|
||||||
setAD_Process_Para_ID (0);
|
setAD_Process_Para_ID (0);
|
||||||
|
setIsValid (false);
|
||||||
|
// N
|
||||||
setName (null);
|
setName (null);
|
||||||
} */
|
} */
|
||||||
}
|
}
|
||||||
|
@ -277,6 +281,29 @@ public class X_AD_Process_DrillRule extends PO implements I_AD_Process_DrillRule
|
||||||
return (String)get_Value(COLUMNNAME_Description);
|
return (String)get_Value(COLUMNNAME_Description);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Set Valid.
|
||||||
|
@param IsValid Element is valid
|
||||||
|
*/
|
||||||
|
public void setIsValid (boolean IsValid)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_IsValid, Boolean.valueOf(IsValid));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Valid.
|
||||||
|
@return Element is valid
|
||||||
|
*/
|
||||||
|
public boolean isValid()
|
||||||
|
{
|
||||||
|
Object oo = get_Value(COLUMNNAME_IsValid);
|
||||||
|
if (oo != null)
|
||||||
|
{
|
||||||
|
if (oo instanceof Boolean)
|
||||||
|
return ((Boolean)oo).booleanValue();
|
||||||
|
return "Y".equals(oo);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/** Set Name.
|
/** Set Name.
|
||||||
@param Name Alphanumeric identifier of the entity
|
@param Name Alphanumeric identifier of the entity
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -137,6 +137,9 @@ public class WProcessParameter implements IFormController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
poPara.saveEx();
|
poPara.saveEx();
|
||||||
|
if(tableName.equalsIgnoreCase(MProcessDrillRule.Table_Name)) {
|
||||||
|
((MProcessDrillRule)po).validate();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -590,7 +590,8 @@ public class DrillReportCtl {
|
||||||
+ " (=" + value + "=) " + value.getClass().getName());
|
+ " (=" + value + "=) " + value.getClass().getName());
|
||||||
}
|
}
|
||||||
// Mandatory check
|
// Mandatory check
|
||||||
if(processPara.isMandatory() && Util.isEmpty(sPara.getParameterDefault())) {
|
if(processPara.isMandatory() && Util.isEmpty(sPara.getParameterDefault())
|
||||||
|
&& !MProcessDrillRule.SHOWHELP_ShowHelp.equalsIgnoreCase(processDrillRule.getShowHelp())) {
|
||||||
if((!processPara.isRange()) || (processPara.isRange() && Util.isEmpty(sPara.getParameterToDefault())))
|
if((!processPara.isRange()) || (processPara.isRange() && Util.isEmpty(sPara.getParameterToDefault())))
|
||||||
throw new AdempiereException(Msg.parseTranslation(Env.getCtx(), "@FillMandatoryDrillRulePara@"));
|
throw new AdempiereException(Msg.parseTranslation(Env.getCtx(), "@FillMandatoryDrillRulePara@"));
|
||||||
}
|
}
|
||||||
|
@ -607,9 +608,11 @@ public class DrillReportCtl {
|
||||||
} // Drill Rule Parameter loop
|
} // Drill Rule Parameter loop
|
||||||
|
|
||||||
// Mandatory check
|
// Mandatory check
|
||||||
for(MProcessPara unsetProcessPara : processParasExclDrillRuleParas) {
|
if(!MProcessDrillRule.SHOWHELP_ShowHelp.equalsIgnoreCase(processDrillRule.getShowHelp())) {
|
||||||
if(unsetProcessPara.isMandatory()) {
|
for(MProcessPara unsetProcessPara : processParasExclDrillRuleParas) {
|
||||||
throw new AdempiereException(Msg.parseTranslation(Env.getCtx(), "@FillMandatoryDrillRulePara@"));
|
if(unsetProcessPara.isMandatory()) {
|
||||||
|
throw new AdempiereException(Msg.parseTranslation(Env.getCtx(), "@FillMandatoryDrillRulePara@"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pi.setParameter(iParams.toArray(new ProcessInfoParameter[0]));
|
pi.setParameter(iParams.toArray(new ProcessInfoParameter[0]));
|
||||||
|
|
Loading…
Reference in New Issue