Ragnard Posted April 6, 2012 Share Posted April 6, 2012 Bonjour, Alors voilà je cherche à faire une mise à jour de mon stock avec un fichier distant. Mon problème est le suivant : La Connexion fonctionne correctement, ensuite je récupère mon fichier je traite le fichier et ensuite je cherche à mettre a jour chaque ligne de mon fichier. Et voila le problème qui ce pose : 1er problème le champ price est en parmanence incrémenter de la tva il charge la valeur TTC dans le champ HT donc rajoute la TVA continuellement et vu que je lance mon webservice toute les heures je vous raconte pas les prix a la fin de la journée. 2 eme problème il me sort une erreur 400 a chaque fois après 224 produits mis à jour . try { $content=file_get_contents('monfichier.txt','r'); $content=explode("\r", $content); $arr = array(); sort($content); foreach ($content as $ligne ) { $ref = explode("\t", $ligne); if(!array_key_exists($ref[0],$arr)){ $arr[$ref[0]] = array(); $arr[$ref[0]]['qte'] = $ref[1]; } else { $arr[$ref[0]]['qte'] += $ref[1]; } } $nb_prod=0; $update=0; $creat=0; $tableau_creat = array(); foreach($arr as $cle => $qte) { $tab=split("_",$cle); $ma_reference = $tab[0]; $RSQL = '(SELECT `id_product` '; $RSQL .= ' FROM `product`'; $RSQL .= ' WHERE `reference`="'.$ma_reference.'"'; $RSQL .= ' );'; $id_product_search = Db::getInstance()->ExecuteS($RSQL); if ($id_product_search[0]['id_product']!="" AND isset($id_product_search[0]['id_product'])) { echo 'Reference : '.$ma_reference.' //// id : '.$id_product_search[0]['id_product'].' //// Quantité : '.$qte['qte'].'<br />'; $p++; $xml_product = $webService->get(array('resource' => 'products','id' => $id_product_search[0]['id_product'])); $resources_product = $xml_product->children()->children(); unset($xml_product->product->id_default_image); unset($xml_product->product->position_in_category); unset($xml_product->product->manufacturer_name); unset($xml_product->product->unity); unset($xml_product->product->date_add); unset($xml_product->product->date_upd); unset($xml_product->product->product_feature); $resources_product->quantity = $qte['qte']; if ($qte['qte']>0) { $resources_product->active = 1; } else { $resources_product->active = 0; } $xml_product = $webService->edit(array('resource' => 'products', 'id'=>(int)$id_product_search[0]['id_product'], 'putXml' => $xml_product->asXML())); // if ($p==224) { // echo $ma_reference; // die(); // } $product_fait++; } elseif ($check<=0 AND $qte['qte']>0) { $creat++; array_push($tableau_creat, $tab[0]); } else { $nb_prod++; } } echo '<h2>Traitement fichier terminé</h2>'; echo '<h4>'.$product_fait.' mise a jour</h4>'; echo '<h4>'.$creat.' a creer</h4>'; } catch (PrestaShopWebserviceException $e) { // Here we are dealing with errors $trace = $e->getTrace(); if ($trace[0]['args'][0] == 404) echo 'Bad ID'; else if ($trace[0]['args'][0] == 401) echo 'Bad auth key'; else echo $e->getMessage(); } Link to comment Share on other sites More sharing options...
Ragnard Posted April 6, 2012 Author Share Posted April 6, 2012 Pour le problème de prix j'ai bidouiller une solution. $resources_product->price = number_format(str_replace(',', '.', $prix/1.196), 4, '.', ''); Mais pour le nombre de produit envoyer j'ai beau essayer d'alléger le nombre de champ xml envoyer mais sa bloque toujours a 224. Personne ne rencontre ce problème? ou aurais une solution? Link to comment Share on other sites More sharing options...
Ragnard Posted April 7, 2012 Author Share Posted April 7, 2012 Petit up Personne fait de mise à jours prix, quantité, de leurs produits via WebServices massivement? J'ai j'ai beau allèger mon script le seul moment ou il passe complet c'est quand je mets en commentaire les fonctions $xml_product = $webService->edit(array('resource' => 'products', 'id'=>(int)$id_product_search[0]['id_product'], 'putXml' => $xml_product->asXML())); Merci d'avance Link to comment Share on other sites More sharing options...
mehdi2405 Posted April 8, 2012 Share Posted April 8, 2012 bjr peux tu stp m'envoyer tes fichiers que j'essaie sur une version que j'ai modifié je te donnerai mon resultat ce soir. j'ai besoin de ton fichier + ton code au plaisir de te lire Link to comment Share on other sites More sharing options...
Ragnard Posted April 9, 2012 Author Share Posted April 9, 2012 Mon code tu la sauf l'identification. Pour mon fichier je t'envoie le lien en MP Désoler de répondre aussi tard. Link to comment Share on other sites More sharing options...
mehdi2405 Posted April 9, 2012 Share Posted April 9, 2012 possibilité de passer par un fichier xml ? Link to comment Share on other sites More sharing options...
Ragnard Posted April 9, 2012 Author Share Posted April 9, 2012 Non pas possibiliter le logiciel de gestion de stock utiliser ne peux pas. Link to comment Share on other sites More sharing options...
Ragnard Posted April 10, 2012 Author Share Posted April 10, 2012 Du nouveau ? personne aurais une idée? Link to comment Share on other sites More sharing options...
symphonyx Posted April 18, 2012 Share Posted April 18, 2012 Hello, je synchronise plusieurs milliers de produits via le webservice et je n'ai pas ton problème. Pour ton erreur 400, as-tu mis le display-error à on ? ça t'aiderait. SI ça bloque tout le temps à 224 c'est sûrement ton produit qui merde (un & ou un caractère pourrit) non ? Pour ton problème de prix, il faut que tu renseignes l'id de tva je pense et ça devrait rouler ? ++ 1 Link to comment Share on other sites More sharing options...
ericdel Posted April 19, 2012 Share Posted April 19, 2012 Si j'ai bien compris, tu as un fichier txt correspondant au stock distant et tu passes par le webservice pour ton propre site ? Est-ce une obligation de passer par le webservice pour toi ? Pourquoi ne pas utiliser updateproduct ? (dis-je une bêtise ?) Link to comment Share on other sites More sharing options...
Ragnard Posted April 27, 2012 Author Share Posted April 27, 2012 Bonjour, non c'est pas obliger mais par le update je vois pas trop comment l'automatiser. Désoler pour le retard de réponse mais en déplacement. Link to comment Share on other sites More sharing options...
Ragnard Posted April 27, 2012 Author Share Posted April 27, 2012 J'ai bien des problème d'accents il plante sur é donc j'essaye de faire qu'il ne prenne pas en compte nom, description, etc... mais y aurais t'il pas plus simple du genre dans le get avec une sélection des champs que l'on veux uniquement? genre pour moi id prix qantity ? J'arrive passer outre cette erreur : <?xml version="1.0" encoding="UTF-8"?> <prestashop xmlns:xlink="http://www.w3.org/1999/xlink"> <errors> <error> <code><![CDATA[84]]></code> <message><![CDATA[Validation error: "Le champ suivant n'est pas valide selon la méthode de validation<b>isCatalogName</b>:<br/> (Product->name = Silver dome métal pour la langue 1"]]></message> </error> </errors> </prestashop> j'ai éssayer de faire unset($resources_product->name); mais toujours la même erreur. Link to comment Share on other sites More sharing options...
chubert Posted September 8, 2012 Share Posted September 8, 2012 Bonjour, J'ai aussi le problème du champ price qui s'incrémente tout le temps de la TVA quand je fais un update d'un article. Comme si le champ price du XML get équivalait au prix tva comprise et le champ price du XML put/post équivalait au prix tva exclue. Est-ce que quelqu'un avait trouvé une solution? Bien à vous Link to comment Share on other sites More sharing options...
RomuGb Posted June 18, 2014 Share Posted June 18, 2014 Hello, je synchronise plusieurs milliers de produits via le webservice et je n'ai pas ton problème. Pour ton erreur 400, as-tu mis le display-error à on ? ça t'aiderait. SI ça bloque tout le temps à 224 c'est sûrement ton produit qui merde (un & ou un caractère pourrit) non ? Pour ton problème de prix, il faut que tu renseignes l'id de tva je pense et ça devrait rouler ? ++ Salut, J'aimerais moi aussi pouvoir mettre à jour mes 10000 articles à travers le webservice. Plutot que d'envoyer un fichier, ne puis-je pas envoyer la reférence produit à ma page PHP qui recherche le produit et mets à jour le stock avec la quantité que j'ai passé en paramètre dans l'url à l'aide du web service ? Aurais-tu un bout de code pour m'aider à faire cela ? Merci. Romuald Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now