快递100/快递管家二开试例原创
金蝶云社区-文安根
文安根
13人赞赏了该文章 2332次浏览 未经作者许可,禁止转载编辑于2022年05月13日 19:18:36

    金蝶云星空供应链领域下的销售模块集成了快递100和快递管家相关功能,可通过'获取电子面单'动态表单实现对接。以销售出库单为例,默认情况下(即快递100参数配置中未对收件人信息进行自定义设置时),'获取电子面单'界面中的收件人姓名,手机,电话来源于销售出库单的'客户信息'页签中的收货方联系人中的相关信息,收货方联系人是基础资料,其中有姓名字段(对应电子面单收件人姓名)、移动电话(对应电子面单收件人手机)、固定电话(对应电子面单电话)、详细地址(注意收货方联系人基础资料中的详细地址不会对应电子面单中的收件人地址,并且销售出库单'客户信息'页签中的收货人姓名和联系电话字段也不会对应前面所说的电子面单收件人姓名和收件人手机或收件人电话),'获取电子面单'界面中的收件人地址则来源于销售出库单的'客户信息'页签中的收货方地址。通版尽管在快递100参数配置中的有针对收件人,收件人电话,收件人地址等的自定义字段的配置,但是这里目前有一个局限,就是只能配置成单据头上的文本字段(包含标准功能上的字段和客户二开的字段),如果配置成单据体上的文本字段,则只会取单据体第一行数据对应字段值,2022年3月之后的版本将添加数量,金额,单价的自定义配置。2022年3月之后的新版本配置界面如下图1-0所示:

image.png

图1-0


    针对上图1-0的配置,如果想实现快递100中的收件人为销售订单上的销售员,这个地方就配置不了,因为销售员是基础资料,而不是文本类型,本文以开发者角度说明一下如何二开以上功能(此功能需要客户有相关开发人员,无法简单通过BOS IED 配置实现)。

    之前的版本,在程序集'Kingdee.K3.SCM.Sal.Business.PlugIn.dll'中的类'GetKuaidiBillEdit'中的方法'FillKuaidiInfo()'未添加任何修饰符,而此FillKuaidiInfo是‘获取电子面单’这个动态表单在选择单据后填充界面数据的核心方法,因此之前版本不能二开。在2021.04.22号发布的版本(此版本为灰度补丁,需要提运维单才能更新到此版本)中,会将此方法修饰为'protected virtual',届时客户升级补丁后,即可按如下方式二开'收件人为销售订单上的销售员'

    1,创建继承自通版的插件类,暂时命名为GetKuaidiBillEditExtend,重写方法FillKuaidiInfo,在调用通版代码后添加自定义逻辑,如下图1-1所示:

image.png

图1-1


注:上图的代码只是大致逻辑,需要客户自行为空判断,行号正确性判断等。


    2,在BOS中,二开‘获取电子面单’,在插件列表中禁用或删除通版GetKuaidiBillEdit插件,添加二开的GetKuaidiBillEditExtend插件并启用即可。

    以下附上通版FillKuaidiInfo方法在调试时的数据包内容层次截图,通过类似的方法,可能拿到大部分单据上的数据包(只需在选择单据界面的过滤框中的‘显示隐藏列’中勾选相关字段即可在数据包中呈现),如下图1-2所示:

image.png

图1-2

    通过上面类似的方法,可以对获取电子面单中的其它字段值进行替换,比如客户想读取单据所有分录上的物料名称(以逗号分隔)当作 获取电子面单 界面上的物品名称,就可以读取 data.DataRow["FMaterialID_Ref"] 属性,但这里要注意数据包格式是被分摊过的(即单据上的分录都是一个完整的DataRow),需要根据data.PrimaryKeyValue分组,同一组的才是同一单号的分录。还有一种取所有分录上物料名称的方式是依据 获取电子面单 界面上的物料清单 字段,它是一个JOSN字符串,客户可以自定义插件在通版插件给 物料清单 字段赋值后重新解析 物料清单 字段并赋值给 物品名称 字段。


    另外,如果想对快递100电子面单相关参数进行二开,比如想实现按登录用户配置快递100打印设备码,可参阅此论坛地址:https://vip.kingdee.com/article/173521351129519360 



赞 13