易飞ERP与WMS系统接口对接实战:从0到1全流程指南
制造业数字化浪潮下,ERP与WMS的集成已成为企业降本增效的关键一环。本文基于真实客户案例,为你拆解易飞ERP与WMS系统对接的完整路径,并提供可直接落地的技术方案。
一、为什么你的企业需要ERP与WMS对接?
如果你的企业同时使用易飞ERP 和独立的WMS(仓储管理系统),以下场景你一定不陌生:
- 重复录入:仓库人员在WMS完成收货后,还要在ERP中再录一次进货单------双倍工作量,双倍出错风险
- 库存数据打架:ERP账上库存和WMS实物库存对不上,采购、生产、销售部门拿到的数据口径不一致
- 信息滞后:出入库数据靠人工同步,往往延迟半天到一天,影响生产计划和订单交付
这些问题的根源在于:两个系统各自为政,数据无法实时互通。
广东某精密制造企业曾面临同样的困境。他们主要生产汽车、电子行业的精密零部件,物料品种多、批次管理复杂,传统手工录入方式导致库存准确率持续走低,订单交付时效频频亮红灯。
解决方案是什么? 通过WebAPI接口,让易飞ERP与WMS实现双向数据实时同步。
根据行业实践经验,ERP将采购入库单、销售出库单指令下行 给WMS;WMS将实际的入库、出库、移库、盘点结果上行实时同步给ERP,更新库存数量,最终实现库存账与实物账一致。
二、整体对接方案设计
2.1 整体架构
我们采用RESTful API + JSON数据格式 + License认证的现代架构方案,与传统的"中间表"方式相比,具有更好的实时性和解耦能力。
架构示意:
┌─────────┐ 上行(出入库实绩) ┌─────────────┐
│ │ ◄───────────────────────── │ │
│ WMS │ │ 易飞ERP │
│ 系统 │ ──────────────────────────► │ Web API │
│ │ 下行(订单/指令) │ │
└─────────┘ └─────────────┘
2.2 数据流动方向
| 方向 | 数据类型 | 触发方 | 核心接口 |
|---|---|---|---|
| 下行(ERP→WMS) | 采购入库单指令 | ERP | 进货单查询接口 |
| 下行(ERP→WMS) | 销售出库单指令 | ERP | 销货单查询接口 |
| 上行(WMS→ERP) | 入库实绩 | WMS | 进货单新增/更新接口 |
| 上行(WMS→ERP) | 出库实绩 | WMS | 销货单新增/更新接口 |
| 上行(WMS→ERP) | 库存盘点结果 | WMS | 库存交易单接口 |
| 上行(WMS→ERP) | 移库结果 | WMS | 调拨单接口 |
一个完整的对接方案,至少应覆盖进货单、销货单、库存交易单、调拨单这四个核心单据的接口。
三、核心接口详解(含示例代码)
3.1 场景一:采购收货自动生成ERP进货单
这是最典型的集成场景:WMS完成收货扫描后,实时调用易飞ERP进货单新增接口,自动生成进货单。
接口信息
| 项目 | 内容 |
|---|---|
| 接口地址 | POST /api/Puri09/Add |
| 认证方式 | Header携带 X-API-License 授权码 |
| 请求格式 | JSON |
请求示例
javascript
{
"std_data": {
"parameter": {
"purchase_receipt_data": [
{
"doc_type_no": "3401",
"doc_no": "20241225001",
"doc_date": "20240522",
"supplier_no": "202306001",
"project_no": "********************",
"plant_no": "01",
"supplier_order_no": "20240522001",
"currency": "RMB",
"exchange_rate": 9,
"department": "ED",
"payment_condition_no": "",
"tax_type": "1",
"tax_rate": 0.13,
"remarks": "OPENAPI新增",
"pieces": 0,
"invoice_type": "S",
"invoice_code": "",
"invoice_date": "",
"tax_identification_no": "",
"register_book_no": "",
"purchase_receipt_detail_data": [
{
"doc_type_no": "3402",
"doc_no": "20241225001",
"seq": "0001",
"item_no": "30500008010001",
"item_name": "AA",
"item_spec": "AAG",
"arrival_qty": 56,
"unit": "KG",
"warehouse_no": "01",
"location_no": "1",
"lot_no": "",
"lot_description": "",
"accepted_date": "20240522",
"accepted_qty": 39,
"return_qty": 90,
"scrap_qty": 0,
"destroyed_qty": 0,
"pricing_qty": 66,
"pricing_unit": "KG",
"price": 88,
"trans_curr_amount": 39,
"trans_curr_tax": 0,
"local_curr_not_tax_amount": 0,
"local_curr_tax": 0,
"deduction_amount": 0,
"deduction_desc": "",
"purchase_expenses": 0,
"overdue_code": "",
"qc_status": "0",
"arrival_package_qty": 0,
"accepted_package_qty": 0,
"scrap_package_qty": 0,
"destroyed_package_qty": 0,
"return_package_qty": 0,
"accepted_gift_prepare_item_qty": 0,
"accepted_gift_prepare_item_package_qty": 0,
"remarks": "",
"production_date": "",
"expiry_date": "",
"reinspection_date": "",
"pieces_per": 0,
"pieces": 0,
"delivery_period": "",
"purchase_type_no": "3301",
"purchase_no": "12233211",
"purchase_seq": "0001",
"borrowing_type_no": "",
"borrowing_doc_no": "",
"borrowing_seq": "",
"arrival_type_no": "",
"arrival_doc_no": "",
"arrival_seq": "",
"inspection_batch": ""
}
]
}
]
}
}
}
响应示例(成功)
javascript
{
"std_data": {
"execution": {
"code": 0,
"sql_code": "",
"description": "执行成功"
},
"parameter": {
"result": {
"success": [
{
"doc_type_no": "3401",
"doc_no": "20241225001"
}
]
}
}
}
}
响应示例(失败)
javascript
{
"std_data": {
"execution": {
"code": -1,
"sql_code": "",
"description": "执行失败"
},
"parameter": {
"result": {
"success": []
}
}
}
}
关键校验逻辑(系统自动执行):
- 品号是否存在且已核准
- 供应商是否存在且状态正常
- 仓库是否存在且允许入库
- 数量、单价、税率是否符合业务规则
3.1 场景二:WMS查询ERP待出库订单
WMS在拣货前,需要从ERP获取已审核待出库的销售订单信息。
接口信息
| 项目 | 内容 |
|---|---|
| 接口地址 | POST /api/Cop06/Read |
| 认证方式 | Header携带 X-API-License 授权码 |
| 请求格式 | JSON |
| 请求示例 |
javascript
{
"std_data": {
"parameter": {
"page_no": 1,
"conditions": {
"fields": [
{
"value": "2312004",
"operator": "=",
"field_name": "doc_no"
}
],
"operator": "and"
},
"use_has_next": "false",
"page_size": 10000
}
}
}
响应示例(成功)
javascript
{
"std_data": {
"execution": {
"code": 0,
"sql_code": "",
"description": "查询成功"
},
"parameter": {
"total_result": 5,
"has_next": false,
"result": {
"success": [],
"cnt": 5,
"rows": [
{
"doc_type_no": "2201",
"doc_no": "2312004 ",
"order_date": "20231201",
"customer_no": "D001 ",
"department": "12 ",
"salesman_no": "A532 ",
"plant_no": "01 ",
"trans_currency": "RMB ",
"exchange_rate": 1,
"delivery_address1": "浙江省台州市三门县 ",
"delivery_address2": " ",
"customer_doc_no": "KC231200038 ",
"price_condition": " ",
"payment_condition_no": "07 ",
"payment_condition": "月结60天 ",
"remarks": "",
"tax_type": "1",
"l_cno": " ",
"contact": "DDD ",
"transport_mode_no": "1",
"departure_port": " ",
"destination_port": " ",
"agent": " ",
"broker": " ",
"inspection_company": " ",
"transport_company_no": " ",
"commission_rate": 0,
"approve_status": "Y",
"print_times": 0,
"order_amount": 50843.82,
"order_tax": 6609.68,
"tot_qty": 19900,
"consignee": "C-01494 ",
"notify": " ",
"mark_number": " ",
"destination": " ",
"correspondent_bank": " ",
"invoice_remarks": "",
"package_list_remarks": "",
"doc_date": "20231201",
"approver_no": "sh001 ",
"tax_rate": 0.13,
"total_gross_weight_kg": 0,
"total_cuft_size": 0,
"deposit_rate": 0,
"total_package_qty": 0,
"negotiating_bank": " ",
"approval_status_code": "N",
"process_no": " ",
"post_status": "N",
"downstream_supplier": " ",
"remarks_1": "",
"remarks_2": "",
"remarks_3": "",
"remarks_4": "",
"mark": "",
"side_mark": "",
"transfer_times": 0,
"ebc_export_code": "N",
"ebc_so_no": " ",
"ebc_so_version": " ",
"source_code": "0",
"invoice_amount": 0,
"invoice_tax": 0,
"over_limit": "N",
"contract_type": "0",
"tax_code": " ",
"telephone": "15355696001 ",
"fax_no": " ",
"project_no": "********************",
"delivery_date": "20231201",
"installation_completion_date": "20231201",
"local_curr_not_tax_amount": 50843.82,
"local_curr_tax": 6609.68,
"udf01": "A",
"udf02": "001",
"doc_type_name": "销售订单 ",
"customer_name": "XXXX ",
"department_name": null,
"sales_name": "XXXX ",
"plant_name": "厦门XXX ",
"agent_name": null,
"broker_name": null,
"inspection_company_name": null,
"transport_company_name": null,
"consignee_name": null,
"notify_name": null,
"approver_name": "YYYY ",
"payment_condition_name": "月结60天 ",
"negotiating_bank_name": null,
"process_name": null,
"project_name": "量产品 ",
"sales_order_detail_data": null
}
]
}
}
}
}
3.3 场景三:WMS出库完成回写ERP(更新/审核)
WMS完成拣货出库后,调用审核接口,ERP自动更新库存并完成单据审核。
接口信息
| 项目 | 内容 |
|---|---|
| 接口地址 | POST /api/Pui09/approve |
| 认证方式 | Header携带 X-API-License 授权码 |
请求示例
javascript
{
"std_data": {
"parameter": {
"datakeys": [
{
"doc_type_no": "3401",
"doc_no": "20251231002"
}
]
}
}
}
响应示例(成功)
javascript
{
"std_data": {
"execution": {
"code": 0,
"sql_code": "",
"description": "审核成功"
},
"parameter": {
"result": {
"success": [
{
"doc_type_no": "3401",
"doc_no": "20241225001"
}
]
}
}
}
响应示例(失败)
javascript
{
"std_data": {
"execution": {
"code": 0,
"sql_code": "",
"description": "审核失败"
},
"parameter": {
"result": {
"success": [
{
"doc_type_no": "3101",
"doc_no": "20241225001"
}
]
}
}
}
完整调用链路:查询 → 新增 → 审核,三步完成从计划到库存更新的全流程自动化。
3.4 接口调用流程(完整闭环)
- ERP生成采购订单 → WMS查询接口获取到货计划
- WMS收货扫描 → 调用进货单新增接口 → ERP自动生成进货单
- 仓库人员核对实收数量 → 调用进货单审核接口 → ERP更新库存
- ERP库存实时更新 → 采购、财务部门即时可见
完整调用链路:查询 → 新增 → 审核,三步完成从计划到库存更新的全流程自动化。
四、实战中的关键注意事项
基于多家客户的真实落地经验,以下几点最容易"踩坑":
4.1 基础档案一致性(最关键)
WMS中的品号、供应商、仓库编码必须与易飞ERP完全一致。建议:
- 以ERP为基础数据源,WMS定期同步基础档案
- 建立编码映射表,处理两端编码不一致的情况
4.2 异常处理机制
网络抖动或系统繁忙时,API调用可能失败。建议采用指数退避重试策略:
- 第1次失败:等待1秒后重试
- 第2次失败:等待2秒后重试
- 第3次失败:等待4秒后重试
- 超过3次失败:记录日志,人工介入
4.3 幂等性设计
WMS可能因重试而重复发送相同的请求。接口需要支持幂等性------同一笔单据多次提交,不会重复创建。实现方式:
- 基于"源单据号+操作类型"生成唯一请求ID
- 系统收到请求时先检查该ID是否已处理
4.4 事务一致性
新增单据涉及主表和明细表多张表写入,必须使用数据库事务保证全部成功或全部回滚。本系统所有新增、更新、删除接口均内置事务管理。
4.5 安全性配置
生产环境必须启用以下安全机制:
- License授权 :每个请求携带
X-API-License - IP白名单:仅允许WMS服务器IP访问
- 速率限制:防止恶意请求导致系统过载
五、实施效果与收益
以某精密制造企业为例,通过WMS与易飞ERP系统集成后,取得了以下成果:
| 指标 | 实施前 | 实施后 | 提升幅度 |
|---|---|---|---|
| 库存准确率 | 约90% | 99%以上 | +9% |
| 单笔入库处理时间 | 15分钟 | 即时完成 | 效率提升显著 |
| 订单交付时效 | 滞后1-2天 | 实时出库 | 缩短30%+ |
| 数据录入错误率 | 5%左右 | 接近0 | 消除人为误差 |
另一家机械制造企业,物料品种超过1万种、管理3个仓库,上线后实现了库位精细化管理、先进先出自动控制,ERP运用效能大幅提升。
总结起来,核心收益三点:
- 库存准确性大幅提升 ------ 实时同步,账实一致
- 仓库操作效率显著提高 ------ 扫码即完成,告别手工录单
- 供应链协同更加流畅 ------ 采购、生产、销售实时共享库存数据
六、快速入门FAQ
Q1:你们的接口支持哪些易飞版本?
A:支持所有易飞版本,即装即用,无需对ERP做二次开发。
Q2:部署需要多长时间?
A:标准远程部署1-2个工作日完成。如需联调测试,可按需提供工程师支持。
Q3:单个单据接口包含哪些操作?
A:每个单据接口均包含查询、读取、新增、更新、删除、审核、撤审、作废8项完整操作。
Q4:多个账套需要额外付费吗?
A:所有方案默认支持多公司、多账套,无需额外费用。
Q5:接口稳定性如何?
A:系统经过严格压力测试------每1毫秒请求一次,连续500次,通过率100%,已在多家客户生产环境稳定运行。