Bonjour
J’essaye d’ajouter des client à dolibarr2.7 en utilisant l’api depuis un autre site web
Mon site web fait donc appel à une fonction user_dolibarr_transmit()
dont le contenu est le suivant :
[code]
function user_dolibarr_transmit(){
require_once(« dolibarr/master.inc.php »);
require_once(DOL_DOCUMENT_ROOT."/cron/functions_cron.lib.php");
$langs->load(« main »);
$version=’$Revision: 1.16 $’;
$error=0;
require_once(DOL_DOCUMENT_ROOT."/user.class.php");
require_once(DOL_DOCUMENT_ROOT."/societe.class.php");
$user=new User($db);
$client=new Societe($db);
$user->id = 0;
// informations client //
$client->client=1;
$client->code_client=456;
$client->email="[email protected]";
$client->nom=« un autre test »;
$client->prenom=« nicolas »;
$client->adresse=« rue des babouins »;
$client->cp=« 49000 »;
$client->ville=« rennes »;
$client->tel=« 04324343 »;
$idclient = $client->create($user);
if ($idclient < 0) dol_print_error($db,$client->error);
if (! $error){
$db->commit();
print $db->error."\n";
print ‹ — end ok ›."\n";
}else{
print '--- end error code='.$error."\n";
$db->rollback();
}
$db->close();
return $error;
}[/code]
mais je suis confronté au probleme suivant :
la requete sql plante. la requete qui est réellement executé est la suivante :
INSERT INTO llx_societe (nom, entity, datec, datea, fk_user_creat) VALUES (‹ un autre test ›, , 20090828190529, 20090828190529, null)
le champ entity est donc vide.
en regardant de près j’ai vu que l’objet $conf perdait la plupart de ses valeurs dont entity au moment de l’appel à $client->create($user);
pourtant $conf est bien déclaré en tant que globale dans cette fonction
avec xdebug je vois que l’objet a bien toute ses valeurs avant et apres l’appel à la fonction mais qu’il n’a plus que pour valeur :
[code]
$conf =
object(stdClass)[64]
public ‹ format_date_short › => string ‹ %d/%m/%Y › (length=8)
public ‹ format_date_short_java › => string ‹ dd/MM/yyyy › (length=10)
public ‹ format_hour_short › => string ‹ %H:%M › (length=5)
public ‹ format_date_text_short › => string ‹ %d %b %Y › (length=8)
public ‹ format_date_text › => string ‹ %d %B %Y › (length=8)
public ‹ format_date_hour_short › => string ‹ %d/%m/%Y %H:%M › (length=14)
public ‹ format_date_hour_text_short › => string ‹ %d %b %Y %H:%M › (length=14)
public ‹ format_date_hour_text › => string ‹ %d %B %Y %H:%M › (length=14)
[/code] lors de l’appel au global dans le corp de la fonction create
en revanche, si je fais appel au script avec les même paramètres mais en ligne de commande l’import fonctionne
Il y a de quoi devenir fou
Je n’ai pas d’autre valeur ou objet $conf dans le site et il n’y a pas de raison qu’il perde des valeurs comme ca
Le bug doit probablement provenir de ma conf de php ou du site web puisque ça fonctionne en console mais je n’ai pas d’idée sur ce dont il peut s’agir exactement…
je suis ouvert à toute remarque/ propositions / aide puisqu’il s’agit un peu d’un SOS
ps: Je songe à l’occasion qu’il aurait peut être été préférable que dolibarr utilise des singletons/multitons dans la mesure du possible plutôt que des variables globales