>> J'ai deux classes, compte, et opération, et j'ai un attribut relationnel dans
>> opération relatif à compte. Je veux lorsque je crée une opération avec un
>> montant donné ( qui est un attribut de la classe opération), à la fin de la
>> validation de création, que le montant s'ajoute au solde de compte qui
>> est un attribut de la classe compte.
>> Plus précisément, je n'arrive pas à accéder au champ solde de la classe
>> compte dans le code source de comportement de la classe opération.
Soit par exemple le modèle suivant :
operation_class
- operation_id de type NUMBER/Integer
- operation_montant de type NUMBRE/Float
- operation_compte de type RELATION (vers compte_class)
compte_class
- compte_id de type NUMBER/Integer
- compte_solde de type NUMBRE/Float
Pour mettre à jour le solde du compte lors de la validation de l’opération, vous pouvez procéder de la manière suivante :
- Associer un comportement de classe à operation_class
- Spécialiser la méthode endCreation() de cette classe de manière à mettre à jour le solde de cette classe.
Cette dernière méthode pourrait ressembler au code ci-dessous :
public boolean endCreation(LyCreateController create, LyValueSet values)
{
// Effectuer le traitement générique
boolean ok= super.endCreation(create, values);
if (!ok)
return false;
// Lire le montant de l'opération
float montant = 0;
LyValue val = values.getFieldValue("operation_montant");
if (val != null)
{
montant = (Float)val.getValue();
// Retrouver le compte lié à l'opération
LyObject compte = null;
val = values.getFieldValue("operation_compte");
if (montant != 0 && val != null)
{
compte = ((LyObjectId)val.getValue()).getLogicalObject();
// Retrouver le solde actuel du compte
float solde = (Float)compte.getValue("compte_solde");
// MAJ le solde avec la nouvelle valeur
compte.setValue("compte_solde", new Float(solde + montant));
compte.set();
}
}
return true;
}
Partager