IDEMPIERE-3981: FindWindow - Overwrite isSelection at field level, Va… (#249)

* IDEMPIERE-3981: FindWindow - Overwrite isSelection at field level, Validation Rule overwrite for Find window, Extended search and advanced hiding options.

* IDEMPIERE-3981: Correcting migration script as per Carlos' code review finding

* IDEMPIERE-3981: Fixing as per code review comment
Co-authored-by: muriloht muriloht@devcoffee.com.br

Co-authored-by: Carlos Ruiz <carg67@gmail.com>
This commit is contained in:
Deepak Pansheriya 2020-10-21 17:02:25 +05:30 committed by GitHub
parent 00153d7c8d
commit 08f6fb17d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
28 changed files with 2520 additions and 51 deletions

View File

@ -1,10 +1,11 @@
CREATE OR REPLACE VIEW ad_field_v AS
SELECT t.ad_window_id, f.ad_tab_id, f.ad_field_id, tbl.ad_table_id, f.ad_column_id, f.name, f.description, f.help, f.isdisplayed, f.displaylogic, f.displaylength, f.seqno, f.sortno, f.issameline, f.isheading, f.isfieldonly, f.isreadonly, f.isencrypted AS isencryptedfield, f.obscuretype, c.columnname, c.columnsql, c.fieldlength, COALESCE(f.VFormat, c.VFormat) AS VFormat, COALESCE(f.defaultvalue, c.defaultvalue) AS defaultvalue, c.iskey, c.isparent, COALESCE(f.ismandatory, c.ismandatory) AS ismandatory, c.isidentifier, c.istranslated, COALESCE(f.ad_reference_value_id, c.ad_reference_value_id) AS ad_reference_value_id, c.callout, COALESCE(f.ad_reference_id, c.ad_reference_id) AS ad_reference_id, COALESCE(f.ad_val_rule_id, c.ad_val_rule_id) AS ad_val_rule_id, c.ad_process_id, COALESCE(f.isalwaysupdateable, c.isalwaysupdateable) AS isalwaysupdateable, COALESCE(f.readonlylogic, c.readonlylogic) AS readonlylogic, COALESCE(f.mandatorylogic, c.mandatorylogic) AS mandatorylogic, COALESCE(f.isupdateable, c.isupdateable) AS isupdateable, c.isencrypted AS isencryptedcolumn, c.isselectioncolumn, tbl.tablename, c.valuemin, c.valuemax, fg.name AS fieldgroup, vr.code AS validationcode, f.included_tab_id, fg.fieldgrouptype, fg.iscollapsedbydefault, COALESCE(f.infofactoryclass, c.infofactoryclass) AS infofactoryclass, c.isautocomplete, COALESCE(f.isallowcopy, c.isallowcopy) AS isallowcopy, f.isdisplayedgrid, f.seqnogrid, c.seqnoselection, f.xposition, f.columnspan, f.numlines, COALESCE(f.istoolbarbutton, c.istoolbarbutton) AS istoolbarbutton, c.formatpattern, f.isadvancedfield, f.isdefaultfocus, c.ad_chart_id, f.ad_labelstyle_id, f.ad_fieldstyle_id, c.pa_dashboardcontent_id, COALESCE(f.placeholder, c.placeholder) AS placeholder, c.ishtml, f.isquickform
SELECT t.ad_window_id, f.ad_tab_id, f.ad_field_id, tbl.ad_table_id, f.ad_column_id, f.name, f.description, f.help, f.isdisplayed, f.displaylogic, f.displaylength, f.seqno, f.sortno, f.issameline, f.isheading, f.isfieldonly, f.isreadonly, f.isencrypted AS isencryptedfield, f.obscuretype, c.columnname, c.columnsql, c.fieldlength, COALESCE(f.VFormat, c.VFormat) AS VFormat, COALESCE(f.defaultvalue, c.defaultvalue) AS defaultvalue, c.iskey, c.isparent, COALESCE(f.ismandatory, c.ismandatory) AS ismandatory, c.isidentifier, c.istranslated, COALESCE(f.ad_reference_value_id, c.ad_reference_value_id) AS ad_reference_value_id, c.callout, COALESCE(f.ad_reference_id, c.ad_reference_id) AS ad_reference_id, COALESCE(f.ad_val_rule_id, c.ad_val_rule_id) AS ad_val_rule_id, c.ad_process_id, COALESCE(f.isalwaysupdateable, c.isalwaysupdateable) AS isalwaysupdateable, COALESCE(f.readonlylogic, c.readonlylogic) AS readonlylogic, COALESCE(f.mandatorylogic, c.mandatorylogic) AS mandatorylogic, COALESCE(f.isupdateable, c.isupdateable) AS isupdateable, c.isencrypted AS isencryptedcolumn, COALESCE(f.isselectioncolumn, c.isselectioncolumn) AS isselectioncolumn, tbl.tablename, c.valuemin, c.valuemax, fg.name AS fieldgroup, vr.code AS validationcode, f.included_tab_id, fg.fieldgrouptype, fg.iscollapsedbydefault, COALESCE(f.infofactoryclass, c.infofactoryclass) AS infofactoryclass, c.isautocomplete, COALESCE(f.isallowcopy, c.isallowcopy) AS isallowcopy, f.isdisplayedgrid, f.seqnogrid, c.seqnoselection, f.xposition, f.columnspan, f.numlines, COALESCE(f.istoolbarbutton, c.istoolbarbutton) AS istoolbarbutton, c.formatpattern, f.isadvancedfield, f.isdefaultfocus, c.ad_chart_id, f.ad_labelstyle_id, f.ad_fieldstyle_id, c.pa_dashboardcontent_id, COALESCE(f.placeholder, c.placeholder) AS placeholder, c.ishtml, f.isquickform, COALESCE(f.ad_val_rule_Lookup_id, c.ad_val_rule_Lookup_id) AS ad_val_rule_Lookup_id, vrf.code AS validationcodeLookup
FROM ad_field f
JOIN ad_tab t ON f.ad_tab_id = t.ad_tab_id
LEFT JOIN ad_fieldgroup fg ON f.ad_fieldgroup_id = fg.ad_fieldgroup_id
LEFT JOIN ad_column c ON f.ad_column_id = c.ad_column_id
JOIN ad_table tbl ON c.ad_table_id = tbl.ad_table_id
LEFT JOIN ad_val_rule vr ON vr.ad_val_rule_id = COALESCE(f.ad_val_rule_id, c.ad_val_rule_id)
LEFT JOIN ad_val_rule vrf ON vrf.ad_val_rule_id = COALESCE(f.ad_val_rule_Lookup_id, c.ad_val_rule_Lookup_id)
WHERE f.isactive = 'Y' AND c.isactive = 'Y'
;

View File

@ -1,5 +1,5 @@
CREATE OR REPLACE VIEW ad_field_vt AS
SELECT trl.ad_language, t.ad_window_id, f.ad_tab_id, f.ad_field_id, tbl.ad_table_id, f.ad_column_id, trl.name, trl.description, trl.help, f.isdisplayed, f.displaylogic, f.displaylength, f.seqno, f.sortno, f.issameline, f.isheading, f.isfieldonly, f.isreadonly, f.isencrypted AS isencryptedfield, f.obscuretype, c.columnname, c.columnsql, c.fieldlength, COALESCE(f.VFormat, c.VFormat) AS VFormat, COALESCE(f.defaultvalue, c.defaultvalue) AS defaultvalue, c.iskey, c.isparent, COALESCE(f.ismandatory, c.ismandatory) AS ismandatory, c.isidentifier, c.istranslated, COALESCE(f.ad_reference_value_id, c.ad_reference_value_id) AS ad_reference_value_id, c.callout, COALESCE(f.ad_reference_id, c.ad_reference_id) AS ad_reference_id, COALESCE(f.ad_val_rule_id, c.ad_val_rule_id) AS ad_val_rule_id, c.ad_process_id, COALESCE(f.isalwaysupdateable, c.isalwaysupdateable) AS isalwaysupdateable, COALESCE(f.readonlylogic, c.readonlylogic) AS readonlylogic, COALESCE(f.mandatorylogic, c.mandatorylogic) AS mandatorylogic, COALESCE(f.isupdateable, c.isupdateable) AS isupdateable, c.isencrypted AS isencryptedcolumn, c.isselectioncolumn, tbl.tablename, c.valuemin, c.valuemax, fgt.name AS fieldgroup, vr.code AS validationcode, f.included_tab_id, fg.fieldgrouptype, fg.iscollapsedbydefault, COALESCE(f.infofactoryclass, c.infofactoryclass) AS infofactoryclass, c.isautocomplete, COALESCE(f.isallowcopy, c.isallowcopy) AS isallowcopy, f.isdisplayedgrid, f.seqnogrid, c.seqnoselection, f.xposition, f.columnspan, f.numlines, COALESCE(f.istoolbarbutton, c.istoolbarbutton) AS istoolbarbutton, c.formatpattern, f.isadvancedfield, f.isdefaultfocus, c.ad_chart_id, f.ad_labelstyle_id, f.ad_fieldstyle_id, c.pa_dashboardcontent_id, COALESCE(trl.placeholder, ct.placeholder) AS placeholder, c.ishtml, f.isquickform
SELECT trl.ad_language, t.ad_window_id, f.ad_tab_id, f.ad_field_id, tbl.ad_table_id, f.ad_column_id, trl.name, trl.description, trl.help, f.isdisplayed, f.displaylogic, f.displaylength, f.seqno, f.sortno, f.issameline, f.isheading, f.isfieldonly, f.isreadonly, f.isencrypted AS isencryptedfield, f.obscuretype, c.columnname, c.columnsql, c.fieldlength, COALESCE(f.VFormat, c.VFormat) AS VFormat, COALESCE(f.defaultvalue, c.defaultvalue) AS defaultvalue, c.iskey, c.isparent, COALESCE(f.ismandatory, c.ismandatory) AS ismandatory, c.isidentifier, c.istranslated, COALESCE(f.ad_reference_value_id, c.ad_reference_value_id) AS ad_reference_value_id, c.callout, COALESCE(f.ad_reference_id, c.ad_reference_id) AS ad_reference_id, COALESCE(f.ad_val_rule_id, c.ad_val_rule_id) AS ad_val_rule_id, c.ad_process_id, COALESCE(f.isalwaysupdateable, c.isalwaysupdateable) AS isalwaysupdateable, COALESCE(f.readonlylogic, c.readonlylogic) AS readonlylogic, COALESCE(f.mandatorylogic, c.mandatorylogic) AS mandatorylogic, COALESCE(f.isupdateable, c.isupdateable) AS isupdateable, c.isencrypted AS isencryptedcolumn, COALESCE(f.isselectioncolumn, c.isselectioncolumn) AS isselectioncolumn, tbl.tablename, c.valuemin, c.valuemax, fgt.name AS fieldgroup, vr.code AS validationcode, f.included_tab_id, fg.fieldgrouptype, fg.iscollapsedbydefault, COALESCE(f.infofactoryclass, c.infofactoryclass) AS infofactoryclass, c.isautocomplete, COALESCE(f.isallowcopy, c.isallowcopy) AS isallowcopy, f.isdisplayedgrid, f.seqnogrid, c.seqnoselection, f.xposition, f.columnspan, f.numlines, COALESCE(f.istoolbarbutton, c.istoolbarbutton) AS istoolbarbutton, c.formatpattern, f.isadvancedfield, f.isdefaultfocus, c.ad_chart_id, f.ad_labelstyle_id, f.ad_fieldstyle_id, c.pa_dashboardcontent_id, COALESCE(trl.placeholder, ct.placeholder) AS placeholder, c.ishtml, f.isquickform, COALESCE(f.ad_val_rule_Lookup_id, c.ad_val_rule_Lookup_id) AS ad_val_rule_Lookup_id, vrf.code AS validationcodeLookup
FROM ad_field f
JOIN ad_field_trl trl ON f.ad_field_id = trl.ad_field_id
JOIN ad_tab t ON f.ad_tab_id = t.ad_tab_id
@ -9,6 +9,7 @@ CREATE OR REPLACE VIEW ad_field_vt AS
LEFT JOIN ad_column_trl ct ON f.ad_column_id = ct.ad_column_id AND trl.ad_language = ct.ad_language
JOIN ad_table tbl ON c.ad_table_id = tbl.ad_table_id
LEFT JOIN ad_val_rule vr ON vr.ad_val_rule_id = COALESCE(f.ad_val_rule_id, c.ad_val_rule_id)
LEFT JOIN ad_val_rule vrf ON vrf.ad_val_rule_id = COALESCE(f.ad_val_rule_Lookup_id, c.ad_val_rule_Lookup_id)
WHERE f.isactive = 'Y' AND c.isactive = 'Y'
;

View File

@ -7,7 +7,7 @@ CREATE OR REPLACE VIEW AD_TAB_V
READONLYLOGIC, DISPLAYLOGIC, AD_COLUMN_ID, AD_PROCESS_ID, ISSORTTAB,
ISINSERTRECORD, ISADVANCEDTAB, AD_COLUMNSORTORDER_ID, AD_COLUMNSORTYESNO_ID,
INCLUDED_TAB_ID, PARENT_COLUMN_ID, AD_Tab_UU, AD_Table_UU, TREEDISPLAYEDON,
MAXQUERYRECORDS)
MAXQUERYRECORDS, IsAllowAdvancedLookup, IsLookupOnlySelection)
AS
SELECT t.AD_Tab_ID, t.AD_Window_ID, t.AD_Table_ID, t.Name, t.Description,
t.Help, t.SeqNo, t.IsSingleRow, t.HasTree, t.IsInfoTab, tbl.ReplicationType,
@ -17,11 +17,10 @@ SELECT t.AD_Tab_ID, t.AD_Window_ID, t.AD_Table_ID, t.Name, t.Description,
t.WhereClause, t.OrderByClause, t.CommitWarning, t.ReadOnlyLogic, t.DisplayLogic,
t.AD_Column_ID, t.AD_Process_ID, t.IsSortTab, t.IsInsertRecord, t.IsAdvancedTab,
t.AD_ColumnSortOrder_ID, t.AD_ColumnSortYesNo_ID, t.Included_Tab_ID, t.Parent_Column_ID,
t.AD_Tab_UU, tbl.AD_Table_UU, t.TreeDisplayedOn, t.MaxQueryRecords
t.AD_Tab_UU, tbl.AD_Table_UU, t.TreeDisplayedOn, t.MaxQueryRecords,
t.IsAllowAdvancedLookup, t.IsLookupOnlySelection
FROM AD_Tab t
INNER JOIN AD_Table tbl ON (t.AD_Table_ID = tbl.AD_Table_ID)
WHERE t.IsActive='Y'
AND tbl.IsActive='Y';
AND tbl.IsActive='Y'
;

View File

@ -7,7 +7,7 @@ CREATE OR REPLACE VIEW AD_TAB_VT
COMMITWARNING, READONLYLOGIC, DISPLAYLOGIC, AD_COLUMN_ID, AD_PROCESS_ID,
ISSORTTAB, ISINSERTRECORD, ISADVANCEDTAB, AD_COLUMNSORTORDER_ID, AD_COLUMNSORTYESNO_ID,
INCLUDED_TAB_ID, PARENT_COLUMN_ID, AD_Tab_UU, AD_Table_UU, TREEDISPLAYEDON,
MAXQUERYRECORDS)
MAXQUERYRECORDS, IsAllowAdvancedLookup, IsLookupOnlySelection)
AS
SELECT trl.AD_Language, t.AD_Tab_ID, t.AD_Window_ID, t.AD_Table_ID, trl.Name, trl.Description,
trl.Help, t.SeqNo, t.IsSingleRow, t.HasTree, t.IsInfoTab, tbl.ReplicationType,
@ -17,12 +17,11 @@ SELECT trl.AD_Language, t.AD_Tab_ID, t.AD_Window_ID, t.AD_Table_ID, trl.Name, tr
t.WhereClause, t.OrderByClause, trl.CommitWarning, t.ReadOnlyLogic, t.DisplayLogic,
t.AD_Column_ID, t.AD_Process_ID, t.IsSortTab, t.IsInsertRecord, t.IsAdvancedTab,
t.AD_ColumnSortOrder_ID, t.AD_ColumnSortYesNo_ID, t.Included_Tab_ID, t.Parent_Column_ID,
t.AD_Tab_UU, tbl.AD_Table_UU, t.TreeDisplayedOn, t.MaxQueryRecords
t.AD_Tab_UU, tbl.AD_Table_UU, t.TreeDisplayedOn, t.MaxQueryRecords,
t.IsAllowAdvancedLookup, t.IsLookupOnlySelection
FROM AD_Tab t
INNER JOIN AD_Table tbl ON (t.AD_Table_ID = tbl.AD_Table_ID)
INNER JOIN AD_Tab_Trl trl ON (t.AD_Tab_ID = trl.AD_Tab_ID)
WHERE t.IsActive='Y'
AND tbl.IsActive='Y';
AND tbl.IsActive='Y'
;

View File

@ -4,16 +4,16 @@ f.isheading, f.isfieldonly, f.isreadonly, f.isencrypted AS isencryptedfield, f.o
c.iskey, c.isparent, COALESCE(f.ismandatory, c.ismandatory) AS ismandatory, c.isidentifier, c.istranslated, COALESCE(f.ad_reference_value_id, c.ad_reference_value_id) AS ad_reference_value_id,
c.callout, COALESCE(f.ad_reference_id, c.ad_reference_id) AS ad_reference_id, COALESCE(f.ad_val_rule_id, c.ad_val_rule_id) AS ad_val_rule_id, c.ad_process_id, COALESCE(f.isalwaysupdateable, c.isalwaysupdateable) AS isalwaysupdateable,
COALESCE(f.readonlylogic, c.readonlylogic) AS readonlylogic, COALESCE(f.mandatorylogic, c.mandatorylogic) AS mandatorylogic, COALESCE(f.isupdateable, c.isupdateable) AS isupdateable,
c.isencrypted AS isencryptedcolumn, c.isselectioncolumn, tbl.tablename, c.valuemin, c.valuemax, fg.name AS fieldgroup, vr.code AS validationcode, f.included_tab_id, fg.fieldgrouptype,
c.isencrypted AS isencryptedcolumn, COALESCE(f.isselectioncolumn, c.isselectioncolumn) AS isselectioncolumn, tbl.tablename, c.valuemin, c.valuemax, fg.name AS fieldgroup, vr.code AS validationcode, f.included_tab_id, fg.fieldgrouptype,
fg.iscollapsedbydefault, COALESCE(f.infofactoryclass, c.infofactoryclass) AS infofactoryclass, c.isautocomplete, COALESCE(f.isallowcopy, c.isallowcopy) AS isallowcopy, f.isdisplayedgrid,
f.seqnogrid, c.seqnoselection, f.xposition, f.columnspan, f.numlines, COALESCE(f.istoolbarbutton, c.istoolbarbutton) AS istoolbarbutton, c.formatpattern, f.isadvancedfield, f.isdefaultfocus,
c.ad_chart_id, f.ad_labelstyle_id, f.ad_fieldstyle_id, c.pa_dashboardcontent_id, COALESCE(f.placeholder, c.placeholder) AS placeholder, c.ishtml, f.isquickform
c.ad_chart_id, f.ad_labelstyle_id, f.ad_fieldstyle_id, c.pa_dashboardcontent_id, COALESCE(f.placeholder, c.placeholder) AS placeholder, c.ishtml, f.isquickform, COALESCE(f.ad_val_rule_Lookup_id, c.ad_val_rule_Lookup_id) AS ad_val_rule_Lookup_id, vrf.code AS validationcodeLookup
FROM ad_field f
JOIN ad_tab t ON f.ad_tab_id = t.ad_tab_id
LEFT JOIN ad_fieldgroup fg ON f.ad_fieldgroup_id = fg.ad_fieldgroup_id
LEFT JOIN ad_column c ON f.ad_column_id = c.ad_column_id
JOIN ad_table tbl ON c.ad_table_id = tbl.ad_table_id
LEFT JOIN ad_val_rule vr ON vr.ad_val_rule_id = COALESCE(f.ad_val_rule_id, c.ad_val_rule_id)
LEFT JOIN ad_val_rule vrf ON vrf.ad_val_rule_id = COALESCE(f.ad_val_rule_Lookup_id, c.ad_val_rule_Lookup_id)
WHERE f.isactive = 'Y' AND c.isactive = 'Y'
;

View File

@ -4,9 +4,9 @@ CREATE OR REPLACE VIEW ad_field_vt AS
c.iskey, c.isparent, COALESCE(f.ismandatory, c.ismandatory) AS ismandatory, c.isidentifier, c.istranslated, COALESCE(f.ad_reference_value_id, c.ad_reference_value_id) AS ad_reference_value_id,
c.callout, COALESCE(f.ad_reference_id, c.ad_reference_id) AS ad_reference_id, COALESCE(f.ad_val_rule_id, c.ad_val_rule_id) AS ad_val_rule_id, c.ad_process_id, COALESCE(f.isalwaysupdateable,
c.isalwaysupdateable) AS isalwaysupdateable, COALESCE(f.readonlylogic, c.readonlylogic) AS readonlylogic, COALESCE(f.mandatorylogic, c.mandatorylogic) AS mandatorylogic, COALESCE(f.isupdateable, c.isupdateable) AS isupdateable,
c.isencrypted AS isencryptedcolumn, c.isselectioncolumn, tbl.tablename, c.valuemin, c.valuemax, fgt.name AS fieldgroup, vr.code AS validationcode, f.included_tab_id, fg.fieldgrouptype,
c.isencrypted AS isencryptedcolumn, COALESCE(f.isselectioncolumn, c.isselectioncolumn) AS isselectioncolumn, tbl.tablename, c.valuemin, c.valuemax, fgt.name AS fieldgroup, vr.code AS validationcode, f.included_tab_id, fg.fieldgrouptype,
fg.iscollapsedbydefault, COALESCE(f.infofactoryclass, c.infofactoryclass) AS infofactoryclass, c.isautocomplete, COALESCE(f.isallowcopy, c.isallowcopy) AS isallowcopy, f.isdisplayedgrid,
f.seqnogrid, c.seqnoselection, f.xposition, f.columnspan, f.numlines, COALESCE(f.istoolbarbutton, c.istoolbarbutton) AS istoolbarbutton, c.formatpattern, f.isadvancedfield, f.isdefaultfocus, c.ad_chart_id, f.ad_labelstyle_id, f.ad_fieldstyle_id, c.pa_dashboardcontent_id, COALESCE(trl.placeholder, ct.placeholder) AS placeholder, c.ishtml, f.isquickform
f.seqnogrid, c.seqnoselection, f.xposition, f.columnspan, f.numlines, COALESCE(f.istoolbarbutton, c.istoolbarbutton) AS istoolbarbutton, c.formatpattern, f.isadvancedfield, f.isdefaultfocus, c.ad_chart_id, f.ad_labelstyle_id, f.ad_fieldstyle_id, c.pa_dashboardcontent_id, COALESCE(trl.placeholder, ct.placeholder) AS placeholder, c.ishtml, f.isquickform, COALESCE(f.ad_val_rule_Lookup_id, c.ad_val_rule_Lookup_id) AS ad_val_rule_Lookup_id, vrf.code AS validationcodeLookup
FROM ad_field f
JOIN ad_field_trl trl ON f.ad_field_id = trl.ad_field_id
JOIN ad_tab t ON f.ad_tab_id = t.ad_tab_id
@ -16,6 +16,7 @@ CREATE OR REPLACE VIEW ad_field_vt AS
LEFT JOIN ad_column_trl ct ON f.ad_column_id = ct.ad_column_id AND trl.ad_language::text = ct.ad_language::text
JOIN ad_table tbl ON c.ad_table_id = tbl.ad_table_id
LEFT JOIN ad_val_rule vr ON vr.ad_val_rule_id = COALESCE(f.ad_val_rule_id, c.ad_val_rule_id)
LEFT JOIN ad_val_rule vrf ON vrf.ad_val_rule_id = COALESCE(f.ad_val_rule_Lookup_id, c.ad_val_rule_Lookup_id)
WHERE f.isactive = 'Y' AND c.isactive = 'Y'
;

View File

@ -7,7 +7,7 @@ CREATE OR REPLACE VIEW AD_TAB_V
READONLYLOGIC, DISPLAYLOGIC, AD_COLUMN_ID, AD_PROCESS_ID, ISSORTTAB,
ISINSERTRECORD, ISADVANCEDTAB, AD_COLUMNSORTORDER_ID, AD_COLUMNSORTYESNO_ID,
INCLUDED_TAB_ID, PARENT_COLUMN_ID, AD_Tab_UU, AD_Table_UU, TREEDISPLAYEDON,
MAXQUERYRECORDS)
MAXQUERYRECORDS, IsAllowAdvancedLookup, IsLookupOnlySelection)
AS
SELECT t.AD_Tab_ID, t.AD_Window_ID, t.AD_Table_ID, t.Name, t.Description,
t.Help, t.SeqNo, t.IsSingleRow, t.HasTree, t.IsInfoTab, tbl.ReplicationType,
@ -17,11 +17,10 @@ SELECT t.AD_Tab_ID, t.AD_Window_ID, t.AD_Table_ID, t.Name, t.Description,
t.WhereClause, t.OrderByClause, t.CommitWarning, t.ReadOnlyLogic, t.DisplayLogic,
t.AD_Column_ID, t.AD_Process_ID, t.IsSortTab, t.IsInsertRecord, t.IsAdvancedTab,
t.AD_ColumnSortOrder_ID, t.AD_ColumnSortYesNo_ID, t.Included_Tab_ID, t.Parent_Column_ID,
t.AD_Tab_UU, tbl.AD_Table_UU, t.TreeDisplayedOn, t.MaxQueryRecords
t.AD_Tab_UU, tbl.AD_Table_UU, t.TreeDisplayedOn, t.MaxQueryRecords,
t.IsAllowAdvancedLookup, t.IsLookupOnlySelection
FROM AD_Tab t
INNER JOIN AD_Table tbl ON (t.AD_Table_ID = tbl.AD_Table_ID)
WHERE t.IsActive='Y'
AND tbl.IsActive='Y';
AND tbl.IsActive='Y'
;

View File

@ -7,7 +7,7 @@ CREATE OR REPLACE VIEW AD_TAB_VT
COMMITWARNING, READONLYLOGIC, DISPLAYLOGIC, AD_COLUMN_ID, AD_PROCESS_ID,
ISSORTTAB, ISINSERTRECORD, ISADVANCEDTAB, AD_COLUMNSORTORDER_ID, AD_COLUMNSORTYESNO_ID,
INCLUDED_TAB_ID, PARENT_COLUMN_ID, AD_Tab_UU, AD_Table_UU, TREEDISPLAYEDON,
MAXQUERYRECORDS)
MAXQUERYRECORDS, IsAllowAdvancedLookup, IsLookupOnlySelection)
AS
SELECT trl.AD_Language, t.AD_Tab_ID, t.AD_Window_ID, t.AD_Table_ID, trl.Name, trl.Description,
trl.Help, t.SeqNo, t.IsSingleRow, t.HasTree, t.IsInfoTab, tbl.ReplicationType,
@ -17,12 +17,11 @@ SELECT trl.AD_Language, t.AD_Tab_ID, t.AD_Window_ID, t.AD_Table_ID, trl.Name, tr
t.WhereClause, t.OrderByClause, trl.CommitWarning, t.ReadOnlyLogic, t.DisplayLogic,
t.AD_Column_ID, t.AD_Process_ID, t.IsSortTab, t.IsInsertRecord, t.IsAdvancedTab,
t.AD_ColumnSortOrder_ID, t.AD_ColumnSortYesNo_ID, t.Included_Tab_ID, t.Parent_Column_ID,
t.AD_Tab_UU, tbl.AD_Table_UU, t.TreeDisplayedOn, t.MaxQueryRecords
t.AD_Tab_UU, tbl.AD_Table_UU, t.TreeDisplayedOn, t.MaxQueryRecords,
t.IsAllowAdvancedLookup, t.IsLookupOnlySelection
FROM AD_Tab t
INNER JOIN AD_Table tbl ON (t.AD_Table_ID = tbl.AD_Table_ID)
INNER JOIN AD_Tab_Trl trl ON (t.AD_Tab_ID = trl.AD_Tab_ID)
WHERE t.IsActive='Y'
AND tbl.IsActive='Y';
AND tbl.IsActive='Y'
;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -83,7 +83,7 @@ public class GridField
/**
*
*/
private static final long serialVersionUID = -632698704437797186L;
private static final long serialVersionUID = -632698704437797176L;
/**
* Field Constructor.
@ -2579,6 +2579,7 @@ public class GridField
field.m_vo = field.m_vo.clone(ctx, field.m_vo.WindowNo, field.m_vo.TabNo,
field.m_vo.AD_Window_ID, field.m_vo.AD_Tab_ID, field.m_vo.tabReadOnly);
field.m_vo.lookupInfo = null;
field.m_lookup = null;
field.m_propertyChangeListeners = new PropertyChangeSupport(this);
return field;
} catch (CloneNotSupportedException e) {

View File

@ -47,7 +47,7 @@ public class GridFieldVO implements Serializable, Cloneable
/**
*
*/
private static final long serialVersionUID = -7810037179946135749L;
private static final long serialVersionUID = -6183338435199702786L;
/**
* Return the SQL statement used for the MFieldVO.create
@ -172,7 +172,8 @@ public class GridFieldVO implements Serializable, Cloneable
vo.SeqNo = userDef.getSeqNo();
if (userDef.getAD_Val_Rule_ID() > 0)
vo.ValidationCode = MValRule.get(vo.ctx, userDef.getAD_Val_Rule_ID()).getCode();
if (userDef.getAD_Val_Rule_Lookup_ID() > 0)
vo.ValidationCodeLookup = MValRule.get(ctx, userDef.getAD_Val_Rule_Lookup_ID()).getCode();
if (userDef.getAD_LabelStyle_ID() > 0)
vo.AD_LabelStyle_ID = userDef.getAD_LabelStyle_ID();
@ -314,6 +315,8 @@ public class GridFieldVO implements Serializable, Cloneable
vo.AD_Reference_Value_ID = rs.getInt(i);
else if (columnName.equalsIgnoreCase("ValidationCode"))
vo.ValidationCode = rs.getString(i);
else if (columnName.equalsIgnoreCase("ValidationCodeLookup"))
vo.ValidationCodeLookup = rs.getString(i);
else if (columnName.equalsIgnoreCase("IsQuickForm"))
vo.IsQuickForm = "Y".equals(rs.getString (i));
else if (columnName.equalsIgnoreCase("ColumnSQL")) {
@ -409,6 +412,7 @@ public class GridFieldVO implements Serializable, Cloneable
//
vo.AD_Reference_Value_ID = rs.getInt("AD_Reference_Value_ID");
vo.ValidationCode = rs.getString("ValidationCode");
vo.ValidationCodeLookup = rs.getString("ValidationCodeLookup");
vo.ReadOnlyLogic = rs.getString("ReadOnlyLogic");
vo.DisplayLogic= rs.getString("DisplayLogic");
vo.IsEncryptedField=rs.getString("IsEncrypted").equals("Y");
@ -513,6 +517,7 @@ public class GridFieldVO implements Serializable, Cloneable
voT.AD_Reference_Value_ID = voF.AD_Reference_Value_ID;
// IDEMPIERE-229 Bug with Process parameter range
voT.ValidationCode = voF.ValidationCode;
voT.ValidationCodeLookup = voF.ValidationCodeLookup;
voT.IsEncryptedField = voF.IsEncryptedField;
voT.ReadOnlyLogic = voF.ReadOnlyLogic;
voT.DisplayLogic = voF.DisplayLogic;
@ -729,6 +734,8 @@ public class GridFieldVO implements Serializable, Cloneable
/** Lookup Validation code */
public String ValidationCode = "";
/** Lookup Validation code for Find Window */
public String ValidationCodeLookup = "";
/** Reference Value */
public int AD_Reference_Value_ID = 0;
@ -884,6 +891,7 @@ public class GridFieldVO implements Serializable, Cloneable
GridFieldVO clone = (GridFieldVO) super.clone();
clone.ctx = Env.getCtx();
if ( lookupInfo != null) {
clone.ValidationCodeLookup = ValidationCodeLookup;
clone.lookupInfo = lookupInfo.clone();
clone.lookupInfo.ctx = clone.ctx;
}

View File

@ -112,7 +112,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
/**
*
*/
private static final long serialVersionUID = -8153324039370820860L;
private static final long serialVersionUID = 8443012394354164942L;
public static final String DEFAULT_STATUS_MESSAGE = "NavigateOrUpdate";
@ -229,6 +229,8 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
public static final String CTX_FindSQL = "_TabInfo_FindSQL";
public static final String CTX_SQL = "_TabInfo_SQL";
public static final String CTX_IsSortTab = "_TabInfo_IsSortTab";
public static final String CTX_IsLookupOnlySelection = "_TabInfo_IsLookupOnlySelection";
public static final String CTX_IsAllowAdvancedLookup = "_TabInfo_IsAllowAdvancedLookup";
//private HashMap<Integer,Integer> m_PostIts = null;
@ -1513,6 +1515,24 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
return m_vo.IsHighVolume;
} // isHighVolume
/**
* Is Lookup Only By Selection Fields?
*
* @return true if only selection
*/
public boolean IsLookupOnlySelection() {
return m_vo.IsLookupOnlySelection;
} // IsLookupOnlySelection
/**
* Is Allow Advanced Lookup panel?
*
* @return true if allow the use
*/
public boolean IsAllowAdvancedLookup() {
return m_vo.IsAllowAdvancedLookup;
} // IsAllowAdvancedLookup
/**
* Is Read Only?
* @return true if read only

View File

@ -39,10 +39,11 @@ import org.compiere.util.Evaluatee;
*/
public class GridTabVO implements Evaluatee, Serializable
{
/**
*
*/
private static final long serialVersionUID = 9091214632840854495L;
private static final long serialVersionUID = 2088372161131336289L;
/**************************************************************************
* Create MTab VO
@ -225,6 +226,18 @@ public class GridTabVO implements Evaluatee, Serializable
if (rs.getString("IsHighVolume").equals("Y"))
vo.IsHighVolume = true;
// Lookup Only Selection Fields
if (rs.getString("IsLookupOnlySelection").equals("Y"))
vo.IsLookupOnlySelection = true;
if (userDef != null && userDef.getIsLookupOnlySelection() != null)
vo.IsLookupOnlySelection = "Y".equals(userDef.getIsLookupOnlySelection());
Env.setContext(vo.ctx, vo.WindowNo, vo.TabNo, GridTab.CTX_IsLookupOnlySelection, vo.IsLookupOnlySelection);
// Allow Advanced Lookup
if (rs.getString("IsAllowAdvancedLookup").equals("Y"))
vo.IsAllowAdvancedLookup = true;
if (userDef != null && userDef.getIsAllowAdvancedLookup() != null)
vo.IsAllowAdvancedLookup = "Y".equals(userDef.getIsAllowAdvancedLookup());
Env.setContext(vo.ctx, vo.WindowNo, vo.TabNo, GridTab.CTX_IsAllowAdvancedLookup, vo.IsAllowAdvancedLookup);
vo.CommitWarning = rs.getString("CommitWarning");
if (vo.CommitWarning == null)
vo.CommitWarning = "";
@ -494,6 +507,10 @@ public class GridTabVO implements Evaluatee, Serializable
public boolean IsDeleteable = false;
/** Table High Volume */
public boolean IsHighVolume = false;
/** Allow use of advanced Lookup panel **/
public boolean IsAllowAdvancedLookup = false;
/** Only allow Lookup using selection defined fields **/
public boolean IsLookupOnlySelection = false;
/** Process */
public int AD_Process_ID = 0;
/** Process UUID */
@ -601,6 +618,8 @@ public class GridTabVO implements Evaluatee, Serializable
clone.IsSecurityEnabled = IsSecurityEnabled;
clone.IsDeleteable = IsDeleteable;
clone.IsHighVolume = IsHighVolume;
clone.IsLookupOnlySelection = IsLookupOnlySelection;
clone.IsAllowAdvancedLookup = IsAllowAdvancedLookup;
clone.AD_Process_ID = AD_Process_ID;
clone.CommitWarning = CommitWarning;
clone.WhereClause = WhereClause;
@ -613,6 +632,8 @@ public class GridTabVO implements Evaluatee, Serializable
clone.ReplicationType = ReplicationType;
Env.setContext(Ctx, windowNo, clone.TabNo, GridTab.CTX_AccessLevel, clone.AccessLevel);
Env.setContext(Ctx, windowNo, clone.TabNo, GridTab.CTX_AD_Table_ID, String.valueOf(clone.AD_Table_ID));
Env.setContext(Ctx, windowNo, clone.TabNo, GridTab.CTX_IsLookupOnlySelection, clone.IsLookupOnlySelection);
Env.setContext(Ctx, windowNo, clone.TabNo, GridTab.CTX_IsAllowAdvancedLookup, clone.IsAllowAdvancedLookup);
//
clone.IsSortTab = IsSortTab;

View File

@ -185,6 +185,21 @@ public interface I_AD_Column
public org.compiere.model.I_AD_Val_Rule getAD_Val_Rule() throws RuntimeException;
/** Column name AD_Val_Rule_Lookup_ID */
public static final String COLUMNNAME_AD_Val_Rule_Lookup_ID = "AD_Val_Rule_Lookup_ID";
/** Set Dynamic Validation (Lookup).
* Override Dynamic Validation Rule for Lookup Window
*/
public void setAD_Val_Rule_Lookup_ID (int AD_Val_Rule_Lookup_ID);
/** Get Dynamic Validation (Lookup).
* Override Dynamic Validation Rule for Lookup Window
*/
public int getAD_Val_Rule_Lookup_ID();
public org.compiere.model.I_AD_Val_Rule getAD_Val_Rule_Lookup() throws RuntimeException;
/** Column name Callout */
public static final String COLUMNNAME_Callout = "Callout";

View File

@ -204,6 +204,21 @@ public interface I_AD_Field
public org.compiere.model.I_AD_Val_Rule getAD_Val_Rule() throws RuntimeException;
/** Column name AD_Val_Rule_Lookup_ID */
public static final String COLUMNNAME_AD_Val_Rule_Lookup_ID = "AD_Val_Rule_Lookup_ID";
/** Set Dynamic Validation (Lookup).
* Override Dynamic Validation Rule for Lookup Window
*/
public void setAD_Val_Rule_Lookup_ID (int AD_Val_Rule_Lookup_ID);
/** Get Dynamic Validation (Lookup).
* Override Dynamic Validation Rule for Lookup Window
*/
public int getAD_Val_Rule_Lookup_ID();
public org.compiere.model.I_AD_Val_Rule getAD_Val_Rule_Lookup() throws RuntimeException;
/** Column name ColumnSpan */
public static final String COLUMNNAME_ColumnSpan = "ColumnSpan";
@ -522,6 +537,19 @@ public interface I_AD_Field
*/
public boolean isSameLine();
/** Column name IsSelectionColumn */
public static final String COLUMNNAME_IsSelectionColumn = "IsSelectionColumn";
/** Set Selection Column.
* Is this column used for Lookup rows in windows
*/
public void setIsSelectionColumn (String IsSelectionColumn);
/** Get Selection Column.
* Is this column used for Lookup rows in windows
*/
public String getIsSelectionColumn();
/** Column name IsToolbarButton */
public static final String COLUMNNAME_IsToolbarButton = "IsToolbarButton";

View File

@ -350,6 +350,15 @@ public interface I_AD_Tab
*/
public boolean isAdvancedTab();
/** Column name IsAllowAdvancedLookup */
public static final String COLUMNNAME_IsAllowAdvancedLookup = "IsAllowAdvancedLookup";
/** Set Allow Advanced Lookup */
public void setIsAllowAdvancedLookup (boolean IsAllowAdvancedLookup);
/** Get Allow Advanced Lookup */
public boolean isAllowAdvancedLookup();
/** Column name IsInfoTab */
public static final String COLUMNNAME_IsInfoTab = "IsInfoTab";
@ -376,6 +385,19 @@ public interface I_AD_Tab
*/
public boolean isInsertRecord();
/** Column name IsLookupOnlySelection */
public static final String COLUMNNAME_IsLookupOnlySelection = "IsLookupOnlySelection";
/** Set Lookup Only Selection Columns.
* When defined to true Lookup panel will display only selection columns. Default to false.
*/
public void setIsLookupOnlySelection (boolean IsLookupOnlySelection);
/** Get Lookup Only Selection Columns.
* When defined to true Lookup panel will display only selection columns. Default to false.
*/
public boolean isLookupOnlySelection();
/** Column name IsReadOnly */
public static final String COLUMNNAME_IsReadOnly = "IsReadOnly";

View File

@ -181,6 +181,21 @@ public interface I_AD_UserDef_Field
public org.compiere.model.I_AD_Val_Rule getAD_Val_Rule() throws RuntimeException;
/** Column name AD_Val_Rule_Lookup_ID */
public static final String COLUMNNAME_AD_Val_Rule_Lookup_ID = "AD_Val_Rule_Lookup_ID";
/** Set Dynamic Validation (Lookup).
* Override Dynamic Validation Rule for Lookup Window
*/
public void setAD_Val_Rule_Lookup_ID (int AD_Val_Rule_Lookup_ID);
/** Get Dynamic Validation (Lookup).
* Override Dynamic Validation Rule for Lookup Window
*/
public int getAD_Val_Rule_Lookup_ID();
public org.compiere.model.I_AD_Val_Rule getAD_Val_Rule_Lookup() throws RuntimeException;
/** Column name ColumnSpan */
public static final String COLUMNNAME_ColumnSpan = "ColumnSpan";

View File

@ -189,6 +189,28 @@ public interface I_AD_UserDef_Tab
*/
public boolean isActive();
/** Column name IsAllowAdvancedLookup */
public static final String COLUMNNAME_IsAllowAdvancedLookup = "IsAllowAdvancedLookup";
/** Set Allow Advanced Lookup */
public void setIsAllowAdvancedLookup (String IsAllowAdvancedLookup);
/** Get Allow Advanced Lookup */
public String getIsAllowAdvancedLookup();
/** Column name IsLookupOnlySelection */
public static final String COLUMNNAME_IsLookupOnlySelection = "IsLookupOnlySelection";
/** Set Lookup Only Selection Columns.
* When defined to true Lookup panel will display only selection columns. Default to false.
*/
public void setIsLookupOnlySelection (String IsLookupOnlySelection);
/** Get Lookup Only Selection Columns.
* When defined to true Lookup panel will display only selection columns. Default to false.
*/
public String getIsLookupOnlySelection();
/** Column name IsMultiRowOnly */
public static final String COLUMNNAME_IsMultiRowOnly = "IsMultiRowOnly";

View File

@ -32,7 +32,7 @@ public class X_AD_Column extends PO implements I_AD_Column, I_Persistent
/**
*
*/
private static final long serialVersionUID = 20200413L;
private static final long serialVersionUID = 20200911L;
/** Standard Constructor */
public X_AD_Column (Properties ctx, int AD_Column_ID, String trxName)
@ -330,6 +330,34 @@ public class X_AD_Column extends PO implements I_AD_Column, I_Persistent
return ii.intValue();
}
public org.compiere.model.I_AD_Val_Rule getAD_Val_Rule_Lookup() throws RuntimeException
{
return (org.compiere.model.I_AD_Val_Rule)MTable.get(getCtx(), org.compiere.model.I_AD_Val_Rule.Table_Name)
.getPO(getAD_Val_Rule_Lookup_ID(), get_TrxName()); }
/** Set Dynamic Validation (Lookup).
@param AD_Val_Rule_Lookup_ID
Override Dynamic Validation Rule for Lookup Window
*/
public void setAD_Val_Rule_Lookup_ID (int AD_Val_Rule_Lookup_ID)
{
if (AD_Val_Rule_Lookup_ID < 1)
set_Value (COLUMNNAME_AD_Val_Rule_Lookup_ID, null);
else
set_Value (COLUMNNAME_AD_Val_Rule_Lookup_ID, Integer.valueOf(AD_Val_Rule_Lookup_ID));
}
/** Get Dynamic Validation (Lookup).
@return Override Dynamic Validation Rule for Lookup Window
*/
public int getAD_Val_Rule_Lookup_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_AD_Val_Rule_Lookup_ID);
if (ii == null)
return 0;
return ii.intValue();
}
/** Set Callout.
@param Callout
Fully qualified class names and method - separated by semicolons

View File

@ -32,7 +32,7 @@ public class X_AD_Field extends PO implements I_AD_Field, I_Persistent
/**
*
*/
private static final long serialVersionUID = 20200413L;
private static final long serialVersionUID = 20200911L;
/** Standard Constructor */
public X_AD_Field (Properties ctx, int AD_Field_ID, String trxName)
@ -353,6 +353,34 @@ public class X_AD_Field extends PO implements I_AD_Field, I_Persistent
return ii.intValue();
}
public org.compiere.model.I_AD_Val_Rule getAD_Val_Rule_Lookup() throws RuntimeException
{
return (org.compiere.model.I_AD_Val_Rule)MTable.get(getCtx(), org.compiere.model.I_AD_Val_Rule.Table_Name)
.getPO(getAD_Val_Rule_Lookup_ID(), get_TrxName()); }
/** Set Dynamic Validation (Lookup).
@param AD_Val_Rule_Lookup_ID
Override Dynamic Validation Rule for Lookup Window
*/
public void setAD_Val_Rule_Lookup_ID (int AD_Val_Rule_Lookup_ID)
{
if (AD_Val_Rule_Lookup_ID < 1)
set_Value (COLUMNNAME_AD_Val_Rule_Lookup_ID, null);
else
set_Value (COLUMNNAME_AD_Val_Rule_Lookup_ID, Integer.valueOf(AD_Val_Rule_Lookup_ID));
}
/** Get Dynamic Validation (Lookup).
@return Override Dynamic Validation Rule for Lookup Window
*/
public int getAD_Val_Rule_Lookup_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_AD_Val_Rule_Lookup_ID);
if (ii == null)
return 0;
return ii.intValue();
}
/** Set Column Span.
@param ColumnSpan
Number of column for a box of field
@ -857,6 +885,30 @@ public class X_AD_Field extends PO implements I_AD_Field, I_Persistent
return false;
}
/** IsSelectionColumn AD_Reference_ID=319 */
public static final int ISSELECTIONCOLUMN_AD_Reference_ID=319;
/** Yes = Y */
public static final String ISSELECTIONCOLUMN_Yes = "Y";
/** No = N */
public static final String ISSELECTIONCOLUMN_No = "N";
/** Set Selection Column.
@param IsSelectionColumn
Is this column used for Lookup rows in windows
*/
public void setIsSelectionColumn (String IsSelectionColumn)
{
set_Value (COLUMNNAME_IsSelectionColumn, IsSelectionColumn);
}
/** Get Selection Column.
@return Is this column used for Lookup rows in windows
*/
public String getIsSelectionColumn ()
{
return (String)get_Value(COLUMNNAME_IsSelectionColumn);
}
/** IsToolbarButton AD_Reference_ID=200099 */
public static final int ISTOOLBARBUTTON_AD_Reference_ID=200099;
/** Toolbar = Y */

View File

@ -30,7 +30,7 @@ public class X_AD_Tab extends PO implements I_AD_Tab, I_Persistent
/**
*
*/
private static final long serialVersionUID = 20200413L;
private static final long serialVersionUID = 20200911L;
/** Standard Constructor */
public X_AD_Tab (Properties ctx, int AD_Tab_ID, String trxName)
@ -530,6 +530,27 @@ public class X_AD_Tab extends PO implements I_AD_Tab, I_Persistent
return false;
}
/** Set Allow Advanced Lookup.
@param IsAllowAdvancedLookup Allow Advanced Lookup */
public void setIsAllowAdvancedLookup (boolean IsAllowAdvancedLookup)
{
set_Value (COLUMNNAME_IsAllowAdvancedLookup, Boolean.valueOf(IsAllowAdvancedLookup));
}
/** Get Allow Advanced Lookup.
@return Allow Advanced Lookup */
public boolean isAllowAdvancedLookup ()
{
Object oo = get_Value(COLUMNNAME_IsAllowAdvancedLookup);
if (oo != null)
{
if (oo instanceof Boolean)
return ((Boolean)oo).booleanValue();
return "Y".equals(oo);
}
return false;
}
/** Set Accounting Tab.
@param IsInfoTab
This Tab contains accounting information
@ -578,6 +599,30 @@ public class X_AD_Tab extends PO implements I_AD_Tab, I_Persistent
return false;
}
/** Set Lookup Only Selection Columns.
@param IsLookupOnlySelection
When defined to true Lookup panel will display only selection columns. Default to false.
*/
public void setIsLookupOnlySelection (boolean IsLookupOnlySelection)
{
set_Value (COLUMNNAME_IsLookupOnlySelection, Boolean.valueOf(IsLookupOnlySelection));
}
/** Get Lookup Only Selection Columns.
@return When defined to true Lookup panel will display only selection columns. Default to false.
*/
public boolean isLookupOnlySelection ()
{
Object oo = get_Value(COLUMNNAME_IsLookupOnlySelection);
if (oo != null)
{
if (oo instanceof Boolean)
return ((Boolean)oo).booleanValue();
return "Y".equals(oo);
}
return false;
}
/** Set Read Only.
@param IsReadOnly
Field is read only

View File

@ -30,7 +30,7 @@ public class X_AD_UserDef_Field extends PO implements I_AD_UserDef_Field, I_Pers
/**
*
*/
private static final long serialVersionUID = 20200527L;
private static final long serialVersionUID = 20200911L;
/** Standard Constructor */
public X_AD_UserDef_Field (Properties ctx, int AD_UserDef_Field_ID, String trxName)
@ -309,6 +309,34 @@ public class X_AD_UserDef_Field extends PO implements I_AD_UserDef_Field, I_Pers
return ii.intValue();
}
public org.compiere.model.I_AD_Val_Rule getAD_Val_Rule_Lookup() throws RuntimeException
{
return (org.compiere.model.I_AD_Val_Rule)MTable.get(getCtx(), org.compiere.model.I_AD_Val_Rule.Table_Name)
.getPO(getAD_Val_Rule_Lookup_ID(), get_TrxName()); }
/** Set Dynamic Validation (Lookup).
@param AD_Val_Rule_Lookup_ID
Override Dynamic Validation Rule for Lookup Window
*/
public void setAD_Val_Rule_Lookup_ID (int AD_Val_Rule_Lookup_ID)
{
if (AD_Val_Rule_Lookup_ID < 1)
set_Value (COLUMNNAME_AD_Val_Rule_Lookup_ID, null);
else
set_Value (COLUMNNAME_AD_Val_Rule_Lookup_ID, Integer.valueOf(AD_Val_Rule_Lookup_ID));
}
/** Get Dynamic Validation (Lookup).
@return Override Dynamic Validation Rule for Lookup Window
*/
public int getAD_Val_Rule_Lookup_ID ()
{
Integer ii = (Integer)get_Value(COLUMNNAME_AD_Val_Rule_Lookup_ID);
if (ii == null)
return 0;
return ii.intValue();
}
/** Set Column Span.
@param ColumnSpan
Number of column for a box of field

View File

@ -247,6 +247,51 @@ public class X_AD_UserDef_Tab extends PO implements I_AD_UserDef_Tab, I_Persiste
return (String)get_Value(COLUMNNAME_Help);
}
/** IsAllowAdvancedLookup AD_Reference_ID=319 */
public static final int ISALLOWADVANCEDLOOKUP_AD_Reference_ID=319;
/** Yes = Y */
public static final String ISALLOWADVANCEDLOOKUP_Yes = "Y";
/** No = N */
public static final String ISALLOWADVANCEDLOOKUP_No = "N";
/** Set Allow Advanced Lookup.
@param IsAllowAdvancedLookup Allow Advanced Lookup */
public void setIsAllowAdvancedLookup (String IsAllowAdvancedLookup)
{
set_Value (COLUMNNAME_IsAllowAdvancedLookup, IsAllowAdvancedLookup);
}
/** Get Allow Advanced Lookup.
@return Allow Advanced Lookup */
public String getIsAllowAdvancedLookup ()
{
return (String)get_Value(COLUMNNAME_IsAllowAdvancedLookup);
}
/** IsLookupOnlySelection AD_Reference_ID=319 */
public static final int ISLOOKUPONLYSELECTION_AD_Reference_ID=319;
/** Yes = Y */
public static final String ISLOOKUPONLYSELECTION_Yes = "Y";
/** No = N */
public static final String ISLOOKUPONLYSELECTION_No = "N";
/** Set Lookup Only Selection Columns.
@param IsLookupOnlySelection
When defined to true Lookup panel will display only selection columns. Default to false.
*/
public void setIsLookupOnlySelection (String IsLookupOnlySelection)
{
set_Value (COLUMNNAME_IsLookupOnlySelection, IsLookupOnlySelection);
}
/** Get Lookup Only Selection Columns.
@return When defined to true Lookup panel will display only selection columns. Default to false.
*/
public String getIsLookupOnlySelection ()
{
return (String)get_Value(COLUMNNAME_IsLookupOnlySelection);
}
/** Set Multi Row Only.
@param IsMultiRowOnly
This applies to Multi-Row view only

View File

@ -727,7 +727,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
m_findCancelled = false;
m_findCreateNew = false;
GridField[] findFields = mTab.getFields();
FindWindow findWindow = new FindWindow(curWindowNo,
FindWindow findWindow = new FindWindow(curWindowNo, mTab.getTabNo(),
mTab.getName(), mTab.getAD_Table_ID(), mTab.getTableName(),
where.toString(), findFields, 10, mTab.getAD_Tab_ID()); // no query below 10
tabFindWindowHashMap.put(mTab, findWindow);
@ -3626,7 +3626,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
findWindow = tabFindWindowHashMap.get(adTabbox.getSelectedGridTab());
toolbar.setSelectedUserQuery(findWindow.getAD_UserQuery_ID());
} else {
findWindow = new FindWindow (adTabbox.getSelectedGridTab().getWindowNo(), adTabbox.getSelectedGridTab().getName(),
findWindow = new FindWindow (adTabbox.getSelectedGridTab().getWindowNo(), adTabbox.getSelectedGridTab().getTabNo(), adTabbox.getSelectedGridTab().getName(),
adTabbox.getSelectedGridTab().getAD_Table_ID(), adTabbox.getSelectedGridTab().getTableName(),
adTabbox.getSelectedGridTab().getWhereExtended(), findFields, 1, adTabbox.getSelectedGridTab().getAD_Tab_ID());

View File

@ -209,7 +209,8 @@ public class ProcessParameterPanel extends Panel implements
+ "p.FieldLength, p.IsMandatory, p.IsRange, p.ColumnName, "
+ "p.DefaultValue, p.DefaultValue2, p.VFormat, p.ValueMin, p.ValueMax, "
+ "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 "
+ "FROM AD_Process_Para p"
+ " LEFT OUTER JOIN AD_Val_Rule vr ON (p.AD_Val_Rule_ID=vr.AD_Val_Rule_ID) "
+ "WHERE p.AD_Process_ID=?" // 1
@ -220,7 +221,8 @@ public class ProcessParameterPanel extends Panel implements
+ "p.FieldLength, p.IsMandatory, p.IsRange, p.ColumnName, "
+ "p.DefaultValue, p.DefaultValue2, p.VFormat, p.ValueMin, p.ValueMax, "
+ "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 "
+ "FROM AD_Process_Para p"
+ " 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) "

View File

@ -166,6 +166,8 @@ public class FindWindow extends Window implements EventListener<Event>, ValueCha
private Grid contentSimple;
/** Target Window No */
private int m_targetWindowNo;
/** Target Tab No */
private int m_targetTabNo;
/** Table ID */
private int m_AD_Table_ID;
/** Table Name */
@ -263,11 +265,12 @@ public class FindWindow extends Window implements EventListener<Event>, ValueCha
* @param minRecords minRecords
* @param adTabId
**/
public FindWindow (int targetWindowNo, String title,
public FindWindow (int targetWindowNo, int targetTabNo, String title,
int AD_Table_ID, String tableName, String whereExtended,
GridField[] findFields, int minRecords, int adTabId)
{
m_targetWindowNo = targetWindowNo;
m_targetTabNo = targetTabNo;
m_title = title;
m_AD_Table_ID = AD_Table_ID;
m_tableName = tableName;
@ -677,6 +680,14 @@ public class FindWindow extends Window implements EventListener<Event>, ValueCha
winMain.addTab(tabPanel, Msg.getMsg(Env.getCtx(), "Advanced").replaceAll("&", ""), false, false);
initSimple();
initAdvanced();
if (!(MRole.get(Env.getCtx(), Env.getAD_Role_ID(Env.getCtx())).isAccessAdvanced()
|| "Y".equals(Env.getContext(Env.getCtx(), m_targetWindowNo, m_targetTabNo, GridTab.CTX_IsAllowAdvancedLookup))))
{
winMain.getComponent().getTabpanel(1).getLinkedTab().setDisabled(true);
winMain.getComponent().getTabpanel(1).getLinkedTab().setVisible(false);
}
/** START DEVCOFFEE **/
statusBar.setClass("statusbar");
layout.appendChild(statusBar);
@ -711,6 +722,7 @@ public class FindWindow extends Window implements EventListener<Event>, ValueCha
ArrayList<GridField> gridFieldList = new ArrayList<GridField>();
ArrayList<GridField> moreFieldList = new ArrayList<GridField>();
boolean IsLookupOnlySelection = "Y".equals(Env.getContext(Env.getCtx(), m_targetWindowNo, m_targetTabNo, GridTab.CTX_IsLookupOnlySelection));
// Get Info from target Tab
for (int i = 0; i < m_findFields.length; i++)
{
@ -724,10 +736,13 @@ public class FindWindow extends Window implements EventListener<Event>, ValueCha
ynvo.IsDisplayed = true;
ynvo.displayType = DisplayType.List;
ynvo.AD_Reference_Value_ID = REFERENCE_YESNO;
String validationCode = ynvo.ValidationCode;
if (ynvo.ValidationCodeLookup != null && !ynvo.ValidationCodeLookup.isEmpty())
validationCode = ynvo.ValidationCodeLookup;
ynvo.lookupInfo = MLookupFactory.getLookupInfo (ynvo.ctx, ynvo.WindowNo, ynvo.AD_Column_ID, ynvo.displayType,
Env.getLanguage(ynvo.ctx), ynvo.ColumnName, ynvo.AD_Reference_Value_ID,
ynvo.IsParent, ynvo.ValidationCode);
ynvo.IsParent, validationCode);
ynvo.lookupInfo.tabNo = TABNO;
GridField ynfield = new GridField(ynvo);
@ -743,10 +758,13 @@ public class FindWindow extends Window implements EventListener<Event>, ValueCha
GridFieldVO postedvo = vo.clone(m_simpleCtx, vo.WindowNo, vo.TabNo, vo.AD_Window_ID, vo.AD_Tab_ID, vo.tabReadOnly);
postedvo.IsDisplayed = true;
postedvo.displayType = DisplayType.List;
String validationCode = postedvo.ValidationCode;
if (postedvo.ValidationCodeLookup != null && !postedvo.ValidationCodeLookup.isEmpty())
validationCode = postedvo.ValidationCodeLookup;
postedvo.lookupInfo = MLookupFactory.getLookupInfo (postedvo.ctx, postedvo.WindowNo, postedvo.AD_Column_ID, postedvo.displayType,
Env.getLanguage(postedvo.ctx), postedvo.ColumnName, postedvo.AD_Reference_Value_ID,
postedvo.IsParent, postedvo.ValidationCode);
postedvo.IsParent, validationCode);
postedvo.lookupInfo.tabNo = TABNO;
GridField postedfield = new GridField(postedvo);
@ -764,18 +782,24 @@ public class FindWindow extends Window implements EventListener<Event>, ValueCha
MLookup mLookup = (MLookup) lookup;
mLookup.getLookupInfo().ctx = m_simpleCtx;
mLookup.getLookupInfo().tabNo = TABNO;
if (findField.getVO().ValidationCodeLookup != null && !findField.getVO().ValidationCodeLookup.isEmpty())
{
mLookup.getLookupInfo().ValidationCode = findField.getVO().ValidationCodeLookup;
mLookup.getLookupInfo().IsValidated = false;
}
}
}
findField.setGridTab(null);
m_findFields[i] = findField;
findField.setPlaceholder(null);
mField = findField;
}
if (mField.isSelectionColumn()) {
gridFieldList.add(mField); // isSelectionColumn
} else {
if ((isDisplayed || mField.isVirtualSearchColumn()) && mField.getDisplayType() != DisplayType.Button && !mField.getColumnName().equals("AD_Client_ID"))
moreFieldList.add(mField);
if (!IsLookupOnlySelection && (isDisplayed || mField.isVirtualSearchColumn()) && mField.getDisplayType() != DisplayType.Button && !mField.getColumnName().equals("AD_Client_ID"))
moreFieldList.add(mField);
}
} // for all target tab fields
@ -1087,6 +1111,10 @@ public class FindWindow extends Window implements EventListener<Event>, ValueCha
if (field == null || field.isVirtualUIColumn())
continue;
boolean IsLookupOnlySelection = !MRole.get(Env.getCtx(), Env.getAD_Role_ID(Env.getCtx())).isAccessAdvanced()
&& "Y".equals(Env.getContext(Env.getCtx(), m_targetWindowNo, m_targetTabNo, GridTab.CTX_IsLookupOnlySelection));
if (IsLookupOnlySelection && !field.isSelectionColumn())
continue;
String columnName = field.getColumnName();
String header = field.getHeader();
if (header == null || header.length() == 0)
@ -2181,6 +2209,12 @@ public class FindWindow extends Window implements EventListener<Event>, ValueCha
{
MLookup mLookup = (MLookup) lookup;
mLookup.getLookupInfo().tabNo = TABNO;
if (findField.getVO().ValidationCodeLookup != null && !findField.getVO().ValidationCodeLookup.isEmpty())
{
mLookup.getLookupInfo().ValidationCode = findField.getVO().ValidationCodeLookup;
mLookup.getLookupInfo().IsValidated = false;
}
}
editor = WebEditorFactory.getEditor(findField, true);
findField.addPropertyChangeListener(editor);

View File

@ -1420,7 +1420,7 @@ public class ZkReportViewer extends Window implements EventListener<Event>, ITab
bFind.setVisible(false);
else
{
final FindWindow find = new FindWindow(m_WindowNo, title, AD_Table_ID, tableName,m_reportEngine.getWhereExtended(), findFields, 1, AD_Tab_ID);
final FindWindow find = new FindWindow(m_WindowNo, 0, title, AD_Table_ID, tableName,m_reportEngine.getWhereExtended(), findFields, 1, AD_Tab_ID);
if (!find.initialize())
return;