Maxima (interne)
Description
Site e-commerce proposant la vente au détails de piÚces pour engins de travaux.
Le site est connecté via un pont à l'ERP de Maxima (EBP)
L'objectif est que Maxima gére les produits, les commandes, les clients depuis EBP. Le pont se charge de faire la synchronisation des ces trois éléments.
Le site est destiné aussi bien au particuliers/professionnels qu'aux revendeurs. Ces derniers peuvent voir la quantité en stock des produits directement depuis le site internet.
Pour maxima, l'achat par un client est considéré comme un devis tant que celui-ci n'a pas été payé. Ensuite cet achat est considéré comme une commande.
Intervenants / RĂŽles sur le projet
Maxima
- April: Directrice
- Alexia: Responsable éditorial, visuel, chargé de communication
MSC
Société développant le pont permettant les échanges de données entre EBP et WooCommerce
- Elise: Responsable du pont
Documents de référence
- RĂšgles fonctionnelles du projet: D:\Cloud\Nextcloud\Cogitime Team\_PROJETS\202101-Maxima\PARTAGE Maxima\RĂšgles.ods
- Fichier de mapping des données entre EBP <=> WooCommerce, initié et maintenu par MSC: D:\Cloud\Nextcloud\Cogitime Team\_PROJETS\202101-Maxima\PARTAGE Maxima\Mapping de données.ods
- Checklist / historiques des actions à réaliser au niveau des images Docker: D:\Cloud\Nextcloud\Cogitime Team\_PROJETS\202101-Maxima\Suivi Projet\Maxima_checklist_docker_images.ods
- Checklist pour la livraison en production du projet: D:\Cloud\Nextcloud\Cogitime Team\_PROJETS\202101-Maxima\Suivi Projet\Maxima_checklist_livraison_en_prod.ods
Schéma des échanges entre EBP et WooCommerce pour les devis / commandes
Particularités du projet
AccĂšs client Maxima
L'objectif est que Maxima intervienne le moins possible dans le back-office du site internet. Le maximum d'interactions avec les produits, les clients, les commandes, doit se faire depuis l'ERP pour ensuite ĂȘtre synchronisĂ© avec le site via le pont.
Il reste cependant des cas particuliers oĂč il est nĂ©cessaire d'intervenir pour Maxima sur le back-office:
- Cas d'une nouvelle catégorie de produit: Maxima doit alors la valider manuellement afin que les produits de cette catégorie soient visible sur le site internet (Voir la section Produits / Catégories ci-dessous)
- Cas de documents Ă mettre Ă jour dans l'espace revendeur : Maxima doit alors ajouter les nouveaux documents en passant par le menu "WP File Download".
AccĂšs admin Cogitime
Cogitime pourra intervenir notamment dans deux cas dans le back-office du site internet via le menu "Maxima Import":
- Exporter les catégories de produits préparées sur la staging et les ré-importer ensuite sur la production (Voir le fichier "maxima checklist docker image" dans le suivi projet sur nextcloud).
- Lancer l'import d'un fichier CSV pour le fournisseur CAB Glazing (Fichier CSV à déposer dans le dossier /wp-content/sarlmaxima_import/csv/cab-glazing).
Pages vitrines
Tous les produits de Maxima ne sont pas envoyés sur le site internet. Pour palier à cela, des pages vitrines ont été créées pour permettre aux visiteurs d'avoir connaissance de ces produits et de faire une demande de devis via un formulaire dédié par catégorie de produits.
Les pages vitrines doivent ĂȘtre des "enfants" de la page "Vitrines".
Maxima a emis le souhait que ces pages apparaissent dans le menu comme une catégorie produit classique. Pour cela, un systÚme a été mis en place de positionnement imposant la saisie de 2 champs dans les pages vitrines et dans les catégories produits (Un code EBP et un champs Order) => Voir la rÚgle R008
/!\ Attention: en BO, il faut cliquer sur "update" de la page pour faire apparaßtre les 2 champs custom en cas de création de la page "from scratch"
Brochures
Les brochures permettent de mettre à disposition des clients connectés des fichiers PDF présentant les produits d'une marque.
Les brochures sont accessibles depuis "Mon compte" et la section "Brochures"
Afin que Maxima puisse gérer ces brochures, celles-ci sont administrables depuis le back-office.
Pour ajouter une brochure, créer une page enfant de la page "Brochures" et y insérer le shortcode du flipbook crée dans "Real 3D Flipbook"
Catalogue
Le catalogue est un fichier PDF permettant de mettre en avant les produits phares de Maxima.
Celui-ci est géré par Maxima, et le plugin "Real 3D Flipbook" a été choisi car il permet de cliquer sur les liens se trouvant dans un PDF (Souhait de Maxima à termes de mettre des liens vers des produits)
Méthodes de paiements
Les différentes méthodes de paiements proposées par le site sont:
- Virement bancaire
- Paiements par chĂšque
- Paiements par CB (Module Systempay)
- Paiement en compte (Module Cogitime)
- Paiement à la livraison => Modifié pour pouvoir bloquer facilement le paiement d'une commande
Maxima peut affecter une méthode de paiement favorite à un client. Cela permet de gérer différentes situations :
- Méthode de paiement favorite = Paiement en compte. Le client a alors uniquement cette méthode de paiement disponible sur le site, et il n'effectue pas de paiement réel sur le site (Prélevé plus tard par Maxima directement). Voir rÚgle R007.
- Méthode de paiement favorite = Paiement à la livraison. Le client est bloqué et ne peut pas valider la commande ni la payer. Il est invité par un message à contacter Maxima.
- Dans les autres cas, le client peut choisir entre payer par CB (Le devis est alors validé et se transforme en une commande), par chÚque ou par virement bancaire (Dans les deux derniers cas, le devis sera validé manuellement par Maxima depuis EBP)
Clients
Les clients sont créés soit via le site internet (InitiĂ© par le client lui-mĂȘme), soit depuis l'ERP via le pont.
Champs custom
- Siret, pas d'effet sur le site internet.
- Groupe, par défaut = "Professionnels / Particuliers" si créé depuis le site internet (Pour rappel, les groupes permettent notamment de proposer des réductions différentes selon l'appartenance à un groupe). Si le groupe est "Négoce Revendeur", le client peut voir la quantité en stock des produits.
- ERP Code, pas d'effet sur le site internet.
- Méthode de paiement favorite (Voir section "Méthodes de paiements" ci-dessus)
- Téléphone portable (Associée à l'adresse de livraison), pas d'effet sur le site internet.
Témoignages
- Il est possible de spécifier des témoignages clients via le BO : "Testimonials"
- Afin d'avoir un affichage avec des étoiles en front, il faut préciser une note sur 5 au format "x/x". Par exemple:
- Author: John Doe / Ma société
- Texte: lorem lorem lorem⊠4/5
Produits
Catégories
Les catégories de produits sont découpées en 4 niveaux.
- Catégories principales
- Familles
- Sous-familles
- Groupes
Les catégories principales n'existent pas dans l'ERP et sont définies en "durs" sur le site internet. Ces catégories sont liées au thÚme enfant de Wordpress, et ajouter une telle catégorie implique donc de la préparer via des modifications dans le thÚme (Ajout d'images, modifications dans le fichier functions.php...)
Lors de la synchronisation via le pont de nouvelles familles, celles-ci sont associées automatiquement à une catégorie "pendingcategory" qui met "en attente de validation" la catégorie. En effet, les produits sont alors masqués tant que leur famille est enfant de la catégorie "pendingcategory". Maxima doit alors vérifier la catégorie, l'éditer ensuite pour retirer le parent "pendingcategory" et mettre une catégorie principale en tant que nouveau parent. Voir rÚgle R005
- Positionner les catégories dans le menu : Chaque catégorie doit posséder un code EBP et un Order afin qu'elle soit affichée et positionnée correctement dans le menu. Voir la rÚgle R008. Voir le positionnement voulu par Maxima : https://www.gloomaps.com/zoE9Fz6WCR
- IntĂ©grer les banniĂšres des catĂ©gories (entĂȘte de page), voir le dossier "D:\Cloud\Nextcloud\Cogitime Team\_PROJETS\202101-Maxima\PARTAGE Maxima\DOCUMENTS FINAUX - WEBSITE MAXIMA\BanniĂšres"
Exemple de contenu de description dâune catĂ©gorie de produit avec citation (Commercial) et photos
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus a justo quis magna faucibus hendrerit. Phasellus orci lorem, finibus vitae leo tempor, dictum posuere urna. Fusce tempus neque vitae consectetur semper. Morbi imperdiet venenatis neque, in pulvinar massa consequat et. Phasellus efficitur fermentum lectus, non lobortis dui condimentum ac. Duis eget enim quis est venenatis rhoncus. Aliquam in lobortis orci, nec feugiat dui. <blockquote>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus a justo quis magna faucibus hendrerit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus a justo quis magna faucibus hendrerit.<img class="alignnone size-medium wp-image-177" src="https://www.sarlmaxima.local/wp-content/uploads/2021/05/commercial1-166x300.png" alt="" width="166" height="300" /></blockquote>
Recherche par filtres
Les produits peuvent ĂȘtre filtrĂ©s par mots-clĂ©s, par catĂ©gories (les 4 niveaux) ou par marques / modĂšles.
Champs custom
- Brands, permet d'associer un produit à la marque et un modÚle d'un véhicule, pour lequel le produit est destiné. (Le modÚle est un enfant de la marque)
- => à l'affichage en front, il est possible d'avoir une pastille => renseigner le champ "Description", par exemple: Exclusivité Maxima
- Inventaire / Référence fournisseur, pas d'effet sur le site internet
- Inventaire / Nom fournisseur, pas d'effet sur le site internet
Envoi des fiches produits par FTP
Sur une fiche produit, il est possible de proposer au visiteur un lien vers un fichier PDF détaillant les caractÚristiques du produit ou de la machine pour laquelle il est destiné.
Afin de synchroniser les fiches techniques affectées à un produit ou une catégorie de produits, un espace FTP a été mis en place pour déposer les fichiers (Voir infotech pour les accÚs au FTP). Maxima peut alors déposer ces fiches produits en respectant la rÚgle R003. Une tùche CRON va ensuite lire ces fichiers et les associer aux produits correspondants.
Envoi des images produits par FTP
De mĂȘme que pour les fiches produits, les images d'un produit sont envoyĂ©s via FTP.
Afin de synchroniser les images affectées à un produit ou une catégorie de produits, un espace FTP a été mis en place pour déposer les fichiers (Voir infotech pour les accÚs au FTP). Maxima peut alors déposer ces images en respectant la rÚgle R002. Une tùche CRON va ensuite lire ces fichiers et les associer aux produits correspondants.
Cas particuliers
- Les devis avec produits inexistants dans WooCommerce sont géré par le pont (Création de produit temporaire le temps de générer la commande)
- Les devis avec produits sans stock sont modifié par le pont en cochant "Gérer le stock" et passe le champs "Autoriser les commandes en réapprovisionnements" à "Autoriser"
- Les produits avec un prix Ă zĂ©ro sont affichĂ©s mais ne peuvent ĂȘtre commandĂ©s
Commandes
Les commandes sont intégralement gérées depuis l'ERP et synchronisées via le pont. Il est, dans le fonctionnement normal, aucunement nécessaire de modifier une donnée dans une commande en passant par le back-office du site internet. Voir le schéma des échanges entre EBP et WooCommerce au début de cette page.
Deux cas peuvent se présenter: Soit la commande est créée par le visiteur du site, il n'est alors pas nécessaire de lui notifier cette commande. Soit le devis ou la commande est créé via l'ERP, il est alors nécessaire de prévenir le client par mail.
Notifications par emails
Un plugin (sarlmaxima_customemails) a été développé pour ajouter de nouvelles notifications par emails (éditables dans WooCommerce) au client selon la situation:
- Nouveau devis: Notification au client qu'un nouveau devis est disponible.
- Nouvelle commande: Notification au client qu'une nouvelle commande est disponible.
- Numéro de suivi: Envoi au client du numéro et du lien de suivi de son expédition.
- Nouvelle facture ou avoir: Notification au client qu'une nouvelle facture ou un nouvel avoir est disponible.
Méthodes d'expéditions
Les produits sont expédiés en France métropolitaine ou en Corse. Selon la destination, les produits et selon leurs poids, la méthode d'expédition pourra changer et son coût de livraison également. Il y a actuellement 3 modes d'expéditions principaux:
- Expédition Maxima
- Expédition VMT
- Franco de port
Les deux premiers modes, en fonction du poids du produit commandé, sont eux aussi chacun découpés en plusieurs méthodes d'expéditions : Lettre suivi, DPD, Schenker messagerie, Schenker pallet, VMT TNT, Maxima Schenker, VMT Schenker.
Les modes d'expéditions sont liés aux produits via le champs "Classe d'expédition" du produit.
=> Info complémentaire du 21/03/2024
Voici quelques explications sur la configuration actuelle des livraisons sur le site (WooCommerce) :
Il faut bien distinguer trois éléments, les Classes d'expédition, les Zones d'expédition et les Méthodes de livraison :
Vous avec 4 Classes d'expédition :
- ExpĂ©dition CAB (cette classe ne semble pas ĂȘtre utilisĂ©e)
- Expédition Maxima
- Expédition VMT
- Franco de port (cette classe permet d'afficher l'information de franco de port sur le produit)
Sur un produit, il est possible de sélectionner une de ces classes.
Par défaut, aucune classe n'est sélectionnée, c'est d'ailleurs la configuration actuelle de tous vos produits (MSC ne définit pas cette option pour le moment via leur pont).
Ensuite, vous avez 2 Zones d'expédition :
- France Métropolitaine
- Corse
Dans chaque zone on peut paramétrer des pays/régions, on retrouve ces valeurs dans la saisie de l'adresse du client, ça permet de définir des méthodes de livraison différentes et/ou des tarifs différents par zone.
Tous les pays/régions non paramétrés dans une zone ne pourront donc pas passer de commande sur le site.
Dans chaque zone, vous avez 3 Méthodes de livraison :
- Expédition Maxima
- Expédition VMT
- Franco de port
Chaque méthode de livraison possÚde ses propres tarifs et rÚgles.
Actuellement, chaque méthode de livraison est restreinte aux produits avec la classe d'expédition correspondante.
Donc, puisque vos produits n'ont pas de classe d'expédition et que les méthodes de livraison sont restreintes aux classes d'expéditions qui leur correspondent, aucune méthode de livraison n'est disponible pour les produits dans leur configuration actuelle (sans classe d'expédition).
En l'état actuel, il est donc nécessaire de définir la classe d'expédition de chaque produit afin d'avoir accÚs aux méthodes de livraison adaptées.
Cette configuration devrait ĂȘtre gĂ©rĂ©e par le pont qui synchronise les produits.
Il est aussi pertinent de vérifier l'ensemble des rÚgles de livraison/expédition afin de s'assurer que la configuration actuelle répond bien à votre fonctionnement.
Champs custom
- Type commande: Champs texte libre utilisé par le pont pour définir si la commande WooCommerce est en réalité un "devis" ou une "commande"
- Référence Maxima: Champs texte libre utilisé par le pont pour définir notamment le numéro de devis. Cette information est visible par le client dans le listing des devis/commandes.
- Téléphone portable: Champs permettant au client de renseigner un numéro de téléphone pour la livraison des produits.
Envoi des factures / avoirs par FTP
Lorsque la commande est terminée, ou lorsqu'il y a besoin d'envoyer un avoir au client, Maxima peut déposer des fichiers PDF dans un espace FTP reservé à cet effet. Une tùche CRON va ensuite récupérer ce fichier et l'associer à la bonne commande (Voir la rÚgle R004)
En parallÚre, une notification par email est envoyé au client pour le prévenir de l'arrivée de ce document (Voir le chapitre ci-dessus sur les notifications emails)
Les avoirs sont distingués des factures par rapport à leur identifiant qui commence par "AV".
Scripts customs
Afin d'aider MSC à mettre en place le pont et tenir compte des spécificités du projet, plusieurs scripts d'exemples leur ont été fournis pour illustrer les différents cas ou lister les champs spécifiques au projet.
Les scripts se trouvent dans le dossier D:\Cloud\Nextcloud\Cogitime Team\_PROJETS\202101-Maxima\PARTAGE Maxima\Scripts PHP :
- acces_produit_commentaire.php : Permet de rĂ©cupĂ©rer une instance du produit "commentaires" (Produit utilisĂ© en interne par Maxima et qui ne doit jamais ĂȘtre affichĂ© sur le site internet)
- add_tracking_number_to_order.php : Permet d'ajouter un numéro et un lien de suivi à une commande. Le client est notifié par email grùce à l'attribut "send" = true
- associate_user_to_group.php : Permet d'associer un utilisateur à un groupe donné
- change_shipping_class_of_one_product.php : Exemples pour récupérer la liste des classes d'expéditions, récupérer la classe d'expédition d'un produit ou modifier la classe d'expédtion d'un produit
- create_discounts.php : Exemple complet pour créer une liste de produits en fonction de catégories données et d'appliquer une réduction sur ces catégories pour des clients appartenant à un groupe donné.
- creation_marque_modele.php : Exemple complet de création d'une marque, avec la possibilité de la désactiver, de la mettre en avant sur la page "Nos marques exclusives", de lui affecter une image. Création également de modÚle, associé à une marque, avec possibilité de désactiver le modÚle. Et exemple d'association de "Marque / modÚle" à un produit.
- customer_erp_code.php : Exemples pour récupérer le code ERP d'un client, retrouver un client via son code ERP et mettre à jour le code ERP d'un client
- customer_favorite_payment_method.php : Exemples pour récupérer ou mettre à jour la méthode de paiement favorite d'un client
- customer_shipping_phone.php : Exemples pour récupérer, mettre à jour le téléphone portable de livraison d'un client, ou retrouver un client via ce numéro de téléphone
- customer_siret.php : Exemples pour récuéprer ou mettre à jour le siret d'un client
- delete_all_users.php : Exemples pour supprimer tous les comptes exceptés les administrateurs
- ebp_code_categories.php : Exemples pour mettre à jour le code EBP d'une catégorie, récupérer le code EBP d'une catégorie ou trouver une catégorie via son code EBP
- get_chosen_payment_method.php : Récupérer la méthode de paiement choisie pour une commande.
- notification_devis.php : Exemple pour ajouter une méta à la commande qui déclenchera la notification au client de l'arrivé d'un devis, d'une commande ou d'une facture
- numero_devis.php : Exemple pour mettre à jour le numéro de devis (Référence Maxima) dans une commande ou pour récupérer ce numéro depuis une commande.
- order_force_price.php : Exemple pour créer une commande en modifiant le prix des produits uniquement pour cette commande.
- order_shipping_phone.php : Exemple pour récupérer le téléphone de livraison d'une commande
- order_with_non_existent_product.php : Exemple pour créer une commande avec un produit fictif
- reappro_stock_product.php : Méthode pour autoriser les commandes hors stock pour un produit
- set_get_order_number.php : Exemple pour ajouter un n° de commande dans une commande et pour le récupérer
- supplier_data_in_product_.php : Exemple pour mettre à jour la référence fournisseur et le nom du fournisseur d'un produit et exemple pour récupérer ces informations
- type_commande_devis.php : Exemple pour affecter un type à une commande (Devis ou commande) et exemple pour récupérer cette information
Affichage du stock dans une fiche produit
ConcrĂštement, voici les diffĂ©rentes situations possibles que lâon peut avoir pour les articles sur EBP, avec les diffĂ©rents statuts qui doivent apparaitre sur le site web :
- En stock + autoriser les commandes en rĂ©approâ + tarifs sur demandeâ = Ë En stock mais bouton « Demander un devis »
- En stock + autoriser les commandes en rĂ©approâ + prix affichĂ© = Ë En stock et bouton « Ajouter au panier »
- En stock + autoriser les commandes en rĂ©approâŹ(pas cochĂ©) + prix affichĂ© = Ë En stock et bouton « Ajouter au panier »
- En stock + autoriser les commandes en rĂ©approâŹ(pas cochĂ©) + tarif sur demandeâ = Ë En stock mais bouton « Demander un devis »
- Pas de stock + autoriser les commandes en rĂ©approâ + tarifs sur demandeâ = Ë DĂ©part usine mais bouton « Demander un devis »
- Pas de stock + autoriser les commandes en rĂ©approâ + prix affichĂ© = Ë DĂ©part usine et bouton « Ajouter au panier »
- Pas de stock + autoriser les commandes en rĂ©approâŹ(pas cochĂ©) + prix affichĂ© = Ë Contactez-nous et bouton « Ajouter au panier »
- Pas de stock + autoriser les commandes en rĂ©approâŹ(pas cochĂ©) + tarif sur demandeâ = Ë Contactez-nous et bouton « Demander un devis »