Module OSCommerceWS (développeur)
Introduction
Le module OSCommerce2 permet de synchroniser une partie des informations d'une installation OSCommerce2 avec une installation de Dolibarr.
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.
Importer un client
Importer une commande
Synchroniser une catégorie
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é.