当前位置: 首页 > news >正文

零售EDI:HornBach EDI 项目案例

HornBach 是一家总部位于德国的家居和建筑材料零售商,成立于1968年。它以大型仓储式商店而闻名,提供广泛的产品,包括建筑材料、园艺、家居装饰和工具等。

HornBach_EDI_case1.png

近期我们帮助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系统中搭建如下所示的工作流:

HornBach_EDI_case2.png

上图中的每一个小方块即为一个端口(功能模块),蓝色连接线连接各个功能模块,箭头所指方向即为数据流向。将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_EDI_case3.png

根据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分隔符的默认配置,如下所示:

HornBach_EDI_case4.png

在 高级设置 选项卡下找到重复元素分隔符,在这里输入 空格,点击右上角的 保存变更 按钮即可。

DESADV 发货通知

1.本次对接HornBach的EDI项目中,W公司所处的业务模式为直发卖场,没有涉及到SSCC的信息,报文中不体现包装部分内容。

2.HornBach的发货场景包括:

  • 一个DESADV对应一个ORDERS订单

如果当前DESADV仅针对一个ORDERS订单发货,则只需要在主信息中体现订单号。

  • 一个DESADV对应多个ORDERS订单

如果当前DESADV中需要包含多条订单信息,则需要在报文的明细中(RFF字段),填写各物料对应的订单号。

3.发货通知单号由不超过10位的字母+数字组成。

4.在知行之桥EDI系统中的设置

与订单相同,通过知行之桥EDI系统生成DESADV的时候,需要将 EDIFACT端口->高级设置 选项卡 下的重复元素分隔符设置为空格。

HornBach_EDI_case5.png

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)就是指在程序运行过程中,往栈里存放的数据超过了栈所能容纳的最大容量,从而导致程序出现异常行为的情况。这就好比一个箱子本来只能装一定数量的物品,硬要往里面塞更多的东西&…...

在linux中arm-linux-gcc和/usr/bin/gcc有啥区别

在Linux中,arm-linux-gcc和/usr/bin/gcc都是编译器,但它们之间存在显著的区别,主要体现在编译目标、使用场景以及编译生成的二进制文件的可执行性上。而软链接则是Linux文件系统中的一种特殊文件类型,用于创建一个文件的别名。 a…...

常用环境部署(二十二)——MySQL的数据库迁移到另一个机器上

1、导出原数据库的数据 mysqldump -u [用户名] -p[密码] [数据库名] > database_dump.sql 命令示例: mysqldump -u root -p123456 wd > /opt/wd.sql 2、在新机器上创建数据库 mysql -u [用户名] -p -e "CREATE DATABASE [新数据库名]" 命令示…...

两台主机只能单方向ping通

可能性比较大的原因时ping不通的那台主机安装了个人防火墙。 在共享上网的机器中,出于安全考虑,大部分主机都安装个人防火墙软件。几乎所有个人防火墙软件默认不允许其他机器ping本机。一般的做法是将来自外部的ICMP请求报文滤掉,对本机出去的…...

redis windows 5.0 下载

Redis 简介 Redis 是一个高性能的 key-value 数据库,广泛应用于缓存、消息队列、实时分析等场景。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,并且提供了丰富的操作命令,能够满足各种复杂的数据处理需求。 下载…...

视频转gif怎么转换?6种视频格式转换简单方法分享,附操作截图!

gif动图凭借其简洁而生动的特点,已成为互联网交流中不可或缺的一部分。尽管gif和视频在技术上有所不同,但两者都能以短小的帧展现动作,而gif通常不带声音,具备循环播放的特性。因此,出于创建gif动图、存储更多媒体文件…...

StructRAG简介

StructRAG是一种新型的框架,旨在提升大型语言模型(LLMs)在知识密集型推理任务中的性能。它通过推理时的混合信息结构化机制,根据任务需求以最合适的格式构建和利用结构化知识。 以下是StructRAG的核心组成部分和工作流程&#xff…...

java脚手架系列12-mongoDB

之所以想写这一系列,是因为之前工作过程中有几次项目是从零开始搭建的,而且项目涉及的内容还不少。在这过程中,遇到了很多棘手的非业务问题,在不断实践过程中慢慢积累出一些基本的实践经验,认为这些与业务无关的基本的…...

python四舍五入保留两位小数

在 Python 中,你可以使用内置的 round() 函数来对数字进行四舍五入并保留两位小数。round() 函数有两个参数:要四舍五入的数字和要保留的小数位数。以下是一个简单的示例: # 示例数字 number 3.14159# 四舍五入保留两位小数 rounded_number…...

期权懂|有什么期权交易策略能够稳赚不赔的?

期权小懂小编每日分享期权知识,帮助期权新手及时有效地掌握即市趋势与新资讯! 有什么期权交易策略能够稳赚不赔的? 期权交易具有风险性,没有任何一种策略能够保证稳赚不赔。 以下是一些常见的期权交易策略,虽不能保证盈利&#…...

笔记本脱机状态

先是显示脱机,请尝试其他方法登录 1.按照联想客服,进入高级选项里面,清除两个更新项目,没有卸载成功 2.安装wepe,先是能检测到U盘,但是进不去,然后我淘宝淘帮我做盘,我自己重新装了一…...

太原营销型网站建设/网络营销期末总结

http://www.jfox.info/bi-jiao-chang-jian-de-shu-ju-ku-sql-mian-shi-ti-yi-ji-da-an转载于:https://www.cnblogs.com/ydxblog/p/5753575.html...

可以做外链的网站/网页设计免费模板

【问题描述】 子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。子网掩码与 IP 地址结构相同,是32 位二进制数,其中网络号部分全为 “1” 和主机号部分全为 “0” 。利用子网掩码可以判断两台主机是否中同一子网中。若两台主机的IP …...

网站建设代码/优秀网站设计案例

假设容器名为myubuntu,要从宿主机里边拷贝的文件路径为/root/1.py,现在将1.py文件拷贝到容器的 /home路径下面, 但是出现错误"docker cp" requires exactly 2 arguments.,则说明路径的格式写错了,可能是多出…...

服装鞋帽 网站建设/百度智能建站系统

一个优秀的测试在工作中应具备的: 1.保持怀疑 对产品的质量持有一颗敢于怀疑的心,质量不是开发人员说"我做完了而且也测过了"就可以保证的。直到你测完最后一轮,最后一个用例之前,你都应该对产品的质量持怀疑态度。 2.多…...

网站 粘度/深圳网站建设资讯

显示存储卷列表(和nova volume-list命令功能相同) cinder list 显示存储卷类型列表 cinder type-list 列表展示zone cinder availability-zone-list 创建存储卷 cinder create --display-name VOLNAME SIZE(SIZE的单位为GB) 创建基…...

成都哪里有做网站的/bt搜索引擎下载

基于多尺度窗口的DEM局部填洼方法徐静波1,许捍卫1,于艳超2【摘要】为了去除DEM中的伪洼地,使水系提取结果更加精确,在M&V算法的基础上提出了一种改进的填洼方法。用局部处理的思想将填洼步骤简化,减小对DEM的计算范…...