j-it
Juin 16, 2020, 10:52
1
Bonjour,
Sur une facture, je désire imprimer des informations venant d’un extrafields défini pour les factures et plusieurs extrafields définis au niveau des contacts client.
Etant un peu (beaucoup) rouillé en PHP, je suis parvenu à récupérer l’extrafields pour la facture, mais quand je veux lire ceux pour les contacts, cela ne me retourne rien.
$extrafields = new ExtraFields($db);
$extralabels=$extrafields->fetch_name_optionals_label($object->facture);
$object->fetch($rowid);
$object->fetch_optionals($rowid);
$kilometrage = $outputlangs->convToOutputCharset($object->array_options ['options_kilometrage']);
dol_syslog('kilometrage:'.$kilometrage,LOG_INFO);
// load extrafields for contacts
$extralabels=$extrafields->fetch_name_optionals_label($object->socpeople);
$object->fetch($rowid);
$object->fetch_optionals($rowid);
$marque = $outputlangs->convToOutputCharset($object->array_options['options_marque']);
$modele = $outputlangs->convToOutputCharset($object->array_options['options_modele']);
$num_chassis = $outputlangs->convToOutputCharset($object->array_options['options_chassis']);
dol_syslog('marque:'.$marque,LOG_INFO);
dol_syslog('modele:'.$modele,LOG_INFO);
dol_syslog('chassis:'.$num_chassis,LOG_INFO);
Si je me fie au log, j’ai l’impression que le deuxième fetch reexecute la même requête que pour la facture.
Merci d’avance pour votre aide.
Jérôme
ksar
Juin 17, 2020, 7:27
2
j-it
Juin 17, 2020, 9:56
3
Merci.
Je n’avais pas compris que les attributs complémentaires sur les contacts étaient vus comme des thirdparty extrafields.
J’ai modifié mon code comme suit:
$extrafields = new ExtraFields($db);
$extralabels=$extrafields->fetch_name_optionals_label($object->facture);
$object->fetch($rowid);
$object->fetch_optionals($rowid);
dol_syslog('SimonizCar: kilometrage:'.$object->array_options['options_kilometrage'],LOG_INFO);
$kilometrage = $outputlangs->convToOutputCharset($object->array_options['options_kilometrage']);
// get extrafields for contacts
if(is_object($object->thirdparty))
{
$marque = $outputlangs->convToOutputCharset($object->thirdparty->array_options['options_marque']);
$modele = $outputlangs->convToOutputCharset($object->thirdparty->array_options['options_modele']);
$num_chassis = $outputlangs->convToOutputCharset($object->thirdparty->array_options['options_chassis']);
dol_syslog('SimonizCar: marque:'.$object->thirdparty->array_options['options_marque'],LOG_INFO);
dol_syslog('SimonizCar: modele:'.$object->thirdparty->array_options['options_modele'],LOG_INFO);
dol_syslog('SimonizCar: chassis:'.$object->thirdparty->array_options['options_chassis'],LOG_INFO);
}
else
{
dol_syslog('SimonizCar: missing thirdparty informations', LOG_INFO);
}
J’ai bien récupéré mon attribut ‹ options_kilometrage ›, mais rien pour les thirdparty.
J’ai fait un print_r($object->thirdparty) et je n’ai vois rien lié à mes extrafields
j-it
Juin 17, 2020, 11:16
4
J’ai trouvé
Les informations dont j’ai besoin était dans l’objet « Contact », pour les lire, je dois utiliser:
$marque = $outputlangs->convToOutputCharset($object->contact->array_options['options_marque']);
$modele = $outputlangs->convToOutputCharset($object->contact->array_options['options_modele']);
$num_chassis = $outputlangs->convToOutputCharset($object->contact->array_options['options_chassis']);
1 « J'aime »