bonjour,
Depuis quelque jours je suis bloqué sur la mise a jour d'un attribut relation principalement relation multiple.
J'ai une classe magasin et une classe ligne magasin. Dans la classe magasin nous avons une relation multiple de ligne magasin.
voici mes fichier XML de chaque classe:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 <?xml version="1.0" encoding="ISO-8859-1"?> <CLASS id="Magasin"> <CACHE type='FULL'/> <NAME value="NAME_MAGASIN"/> <FIELDS> <TEXT id="id_mag"> <NAME value="NAME_ID_MAG"/> <F_MARKS id='true' name='true' create='true' main='true'/> </TEXT> <NUMBER id="marge_mag"> <NAME value="NAME_MARGE_MAG"/> <F_MARKS create='true' set='true'/> </NUMBER> <RELATION id="ref_ligne" multiple='true' type='COMPOSITION'> <NAME value="NAME_RELATION"/> <F_MARKS create='true' set='true'/> <CLASSES idrefs="LigneMagasin"/> </RELATION> </FIELDS> <ACTIONS> <ACTION_REF idref="_consult"/> <ACTION_REF idref="_create"/> <ACTION_REF idref="_clone"/> <ACTION_REF idref="_set"/> <ACTION_REF idref="_delete"/> <ACTION_REF idref="_print"/> </ACTIONS> </CLASS>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 <?xml version="1.0" encoding="ISO-8859-1"?> <CLASS id="LigneMagasin"> <CACHE type='FULL'/> <NAME value="NAME_LIGNEMAGASIN"/> <FIELDS> <TEXT id="id_ligne"> <NAME value="NAME_ID_LIGNE"/> <F_MARKS id='true' name='true' create='true'/> </TEXT> <NUMBER id="prix_A"> <NAME value="NAME_PRIX_A"/> <F_MARKS create='true' set='true' main='true'/> </NUMBER> <NUMBER id="prix_R"> <NAME value="NAME_PRIX_R"/> <F_MARKS create='true' set='true' main='true'/> </NUMBER> <RELATION id="reg_mag"> <NAME value="NAME_RELATION_REL"/> <F_MARKS create='true' set='true'/> <CLASSES idrefs="Magasin"/> </RELATION> </FIELDS> <ACTIONS> <ACTION_REF idref="_consult"/> <ACTION_REF idref="_create"/> <ACTION_REF idref="_clone"/> <ACTION_REF idref="_set"/> <ACTION_REF idref="_delete"/> <ACTION_REF idref="_print"/> </ACTIONS> </CLASS>
J'aimerais avoir les instructions pour pouvoir :
1: Lors de la création d'un magasin je voudrais initialiser l'attribut ref_ligne avec une ensemble de valeur. J'ai essayer dans la class Behavior de magasin d'utiliser la methode getValue(LyFormController form, LyFieldInfo fieldInfo) pour retourner la liste sans succes.
2: lors de la mise a jour du champ marge dans le magasin recalculer le prix de revient de chaque ligne . A cette effet j'ai utiliser le code suivant qui ne fonctionne pas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 public Object getValue(LyFormController form, LyFieldInfo fieldInfo) { if ("ref_ligne".equals(fieldInfo.getId())) { // creation du 1er elt LyClassInfo classMvt = form.getClassInfo("LigneMagasin"); // creation d'un objet LyObject objmvt = new LyObject(classMvt); // ajout des valeur ds la ligne de mvt objmvt.setValue((LyFieldInfo) form.getApplication().getInfo("id_ligne"), "ART1"); objmvt.setValue((LyFieldInfo) form.getApplication() .getInfo("prix_A"), new Integer(10)); objmvt.setValue((LyFieldInfo) form.getApplication() .getInfo("prix_R"), new Integer(10)); objmvt.set(); lstLigne.addObject(objmvt); // creation du 1er elt objmvt = new LyObject(classMvt); // ajout des valeur ds la ligne de mvt objmvt.setValue((LyFieldInfo) form.getApplication().getInfo("id_ligne"), "ART2"); objmvt.setValue((LyFieldInfo) form.getApplication() .getInfo("prix_A"), new Integer(20)); objmvt.setValue((LyFieldInfo) form.getApplication() .getInfo("prix_R"), new Integer(20)); objmvt.set(); // ajout dans la champ du magasin lstLigne.addObject(objmvt); return lstLigne; } return super.getValue(form, fieldInfo); }
Merci!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 public void propagate(LySetController set, LyFieldInfoValue newValue) { LyFieldInfo fieldInfo = newValue.getFieldInfo(); LyClassInfo classInfo = set.getClassInfo(); LyFieldInfo marge = classInfo.getFieldInfo("marge_mag"); if (fieldInfo == marge) { int mg = ((LyNumberValue)set.getFieldValue(marge)).intValue(); LyRelationValue lstLigne = (LyRelationValue)set.getFieldValue("ref_ligne"); for (int i =0; i<lstLigne.getValueCount();i++){ LyObject lgn = lstLigne.getObject(i); int pAchat = lgn.getNumberValue("prix_A").intValue(); int benef = pAchat*mg/100; lgn.setValue("prix_R",new Integer(pAchat+benef)); lgn.set(); } LyFieldInfo objField = (LyFieldInfo) set.getApplication() .getInfo("ref_ligne"); set.addsetFieldValue(objField, lstLigne,true); } super.propagate(set, newValue); }
Partager