Le blog des équipes…

  • Accueil
  • e-Commerce
  • Secteur Public
  • Gestion de contenu
  • Application Web
  • Technologies
  • e-Commerce Chine
  • Contact

Etude de cas : Un webservice de regroupement produit simple/produit configurable dans Magento

Par Grégoire Genestier le 27 septembre 2010

Magento propose, dès la version communautaire, une API Webservice SOAP et XML-RPC permettant d’échanger simplement des informations avec la base de données. Il est donc possible, via une série de méthodes prédéfinies (http://www.magentocommerce.com/support/magento_core_api), de récupérer des informations, d’en mettre à jour, d’en envoyer ou d’en supprimer de la base de données, sans avoir à intervenir dans le code ou dans l’interface d’administration du site Ecommerce.
Cela est très pratique, notamment, pour insérer de nouveaux produits, en mettre à jour les données, mettre à jour ses stocks, créer des expéditions, récupérer des données clients ou commandes, etc…

Néanmoins, les méthodes présentes par défaut dans l’API Magento ne permettent pas de tout faire, et leur utilisation, dans une démarche organisationnelle d’une société, connaît ainsi certaines limites.
Ainsi, concernant le catalogue produits, il est possible de créer de nouveaux produits, si tant est que l’on reste dans le cadre de produits vendus de manière directe (ce que l’on appelle dans Magento des « produits simples »).
Magento comporte en effet de nombreux types de produits, permettant au marchand d’organiser de manière très souple son catalogue produits :

  • Produits simples
  • Produits configurables
  • Produits groupés
  • Produits téléchargeables
  • Produits « Bundles »
  • Produits virtuels

Grâce aux produits « configurables », le marchand est donc capable de proposer sur son site une unique fiche produit pour un article déclinable en plusieurs combinaisons.

C’est typiquement le cas d’un t-shirt disponible en plusieurs tailles et plusieurs coloris.
Prenons un exemple concret, pour un t-shirt disponible :

  • En tailles L, XL et XXL
  • En coloris Rouge, Jaune et violet

Du point de vue logistique, le marchand possède un stock de produits relatif à chaque combinaison de valeurs, et donc à chaque référence produit distincte. Il a donc un stock donné pour son t-shirt Rouge taille L, un stock pour le Rouge taille XL, un stock pour le Rouge taille XXL, un stock pour le Jaune taille L, etc…

Dans Magento, pour qu’un produit ait un stock spécifique, il doit avoir une référence spécifique, et doit être un « produit simple ».
On aura donc 6 produits simples dans Magento :

  • Rouge / taille L
  • Rouge / taille XL
  • Rouge / taille XXL
  • Jaune / taille L
  • Jaune / taille XL
  • Jaune / taille XXL

Le marchand ne souhaite pas afficher chaque combinaison de valeurs sur le site (ce qui reviendrait dans notre cas à afficher 6 fiches produits différentes sur le site, pour en fait un même produit, pour lequel seules la taille et la couleur changent…).
Il va donc créer un produit dit « configurable » qui sera le seul affiché sur le site, et qui présentera deux listes déroulantes : l’une pour choisir la taille et l’autre pour choisir la couleur. Pour cela, il crée son produit configurable en BackOffice de Magento, et y rattache les 6 produits simples correspondant aux 6 déclinaisons possibles du produit.

Tshirts - Configurable in Magento

Revenons-en à notre API :
Il est possible, via l’API Magento, de créer ces types de produits, à savoir les produits simples et le produit configurable. Ce qu’il n’est pas possible de faire, c’est de regrouper les produits simples au sein du produit configurable, de sorte que l’on ne peut pas mettre en place (avec l’API standard) des scripts automatiques entre un ERP et Magento qui s’affranchiraient de toute manipulation sur le BackOffice pour regrouper les produits.
Dans le cadre d’un projet pour l’un de nos clients, nous avons ainsi créé une nouvelle méthode que nous avons intégrée à l’API Magento, permettant de faire ce regroupement de produits simples et configurables.

En voici les spécifications :

Objectif
L’objectif est de créer un nouvel outil Webservice permettant de regrouper facilement des produits simples au sein d’un produit configurable. Cette fonctionnalité n’existe pas en standard sur Magento 1.4.0.1.

Description technique
Pré-requis
Pour que la méthode webservice puisse être appelée, les pré-requis suivants doivent être respectés :

  • Le produit configurable doit déjà exister (mais sans avoir obligatoirement de produit simple qui lui est relié), dont l’attribut de regroupement est initialisé ou non.
  • Le(s) produit(s) simple(s) que l’on souhaite rattacher au produit configurable doi(ven)t déjà exister

Paramètres du webservice

Les paramètres à passer à la nouvelle méthode webservice seront les suivants :

  • SKU du produit configurable existant
  • SKU du produit simple existant
  • Prix spécifique à appliquer (optionnel)
  • Règle d’application du prix spécifique (optionnel mais obligatoire si un prix spécifique doit être appliqué)

- « POURCENT » (pourcentage du prix de base)
- « EURO » (nouveau montant en euros)
- Vide si aucun prix n’a été saisi précédemment

  • Attribut configurable

Format du webservice
Le webservice suivra le format ci-dessous :
Nom de méthode : catalog_product.assignConfigurable
Retour : Codes de retour suivant résultat
Arguments :

  • Chaîne de caractères : SKU Produit configurable
  • Chaîne de caractères : SKU Produit simple
  • Valeur décimale : Prix à appliquer
  • Chaîne de caractères : Valeur prédéfinie parmi « POURCENT » ou « EURO »
  • Attribut configurable

Exemples d’appels
Avec prix applicable directement
$proxy-> catalogProductAssignConfigurable(‘sessionId’, ‘skuConfigurable’, ‘skuSimple’, 12.90, ‘EURO’, ‘attribut’);
Avec prix applicable en pourcentage
$proxy-> catalogProductAssignConfigurable(‘sessionId’, ‘skuConfigurable’, ‘skuSimple’, 20, ‘POURCENT’, ‘attribut’);
Sans prix spécifique
$proxy-> catalogProductAssignConfigurable(‘sessionId’, ‘skuConfigurable’, ‘skuSimple’,,, ‘attribut’);

Codes retour
Suivant le résultat de l’action de rattachement du produit simple au produit configurable, plusieurs codes peuvent être retournés :

Résultat Code Retour Retour du Webservice
Succès 1 success
Produit configurable non trouvé 2 SKU du produit configurable
Produit simple non trouvé 3 SKU du produit simple
Règle d’application du prix non reconnue 4 ‘POURCENT-EURO-missing’
Echec pour raison inconnue 0 unknown reason
Attribut configurable non affecté au produit simple 5 Super attribute [Code de l'attribut] not in simple product [SKU du produit simple]
Un autre attribut configurable est déjà affecté au produit Configurable 6 Super attribute [Code de l'attribut] already affected to [SKU du produit configurable]
Un autre produit simple est déjà affecté au produit configurable avec les mêmes valeurs d’attributs 7 Product([SKU du produit simple similaire]) with this combination of attributes already associated to configurable.

Spécificités
Le webservice sera développé pour la V2 de l’API Magento, sur la version 1.4.0.1 de Magento. La nouvelle méthode Webservice sera donc intégrée au document WSDL de l’API :
http://www.nomdusite.com/index.php/api/v2_soap/index?wsdl

Les produits configurables initialisés sont créés via l’API Magento et l’(les)attribut(s) de regroupement n’est (ne sont) pas forcément initialisé(s). Le webservice devra donc détecter cela et, si l’attribut n’est effectivement pas initialisé, l’initialiser avec l’(les)attribut(s) donné(s) en paramètre(s). Si le produit configurable est déjà initialisé avec un autre attribut, le webservice retournera une erreur (voir tableau ci-dessus – code retour 6) et l’appel webservice sera ignoré (le webservice ne modifie pas un attribut de regroupement déjà initialisé, il initialise seulement l’attribut au niveau du produit configurable s’il ne l’est pas déjà.

Le webservice vérifie déjà si les attributs de regroupement sont initialisés. Si ce n’est pas le cas, il les initialise avec les attributs passés en paramètre. Ensuite, il lie le produit simple au produit configurable.
Ce type de méthode en webservice peut être également utile dans le cadre des autres produits Magento, notamment les « produits groupés » ou les « produits Bundle ».

Toutes les principales fonctions existent dans Magento. Par exemple, la fonction d’assignation d’un produit simple à un produit configurable est la fonction suivante :
$productConfigurable->setConfigurableAttributesData($dataAttributes)
Il a donc fallu construire le tableau de « super-attribut » $dataAttributes et créer une méthode dans l’API Magento.
Le module est compatible avec Magento 1.4.

Commentaires
2 Commentaires »
Catégories
Internet, Magento, PHP

Like


Les Factures dans Magento

Par Grégoire Genestier le 20 septembre 2010

Les obligations légales en France sont particulièrement complexes et obscures pour les ecommerçants. Ainsi, Magento, en natif, ne propose pas toutes les mentions légales françaises sur ses factures.

Après validation par les différents organismes d’Etat :

  • Juriste de la Chambre de Commerce et d’Industrie
  • Direction Générale de la Concurrence et de la Répression des Fraudes

Pour un administrateur de site qui possède une sarl et qui propose ses services à des particuliers et à des professionnels, le fonctionnement sera le suivant :
1) Particuliers:
=> Note obligatoire à faire figurer au dessus de 15€ : arrêté du 3 octobre 1933 N°83-50/A

2) Professionnels
=> Facturation obligatoire

Les Articles (ou extraits d’articles) à mentionner :

- Article L 441 -3
la sanction qui correspond à l’article si non mentionné L 441-4
- Article L441-6
- Article 289 grand II du code général des impôts
- Annexe de l’article 242 nonies Annexe grand II du code général des impôts

Voici ce que les différents articles traitent :
L’article L.441-3 du code de commerce pose en effet le principe que “tout achat de produits ou toute prestation de service pour une activité professionnelle doivent faire l’objet d’une facturation. Le vendeur est tenu de délivrer la facture dès la réalisation de la vente ou la prestation du service. L’acheteur doit la réclamer. La facture doit être rédigée en double exemplaire. Le vendeur et l’acheteur doivent en conserver chacun un exemplaire.”

S’agissant des mentions à faire figurer obligatoirement sur ces factures, ce même article précise que “la facture doit mentionner le nom des parties ainsi que leur adresse, la date de la vente ou de la prestation de service, la quantité, la dénomination précise, et le prix unitaire hors TVA des produits vendus et des services rendus ainsi que toute réduction de prix acquise à la date de la vente ou de la prestation de services et directement liée à cette opération de vente ou de prestation de services, à l’exclusion des escomptes non prévus sur la facture.
La facture mentionne également la date à laquelle le règlement doit intervenir. Elle précise les conditions d’escompte applicables en cas de paiement à une date antérieure à celle résultant de l’application des conditions générales de vente ainsi que le taux des pénalités exigibles le jour suivant la date de règlement inscrite sur la facture…
”

Telles sont les seules mentions, au sens du droit de la concurrence, à faire figurer sur vos documents.

L’article L.441-4 du même code dispose quant à lui que “toute infraction aux dispositions de l’article L.441-3 est punie d’une amende de 75.000 €. L’amende peut être portée à 50 % de la somme facturée ou de celle qui aurait dû être facturée.”

Ces dispositions relatives à la facturation sont complétées par celles figurant à l’article L.441-6 relatives aux modalités d’établissement et de communication des conditions générales de vente qui comprennent notamment les conditions de règlement.

Ce qui sur une facture peut se présenter de la façon suivante :

Facture-Magento-1

Facture-Magento-2

Commentaires
1 Commentaire »
Catégories
Internet, Magento, OsCommerce, Prestashop

Like


BYSOFT est une agence d'Ingénierie Internet Interactive. Nous accompagnons nos clients dans leurs projets E-commerce et Portails en gestion de contenu.
Nous offrons une couverture globale de services : Conseil, Agence Web, Ingénierie, Hébergement et Génération de trafic.
        

Technologies

  • Ajax
  • DotNetNuke
  • Drupal
  • eZ Publish
  • Flex
  • Internet
  • Joomla
  • Magento
  • MySQL
  • OsCommerce
  • PHP
  • Prestashop
  • Spip

Archives

  • 2012
    • janvier
    • février
  • 2011
    • janvier
    • février
    • mars
    • avril
    • juin
    • juillet
    • septembre
    • octobre
    • novembre
    • décembre
  • 2010
    • janvier
    • février
    • avril
    • mai
    • juin
    • juillet
    • août
    • septembre
    • octobre
    • novembre
    • décembre
  • 2009
    • janvier
    • février
    • mars
    • avril
    • mai
    • juin
    • juillet
    • août
    • octobre
    • novembre
    • décembre
  • 2008
    • février
    • mars
    • avril
    • mai
    • juin
    • juillet
    • août
    • septembre
    • octobre
    • novembre
    • décembre
  • 2007
    • janvier
    • février
    • mars
    • avril
    • mai
    • juin
    • juillet
    • août
    • septembre
    • octobre
    • novembre
    • décembre
  • 2006
    • janvier
    • février
    • mars
    • avril
    • mai
    • juin
    • juillet
    • août
    • septembre
    • octobre
    • décembre
  • 2005
    • octobre
    • novembre

Derniers tweets

  • 15-02-2012
    Nouvel article sur le blog des équipes: "la nouvelle version 1.12 de Magento Enterprise" http://t.co/J8JXCQM8
    ReplyRetweetFavorite

  • 14-02-2012
    Sur le blog des équipes : Brève Drupal 8 - HTML 5 http://t.co/EqlVMjQl
    ReplyRetweetFavorite

  • 09-02-2012
    Nouvel article sur le blog de nos équipes: "Mettez des accents dans votre nom de domaine.fr" http://t.co/WEHCUTE8
    ReplyRetweetFavorite

@BysoftFrance
Le site de l'agence | Nous contacter | rss RSS | Twitter Twitter