Difference between revisions of "Module OSCommerceWS (développeur)"
m (Module OSCommerce2 moved to Module OSCommerceWS) |
m |
||
Line 1: | Line 1: | ||
− | [[Category: | + | [[Category:OSCommerceWS]] |
{{TemplateDocDev}} | {{TemplateDocDev}} | ||
{{Tableau doc dev module| | {{Tableau doc dev module| |
Revision as of 14:00, 4 January 2009
OSCommerce2 | |
---|---|
Numéro/ID du module | {{{num}}} |
Doc utilisateur du module | |
Doc développeur du module | {{{devdoc}}} |
Fonction
Le module OSCommerce2 permet de synchroniser une partie des informations d'une installation OSCommerce2 avec une installation de Dolibarr via des Web services.
De cette manière, il est possible de
- publier dans OSCommerce des produits introduits dans Dolibarr
- importer des commandes (et leurs détails) dans Dolibarr depuis OSCommerce
- importer des clients OSCommerce dans Dolibarr
Ce module fonctionne au travers de l'utilisation d'une librairie facilitant l'utilisation des services web: NuSOAP
Interface
On accède à l'interface via l'onglet OSCommerce dans le menu supérieur de l'interface par défaut de Dolibarr. Ce menu nous donne une première page récapitulative des données disponibles dans OSCommerce.
Le menu de gauche permet alors d'accéder à plus de fonctionnalités, notamment les fonctionnalités de synchronisation.
La liste de fonctionnalités suivante utilise la convention export=Dolibarr->OSCommerce et import=OSCommerce->Dolibarr
Exporter un produit
En cliquant sur le lien AddProd (qui devrait être traduit en français par Ajout produit, on arrive sur la page d'export des produits. Il suffit de sélectionner un produit et une quantité, puis d'appuyer sur le bouton OSCsell (qui devrait être traduit en français par Vendre sur OSCommerce) pour que la requête de création soit envoyée.
Attention, la liste de produits est limitée en utilisant les limitations de listes de Dolibarr. Il se pourrait donc qu'au-delà de, par exemple, 50 produits, il soit impossible de voir le reste des produits. Pour changer cette limite, on peut aller la modifier dans la configuration de Dolibarr, ou si l'on veut s'en débarrasser, c'est dans htdocs/oscommerce_ws/produits/OSCVente.php, chercher $html->select_produits et modifier $conf->produit->limit_size
Importer un produit
Importer un produit se fait au travers du menu "Produits". La page d'import affiche une liste des produits disponibles dans OSCommerce. Le lien de droite affiche "Importer" ou "Modifier", selon que les produits figurent ou non dans la table llx_osc_product.
Si un produit existe localement et qu'on le supprime (localement), on trouve un joli bug de synchronisation, où le produit apparaît ensuite toujours comme à "Modifier" plutôt qu'importer.
Un produit importé de la sorte est importé hors de toute catégorie.
Un message consécutif à l'importation indique si le produit a été importé.
Importer un client
Importer un client se fait via le menu de gauche Clients. Une liste des clients apparaît et, d'une façon identique à la liste des produits, on peut choisir d'importer un client dans Dolibarr depuis OSCommerce via un lien Importer.
Un message d'information atteste de la réussite de l'opération, indiquant par la même occasion quel est l'identifiant interne attribué à ce client dans Dolibarr.
Importer une commande
L'importation d'une commande se fait via le menu de gauche "Commandes".
L'importation d'une commande nécessite la présence préalable dans Dolibarr du client et des produits concernés. Si ce n'est pas le cas, un message nous indique les produits ou clients manquants et bloque l'opération d'import.
Synchroniser une catégorie
La synchronisation des catégories se fait toujours à la main pour le moment. L'utilisation du menu de gauche Catégories nous mène à une page de liste des catégories existantes dans Dolibarr. Il est nécessaire d'indiquer, pour chaque catégorie de Dolibarr, à quelle catégorie de OSCommerce elle correspond. C'est assez peu intuitif pour le moment étant donné qu'il faut connaître le numéro de catégorie dans OSCommerce pour pouvoir appliquer la correspondance.
Code
Comme indiqué dans une ébauche de documentation très succinte au sein du code, c'est dans le répertoire htdocs/oscommerce_ws que l'on trouve le code de l'application. Il existe également pas mal de code dans un répertoire htdocs/boutique mais il est difficile de déterminer à quoi il sert (probablement au module OSCommerce1).
Le répertoire ws_server/ doit être copié sur le serveur OSCommerce, dans le répertoire catalog/. Il doit également être configuré, en modifiant le fichier ws_server/includes/configuration.php pour y placer la configuration de OSCommerce.
Problèmes
PHP5
La librairie NuSOAP originale (elle a été modifiée dans le code de Dolibarr pour la version 2.2) entre en conflit avec l'extension SOAP de PHP5, à cause du nom du client SOAP, soapclient qui est identique des deux côtés. Les autres classes ne causent pas de conflit.
Ceci donne lieu à une erreur du type "Cannot redeclare class SoapClient".
Erreur I/O
Il est possible que pour certaines requêtes le client (Dolibarr) renvoie une erreur fatale indiquant un problème d'entrée/sortie (une erreur HTTP 1.1 500 du côté serveur). Ce message d'erreur n'est pas très explicite dans le sens où il s'agit généralement d'un problème au niveau d'une méthode fournie en SOAP uniquement, et pas d'un script complet, comme il pourrait le laisser penser.
Pour corriger, une des deux méthodes suivantes est la bonne (pas encore pu filtrer, désolé): réordonner les appels, côté serveur, à $soap_server->register(méthode) ou donner des paramètres $in et $out à ces mêmes appels à register. D'une façon ou d'une autre, c'est cette partie qui pose problème.
Mon produit n'apparaît pas dans OSCommerce
OSCommerce nécessite une entrée de description de produit pour que le produit apparaisse. Autrement dit, il faut que le produit ait un nom (et éventuellement une description) qui lui soient propres. Tout ça est très joli, le seul problème (dépendant de la version de Dolibarr que vous utilisez) c'est qu'il est possible que la requête d'insertion de la description du produit du côté OSCommerce ne fonctionne pas. Il s'agit de la requête située dans ws_server/ws_articles.php, dans la fonction create_article(). Il faut en fait commenter les 3 lignes commençant par products_head dans le deuxième tableau. Un produit bien inséré dans OSCommerce renvoie inévitablement un message du type le produit JADAA2 Aerosol 60/2 est en vente en ligne consulter. Si ce message n'apparaît pas, il y a fort à parier que le produit n'a pas été inséré.