divalto / customer
本模块管理客户和订单(API,WS)
This package is auto-updated.
Last update: 2024-09-25 04:05:05 UTC
README
- magento 2 模块
- 管理客户 WS 通信
- 版本 0.1.0
- @作者 SySwatis (Stéphane JIMENEZ)
- @版权所有 Copyright (c) 2020 SySwatis (http://www.syswatis.com)
安装
composer require divalto/customer:dev-master
描述
本模块确保 Magento 2 (CMS 电子商务) 和 Divalto (ERP 解决方案) 之间的数据交换流程。
客户和订单会同时推送到 ERP,根据为 Stokhall(前身为 Food Center)量身定制的特定和适应的方案。
Divalto Web Service(服务器)
数据处理
一个 API 密钥 安全地传输数据
- 客户管理:仅 添加
- 订单管理:仅 添加
注意,大部分管理操作在此第一个版本中仅涉及添加,没有 删除或编辑 数据。
*在 Magento 模块配置部分可管理
工作流程
客户端/服务器步骤摘要
1) Magento 客户端会话
连接或创建账户
2) 返回响应
API 密钥检查
错误消息
服务器状态
公司代码
支付授权
订单号
3) 更新 Magento 数据
错误消息 -> 客户端会话(前端)+ Divalto 响应(客户属性)
服务器状态 -> Divalto 响应(客户属性)
公司代码 -> 客户组 + Divalto 账户 ID(客户属性)
支付授权 -> Divalto 应收账款状态(客户属性)
订单号 -> 评论历史
CDC 请求
此描述(由代理机构和客户合作编写)仅用于说明整体管理。它可以帮助更好地理解在此模块上开发的特性。
PRICE_APPLIED
Divalto 创建客户将创建必要的客户组,以便进行组价格集成。组价格将通过 Magento 进行初始化(导入),然后通过 Divalto 的 Web Service 进行更新。因此,在 Magento 中创建的客户将能够访问其组价格(如果适用)。
OUTSTANDING_STATUS
创建客户时,Magento 等待 outstanding_status 的值。如果没有来自 Divalto 的响应,则默认值为 "仅信用卡"。客户 outstanding_status 属性将决定向客户提供的支付方式。此属性的适用范围在客户(联系人)而非客户组(公司)。
ORDER_PLACED
订单 Web Service 在更新状态(待处理用于订单,处理用于信用卡)时被调用。所有订单头信息(客户,地址,总计等)以及订单行(文章,数量,价格等)都发送到 Divalto。期望的响应是 Divalto 订单号(将作为订单评论整合)。
模块操作
创建客户
见创建账户
创建订单
通过服务器调用创建订单仅发生在 Magento 状态 "processing" 上。此参数被设置为常量 "DIVALTO_STATE_PROCESSING"。模块配置允许根据支付方式或订单状态调用服务器。这允许处理状态更改事件。对于 Cdc 的情况,将允许 "Purshase Order" 模块(或订单)。
08/02/2021
将模块授权 "Checkmo" 替换为 "Purshase Order"。
属性
在模块安装中添加"customer"属性。注意,添加额外的属性需要版本升级。
客户
divalto_account_id,
divalto_outstanding_status
ape
siret
legal_form
company_name
divalto_response
divalto_extrafield_1
divalto_extrafield_2
订单
无
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
Magento管理
"Divalto"菜单
测试模式
此模式允许检查与远程服务器url* "Api Url Test"的通信,并基于静态数据库使用"Ping"、"创建客户"、"创建订单"按钮验证操作(参见配置)。
Ping(测试)
成功时返回状态200。如果延迟过大和/或超时错误(curl),可能是远程服务器上未经授权的IP(s)的问题。
创建客户(测试)
成功时返回测试客户代码,包含"Numero_Dossier"* & "Contact.Email"*。
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":""}}';
*在 Magento 模块配置部分可管理
创建订单(测试)
成功时返回Divalto订单号,包含"Email_Client_Cde"* & Code_Client_Divalto"*。
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":""}}}';
*在 Magento 模块配置部分可管理
配置
到"Divalo > 客户"部分的快捷方式,包含所有模块设置(参见下面的"配置")。
*在 Magento 模块配置部分可管理
客户账户(前端用户)
创建账户
创建账户的访问对所有访客开放。其注册需经Divalto服务器验证。如果未识别(电子邮件地址、增值税号),则账户仍记录在Magento中,但用户无法验证订单(未结清"0")。如果需要,将创建客户组,但临时分配给"通用"(基础计费)。然而,将通过警报消息警告:"客户账户未验证,请与我们联系"以及在其客户账户仪表板上。
法国社会安全号码
在表格中禁用,以支持增值税。国家字段是必须的,以建立与增值税相关联的欧洲验证(参见增值税)。
增值税
在创建账户时通过格式和增值税验证进行验证(http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl)。
*在 Magento 模块配置部分可管理
APE代码
在创建账户时通过格式进行验证。
账户管理
地址管理(发票 & 发货)
仅可读,用户无法编辑这些数据。一条消息和访问联系表格单允许请求更新数据。没有服务器/客户端更新交互或接口。参见数据管理。
发票
已从magento的基本功能中删除此部分。因此,它们(在外部)以PDF格式存储在标识的目录中,目录使用Divalto公司代码识别。用户可以查看文件列表。它们的名称、分层、存储限制由模块和magento CMS框架外定义。
支付授权
用户可以在"进行中"部分查看其支付授权
订单
映射
源代码摘录:"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()
)
)
];
日志
-/var/log/divalto/customer/debug.log
-/var/log/debug.log
-/var/log/system.log
配置
启用模块(是/否)
激活或禁用与Divalto相关的观察者事件(不禁用测试模式)。
API URL
生产服务器的Divalto URL地址。
测试API URL
预生产服务器的Divalto URL地址。
SSL Peer证书
数据交换安全性(curl选项)。如果安装在服务器上,则设置为“是”。
在测试模式下也适用。
API密钥
与Divalto服务器交换验证的密钥。
商店文件夹
数字格式1,2,3,... 与流关联的商店标识符。
订单验证(税)
根据规则验证订单行总额(不含税/含税)。
测试电子邮件
用于测试模式"创建客户"和"创建订单"的电子邮件。
测试代码
用于测试模式"创建订单"的Divalto公司代码。
数据顺序测试
留空以使用模块的测试数据或在此处自定义表格及其数据。
客户数据测试
留空以使用模块的测试数据或在此处自定义表格及其数据。
订单状态
在调用Divalto服务器(创建订单)时允许的状态
支付方式
在调用Divalto服务器(创建订单)时允许的支付方式
法律形式
企业法律形式列表(标题 - 参见映射)
增值税验证
在创建账户表单上激活对欧盟内部增值税号的远程验证。
贡献
待办事项
在订单过程中测试创建新客户
Action "Créer Client" au login, valider l'utilisation
Action "Créer Client" au passage de la commande, point de conception à revoir
Divalto对“公司代码”(或magento客户组)的响应
a) Email inconnu et Société connue
b) Email inconnu et Société inconnue
备注
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": "muratk21@hotmail.com",
"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": "muratk21@hotmail.com",
"Fonction": ""
}
}
}
ou (MontantLivraison)
{
"Numero_Dossier": "1",
"Numero_Commande_Magento": "123456879",
"Email_Client_Cde": "zeggriim@sgagence.com",
"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": ""
}
}
}