零售EDI:HornBach EDI 项目案例
HornBach 是一家总部位于德国的家居和建筑材料零售商,成立于1968年。它以大型仓储式商店而闻名,提供广泛的产品,包括建筑材料、园艺、家居装饰和工具等。
近期我们帮助HornBach的供应商W公司成功实现了与HornBach的EDI直连,除了满足基本的对接需求之外,为了处理庞大的订单量,降低业务人员的工作量,提高其业务流程的自动化水平,W公司提出希望实现EDI系统与其Salesforce系统之间的集成。基于知行之桥EDI系统的EDI解决方案,支持通过中间数据库、Webservice、API等方式实现与企业内部业务系统的集成。接下来让我们一起看看W公司使用知行之桥EDI系统对接HornBach的项目中都有哪些注意事项吧!
梳理需求文档
1.Technical_data_Sheet_HORNBACH
HornBach会提供一个Technical_data_Sheet_HORNBACH文档给供应商,供应商需要填写这个文档,提供公司明细、EDI联系人信息、EDI服务提供商信息、EDI ID等,并通过邮件回复HornBach。
HornBach也向供应商说明了EDI项目中需要传输的单据类型:ORDERS采购订单(D96A)、DESADV发货通知(D96A)以及INVOIC发票(D01B或者D96A)。提供了测试和生产系统的AS2连接信息以及证书,供应商需要在指定位置填写自己的AS2测试和生产环境的AS2连接信息。
供应商还可以在这个文档中找到HornBach EDI团队的联系信息以及HornBach的GLN、地址以及VAT-ID信息。
2.HB-EDI-NVE-Guideline
HornBach提供的EDI Guideline主要内容包括:EDI连接流程,订单、发货通知以及发票的基本介绍、装运信息、运输信息、发货通知报文的结构示例等内容。在开始EDI项目实施之前,供应商的EDI负责人需要认真阅读此内容。
3.EDI 报文规范资料
针对本次EDI项目中需要传输的三种EDI单据:ORDERS采购订单、DESADV发货通知以及INVOIC发票,HornBach分别提供了与之匹配的EDI报文规范,作为处理EDI报文的映射关系以及注明各EDI字段业务含义的重要参考,并提供了不同业务场景下的示例报文。
此外HornBach还会向供应商提供一个 EDI Agreements文档,供应商需要阅读并同意此文档的内容。
集成方案
根据HornBach提供的上述EDI资料以及邮件沟通,确认了本次项目中使用的传输协议、报文标准以及业务单据类型,接下来需要确认使用何种方式集成W公司内部Salesforce系统。我们的项目经理与W公司的项目负责人沟通之后,最终决定采用接口调用的方式实现集成。接收来自HornBach的订单数据时,由知行之桥调W公司的接口推送数据;向HornBach发送发货通知以及发票时,由W公司调知行之桥的接口推送数据。
项目成果
根据上述需求,在知行之桥EDI系统中搭建如下所示的工作流:
上图中的每一个小方块即为一个端口(功能模块),蓝色连接线连接各个功能模块,箭头所指方向即为数据流向。将AS2连接、报文格式转换、数据映射处理、系统集成等不同的功能封装在不同的端口中,用户能够掌握数据流向,快速定位问题。作为一款低代码的EDI软件产品,实现与交易伙伴的EDI对接的绝大部分操作都只需要在可视化界面中操作即可。
第一行工作流实现的功能为:通过AS2,接收HornBach发来的ORDERS采购订单,并将其转换为JSON,通过接口调用,将数据从知行之桥EDI系统获取到Salesforce系统中,实现与供应商Salesforce 系统的集成。
第二行工作流实现的功能为:从Salesforce处获取包含INVOIC发票以及DESADV发货通知数据的JSON文件,将其转换为HornBach要求的EDI报文,并通过AS2发送给HornBach。
AS2连接测试
对接HornBach时,需要注意HornBach的EDI ID为其GLN编号,对供应商而言,在EDI传输过程中的EDI ID也需要是供应商的GLN编号,如果没有则需要先申请这个编号。
准备好供应商的GLN编号、供应商编号以及VAT编号之后,还需要准备3个商品的GTINS以及相应的供应商内部货号,HornBach将会基于这些内容生成一份测试订单,通过邮件发给供应商。写邮件给HornBach,请求进行AS2连接测试。
需要注意,虽然HornBach提供的文档中提供了生产和测试两套AS2连接信息,但实际项目中直接进行了生产系统的连接测试,测试环境HornBach并未启用。
基于知行之桥EDI系统配置HornBach的AS2连接信息,需要在工作流 AS2 端口的设置 选项卡下进行配置。需要配置的信息包括:AS2 ID、交易伙伴 URL、加密算法以及交易伙伴证书。如下所示:
根据HornBach提供的EN_Technical_data_Sheet_HORNBACH 文档中的内容进行配置即可,需要注意在配置 交易伙伴证书 的时候,需要将文档中 AS2(http)下的证书配置在上图中的 加密证书 位置;将AS2(https)下的证书配置在上图中的 TLS服务器证书 位置。
EDI业务测试
ORDERS 采购订单
1.HornBach 的订单类型
HornBach的订单编号总是以商店编号开始的7位数字。订单类型体现在ORDERS报文的BGM字段中,由3位数字作为标识:
“220”表示HornBach 商店的库存订单
“221”表示初始设备
“224”表示从供应商发货的网店订单
“227”表示客户订单/特别订单
针对以上4种订单类型,ORDERS EDI 规范中提供了对应的4个报文。
如果是从供应商发货的网点订单,则报文中将会出现两次 NAD+UC 字段:
- 最终客户的私人送货地址
- HornBach商店 地址,店内取货
2.ORDERS订单中的ID
HornBach 要求ORDERS报文中的买方ID、收货方ID、供应商ID、最终用户ID等都需要填写为相应角色的GLN编号。
3.在知行之桥EDI系统中的设置
根据HornBach发来的ODRERS报文,需要修改EDIFACT端口下关于EDI分隔符的默认配置,如下所示:
在 高级设置 选项卡下找到重复元素分隔符,在这里输入 空格,点击右上角的 保存变更 按钮即可。
DESADV 发货通知
1.本次对接HornBach的EDI项目中,W公司所处的业务模式为直发卖场,没有涉及到SSCC的信息,报文中不体现包装部分内容。
2.HornBach的发货场景包括:
- 一个DESADV对应一个ORDERS订单
如果当前DESADV仅针对一个ORDERS订单发货,则只需要在主信息中体现订单号。
- 一个DESADV对应多个ORDERS订单
如果当前DESADV中需要包含多条订单信息,则需要在报文的明细中(RFF字段),填写各物料对应的订单号。
3.发货通知单号由不超过10位的字母+数字组成。
4.在知行之桥EDI系统中的设置
与订单相同,通过知行之桥EDI系统生成DESADV的时候,需要将 EDIFACT端口->高级设置 选项卡 下的重复元素分隔符设置为空格。
INVOIC发票
1.关于自由文本的注意事项
INVOIC报文的FTX字段,当限定符为 SUR的时候,表示供应商注释,这里HornBach规定了3段文字,供应商需要根据实际情况进行填写。包含的场景有:
- 对于在德国为税务目的注册的发票方,如果同意后续费用减少(例如现金折扣,奖金),则第1点的文本是强制性的。
- 对于欧盟内部的免税配送,第二点的内容是强制性的。
- 对于欧盟内的免税送货到罗马尼亚发票收件人,从第3点的文本是强制性的。
2.在INVOIC单据中,供应商提供的发票数据如果遇到需要填写国家,注意需要填写ISO3166标准下的两位国家代码。
3.多税率的情况
在INVOIC报文中,税率信息被存储在TAX字段,如果涉及到不同税率,TAX字段需要出现多次。
示例:如果物料A和物料B的税率为X,物料C和物料D的税率为Y,则在INVOIC中,需要将相同税率的物料进行汇总。
阅读原文
相关文章:

零售EDI:HornBach EDI 项目案例
HornBach 是一家总部位于德国的家居和建筑材料零售商,成立于1968年。它以大型仓储式商店而闻名,提供广泛的产品,包括建筑材料、园艺、家居装饰和工具等。 近期我们帮助HornBach的供应商W公司成功实现了与HornBach的EDI直连,除了满…...

SpringBoot 集成RabbitMQ 实现钉钉日报定时发送功能
文章目录 一、RabbitMq 下载安装二、开发步骤:1.MAVEN 配置2. RabbitMqConfig 配置3. RabbitMqUtil 工具类4. DailyDelaySendConsumer 消费者监听5. 测试延迟发送 一、RabbitMq 下载安装 官网:https://www.rabbitmq.com/docs 二、开发步骤:…...

基于java ssm springboot女士电商平台系统源码+文档设计
基于java ssm springboot女士电商平台系统源码文档设计 🍅 作者主页 网顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定制系统…...

Matlab数字信号处理——基于改进小波变换的图像去噪方法(7种去噪算法)
1.基于小波变换的阈值收缩法去噪 该方法利用小波变换分离出信号中的噪声成分,并通过设置合适的阈值对小波系数进行收缩,保留主要信息的同时,去除噪声。 %基于小波变换的阈值收缩法去噪算法 clear clc Iimread(nana.png); X im2double(I); …...
leetcode hot100【LeetCode 70. 爬楼梯】java实现
LeetCode 70. 爬楼梯 题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意: 给定 n 是一个正整数。 示例 1: 输入:n 2 输出:2 解释&…...
Java异常2
异常抛出的两种形式: 系统隐式抛出;int n10/0;—隐式抛出一个异常;手动抛出异常:throw new Exception(); import java.util.InputMismatchException; import java.util.Scanner;public class Main {public static void main(Str…...
2024熵密杯初始题2
问题简要: 已知 counter 0x7501E6EA token 0xF4CE927C79B616E8E8F7223828794EEDF9B16591AE572172572D51E135E0D21A 伪造出另一个可以通过验证的counter和token。 给出token生成及验证代码如下: import binascii from gmssl import sm3# 读取HMAC ke…...
echarts属性之title
title 标题组件,包含主标题和副标题。 在 ECharts 2.x 中单个 ECharts 实例最多只能拥有一个标题组件。但是在 ECharts 3 中可以存在任意多个标题组件,这在需要标题进行排版,或者单个实例中的多个图表都需要标题时会比较有用。 例如下面不…...

VUE errolog, vue 错误集
I) installation As to command “npm install” on cmd or powershell, we must execute it under the program folder...
驱动开发系列13 - Linux tasklet用法介绍
一:概述 Tasklet 是 Linux 内核中的一种轻量级任务调度机制,通常用于在中断上下文中执行短小的任务。它们在软中断处理过程中被调用,允许将较长的处理工作延后到一个较低优先级的上下文中,以减少中断处理的延迟。Tasklet 的使用可以帮助开发者更好地管理系统资源,提高性能…...

redis实现分布式锁,go实现完整code
Redis分布式锁 Redis 分布式锁是一种使用 Redis 数据库实现分布式锁的方式,可以保证在分布式环境中同一时间只有一个实例可以访问共享资源。 实现机制 以下是实现其加锁步骤: 获取锁 在 Redis 中,一个相同的key代表一把锁。是否拥有这把锁&…...

解析日期、编码
解析日期 这里指的是将字符串或者object类型的日期,转换成panda或python的日期类型。 主要的是dtype的变化:object / str —> datetime64[ns] # modules well use import pandas as pd import numpy as np import seaborn as sns import datetime# …...
【Qt】QApplication::restoreOverrideCursor():恢复鼠标光标到原始状态的用法解析
restoreOverrideCursor() 是 Qt 中 QApplication 类提供的一个静态函数,用来恢复鼠标光标到应用程序之前设置的状态。 在 Qt 中,你可以使用 QApplication::setOverrideCursor() 来临时更改鼠标光标的外观。例如,当执行一些耗时操作时&#x…...

重生之“我打数据结构,真的假的?”--2.单链表(无习题)
C语言中的单链表总结 单链表是一种基础的数据结构,广泛应用于C语言编程中。它由节点组成,每个节点包含数据和指向下一个节点的指针。单链表的优点在于动态内存分配和高效的插入与删除操作。本文将详细探讨单链表的定义、基本操作、应用场景以及相关示例…...

【有啥问啥】视频插帧算法技术原理详解
视频插帧算法技术原理详解 引言 视频插帧(Video Interpolation)技术,作为计算机视觉领域的一项重要应用,旨在通过算法手段在已有的视频帧之间插入额外的帧,从而提升视频的帧率,使其看起来更加流畅。这一技…...
Leetcode148,109以及二者的合并 -> Tencent面试算法题 - 无序双向链表转BST
根源简述 这道题是腾讯在2024/8/30考的一道面试题,整体来说,难度不大,就是代码量稍稍有点儿大,让我们一起来看一下吧 题目描述 整数无序双向链表能否转BST(二叉搜索树),如果能,怎么转…...

【蓝桥杯选拔赛真题77】python计算小球 第十五届青少年组蓝桥杯python选拔赛真题 算法思维真题解析
目录 python计算小球 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python计算小球 第十五届蓝桥杯青少年组python比赛选拔赛真题 一、题目要…...

获取Hive表备注
DESCRIBE EXTENDED 表名;先获取Detailed Table Information这行的data_type字段数据,进行正则匹配,拿到表备注,如下: String str ReUtil.get("parameters:\\{(?!.*?\\().*transient_lastDdlTime.*?comment(.*?)\\}&quo…...
10.30学习
一、科学计数法 C语言中的科学计数法主要用于表示非常大或非常小的浮点数,它遵循以下格式: 1. E或e表示指数: 科学计数法中的E或e用来表示“指数”(Exponent)。例如, 1.23e4 或 1.23E4 表示 1.23 * 10^4…...
什么是栈溢出
一、什么是栈溢出 栈溢出(Stack Overflow)就是指在程序运行过程中,往栈里存放的数据超过了栈所能容纳的最大容量,从而导致程序出现异常行为的情况。这就好比一个箱子本来只能装一定数量的物品,硬要往里面塞更多的东西&…...

大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...