Champ calculé dans un extrafield du module adhérent

Bonjour,

Après des heures et des heures à chercher depuis des semaines, et n’étant pas dév PHP, je n’ai pas trouvé de réponse à mon problème … Vous êtes mon dernier espoir :wink:

Cela concerne le module adhérent mais j’imagine que ça peut se reporter à d’autres modules

Problème : J’ai besoin de placer le montant lié au type d’adhérent dans un mail à envoyer à l’adhérent.

Jusqu’ici si vous pensez à une solution, je prends.

La solution que je pensais apporter : créer un extrafield adhérent et y placer un champs calculé pour chercher la ligne « amount » dans la table « llx_adherent_type », en faisant correspondre (WHERE) :

  • llx_adherent : rowid
  • llx_adherent_extrafields : fk_object

Evidemment comme ce n’est pas la même table (mais carrément trois tables différentes) ce n’est pas direct.

Je n’y connais pas grand chose en requête PHP malheureusement, ce qui me coince depuis des semaines.

Si vous connaissez une requête à mettre dans extrafield pour chercher « amount » je suis preneur.

Merci beaucoup, par avance

Hello,

si les montants sont liés :

  • au type adhérent, tu peux aller les chercher direct dans la table adhérent_type (je crois)
  • à la souscription choisie, tu peux aller chercher ton montant dans la table subscription

idealement faudrait passer par un module externe (cf module builder), mais tu peux ajouter des tooltip à la main dans le fichier de création d’email. Le soucis c’est qu’a chaque mis a jour ça va te virer ta modif. Tu peux aussi essayer d’inclure ton nouveau tooltip dans le core en faisant un pr.

à plus

Merci pour ta réponse !

Pas bête pour l’histoire du module builder, je vais voir cela.

Idéalement, j’aurais aimé passer par une formule champ calculé pour extrafield mais la doc à ce sujet est très mince malheureusement.

J’ai trouvé une solution temporaire et manuelle hier soir : injecter le code SQL suivant directement dans la BDD pour copier la colonne vers celle de l’extrafield :

UPDATE llx_adherent_extrafields AS ae
JOIN llx_adherent AS a ON ae.fk_object = a.rowid
JOIN llx_adherent_type AS at ON a.fk_adherent_type = at.rowid
SET ae.montant = at.amount;

Ca fait le taf, mais en manuel. J’aurais préféré de l’automatique.

Je comprends pas très bien ce que vous essayez de faire. si vous avez un champs calculé qui est la copie conforme d’un autre champs… à quoi ça sert ?

Is jamais il y a aussi le module adherentplus qui fait plein de chose interessantes, même s’il n’est pas documenté

1 « J'aime »

Je cherche à placer dans un mail adhérent (il faut donc que la variable soit dans la table llx_adherent ou llx_adherent_extrafields) une variable « montant » de la table llx_adherent_type (donc si j’ai bien compris et selon mes recherches, impossible à appeler directement dans un mail adhérent (via __EXTRAFIELD_MONTANT__ )).
Donc je dois la chercher dans llx_adherent_type pour la placer dans llx_adherent_extrafields. Et je pensais passer par le champs calculé.

Ben si c’est possible…

Comment ?

j’ai pas vraiment le temps de le faire, mais à mon avis, il suffit d’ajouter une variable de substitution ici

Un truc du genre :

$substitutionarray['__MEMBER_SUBSCRIPTION_AMOUNT__'] = (isset($object->amount) ? $object->amount : '');

ou

$substitutionarray['__MEMBER_SUBSCRIPTION_AMOUNT__'] = (isset($object->subscription) ? $object->subscription : '');

Et utiliser la variable de substitution MEMBER_SUBSCRIPTION_AMOUNT ainsi créée.

vu que $object->amount est un prix il faudra peut-être utiliser price($object->amount pour avoir qqch de lisible

et je te conseille la lecture de ce post

1 « J'aime »

Un grand merci pour ta réponse et ton temps l’ami.

En effet, quand je parlais d’ « impossible » c’est nativement, sans toucher au core, car je ne connais pas encore trop le fonctionnement de Dolibarr.

J’essaierai ta solution. Merci encore !