Modulebuilder : Utiliser le champs d'une autre table / champs calculé

Bonjour,
J’ai fait quelques recherches sur le forum, sans succès. Désolé.

J’ai créé un module personnalisé avec le modulebuilder.
Super et très intuitif en partant de la coquille de départ.

Par contre, j’aimerais pouvoir utiliser un champ dans mes listes, issus d’extra-field.
Je récupère dans mon module, les contacts existants dans ma base :
integer:Contact:contact/class/contact.class.php:1:(statut:=:1)

J’aimerais ajouter un autre champ content un extrafield de contact : « zone ».
Auriez-vous une piste pour pouvoir récupérer ce champ dans ma liste ?

Merci à vous pour votre aide et pour votre temps !

Bonjour Kusco,

J’aurais peut-être une solution, pourquoi ne pas faire une liste issue d’une table ?

Je te mets un exemple :

socpeople_extrafields:zone:zone::fk_object=$ID$

Après, je ne sais pas trop ce que tu veux en faire et quelle est le type de ton extrafield « zone » donc c’est à toi de t’adapter.

Petit rappel pour la structure de la valeur des extrafields de type liste issue d’une table :

{NomTable}:{libelle}:{ValeurDeRetenue}::{champsAFiltrer}={valeur}

N’hésite pas à me dire si tu as besoin d’aide ou juste dire si c’est réglé !

Salut @PragmArnaud,

Merci pour ta réponse est ta proposition.

Je ne connaissais pas cette option et d’ailleurs, j’ai du mal à voir comment l’appliquer.
Je pensais la mettre au niveau du « Type » avec par exemple varchar(255): devant, mais ça ne fonctionne pas. J’ai fait quelques autres essais, mais en vain.

Je suis partant pour un indice supplémentaire, s’il te plaît, merci :slight_smile:

Si tu retranscrit ça en liste issue d’une table tu aurais un truc dans le style :
socpoeple:firstname|lastname:rowid::fk_statut=1

Pourrait-tu développer l’objectif de ta requête ? car je ne sais pas si ce champ est adapté à ton besoin.

Par ailleurs désolé pour le temps de réponse :sweat_smile:

Salut,

Pas de souci pour le temps de réponse, c’est déjà super gentil de filer un coup de main.

Dans mes extrafield de contact, j’ai la zone d’intervention (un tableau du type : 1,Nantes,2,Saint-Nazaire,3,Département).

Le module que j’ai créé répertorie les compétences de mes contacts.
Donc pour chaque ligne j’ai :

  • Une compétence
  • Le contact en face
    'fk_contact' => array('type'=>'integer:Contact:contact/class/contact.class.php:1:(statut:=:1)'

Pour l’affichage du tableau et plus de facilité, j’aimerais pouvoir afficher :

  • La zone d’intervention du contact

Ce sera peut être plus simple pour resituer la demande.
Merci en tout cas !

D’accord, je comprends mieux !

Si je comprends bien la situation, tu as un extrafields dans ta table llx_contact_extrafields qui est un entier faisant référence à une valeur par rapport à une liste de zone que tu as instancié grâce à un champ de type liste (donc en dur directement dans l’extrafield) c’est ça ?

Si oui, se l’on moi, il vaut mieux faire un nouveau dictionnaire dans ton module en suivant la documentation (dans ton descripteur de module). Ce dictionnaire va pouvoir répertorier toutes tes zones. (à voir si dans dolibarr, il n’y a pas déjà un dictionnaire qui fait déjà ce service)

Et à ce moment-là, tu ferais une liste issue d’une table qui pointe vers la table de ton dictionnaire qui peut ressembler à ça : llx_c_zone (MAIN_DB_PREFIX + c + Nom de ta table)

Ce qui te donnerait dans ton extrafield de contact :

Type de l’extrafield : liste issue d’une table
Valeur : c_zone:label:rowid

J’ai testé avec le dictionnaire des régions « llx_c_regions » ( dictionnaire de base dans dolibarr) et ça marche nickel.
c_regions:nom:rowid
( si tu veux tester et voir le comportement sur une instance de test)

N’hésite pas à signalé si tu as avancé ou si tu as encore besoin d’aide.

Salut,

Alors ce n’est pas vraiment ça. Mais par contre, j’ai appris plein de choses grâce à toi et donc j’ai fait des modifs pour passer mes extrafield en dur, vers des dictionnaires et d’ajouter d’autres dictionnaires pour gagner en maintenance. Merci beaucoup !! :slight_smile:

J’enchaîne avec des réunions, je teste ça en début de semaine et je te redis.
Merci encore !

Salut @PragmArnaud ,
Après pas mal de recherches, j’ai compris de quelles listes tu me parlais (grâce à des sujets comme celui-ci : Utilisation ExtraFields - #5 par Jerozih ).

Seul souci, c’est que j’utilise le module-builder, donc je n’ai pas accès à des extra-fields et à cette possibilité de faire des listes issues d’une table. Sauf erreur de ma part, je ne peux donc pas utiliser cette option.

Sinon, il faudrait que je trouve un moyen de l’alimenter par une requête SQL au moment de la création. Je ne sais pas si c’est quelque chose de faisable avec un Hook par exemple ? Mais c’est peut être partir vers une autre galère…

Merci pour ton aide !