IDEMPIERE-1994 Ability to organise process and report parameters by F… (#791)

* IDEMPIERE-1994 Ability to organise process and report parameters by Field Group functionality

* IDEMPIERE-1994 Ability to organise process and report parameters by Field Group functionality

Fix collapsed by default not working.
This commit is contained in:
hengsin 2021-07-24 17:05:49 +08:00 committed by GitHub
parent 02d5263742
commit 8f758ed904
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 308 additions and 18 deletions

View File

@ -0,0 +1,57 @@
SET SQLBLANKLINES ON
SET DEFINE OFF
-- IDEMPIERE-1994 Ability to organise process and report parameters by Field Group functionality
INSERT INTO AD_Column (AD_Column_ID,SeqNoSelection,IsSyncDatabase,Version,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,Updated,IsUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,IsActive,CreatedBy,UpdatedBy,IsAlwaysUpdateable,AD_Client_ID,AD_Org_ID,Created,EntityType,IsEncrypted,IsSecure,FKConstraintType,AD_Element_ID,AD_Table_ID,AD_Reference_ID,IsToolbarButton) VALUES (213251,0,'N',0,'N','N','N',0,'N',22,'N','N','N','Y','3bcbe6d5-bc98-4fde-b930-f45c3fc2e870',TO_DATE('2017-09-20 16:53:48','YYYY-MM-DD HH24:MI:SS'),'Y','AD_FieldGroup_ID','Logical grouping of fields','The Field Group indicates the logical group that this field belongs to (History, Amounts, Quantities)','Field Group','Y','Y',100,100,'N',0,0,TO_DATE('2017-09-20 16:53:48','YYYY-MM-DD HH24:MI:SS'),'D','N','N','N',1500,285,19,'N')
;
-- Sep 20, 2017 4:53:56 PM SGT
INSERT INTO AD_TreeNode (AD_Client_ID,AD_Org_ID, IsActive,Created,CreatedBy,Updated,UpdatedBy, AD_Tree_ID, Node_ID, Parent_ID, SeqNo, AD_TreeNode_UU) SELECT t.AD_Client_ID, 0, 'Y', SysDate, 100, SysDate, 100,t.AD_Tree_ID, 200007, 0, 999, Generate_UUID() FROM AD_Tree t WHERE t.AD_Client_ID=0 AND t.IsActive='Y' AND t.IsAllNodes='Y' AND t.TreeType='TL' AND t.AD_Table_ID=282 AND NOT EXISTS (SELECT * FROM AD_TreeNode e WHERE e.AD_Tree_ID=t.AD_Tree_ID AND Node_ID=200007)
;
-- Sep 20, 2017 4:53:57 PM SGT
UPDATE AD_Column SET FKConstraintName='ADFieldGroup_ADProcessPara', FKConstraintType='N',Updated=TO_DATE('2017-09-20 16:53:57','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=213251
;
-- Sep 20, 2017 4:53:57 PM SGT
ALTER TABLE AD_Process_Para ADD AD_FieldGroup_ID NUMBER(10) DEFAULT NULL
;
-- Sep 20, 2017 4:53:58 PM SGT
ALTER TABLE AD_Process_Para ADD CONSTRAINT ADFieldGroup_ADProcessPara FOREIGN KEY (AD_FieldGroup_ID) REFERENCES ad_fieldgroup(ad_fieldgroup_id) DEFERRABLE INITIALLY DEFERRED
;
-- Sep 20, 2017 4:55:11 PM SGT
INSERT INTO AD_TreeNode (AD_Client_ID,AD_Org_ID, IsActive,Created,CreatedBy,Updated,UpdatedBy, AD_Tree_ID, Node_ID, Parent_ID, SeqNo, AD_TreeNode_UU) SELECT t.AD_Client_ID, 0, 'Y', SysDate, 100, SysDate, 100,t.AD_Tree_ID, 200008, 0, 999, Generate_UUID() FROM AD_Tree t WHERE t.AD_Client_ID=0 AND t.IsActive='Y' AND t.IsAllNodes='Y' AND t.TreeType='TL' AND t.AD_Table_ID=282 AND NOT EXISTS (SELECT * FROM AD_TreeNode e WHERE e.AD_Tree_ID=t.AD_Tree_ID AND Node_ID=200008)
;
-- Sep 20, 2017 4:55:13 PM SGT
INSERT INTO AD_Field (AD_Field_ID,IsEncrypted,DisplayLength,IsSameLine,IsHeading,SeqNo,IsCentrallyMaintained,IsReadOnly,Help,AD_Org_ID,Updated,Description,Name,AD_Field_UU,IsDisplayed,IsFieldOnly,CreatedBy,UpdatedBy,IsActive,IsDisplayedGrid,SeqNoGrid,AD_Client_ID,Created,ColumnSpan,AD_Column_ID,EntityType,AD_Tab_ID) VALUES (205238,'N',22,'N','N',280,'Y','N','The Field Group indicates the logical group that this field belongs to (History, Amounts, Quantities)',0,TO_DATE('2017-09-20 16:55:12','YYYY-MM-DD HH24:MI:SS'),'Logical grouping of fields','Field Group','50a7d3df-4713-4f7e-b030-7256d0f14c0c','Y','N',100,100,'Y','Y',280,0,TO_DATE('2017-09-20 16:55:12','YYYY-MM-DD HH24:MI:SS'),2,213251,'D',246)
;
-- Sep 20, 2017 4:56:16 PM SGT
UPDATE AD_Field SET SeqNo=125, AD_Val_Rule_ID=NULL, SeqNoGrid=135, AD_Reference_Value_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2017-09-20 16:56:16','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=205238
;
-- Jul 23, 2021, 11:03:55 AM MYT
INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,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,FKConstraintType,IsHtml) VALUES (214564,0,'Field Group','Logical grouping of fields','The Field Group indicates the logical group that this field belongs to (History, Amounts, Quantities)',200233,'AD_FieldGroup_ID',22,'N','N','N','N','N',0,'N',19,0,0,'Y',TO_DATE('2021-07-23 11:03:54','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-07-23 11:03:54','YYYY-MM-DD HH24:MI:SS'),100,1500,'Y','N','D','N','N','N','Y','5ba627b6-8511-4f2e-82ba-d7fbf6a8a2fd','Y',0,'N','N','N','N')
;
-- Jul 23, 2021, 11:04:09 AM MYT
UPDATE AD_Column SET FKConstraintName='ADFieldGroup_ADUserDefProcPara', FKConstraintType='N',Updated=TO_DATE('2021-07-23 11:04:09','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=214564
;
-- Jul 23, 2021, 11:04:09 AM MYT
ALTER TABLE AD_UserDef_Proc_Parameter ADD AD_FieldGroup_ID NUMBER(10) DEFAULT NULL
;
-- Jul 23, 2021, 11:04:09 AM MYT
ALTER TABLE AD_UserDef_Proc_Parameter ADD CONSTRAINT ADFieldGroup_ADUserDefProcPara FOREIGN KEY (AD_FieldGroup_ID) REFERENCES ad_fieldgroup(ad_fieldgroup_id) DEFERRABLE INITIALLY DEFERRED
;
-- Jul 23, 2021, 11:05:29 AM MYT
INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,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,IsQuickForm) VALUES (206734,'Field Group','Logical grouping of fields','The Field Group indicates the logical group that this field belongs to (History, Amounts, Quantities)',200235,214564,'Y',0,260,0,'N','N','N','N',0,0,'Y',TO_DATE('2021-07-23 11:05:28','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-07-23 11:05:28','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','6a5df652-cd30-4f11-aa94-a66f14379cdb','Y',260,1,2,1,'N','N','N','N')
;
SELECT register_migration_script('202107230228_IDEMPIERE-1994.sql') FROM dual
;

View File

@ -0,0 +1,54 @@
-- IDEMPIERE-1994 Ability to organise process and report parameters by Field Group functionality
INSERT INTO AD_Column (AD_Column_ID,SeqNoSelection,IsSyncDatabase,Version,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,Updated,IsUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,IsActive,CreatedBy,UpdatedBy,IsAlwaysUpdateable,AD_Client_ID,AD_Org_ID,Created,EntityType,IsEncrypted,IsSecure,FKConstraintType,AD_Element_ID,AD_Table_ID,AD_Reference_ID,IsToolbarButton) VALUES (213251,0,'N',0,'N','N','N',0,'N',22,'N','N','N','Y','3bcbe6d5-bc98-4fde-b930-f45c3fc2e870',TO_TIMESTAMP('2017-09-20 16:53:48','YYYY-MM-DD HH24:MI:SS'),'Y','AD_FieldGroup_ID','Logical grouping of fields','The Field Group indicates the logical group that this field belongs to (History, Amounts, Quantities)','Field Group','Y','Y',100,100,'N',0,0,TO_TIMESTAMP('2017-09-20 16:53:48','YYYY-MM-DD HH24:MI:SS'),'D','N','N','N',1500,285,19,'N')
;
-- Sep 20, 2017 4:53:56 PM SGT
INSERT INTO AD_TreeNode (AD_Client_ID,AD_Org_ID, IsActive,Created,CreatedBy,Updated,UpdatedBy, AD_Tree_ID, Node_ID, Parent_ID, SeqNo, AD_TreeNode_UU) SELECT t.AD_Client_ID, 0, 'Y', statement_timestamp(), 100, statement_timestamp(), 100,t.AD_Tree_ID, 200007, 0, 999, Generate_UUID() FROM AD_Tree t WHERE t.AD_Client_ID=0 AND t.IsActive='Y' AND t.IsAllNodes='Y' AND t.TreeType='TL' AND t.AD_Table_ID=282 AND NOT EXISTS (SELECT * FROM AD_TreeNode e WHERE e.AD_Tree_ID=t.AD_Tree_ID AND Node_ID=200007)
;
-- Sep 20, 2017 4:53:57 PM SGT
UPDATE AD_Column SET FKConstraintName='ADFieldGroup_ADProcessPara', FKConstraintType='N',Updated=TO_TIMESTAMP('2017-09-20 16:53:57','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=213251
;
-- Sep 20, 2017 4:53:57 PM SGT
ALTER TABLE AD_Process_Para ADD COLUMN AD_FieldGroup_ID NUMERIC(10) DEFAULT NULL
;
-- Sep 20, 2017 4:53:58 PM SGT
ALTER TABLE AD_Process_Para ADD CONSTRAINT ADFieldGroup_ADProcessPara FOREIGN KEY (AD_FieldGroup_ID) REFERENCES ad_fieldgroup(ad_fieldgroup_id) DEFERRABLE INITIALLY DEFERRED
;
-- Sep 20, 2017 4:55:11 PM SGT
INSERT INTO AD_TreeNode (AD_Client_ID,AD_Org_ID, IsActive,Created,CreatedBy,Updated,UpdatedBy, AD_Tree_ID, Node_ID, Parent_ID, SeqNo, AD_TreeNode_UU) SELECT t.AD_Client_ID, 0, 'Y', statement_timestamp(), 100, statement_timestamp(), 100,t.AD_Tree_ID, 200008, 0, 999, Generate_UUID() FROM AD_Tree t WHERE t.AD_Client_ID=0 AND t.IsActive='Y' AND t.IsAllNodes='Y' AND t.TreeType='TL' AND t.AD_Table_ID=282 AND NOT EXISTS (SELECT * FROM AD_TreeNode e WHERE e.AD_Tree_ID=t.AD_Tree_ID AND Node_ID=200008)
;
-- Sep 20, 2017 4:55:13 PM SGT
INSERT INTO AD_Field (AD_Field_ID,IsEncrypted,DisplayLength,IsSameLine,IsHeading,SeqNo,IsCentrallyMaintained,IsReadOnly,Help,AD_Org_ID,Updated,Description,Name,AD_Field_UU,IsDisplayed,IsFieldOnly,CreatedBy,UpdatedBy,IsActive,IsDisplayedGrid,SeqNoGrid,AD_Client_ID,Created,ColumnSpan,AD_Column_ID,EntityType,AD_Tab_ID) VALUES (205238,'N',22,'N','N',280,'Y','N','The Field Group indicates the logical group that this field belongs to (History, Amounts, Quantities)',0,TO_TIMESTAMP('2017-09-20 16:55:12','YYYY-MM-DD HH24:MI:SS'),'Logical grouping of fields','Field Group','50a7d3df-4713-4f7e-b030-7256d0f14c0c','Y','N',100,100,'Y','Y',280,0,TO_TIMESTAMP('2017-09-20 16:55:12','YYYY-MM-DD HH24:MI:SS'),2,213251,'D',246)
;
-- Sep 20, 2017 4:56:16 PM SGT
UPDATE AD_Field SET SeqNo=125, AD_Val_Rule_ID=NULL, SeqNoGrid=135, AD_Reference_Value_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2017-09-20 16:56:16','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=205238
;
-- Jul 23, 2021, 11:03:55 AM MYT
INSERT INTO AD_Column (AD_Column_ID,Version,Name,Description,Help,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,FKConstraintType,IsHtml) VALUES (214564,0,'Field Group','Logical grouping of fields','The Field Group indicates the logical group that this field belongs to (History, Amounts, Quantities)',200233,'AD_FieldGroup_ID',22,'N','N','N','N','N',0,'N',19,0,0,'Y',TO_TIMESTAMP('2021-07-23 11:03:54','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-07-23 11:03:54','YYYY-MM-DD HH24:MI:SS'),100,1500,'Y','N','D','N','N','N','Y','5ba627b6-8511-4f2e-82ba-d7fbf6a8a2fd','Y',0,'N','N','N','N')
;
-- Jul 23, 2021, 11:04:09 AM MYT
UPDATE AD_Column SET FKConstraintName='ADFieldGroup_ADUserDefProcPara', FKConstraintType='N',Updated=TO_TIMESTAMP('2021-07-23 11:04:09','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=214564
;
-- Jul 23, 2021, 11:04:09 AM MYT
ALTER TABLE AD_UserDef_Proc_Parameter ADD COLUMN AD_FieldGroup_ID NUMERIC(10) DEFAULT NULL
;
-- Jul 23, 2021, 11:04:09 AM MYT
ALTER TABLE AD_UserDef_Proc_Parameter ADD CONSTRAINT ADFieldGroup_ADUserDefProcPara FOREIGN KEY (AD_FieldGroup_ID) REFERENCES ad_fieldgroup(ad_fieldgroup_id) DEFERRABLE INITIALLY DEFERRED
;
-- Jul 23, 2021, 11:05:29 AM MYT
INSERT INTO AD_Field (AD_Field_ID,Name,Description,Help,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,IsQuickForm) VALUES (206734,'Field Group','Logical grouping of fields','The Field Group indicates the logical group that this field belongs to (History, Amounts, Quantities)',200235,214564,'Y',0,260,0,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2021-07-23 11:05:28','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-07-23 11:05:28','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','D','6a5df652-cd30-4f11-aa94-a66f14379cdb','Y',260,1,2,1,'N','N','N','N')
;
SELECT register_migration_script('202107230228_IDEMPIERE-1994.sql') FROM dual
;

View File

@ -430,6 +430,10 @@ public class GridFieldVO implements Serializable, Cloneable
vo.Placeholder = rs.getString("Placeholder"); vo.Placeholder = rs.getString("Placeholder");
vo.Placeholder2 = rs.getString("Placeholder2"); vo.Placeholder2 = rs.getString("Placeholder2");
vo.IsAutocomplete = "Y".equals(rs.getString("IsAutoComplete")); vo.IsAutocomplete = "Y".equals(rs.getString("IsAutoComplete"));
//
vo.FieldGroup = rs.getString("FieldGroup");
vo.FieldGroupType = rs.getString("FieldGroupType");
vo.IsCollapsedByDefault = "Y".equals(rs.getString("IsCollapsedByDefault"));
} }
catch (SQLException e) catch (SQLException e)
{ {
@ -477,6 +481,11 @@ public class GridFieldVO implements Serializable, Cloneable
vo.ValueMax = userDef.getValueMax(); vo.ValueMax = userDef.getValueMax();
if (userDef.getIsMandatory()!= null) if (userDef.getIsMandatory()!= null)
vo.IsMandatory = "Y".equals(userDef.getIsMandatory()); vo.IsMandatory = "Y".equals(userDef.getIsMandatory());
if (userDef.getAD_FieldGroup_ID() > 0) {
X_AD_FieldGroup fg = new X_AD_FieldGroup(Env.getCtx(), userDef.getAD_FieldGroup_ID(), null);
vo.FieldGroup = fg.get_Translation(X_AD_FieldGroup.COLUMNNAME_Name);
vo.FieldGroupType = fg.getFieldGroupType();
}
} }
} }
//fim devCoffee - 3858 //fim devCoffee - 3858

View File

@ -64,6 +64,21 @@ public interface I_AD_Process_Para
public org.compiere.model.I_AD_Element getAD_Element() throws RuntimeException; public org.compiere.model.I_AD_Element getAD_Element() throws RuntimeException;
/** Column name AD_FieldGroup_ID */
public static final String COLUMNNAME_AD_FieldGroup_ID = "AD_FieldGroup_ID";
/** Set Field Group.
* Logical grouping of fields
*/
public void setAD_FieldGroup_ID (int AD_FieldGroup_ID);
/** Get Field Group.
* Logical grouping of fields
*/
public int getAD_FieldGroup_ID();
public org.compiere.model.I_AD_FieldGroup getAD_FieldGroup() throws RuntimeException;
/** Column name AD_Org_ID */ /** Column name AD_Org_ID */
public static final String COLUMNNAME_AD_Org_ID = "AD_Org_ID"; public static final String COLUMNNAME_AD_Org_ID = "AD_Org_ID";

View File

@ -49,6 +49,21 @@ public interface I_AD_UserDef_Proc_Parameter
*/ */
public int getAD_Client_ID(); public int getAD_Client_ID();
/** Column name AD_FieldGroup_ID */
public static final String COLUMNNAME_AD_FieldGroup_ID = "AD_FieldGroup_ID";
/** Set Field Group.
* Logical grouping of fields
*/
public void setAD_FieldGroup_ID (int AD_FieldGroup_ID);
/** Get Field Group.
* Logical grouping of fields
*/
public int getAD_FieldGroup_ID();
public org.compiere.model.I_AD_FieldGroup getAD_FieldGroup() throws RuntimeException;
/** Column name AD_Org_ID */ /** Column name AD_Org_ID */
public static final String COLUMNNAME_AD_Org_ID = "AD_Org_ID"; public static final String COLUMNNAME_AD_Org_ID = "AD_Org_ID";

View File

@ -30,7 +30,7 @@ public class X_AD_Process_Para extends PO implements I_AD_Process_Para, I_Persis
/** /**
* *
*/ */
private static final long serialVersionUID = 20201220L; private static final long serialVersionUID = 20210723L;
/** Standard Constructor */ /** Standard Constructor */
public X_AD_Process_Para (Properties ctx, int AD_Process_Para_ID, String trxName) public X_AD_Process_Para (Properties ctx, int AD_Process_Para_ID, String trxName)
@ -115,6 +115,34 @@ public class X_AD_Process_Para extends PO implements I_AD_Process_Para, I_Persis
return ii.intValue(); return ii.intValue();
} }
public org.compiere.model.I_AD_FieldGroup getAD_FieldGroup() throws RuntimeException
{
return (org.compiere.model.I_AD_FieldGroup)MTable.get(getCtx(), org.compiere.model.I_AD_FieldGroup.Table_Name)
.getPO(getAD_FieldGroup_ID(), get_TrxName()); }
/** Set Field Group.
@param AD_FieldGroup_ID
Logical grouping of fields
*/
public void setAD_FieldGroup_ID (int AD_FieldGroup_ID)
{
if (AD_FieldGroup_ID < 1)
set_Value (COLUMNNAME_AD_FieldGroup_ID, null);
else
set_Value (COLUMNNAME_AD_FieldGroup_ID, Integer.valueOf(AD_FieldGroup_ID));
}
/** Get Field Group.
@return Logical grouping of fields
*/
public int getAD_FieldGroup_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_AD_FieldGroup_ID);
if (ii == null)
return 0;
return ii.intValue();
}
public org.compiere.model.I_AD_Process getAD_Process() throws RuntimeException public org.compiere.model.I_AD_Process getAD_Process() throws RuntimeException
{ {
return (org.compiere.model.I_AD_Process)MTable.get(getCtx(), org.compiere.model.I_AD_Process.Table_Name) return (org.compiere.model.I_AD_Process)MTable.get(getCtx(), org.compiere.model.I_AD_Process.Table_Name)

View File

@ -30,7 +30,7 @@ public class X_AD_UserDef_Proc_Parameter extends PO implements I_AD_UserDef_Proc
/** /**
* *
*/ */
private static final long serialVersionUID = 20201220L; private static final long serialVersionUID = 20210723L;
/** Standard Constructor */ /** Standard Constructor */
public X_AD_UserDef_Proc_Parameter (Properties ctx, int AD_UserDef_Proc_Parameter_ID, String trxName) public X_AD_UserDef_Proc_Parameter (Properties ctx, int AD_UserDef_Proc_Parameter_ID, String trxName)
@ -72,6 +72,34 @@ public class X_AD_UserDef_Proc_Parameter extends PO implements I_AD_UserDef_Proc
return sb.toString(); return sb.toString();
} }
public org.compiere.model.I_AD_FieldGroup getAD_FieldGroup() throws RuntimeException
{
return (org.compiere.model.I_AD_FieldGroup)MTable.get(getCtx(), org.compiere.model.I_AD_FieldGroup.Table_Name)
.getPO(getAD_FieldGroup_ID(), get_TrxName()); }
/** Set Field Group.
@param AD_FieldGroup_ID
Logical grouping of fields
*/
public void setAD_FieldGroup_ID (int AD_FieldGroup_ID)
{
if (AD_FieldGroup_ID < 1)
set_Value (COLUMNNAME_AD_FieldGroup_ID, null);
else
set_Value (COLUMNNAME_AD_FieldGroup_ID, Integer.valueOf(AD_FieldGroup_ID));
}
/** Get Field Group.
@return Logical grouping of fields
*/
public int getAD_FieldGroup_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_AD_FieldGroup_ID);
if (ii == null)
return 0;
return ii.intValue();
}
public org.compiere.model.I_AD_Process_Para getAD_Process_Para() throws RuntimeException public org.compiere.model.I_AD_Process_Para getAD_Process_Para() throws RuntimeException
{ {
return (org.compiere.model.I_AD_Process_Para)MTable.get(getCtx(), org.compiere.model.I_AD_Process_Para.Table_Name) return (org.compiere.model.I_AD_Process_Para)MTable.get(getCtx(), org.compiere.model.I_AD_Process_Para.Table_Name)
@ -333,10 +361,10 @@ public class X_AD_UserDef_Proc_Parameter extends PO implements I_AD_UserDef_Proc
/** IsDisplayed AD_Reference_ID=319 */ /** IsDisplayed AD_Reference_ID=319 */
public static final int ISDISPLAYED_AD_Reference_ID=319; public static final int ISDISPLAYED_AD_Reference_ID=319;
/** Yes = Y */
public static final String ISDISPLAYED_Yes = "Y";
/** No = N */ /** No = N */
public static final String ISDISPLAYED_No = "N"; public static final String ISDISPLAYED_No = "N";
/** Yes = Y */
public static final String ISDISPLAYED_Yes = "Y";
/** Set Displayed. /** Set Displayed.
@param IsDisplayed @param IsDisplayed
Determines, if this field is displayed Determines, if this field is displayed
@ -357,10 +385,10 @@ public class X_AD_UserDef_Proc_Parameter extends PO implements I_AD_UserDef_Proc
/** IsMandatory AD_Reference_ID=319 */ /** IsMandatory AD_Reference_ID=319 */
public static final int ISMANDATORY_AD_Reference_ID=319; public static final int ISMANDATORY_AD_Reference_ID=319;
/** Yes = Y */
public static final String ISMANDATORY_Yes = "Y";
/** No = N */ /** No = N */
public static final String ISMANDATORY_No = "N"; public static final String ISMANDATORY_No = "N";
/** Yes = Y */
public static final String ISMANDATORY_Yes = "Y";
/** Set Mandatory. /** Set Mandatory.
@param IsMandatory @param IsMandatory
Data entry is required in this column Data entry is required in this column

View File

@ -56,5 +56,5 @@ Copyright (C) 2007 Ashley G Ramdass (ADempiere WebUI).
<!-- this js module doesn't actually exists and it is here for default theme version --> <!-- this js module doesn't actually exists and it is here for default theme version -->
<!-- since loading of js module is on demand, it doesn't cause any error as long as you don't try to load it --> <!-- since loading of js module is on demand, it doesn't cause any error as long as you don't try to load it -->
<javascript-module name="idempiere.theme.default" version="202107101500" /> <javascript-module name="idempiere.theme.default" version="202107230430" />
</language> </language>

View File

@ -21,7 +21,9 @@ import java.sql.SQLException;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.logging.Level; import java.util.logging.Level;
import org.adempiere.webui.Extensions; import org.adempiere.webui.Extensions;
@ -31,6 +33,7 @@ import org.adempiere.webui.component.Columns;
import org.adempiere.webui.component.EditorBox; import org.adempiere.webui.component.EditorBox;
import org.adempiere.webui.component.Grid; import org.adempiere.webui.component.Grid;
import org.adempiere.webui.component.GridFactory; import org.adempiere.webui.component.GridFactory;
import org.adempiere.webui.component.Group;
import org.adempiere.webui.component.NumberBox; import org.adempiere.webui.component.NumberBox;
import org.adempiere.webui.component.Panel; import org.adempiere.webui.component.Panel;
import org.adempiere.webui.component.Row; import org.adempiere.webui.component.Row;
@ -55,6 +58,7 @@ import org.compiere.model.MLookup;
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;
import org.compiere.model.X_AD_FieldGroup;
import org.compiere.process.ProcessInfo; import org.compiere.process.ProcessInfo;
import org.compiere.util.CLogger; import org.compiere.util.CLogger;
import org.compiere.util.DB; import org.compiere.util.DB;
@ -67,8 +71,10 @@ import org.zkoss.zk.ui.HtmlBasedComponent;
import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.event.Events;
import org.zkoss.zul.Cell;
import org.zkoss.zul.Div; import org.zkoss.zul.Div;
import org.zkoss.zul.Label; import org.zkoss.zul.Label;
import org.zkoss.zul.Separator;
import org.zkoss.zul.Space; import org.zkoss.zul.Space;
import org.zkoss.zul.impl.InputElement; import org.zkoss.zul.impl.InputElement;
import org.zkoss.zul.impl.XulElement; import org.zkoss.zul.impl.XulElement;
@ -141,6 +147,11 @@ public class ProcessParameterPanel extends Panel implements
private ArrayList<Space> m_separators = new ArrayList<Space>(); private ArrayList<Space> m_separators = new ArrayList<Space>();
// //
private Grid centerPanel = null; private Grid centerPanel = null;
private Map<String, List<Row>> fieldGroupContents = new HashMap<String, List<Row>>();
private Map<String, List<org.zkoss.zul.Row>> fieldGroupHeaders = new HashMap<String, List<org.zkoss.zul.Row>>();
private ArrayList<Row> rowList;
private List<Group> allCollapsibleGroups = new ArrayList<Group>();
private Group currentGroup;
/** /**
* Dispose * Dispose
@ -210,9 +221,11 @@ public class ProcessParameterPanel extends Panel implements
+ "p.DefaultValue, p.DefaultValue2, p.VFormat, p.ValueMin, p.ValueMax, " + "p.DefaultValue, p.DefaultValue2, p.VFormat, p.ValueMin, p.ValueMax, "
+ "p.SeqNo, p.AD_Reference_Value_ID, vr.Code AS ValidationCode, " + "p.SeqNo, p.AD_Reference_Value_ID, vr.Code AS ValidationCode, "
+ "p.ReadOnlyLogic, p.DisplayLogic, p.IsEncrypted, NULL AS FormatPattern, p.MandatoryLogic, p.Placeholder, p.Placeholder2, p.isAutoComplete, " + "p.ReadOnlyLogic, p.DisplayLogic, p.IsEncrypted, NULL AS FormatPattern, p.MandatoryLogic, p.Placeholder, p.Placeholder2, p.isAutoComplete, "
+ "'' AS ValidationCodeLookup " + "'' AS ValidationCodeLookup, "
+ "fg.Name AS FieldGroup, fg.FieldGroupType, fg.IsCollapsedByDefault "
+ "FROM AD_Process_Para p" + "FROM AD_Process_Para p"
+ " LEFT OUTER JOIN AD_Val_Rule vr ON (p.AD_Val_Rule_ID=vr.AD_Val_Rule_ID) " + " LEFT OUTER JOIN AD_Val_Rule vr ON (p.AD_Val_Rule_ID=vr.AD_Val_Rule_ID) "
+ " LEFT OUTER JOIN AD_FieldGroup fg ON (p.AD_FieldGroup_ID=fg.AD_FieldGroup_ID) "
+ "WHERE p.AD_Process_ID=?" // 1 + "WHERE p.AD_Process_ID=?" // 1
+ " AND p.IsActive='Y' " + ASPFilter + " ORDER BY SeqNo"; + " AND p.IsActive='Y' " + ASPFilter + " ORDER BY SeqNo";
else else
@ -222,10 +235,13 @@ public class ProcessParameterPanel extends Panel implements
+ "p.DefaultValue, p.DefaultValue2, p.VFormat, p.ValueMin, p.ValueMax, " + "p.DefaultValue, p.DefaultValue2, p.VFormat, p.ValueMin, p.ValueMax, "
+ "p.SeqNo, p.AD_Reference_Value_ID, vr.Code AS ValidationCode, " + "p.SeqNo, p.AD_Reference_Value_ID, vr.Code AS ValidationCode, "
+ "p.ReadOnlyLogic, p.DisplayLogic, p.IsEncrypted, NULL AS FormatPattern,p.MandatoryLogic, t.Placeholder, t.Placeholder2, p.isAutoComplete, " + "p.ReadOnlyLogic, p.DisplayLogic, p.IsEncrypted, NULL AS FormatPattern,p.MandatoryLogic, t.Placeholder, t.Placeholder2, p.isAutoComplete, "
+ "'' AS ValidationCodeLookup " + "'' AS ValidationCodeLookup, "
+ "fgt.Name AS FieldGroup, fg.FieldGroupType, fg.IsCollapsedByDefault "
+ "FROM AD_Process_Para p" + "FROM AD_Process_Para p"
+ " INNER JOIN AD_Process_Para_Trl t ON (p.AD_Process_Para_ID=t.AD_Process_Para_ID)" + " INNER JOIN AD_Process_Para_Trl t ON (p.AD_Process_Para_ID=t.AD_Process_Para_ID)"
+ " LEFT OUTER JOIN AD_Val_Rule vr ON (p.AD_Val_Rule_ID=vr.AD_Val_Rule_ID) " + " LEFT OUTER JOIN AD_Val_Rule vr ON (p.AD_Val_Rule_ID=vr.AD_Val_Rule_ID) "
+ " LEFT OUTER JOIN AD_FieldGroup fg ON (p.AD_FieldGroup_ID=fg.AD_FieldGroup_ID) "
+ " LEFT OUTER JOIN AD_FieldGroup_Trl fgt ON (p.AD_FieldGroup_ID=fgt.AD_FieldGroup_ID AND fgt.AD_Language='" + Env.getAD_Language(Env.getCtx()) + "') "
+ "WHERE p.AD_Process_ID=?" // 1 + "WHERE p.AD_Process_ID=?" // 1
+ " AND t.AD_Language='" + Env.getAD_Language(Env.getCtx()) + " AND t.AD_Language='" + Env.getAD_Language(Env.getCtx())
+ "'" + " AND p.IsActive='Y' " + ASPFilter + "'" + " AND p.IsActive='Y' " + ASPFilter
@ -233,7 +249,9 @@ public class ProcessParameterPanel extends Panel implements
// Create Fields // Create Fields
boolean hasFields = false; boolean hasFields = false;
String currentFieldGroup = null;
Rows rows = new Rows(); Rows rows = new Rows();
Row row = new Row();
PreparedStatement pstmt = null; PreparedStatement pstmt = null;
ResultSet rs = null; ResultSet rs = null;
try { try {
@ -241,6 +259,7 @@ public class ProcessParameterPanel extends Panel implements
pstmt.setInt(1, m_processInfo.getAD_Process_ID()); pstmt.setInt(1, m_processInfo.getAD_Process_ID());
rs = pstmt.executeQuery(); rs = pstmt.executeQuery();
ArrayList<GridFieldVO> listVO = new ArrayList<GridFieldVO>(); ArrayList<GridFieldVO> listVO = new ArrayList<GridFieldVO>();
List<Group>toCollapsed = new ArrayList<Group>();
while (rs.next()) { while (rs.next()) {
hasFields = true; hasFields = true;
@ -252,9 +271,72 @@ public class ProcessParameterPanel extends Panel implements
for (int i = 0; i < listVO.size(); i++) for (int i = 0; i < listVO.size(); i++)
{ {
createField(listVO.get(i), rows); GridFieldVO voF = listVO.get(i);
GridField field = new GridField(voF);
m_mFields.add(field); // add to Fields
String fieldGroup = field.getFieldGroup();
if (!Util.isEmpty(fieldGroup) && !fieldGroup.equals(currentFieldGroup)) // group changed
{
currentFieldGroup = fieldGroup;
row.setGroup(currentGroup);
rows.appendChild(row);
if (rowList != null)
rowList.add(row);
List<org.zkoss.zul.Row> headerRows = new ArrayList<org.zkoss.zul.Row>();
fieldGroupHeaders.put(fieldGroup, headerRows);
rowList = new ArrayList<Row>();
fieldGroupContents.put(fieldGroup, rowList);
if (X_AD_FieldGroup.FIELDGROUPTYPE_Label.equals(field.getFieldGroupType()))
{
row = new Row();
Label groupLabel = new Label(fieldGroup);
row.appendCellChild(groupLabel, 3);
rows.appendChild(row);
headerRows.add(row);
row = new Row();
Separator separator = new Separator();
separator.setBar(true);
row.appendCellChild(separator, 3);
rows.appendChild(row);
headerRows.add(row);
currentGroup = null;
}
else
{
Group rowg = new Group(fieldGroup);
Cell cell = (Cell) rowg.getFirstChild();
cell.setSclass("z-group-inner");
cell.setColspan(3);
allCollapsibleGroups.add(rowg);
if (X_AD_FieldGroup.FIELDGROUPTYPE_Tab.equals(field.getFieldGroupType()) || field.getIsCollapsedByDefault())
{
toCollapsed.add(rowg);
}
currentGroup = rowg;
rows.appendChild(rowg);
headerRows.add(rowg);
}
row = new Row();
}
row = new Row();
createField(voF, field, row);
row.setGroup(currentGroup);
rows.appendChild(row);
if (rowList != null)
rowList.add(row);
if (log.isLoggable(Level.INFO)) log.info(listVO.get(i).ColumnName + listVO.get(i).SeqNo); if (log.isLoggable(Level.INFO)) log.info(listVO.get(i).ColumnName + listVO.get(i).SeqNo);
} }
if (toCollapsed.size() > 0)
toCollapsed.stream().forEach(g -> g.setOpen(false));
} catch (SQLException e) { } catch (SQLException e) {
log.log(Level.SEVERE, sql, e); log.log(Level.SEVERE, sql, e);
@ -289,13 +371,10 @@ public class ProcessParameterPanel extends Panel implements
* used to retrieve the value (no data binding) * used to retrieve the value (no data binding)
* *
* @param voF GridFieldVO * @param voF GridFieldVO
* @param mField
* @param row
*/ */
private void createField(GridFieldVO voF, Rows rows) { private void createField(GridFieldVO voF, GridField mField, Row row) {
GridField mField = new GridField(voF);
m_mFields.add(mField); // add to Fields
Row row = new Row();
// The Editor // The Editor
WEditor editor = WebEditorFactory.getEditor(mField, false); WEditor editor = WebEditorFactory.getEditor(mField, false);
editor.setProcessParameter(true); editor.setProcessParameter(true);
@ -388,7 +467,6 @@ public class ProcessParameterPanel extends Panel implements
m_wEditors2.add(null); m_wEditors2.add(null);
m_separators.add(null); m_separators.add(null);
} }
rows.appendChild(row);
} // createField } // createField
private void setEditorPlaceHolder(WEditor editor, String msg) { private void setEditorPlaceHolder(WEditor editor, String msg) {

View File

@ -85,15 +85,21 @@ when detect side effect, fix to only apply for parameter window*/
.input-paramenter-layout{ .input-paramenter-layout{
width: 70%; width: 70%;
margin-left: 5%;
margin-right: 25%;
} }
@media screen and (max-width: 700px) { @media screen and (max-width: 700px) {
.input-paramenter-layout{ .input-paramenter-layout{
width: 90% !important; width: 90% !important;
margin-left: 2% !important;
margin-right: 8% !important;
} }
} }
@media screen and (max-width: 500px) { @media screen and (max-width: 500px) {
.input-paramenter-layout{ .input-paramenter-layout{
width: 100% !important; width: 100% !important;
margin-left: 0 !important;
margin-right: 0 !important;
} }
} }