divalto/customer

本模块管理客户和订单(API,WS)

安装: 28

依赖项: 0

建议者: 0

安全性: 0

星星: 0

关注者: 3

分支: 0

开放问题: 0

类型:magento2-module

1.0.0 2021-02-08 09:51 UTC

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 密钥 安全地传输数据

  1. 客户管理:仅 添加
  2. 订单管理:仅 添加

注意,大部分管理操作在此第一个版本中仅涉及添加,没有 删除或编辑 数据。

*在 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": ""
    }
  }
}