Valorisation d'un champ avant l'enregistrement

Bonjour,

Dans le module Démo j’ai vu qu’on peut valoriser un champ en se basant sur une valeur sélectionnée d’un objet lié. (Exemple en image ci-dessous)

Puis en vérifiant le code de l’objet j’ai remarqué que c’est fait via un postValidate (sauf erreur de ma part)

En testant le postValidate sur un autre cas, pour le même besoin je n’ai pas eu le résultat souhaité (= Valoriser un champ à partir d’un autre avant d’enregistrer).

Aviez-vous une idée ?

Il n’y a pas de raison que ça ne marche pas sauf si votre paramétrage ou votre code fait autre chose.

Si vous devez valoriser un attribut avant la validation générique (ex: valorisation d’un attribut obligatoire) faites le plutôt dans le preValidate

Faites un copier/coller de votre code pour qu’on voit comment vous avez écrit la valorisation de votre attribut

	@Override
	public List<String> preValidate() {
		getField("obj1_nom_produit").setValue(getField("obj2_id.obj2_nom_produit").getValue());
		return null;
	}

Je ne vois pas raison que ça ne marche pas si le paramétrage de ces attributs est correct.

Merci de copier coller le paramétrage de vos 2 attributs (copies d’ecran ou exports XML)

<fld_name>df_ligne_devis_nom_produit</fld_name>
<fld_dbname>DF_ligne_devis_nom_produit</fld_dbname>
<fld_visible>3</fld_visible>
<fld_updatable>1</fld_updatable>
<fld_required>0</fld_required>
<fld_fonctid>0</fld_fonctid>
<fld_research>1</fld_research>
<fld_researchreq>0</fld_researchreq>
<fld_sort>C</fld_sort>
<fld_more>0</fld_more>
<fld_listmore>0</fld_listmore>
<fld_listsum/>
<fld_tray/>
<fld_type>3</fld_type>
<fld_type_id.flt_code/>
<fld_enumlist/>
<fld_list_id.lov_name/>
<fld_copy>1</fld_copy>
<fld_size>20</fld_size>
<fld_minsize/>
<fld_precision/>
<fld_fromdate_id.fld_name/>
<fld_dfault/>
<fld_indexable>0</fld_indexable>
<fld_autocomp>0</fld_autocomp>
<fld_groupby>0</fld_groupby>
<fld_updall>1</fld_updall>
<fld_case/>
<fld_righttoleft>0</fld_righttoleft>
<fld_rendering/>
<fld_calc/>
<fld_objlist/>
<fld_comment/>
<fld_classification/>
<row_module_id.mdl_name>DF</row_module_id.mdl_name>

et pour la valeur que je veux récupérer

<obf_object_id.obo_name>DF_Ligne_Devis</obf_object_id.obo_name>
       <obf_field_id.fld_name>df_produit_nom</obf_field_id.fld_name>
       <obf_field_id.fld_type>3</obf_field_id.fld_type>
        <obf_order>920</obf_order>
        <obf_group_by/>
        <obf_dfault_order/>
        <obf_input/>
        <obf_ref_field_id.fld_name>DF_Ligne_Devis_DF_Produit_Finis_id</obf_ref_field_id.fld_name>
        <obf_ref_object_id.obo_name>DF_Produit_Finis</obf_ref_object_id.obo_name>
        <obf_cascad/>
        <obf_card/>
        <obf_visible/>
        <obf_ref_export>1</obf_ref_export>
        <obf_copy/>
        <obf_ref_order/>
        <obf_fld_visible>3</obf_fld_visible>
        <obf_fld_required/>
        <obf_fld_updatable/>
        <obf_fld_research/>
        <obf_fld_more>0</obf_fld_more>
        <obf_fld_listmore/>
        <obf_fld_researchreq/>
        <obf_fld_dfault/>
        <obf_field_id.fld_dfault/>
        <obf_area_id.ofa_name>DF_Ligne_Devis-11</obf_area_id.ofa_name>
        <obf_area_id.ofa_position>11</obf_area_id.ofa_position>
        <row_module_id.mdl_name>DF</row_module_id.mdl_name>

Je ne vois pas de field “df_ligne_devis_nom_produit” dans votre code

En outre j’ai l’impression que vous avez un usage assez aléatoire de la casse dans vos nommages, pour le nom des tables et de colonnes il est toujours préférables d’utiliser soit du lower case soit du upper case mais pas un mélange des deux. Certaines bases de données sont case sensitive sur les nommages d’autres non.

Ma recommandation c’est d’utiliser systématiquement des nommages à la Java en camel case pour les noms logiques ex: MyBusinessObject ou myNameField et des nommages snake case pour les noms physiques ex: my_business_object ou my_name_field mais bon vous faites comme vous voulez.