Extrafields sur les PDF

Bonjour à tous,

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

Merci pour vos lumières

J’avance doucement…

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

Bonjour,

j’ai posé la même question, hélas sans réponse :

www.dolibarr.fr/forum/t/impression-pdf-champ-extrafields-bis-repetita/18512/1

Tu formules mieux le question que moi, mais c’est la même chose.

Bonjour,

En attendant d’avoir mieux, j’ai mis en dur des conditions (if else if …)

Bonsoir,
Ce module ne répond pas à vos besoins ?
http://www.dolistore.com/lang-fr/autres/221-Champs-Personnalis--s.html

J’ai mal compris votre demande ?
@+

Bonjour,

@philazerty

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.

@le18info

aurais-tu un exemple pour tes conditions?, je suis vraiment pas bon.

Bonjour,

Je partage le constat de Laureole.

@Laureole

Je précise que je n’ai pas beaucoup d’attributs supplémentaires, donc facile à gérer…
Voici un bout de mon code:
$object->fetch($id);
$extrafields = new ExtraFields($this->db);
$extralabels = $extrafields->fetch_name_optionals_label(‹ fichinter ›);
$object->fetch_optionals($object->id,$extralabels);
$format = $object->array_options [‹ options_format ›];
if ($format==« 1 »)
{
$format = « OUI »;
}
else
{
$format = « NON »;
}
$sauv = $object->array_options [‹ options_sauv ›];
if ($sauv==« 1 »)
{
$sauv = « OUI »;
}
else
{
$sauv = « NON »;
}

1 « J'aime »

Merci, Bruce!

Parfait c’est exactement ce que je voulais.

Laurent

Avec plaisir Laurent :wink:

Je pense qu’on pourrait éviter les conditions en « dur » convenir mais mes compétences s’arrêtent là.

Si une âme charitable pourrait nous donner le code manquant pour afficher la valeur de nos champs…

Bonne journée.

Hello,

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) :

$reqId = intval($object->array_options['options_requirements']); $reqValue = $extrafields->attribute_param['requirements']['options'][$reqId]; // Affichage $pdf->MultiCell($boxWidth,5, $outputlangs->convToOutputCharset($reqValue),0,'L');

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 :

$reqId = intval($object->array_options['options_requirements']); $reqValue = $this->getOptionsFromKey('requirements')[$reqId ];

PS : Si vous voulez vérifier des valeurs, le moyen le plus simple est de faire un dump de la variable :

[code]
var_dump($this->extrafields->attribute_param);[/code

3 « J'aime »

Bonjour,

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.

Bonjour,

Les autres modules fonctionnent normalement.

Bonjour,

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.

Bonjour,

Problème 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.

Je vous met à disposition les fichiers :
http://www.le18informatique.fr/crawltrack/php/countdownload.php?url=http://www.le18informatique.fr/ftp/modif_fichinter.zip

Bonjour,

Qqun a-t-il déjà tenté d’imprimer en incluant un champ extrafields sur un pdf ?
Ils ne sont à priori pas accessibles par $object.

Dol 3.40 tournant sur un dédié ubuntu 3.2.50-xenU-8149-x86_64 avec php 5.3.10-1ubuntu3.8 et mysql 5.5.34.

CustomFields 2.25 fait planter direct la base dès que l’on appelle l’include donc non utilisable.

http://wiki.dolibarr.org/index.php/Extrafields

1 « J'aime »

Et dire que je me suis fait 1 heure de recherches tous azimuts dans le forum et gogol … même pas pensé à commencer par le commencement :-/

Merci beaucoup.

Bonjour,

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.

Quelqu’un à une idée?

merci pour votre aide.

Cordialement

Bonjour,

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).

cordialement

si c’est possible j’aimerai savoir comment (cad au niveau du code)