Download the PHP package divalto/customer without Composer
On this page you can find all versions of the php package divalto/customer. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download divalto/customer
More information about divalto/customer
Files in divalto/customer
Package customer
Short Description this module manage customer and order (Api,WS)
License OSL-3.0
Informations about the package customer
Divalto Customer
- Module for magento 2
- Manage customer WS communication
- Version 0.1.0
- @author SySwatis (Stéphane JIMENEZ)
- @copyright Copyright (c) 2020 SySwatis (http://www.syswatis.com)
Installation
composer require divalto/customer:dev-master
Description
Ce module assure le flux d'échange de données entre Magento 2 (CMS e-commerce) et Divalto (ERP solution).
Clients & commandes sont poussés simultanément vers l'ERP selon un montage spécifique et adapté pour le compte de Stokhall (ex Food Center).
Web Service Divalto (Serveur)
Gestions des données
Une clé API* sécurise la transmission des données :
- Gestion du client : ajout uniquement
- Gestion de la commande : ajout uniquement
Attention, l'essentiel de la gestion se fait sur l'ajout, pas de suppression, ni d'édition de données dans cette première version.
*Administrable dans la partie configuration du module Magento
WorkFlow
Résumés des étapes Client/Server
1) Session Client Magento :
Connexion ou création de compte
2) Retour réponses :
Api Key check
Messages d'erreurs
Status serveur
Code Sociéte
Autorisation de paiements
N° de commande
3) Mise à jour des données Magento :
Messages d'erreurs -> Session client (front) + Divalto Response (customer attr.)
Status serveur -> Divalto Response (customer attr)
Code Sociéte -> Groupe Client + Divalto Account Id (customer attr.)
Autorisation de paiements -> Divalto Outstanding Status (customer attr.)
N° de commande -> Historique de commentaires
La demande du CDC
Ce descriptif (rédigé en collaboration entre agences & client) est à titre explicatif de la gestion globale. Il peut permettre une meilleure compréhension des fonctionnalités développées sur ce module.
PRICE_APPLIED
L'intégration des clients par Divalto créera les groupes clients nécessaires aux group price. L'intégration des group Price se fera par Magento pour l'initialisation (import) puis par Divalto en webservices pour les mises à jour. Ainsi, un client créé dans Magento aura accès à ses group price, le cas échéant.
OUTSTANDING_STATUS
A la creation d'un client, Magento attend la valeur du outstanding_status Sans reponse de Divalto, la valeur par défaut est "CB uniquement" L'attribut customer outstanding_status conditionnera les méthodes de paiement proposées au client. La portée de cet attribut est dans le client (contact) et non dans le groupe (société).
ORDER_PLACED
Les webservices de commandes sont appelés à la mise à jour d'un statut (pending pour les bons de commande / processing pour CB). Toutes les informations de l'entête de commande (client, adresses, totaux ..etc) + les lignes de commandes (articles, quantité, prix ...etc) sont envoyés à Divalto La reponse attendue correspond au numero(s) de commande(s) Divalto (qui sera intégré sous forme de commentaires de commandes).
Les actions du modules
Création de Clients
Cf. Création de compte
Création de commandes
La création des commandes en appel serveur se fait uniquement sur le status magento "processing". Ce paramètre est figé en constante "DIVALTO_STATE_PROCESSING". La configuration du module permet l'appel du serveur selon mode de paiment ou le status d'une commande. Ceci permet de gérer l'évènement d'un changement de status. Dans le cas précis du Cdc, on autorisera le module "Purshase Order" (ou bon commande).
08/02/2021
Modification du module autorisé "Checkmo" au lieu de "Purshase Order".
Les attributs
Les attributs "customer" sont ajoutés à l'installation du module. Attention, un attribut supplémentaire nécessite un upgrade de version.
Clients
divalto_account_id,
divalto_outstanding_status
ape
siret
legal_form
company_name
divalto_response
divalto_extrafield_1
divalto_extrafield_2
Commandes
Aucuns
Le MVC
- Block
- Controller => Urls : admin, customer, validation
- etc => Config : menu, url, module, admin config, events
- Helper => Fonctionnalités principales
- i18n => Traductions (csv)
- Logger => Générateur des logs
- Model => Fonctionnalités spécifiques
- Observer => Fonctionnalités
- Setup => Installateur (attributs, upgrade)
- view => Frontend (user & admin) : pHtml, js, layout
Administration Magento
Le menu "Divalto"
Mode test
Ce mode permet de vérifier la communication avec l'url* "Api Url Test" du serveur distant et de valider les actions sur la base de données statiques avec les boutons "Ping","Créer un Client","Créer une Commande" (cf. configuration).
Ping (test)
Retourne le status 200 si succès. Une latence trop importante et/ou une erreur timeout (curl) est probablement due à un problème d'IP(s) non autorisées sur le serveur distant.
Créer un Client (test)
Retourne le code client (test) si succès avec "Numero_Dossier" & "Contact.Email".
Tableau source Json dataCustomerTest() : "Divalto/Customer/Helper/Data.php".
$postData = '{"Numero_Dossier":"'.$divaltoStoreId.'","Email_Client":"'.$emailTest.'","Raison_Sociale":"","Titre":"","Telephone":"","Numero_Siret":"","Code_APE":"","Numero_TVA":"FR999999999","Adresse_Facturation":{"Rue":"","Ville":"","Code_Postal":"","Pays":""},"Adresse_Livraison":{"Rue":"","Ville":"","Code_Postal":"","Pays":""},"Contact":{"Nom":"","Prenom":"","Telephone":"","Email":"'.$emailTest.'","Fonction":""}}';
*Administrable dans la partie configuration du module Magento
Créer une Commande (test)
Retourne le n° de commande Divalto si succès avec "Email_Client_Cde" & Code_Client_Divalto".
Tableau source Json dataOrderTest() : "Divalto/Customer/Helper/Data.php".
$postData = '{"Numero_Dossier":"'.$divaltoStoreId.'","Numero_Commande_Magento":"000001","Email_Client_Cde":"'.$emailTest.'","Code_Client_Divalto":"'.$codeTest.'","Code_Adresse_Livraison":"","Adresse_Livraison_Manuelle":{"Rue":"37 RUE MARYSE BASTIE","Ville":"LYON","Code_Postal":"69008","Pays":"FR"},"Code_Adresse_Facturation":"","Paiement":"processing","liste_detail_ligne":[{"SKU":"00001AIBN","Quantite_Commandee":"10","Prix_Unitaire_TTC":"","Prix_Unitaire_HT":"100","Montant_Ligne":"1000"}],"Client_Particulier":{"Email_Client":"","Raison_Sociale":"POLAT","Titre":"SAS","Telephone":"0610158941","Contact":{"Nom":"","Prenom":"","Telephone":"","Email":"'.$emailTest.'","Fonction":""}}}';
*Administrable dans la partie configuration du module Magento
Configuration
Raccourci vers la section "Divalo > Client" contenant tous les réglages du module (cf. "Configuration" ci-dessous).
*Administrable dans la partie configuration du module Magento
Compte client (utilisateur fontend)
Création de compte
L'accès à la création de compte est ouvert à tous les visiteurs. Son inscription est soumise à la validation du serveur Divalto. Si ce dernier n'a pas été reconnu (adresse email, tva intr.). Le compte est toutefois enregistré sur Magento mais l'utilisateur ne peut pas valider de commande (outstanding "0"). Son groupe client est créé si nécessaire mais il est assigné temporairement au "Géneral" (tarification de base). Il est cependant averti par un message d'alerte : "Compte client non validé, merci de nous contacter" et sur le tableau de bord de son compte client.
Siret
Désactivé sur le formulaire au profit du VAT. Le champ pays est obligatoire pour établir la validation européenne en lien avec la TVA (cf. VAT).
VAT
Validation effectuée à la création de compte par le format & à la validation du VAT (http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl).
*Administrable dans la partie configuration du module Magento
Ape
Validation effectuée à la création de compte par le format.
Gestion de compte
Gestion des adresses (Facturation & livraison)
Uniquement en lecture, l'utilisateur n'a pas accès à l'édition de ces données. Un message et un accès au formulaire de contact permet de demander une mise à jour des données. Pas d'interactions, ni d'interfacages de mises à jour Serveur/Client. Cf. Gestions des données.
Factures
Le fonctionnement de base de magento de cette partie a été supprimé. Elles sont donc déposées (en externe) et stockées au format PDF dans le répertoire identifié sur avec le code société Divalto. L'utilisateur a accès à lecture de la liste des fichiers. Leurs noms, hiérarchisations, limitations de dépots sont définis hors cadre module & CMS Magento.
Autorisation de paiements
L'utilisateur peut voir ses autorisations de paiement dans la section "En cours"
Commandes
Mapping
Extrait source code : "Divalto/Customer/Model/OrderMap.php"
$orderData = [
'Numero_Dossier'=>$divaltoStoreId,
'Numero_Commande_Magento'=>$order->getIncrementId(),
'Email_Client_Cde'=>$order->getCustomerEmail(),
'Code_Client_Divalto'=>$groupCode,
'Code_Adresse_Livraison'=>'',
'Adresse_Livraison_Manuelle'=>$shippingAddressData,
'Adresse_Facturation_Manuelle'=>$billingAddressData,
'Code_Adresse_Facturation'=>'',
'Paiement'=>'processing',
'liste_detail_ligne'=>$orderDataItems,
'MontantLivraison'=>$this->getShipingChargeOrder($order),
'Client_Particulier'=>array(
'Numero_TVA'=>$customerOrder->getTaxvat(),
'Code_Ape'=>$this->getCustomerAttributeValue($customerOrder,'ape'),
'Email_Client'=>'',
'Raison_Sociale'=>$this->getCustomerAttributeValue($customerOrder,'company_name'),
'Titre'=>$this->getCustomerAttributeValue($customerOrder,'legal_form'),
'Telephone'=>$shippingAddress->getTelephone(),
'Contact'=>array(
'Nom'=>$order->getCustomerLastname(),
'Prenom'=>$order->getCustomerFirstname(),
'Telephone'=>$billingAddress->getTelephone(),
'Email'=>$order->getCustomerEmail(),
'Fonction'=>$order->getCustomerPrefix()
)
)
];
Logs
-/var/log/divalto/customer/debug.log
-/var/log/debug.log
-/var/log/system.log
Configuration
Activer le module (Oui/Non)
Active ou désactive les évènements de l'observer en relation avec Divalto (ne désactive pas le mode test).
Api Url
Addresse Url du Serveur Divalto de production.
Api Url Test
Addresse Url du Serveur Divalto de pre-production.
SSL Peer’s Certificate
Sécurité d'échange de données (curl option). Mettre oui, si installé sur le serveur.
Pris en compte également dans le mode test.
Clé Api
Clé de validation d'échange avec Divato (serveur).
Dossier magasin
Format dig. 1, 2, 3, ... Identifiant du magasin associé au flux.
Validation commandes (Taxe)
Règle de validation des totaux des lignes de commandes selon la règle (HT/TTC).
Email Test
Email utilisé pour les modes test "Créer Client" & "Créer Commande"
Code Test
Code Société Divalto utilisé pour le mode test "Créer Commande".
Data Order Test
Laisser vide pour utiliser les données test du module ou personnaliser le tableau et ses données ici.
Data Customer Test
Laisser vide pour utiliser les données test du module ou personnaliser le tableau et ses données ici.
Statut de la commande
Status autorisés à l'appel du serveur Divalto (Créer Commande).
Mode de paiement
Paiements autorisés à l'appel du serveur Divalto (Créer Commande).
Forme juridique
Liste des formes juridiques entreprise (Titre - cf. Mapping).
Validation VAT
Activer la validation à distance du numéro de TVA intracommunautaire sur le formulaire de création de compte.
Contribution
Todo
Test création d'un nouveau client au passage de la commande
Action "Créer Client" au login, valider l'utilisation
Action "Créer Client" au passage de la commande, point de conception à revoir
Réponse Divalto du "Code Société" (ou Groupe Client magento)
a) Email inconnu et Société connue
b) Email inconnu et Société inconnue
Notes
29/09/2020
----------
les données "codes" sont absentes en réponse "Creer Commande".
Les emails "Contact.Email" & "Email_Client_Cde" sont indentiques à l'envoie de la commande.
Le retour réponse serait un "code contact" dans les cas a) ou b) ?
13/10/2020
----------
Le process de création client a été réactivé avec une nouvelle conception :
L'envoie côté client contient : "Contact.Email" & "Email_Client_Cde" + "Numero_TVA"
La réponse du serveur Divalto "liste_contact" contient :
- le status d'autorisation de paiement (outstanding) "autorisation_Paiement"
- les ids codes "code_Client" & code_Contact
03/11/2020
Mise à jour des datas orders avec les champs, adresse facturation, montant de la livraison
Data Order test :
{
"Numero_Dossier": "1",
"Numero_Commande_Magento": "000001",
"Email_Client_Cde": "[email protected]",
"Code_Client_Divalto": "C0000043",
"Code_Adresse_Livraison": "",
"Adresse_Livraison_Manuelle": {
"Rue": "37 RUE MARYSE BASTIE",
"Ville": "LYON",
"Code_Postal": "69008",
"Pays": "FR"
},
"Adresse_Facturation_Manuelle": {
"Rue": "1 IMPASSE SOUS LA GRIMAUDIERE",
"Ville": "DIEMOZ",
"Code_Postal": "38790",
"Pays": "FR"
},
"Code_Adresse_Facturation": "",
"Paiement": "processing",
"Montant_Livraison": "10",
"liste_detail_ligne": [{
"SKU": "00001AIBN",
"Quantite_Commandee": "10",
"Prix_Unitaire_TTC": "",
"Prix_Unitaire_HT": "100",
"Montant_Ligne": "1000"
}],
"Client_Particulier": {
"Email_Client": "",
"Raison_Sociale": "POLAT",
"Titre": "SAS",
"Telephone": "0610158941",
"Contact": {
"Nom": "",
"Prenom": "",
"Telephone": "",
"Email": "[email protected]",
"Fonction": ""
}
}
}
ou (MontantLivraison)
{
"Numero_Dossier": "1",
"Numero_Commande_Magento": "123456879",
"Email_Client_Cde": "[email protected]",
"Code_Client_Divalto": "C0000795",
"Code_Adresse_Livraison": "",
"Adresse_Livraison_Manuelle": {
"Rue": "37 RUE MARYSE BASTIE",
"Ville": "LYON",
"Code_Postal": "69008",
"Pays": "FR"
},
"Adresse_Facturation_Manuelle": {
"Rue": "1 IMPASSE SOUS LA GRIMAUDIERE",
"Ville": "DIEMOZ",
"Code_Postal": "38790",
"Pays": "FR"
},
"Code_Adresse_Facturation": "",
"Paiement": "Processing",
"MontantLivraison": "",
"liste_detail_ligne": [
{
"SKU": "00001AIBN",
"Quantite_Commandee": "10",
"Prix_Unitaire_TTC": "",
"Prix_Unitaire_HT": "100.000",
"Montant_Ligne": "1000"
}
],
"Client_Particulier": {
"Email_Client": "",
"Raison_Sociale": "",
"Titre": "",
"Telephone": "",
"Contact": {
"Nom": "",
"Prenom": "",
"Telephone": "",
"Email": "",
"Fonction": ""
}
}
}