Attribut supplémentaire calculé et enregistrement en base

Bonjour,

Il est possible de rajouter des attributs supplémentaires calculés, ce n’est pas immédiat, mais avec de la persévérance on arrive à quelque chose d’appréciable.

J’ai pu constater qu’en BD, dans la table « llx_xxxxx_extrafields » correspondante les colonnes de ces attributs calculés existent bien, mais restent à NULL.

Je ne suis pas codeur mais je me demande s’il existerait une méthode relativement facile permettant d’insérer la valeur calculée de l’extrafield dans l’enregistrement de la table en question ?

Cette page du Wiki ne me permet pas de trouver la réponse à cette question, ou alors je n’ai pas bien su l’y trouver ?

Une idée ? Un pointeur vers une réponse ?
Merci !

Bonjour,

Le principe d’un extrafield calculé c’est justement qu’il est toujours calculé et pas uniquement calculé une fois puis stocké.
Il faudrait à mon avis réécrire la classe des extrafield pour faire ce que vous demandez.
Surtout, quel est le but ? et quand et sur quelles conditions stocker la valeur ?

Merci @ksar pour la réponse.

Disons que par exemple dans un projet, on définit un extrafield « txcotepart » (%) à saisir : un pourcentage à appliquer sur le « montant de l’opportunité », aka opp_amount.

Un autre extrafield « cotepart » (€) est défini comme étant calculé pour afficher le montant correspondant au pourcentage : opp_amount x txcotepart.

Cet extrafield est bien affiché dans la fiche projet. Mais déjà pas dans la liste des projets… la colonne est vide…

Mais ensuite, on veut pouvoir travailler sur ce « cotepart », par exemple par rapport à d’autres extrafields dans les tâches attribuées à des contributeurs, et là ça se complique bien. Pour faire court, il s’agit d’affecter à chaque contributeur une sous-cotepart du montant cotepart précédemment calculé.

Non seulement il faut jouer du rechargement de l’objet projet, ça reste gérable, mais tout recalculer pour parvenir à l’affichage en bout de chaîne.

La valeur calculée pourrait être stockée dans la table où la colonne existe déjà, et mise à jour à chaque recalcul…

Je regarde en parallèle du côté des triggers sur les tables.

Par ailleurs, je ne comprends pas du tout le champ « Valeur par défaut (Base de données) » dans l’édition d’un extrafield, mais j’ai vu que je ne suis pas le seul.

Il faut passer par $obj-> au lieu de $object-> sur les listes

Pour faire ce que vous voulez faire je pense qu’il faut passer par un module externe qui calcul quand c’est nécessaire un extrafield « classique » (pas calculé)

Je ne comprends pas. :thinking:

En remplaçant $object-> par $obj-> dans ma définition des calculs des extrafields, je n’ai plus aucun résultat.

Et les colonnes supplémentaires de la liste des projets sont celles qui sont apparues après la création des extrafields, je ne vois pas où je peux spécifier $obj->

En revanche, quand je mets que l’extrafield est sommable, sa valeur n’apparaît toujours pas dans la ligne du projet mais sur le Total en dessous oui !

Bug ?