Je cherche à implémenter les extrafield sur mes docs PDF…
J’ai suivi le wiki et j’ai ajouter :
require_once DOL_DOCUMENT_ROOT.’/core/class/extrafields.class.php’;
$extrafields = new ExtraFields($db); $extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
$object->fetch($rowid); $object->fetch_optionals($rowid,$extralabels);
Mais j’ai une page blanche avec cette erreur :
Fatal error: Call to a member function query() on a non-object in /home/www/dolibarr/htdocs/core/class/extrafields.class.php on line 540
Voilà ce que j’ai mis :
require_once DOL_DOCUMENT_ROOT.’/core/class/extrafields.class.php’;
$extrafields = new ExtraFields($this->db);
$extralabels = $extrafields->fetch_name_optionals_label(‹ fichinter ›);
$object->fetch_optionals($object->id,$extralabels);
$pdf->MultiCell($le18info_posX,8, $outputlangs->convToOutputCharset($object->array_options [‹ options_format ›]),1,‹ C ›,false,1,’’,’’,true,0,false,false,8,‹ M ›);
Mais le problème, c’est que les résultats sont bruts et ne reprennent pas les valeurs des select par exemple.
Exemple : j’ai une liste (oui et non) mais le résultat est 1 ou 2
Pourquoi utiliser un module externe puisque la fonction est implémentée nativement?
(question posée sans animosité, vraiment)
De plus j’ai remarqué des lenteurs au moindre rajout de champs customfields.
Le sujet est un peu vieux, mais j’ai rencontré le même problème, et j’ai trouvé une solution (testé uniquement sur les listes). Probablement pas la meilleure, mais elle fonctionne, est simple et relativement propre…
Comme en recherchant sur internet ce sujet est un des deux seuls qui abordent le problème, j’ai pensé que répondre ici serait une bonne idée.
En gros, j’utilise cela :
$extrafields->attribute_param[$key]['options'];
La version pas très propre (évidemment ‹ requirements › est le code de votre attribut) :
Pour faire un peu mieux, j’ai ajouté la fonction suivante dans le fichier php :
function getOptionsFromKey($key)
{
return $this->extrafields->attribute_param[$key]['options'];
}
en ajoutant un
var $extrafields; dans la classe (début du fichier) et en l’initialisant du coup de cette façon afin de pouvoir l’utiliser « partout »: $this->extrafields = new ExtraFields($this->db);
Et ça s’utilise donc comme ça :
Je vous remonte un petit soucis avec les extrafields de la fiche d’intervention.
Le contexte:
J’ai créer plusieurs extrafields dans le module intervention (attributs supplémentaires).
1- Lorsque je créé une intervention et renseigne les extrafields, ceux-ci ne sont pas pris en compte lors de la création du brouillon.
En vérifiant de plus près, je m’aperçois que la table fichinter_extrafields ne contient aucun enregistrement concernant ce brouillon.
2- De plus, les liens pour la modification (picto + texte « Modifier ») se trouvent au niveau des valeurs (en mode view et edit_extras).
Ne pourrait-on pas envisager de les avoir comme pour les projets et contrats ?
PS : Je n’ai pas encore vérifié pour les autres modules.
Le point N°2 (disposistion extrafields) a été résolu.
Vu l’impossibilité de mettre un bout de code proprement sur le forum, demandez-moi si vous voulez la modification.
Pour le point N°1 (enregistrement des extrafields quand on créé un brouillon), toujours pas résolu.
Voici ce que j’ai intégré et modifié :
- Classement d’une facture en « Non facturée »
- Statistiques sur la page d’acceuil
- Documents joints/générés sur la fiche
- Variable pour mail (date)
- Boxe
- Extrafields (attributs supplémentaires)
Attention
Il s’agit de modifications du coeur de Dolibarr.
Est-il possible de faire apparaitre les extrafields créés dans le module tiers sur les PDF des propals, factures ou commandes?
J’ai bien essayé d’ajouter
$pdf->MultiCell (0,5, $outputlangs->convToOutputCharset($object->array_options [‹ options_XXX ›]),0,‹ L ›); )
Where XXX is the code of the extrafields
Mais cela ne permet d’ajouter que les extrafields créés depuis leurs modules.
C’est à dire par exemple: Les Extrafields créés dans le module commande peuvent être afficher dans les pdf commandes.
Ce que je voudrais c’est afficher les extrafields ,que j’ai créer dans le modules Tiers, sur mes propals, commandes et factures.
Moi aussi je voudrais savoir si c’est possible d’afficher dans une facture ou une expédition un champ que j’ai ajouté au produit (en tant que nouvel attribut).