Skip to content

OCA EDI模块评测

概述

OCA有专门的EDI仓库,包含不少模块,能用吗?本文分析一下16.0分支的代码,给想用这些EDI模块的用户提供一些参考。

对接流程

如果选择的EDI系统已经对接了Odoo,那就不需要我们在Odoo这一侧增加什么模块了。本文假设所选择的EDI系统并没有对接Odoo,它可以收发EDI报文、转换、向第三方系统转发。

所以,我们需要在Odoo中安装几个模块来解析转发过来的edifact/xml/pdf文件,创建销售订单。

解析EDI报文

OCA的EDI仓库中有很多模块,但更新的内容大多数都不是功能性的,所以想直接用就太难了,只能作为参考。

我们得先定一个小目标:解析edi报文(DELJIT),创建销售单。目标模块:

  • base_edifact
  • sale_order_import_edifact

至于解析DELFOR,OCA的模块没有处理,建议自己写一个小模块,解析成每周的计划即可,销售订单只用来处理DELJIT。

base_edifact

该模块包含生成和解析EDIFACT/D96A文件的方法。

该模块依赖pydifact库。Pydifact是一个为读写EDIFACT文件提供全面支持为目标的库。该库是从一个PHP库“翻译”过来的。2020年4月发布第一个版本,2024年2月发布了最新的0.1.7版本。

该模块需要partner_identification_gln模块来存储GLN标识。支持GLN(全球位置编码)和GCP(全球公司前置码)。

该模板是基础模块,要看到效果,需要sale_order_import_edifact。

sale_order_import_edifact

该模块用于将edi报文创建为销售订单。

该模块依赖sale_order_import,它提供了一个向导,用于导入xml、pdf两种类型的文件。sale_order_import_edifact模块增加了edi类型。

WARNING

第一个坑来了,xml类型的文件并没有支持! 起初我以为是16.0版本还没有迁移过来,往前翻了翻版本,发现也没有。 照作者的想法,后续应该是出sale_order_import_xml类似的模块来实现。

安装模块之后,点击销售-订单-导入RFQ或订单,弹出窗口里选择文件类型为EDIFACT,从base_edifact模块tests目录中选择一个测试文件,点击解析,导入。