test Module Commerce WPS -p5 Panier

ou Shopping cart

Source : https://drupalcommerce.org/user-guide/shopping-cart

1. le bouton Add-to-Cart et le formulaire du meme nom (qui affiche via ajax le bouton, image et prix dynamiquement)

-> cf https://drupalcommerce.org/user-guide/cart

On a vu que commerce utilise massivement Views et ajax. En configurant le champ Ref Produit (cf p3 créer Product Display et son champ) la case "Render fields from the referenced products when viewing this entity" doit etre cochée.
Rappel "modifier le formatter" via "Gérer l'affichage" de Store / Product / Product Types (admin/commerce/products/types/product/display/node_teaser) (cf p1). Chaque type d'entité qui a un champ de référence de produit aura tous les domaines de références de produits dispo, afin de les réorganiser (par rapport à d'autres domaines de l'entité) ou les cacher.

ajout de champ perso dans l'entité ProduitChamps d'attibuts, ex de form "ajout panier" ou "si l'on change un attribut, alors le prix et l'image doivent suivre" (injection via ajax). Pour avoir par ex une liste déroulante avec des prix, ajouter un champ sur l'entité produit, et non dans le type de contenu.

Gérer l'affichage du type de contenu Product display a un widget "Add to Cart form" (Administration » Structure » Types de contenu » Product Display ou admin/structure/types/manage/product_display/display).
Le nœud de présentation de produit est configuré pour agréger les différents champs d'attributs dans le form Add-to-cart

Il est aussi possible de personnaliser un attribut du produit pour chaque commande.
Ex: le client rentre le texte à ajouter sur le t-shirt.

2. Paniers anonymes et users logués

https://drupalcommerce.org/user-guide/anonymous-carts-and-logged-users

Conversion de Panier
Un surfeur, anonyme, clique sur Ajouter au panier. Un ordre de commande est créé pour la session anonyme de ce client.
Si ce surfeur se logue sur le site (et qu'il a un panier), alors cet ordre est déplacé pour être une partie de la session authentifiée, c'est une conversion de panier.

Cacher le panier
Pour cacher le caddie aux surfeurs anonymes, le plus simple est de configurer le bloc, mais on peux aussi utiliser Views (avec la perm sur master Access: None).
Cacher un panier vide (facon kickstart)

Expiration de chariot
De vieux paniers sont à nettoyer par les admin.
Ex scénar: 1. un user logué crée un panier, mais se déconnecte (sans commander). 2. un user anonyme recrée le panier quelques jours plus tard, et se connecte.
3. Après paiement, l'utilisateur est présenté avec le dernier panier (créé en dernier) qui était celui qu'ils ont créé à l'étape 1. 4. Le pire des scénario: l'utilisateur, pensant que leur achat n'est pas arrivé à terme et recommence tout le processus.
Voir à ce sujet le module https://www.drupal.org/project/commerce_cart_expiration

 

6. Panier (shopping carts), commande (order) et items ligne

Les 3 sont proches. Panier: liste des produits qu'un client veux acheter à la caisse. Commande : liste des produits avec un statut (ici, panier = achat avec statut "panier").
Items de ligne: dans une commande, chaque produit est référencé par un dossier, qui comporte quantité et la référence de la commande -> c'est cela, les éléments de ligne. Il y a d'autres types de items lignes (comme les taxes ou réductions), mais ces autres types de lignes n'ont pas autant d'importance pour un panier. Car le gros du travail du module Commerce consiste à modifier ce statut.

Le panier de plus près : un achat de statut particulierListe des statuts

Ex, dans admin/commerce/orders/2/edit en bas:

Dès qu'un produit est ajouté au panier, une ordre de commande est crée et est associé avec le client, soit par ID user (si user logué), soit s'il s'agit d'un surfeur anomyme via un tableau dans la session (commerce_cart_orders).

Noter le statut qui y apparait :
La liste des commande affiche aussi les statuts

Chaque changement est enregistré comme une révision.
Un client peux avoir plusieurs paniers ouvert, si la conf par défaut est de montrer le plus récent (hook_commerce_cart_order_id () peut être utilisé pour modifier le chargement du panier).

Le panier est facultatif => la caisse est implémentée dans un module distinct.

Modification de panier : utilisation de règles

Par exemple, disons que vous ne pouvez acheter le produit A que si B n'est pas  dans le panier.

Mise en forme du bloc Panier

Avec Views: https://drupalcommerce.org/user-guide/modifying-shopping-cart-using-views

Travailler avec les évènements et les règles

Le module Panier définit des évènements et hooks qui permettent d'agir: avant l'ajout d'un produit dans le panier, après l'avoir ajouté, après l'avoir éliminé du panier.

Pour l'ajout "avant et après", les évènements qui sont déclenchés recoivent un paramètre d'item de ligne (contient gamme produit du produit ajouté ou rétiré).

 


sur le web

sur les statuts : https://www.paypal-community.com/t5/Statut-des-paiements-PayPal/bd-p/PAYST