Placeholders for every fields

Description

Idea is to implement placeholders for every fields (windows, process parameters ,...)
See : https://groups.google.com/d/msg/idempiere/JU8tuPNqVw0/ciurYVQJAgAJ

Environment

None

Activity

Show:
Carlos Ruiz
July 6, 2019, 10:34 AM
Carlos Ruiz
March 8, 2018, 3:01 PM

Thanks , committed your suggestion.

Flemming Birch
March 7, 2018, 7:20 PM

Hi

I do believe that we have an issue whit the view ad_field_vt as it return the number of records as multiplied with the numbers of installed language in the system. This gives an error when opening a window in iDempiere!
The following is the correction I have made:

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
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
LEFT JOIN ad_fieldgroup fg ON f.ad_fieldgroup_id = fg.ad_fieldgroup_id
LEFT JOIN ad_fieldgroup_trl fgt ON f.ad_fieldgroup_id = fgt.ad_fieldgroup_id AND trl.ad_language::text = fgt.ad_language::text
LEFT JOIN ad_column c ON f.ad_column_id = c.ad_column_id
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)
WHERE f.isactive = 'Y' AND c.isactive = 'Y'

/Flemming

Carlos Ruiz
February 24, 2018, 1:37 PM

Thanks

> -> fixed for AD_Field_V (not AD_Field_vt to make it consistent with name, description, ...)

I think name and description are different as they are not "inherited" from column when they are empty.
I fixed that in the script.

> > almost done as i haven't touch the AD_COLUMN_TRL fo postgresql (i'm not able to test it :/) ; the script ran without error on Oracle ; not tested on postgresql

OK, fixed in postgresql too - as postgresql now shares the same syntax of oracle I made the two scripts in sync.

Regards,

Carlos Ruiz

Nicolas Micoud
February 17, 2018, 8:42 PM

Hi

Please find an updated patch:

  • I think you forgot to add PlaceHolderPostal_Add to C_Country_Trl ->

    fixed

    Add missing translations is throwing error because of that.

  • For the classes adding public methods please regenerate serialVersionUID ->

    done

  • In the views, instead of
    f.placeholder
    I think you must add
    COALESCE(f.placeholder, c.placeholder) AS placeholder


-> fixed for AD_Field_V (not AD_Field_vt to make it consistent with name, description, ...)

  • The change on SynchronizeTerminology.java must be applied too to migration/processes_post_migration/postgresql/02_SynchronizeTerminology.sql

    > almost done as i haven't touch the AD_COLUMN_TRL fo postgresql (i'm not able to test it :/) ; the script ran without error on Oracle ; not tested on postgresql
    nb: i haven't updated the IsSOTrx='N' part as there is no such field for placeholder

  • In InfoWindow.java - comments must be in english

    -> fixed (this modification was not part of the patch)

  • Is there any placeholder that we might set up in the default core? Maybe migrate the old from/to placeholders in range process parameter to the new approach?

-> My first idea was to set it to the Value or Name Element. But I fear this change could lead to big changes for end users. I will attach the script for inserting data in placeholder fields for range parameters (is ok on oracle, not tested on postgresql)

Nicolas

Fixed

Assignee

Nicolas Micoud

Reporter

Nicolas Micoud

Labels

Tested By

None

Components

Priority

Major