二开试例:快递100物流签收后销售出库单到货确认
金蝶云星空供应链领域销售管理模块在补丁 PT-146915 [8.0.0.202206] 中对物流刷新相关功能添加了二开支持(提供了插件和执行计划虚方法,客户可继承通版插件,重写相关方法即可达到二开目的),首先说明下,销售管理模块对快递100物流刷新功能分两个地方:一个是手工刷新功能,如下图1-1和1-2所示:
图1-1
图1-2
在销售物流信息列表中勾选指定记录,或者双击进入某个记录的查看界面,通过图中的'刷新物流信息'按钮可实现手工物流刷新功能。另一个是执行计划自动刷新功能,如下图1-3所示:
图1-3
有关此执行计划的介绍,可参阅: https://wenku.my7c.com/article/223033855618894592?productLineId=1。本文只大致介绍如何继承通版插件,重写相关插件方法,然后调用相关到货确认功能(需要客户有二开人员)。首先,反编译通版插件Kingdee.K3.SCM.Sal.Business.PlugIn.dll,找到类Kingdee.K3.SCM.Sal.Business.PlugIn.SalLogistInfoList和Kingdee.K3.SCM.Sal.Business.PlugIn.SalLogistInfoEdit,这两个类分别是 销售物流信息 基础资料的列表插件和表单插件的默认实现类,在其中可以看到以CustomHandle***为前缀的虚方法,如下图2-1所示:
图2-1
如上图所示,列表插件有两个可重写的方法,通过参数可以看出一个传的是批量物流轨迹信息,一个是单个物流轨迹信息,客户二开时只需要重写其中的一个方法就行,建议仅重写其中的批量方法。参数中的类CustomKuaiDi100Result由物流单号(ExperssNo属性)和另一个物流详细信息(Result属性,类型为KuaiDi100Result)组成。类KuaiDi100Result的定义如下图2-2所示:
图2-2
当重写方法时,可以通过类似的表达式 temp.Result && temp.ReturnCode == "200" 判断是否有正确的物流详细数据(其中temp为类KuaiDi100Result的实例)。如果表达式为true,且temp.State属性为3则代表已签收。 类KuaiDi100Result中的Data属性(类型为KuaiDi100Data,里面有Context和FTime属性)则是物流轨迹的详细信息。对于执行计划,可反编译组件Kingdee.K3.SCM.App.Core.dll,找到类Kingdee.K3.SCM.App.Core.UpdateSalLogisticsInfo,可以看到执行计划中相关的方法与上面的表单插件和列表插件类似,如下图2-3所示:
图2-3
客户只需要二开相关单据插件类,列表插件类,执行计划类,并继承通版对应的插件和执行计划类,重写其中的方法,然后在BOSIDE中禁用通版的相关插件,注册且启用自己二开的插件即可,如果是执行计划的二开,只需要修改图1-3中的服务插件字段,用自己的二开类替换即可。下图2-4和图2-5为二开列表插件及二开执行计划伪代码示意图:
图2-4
图2-5
后续通版添加了按过滤方案自动订阅物流信息功能,有关此功能的详情说明,请参阅https://wenku.my7c.com/article/288016181233754624?productLineId=1 如果客户使用了此功能,则需要另外二开一个地方,自动订阅后的物流单号如果有新的物流详细信息时,是通过回调地址将物流详情回传到星空系统中的,通版是通过C#一般处理程序 Kingdee.K3.SCM.Business.PlugIn.Kuaidi100HttpHandler(此类在组件Kingdee.K3.SCM.Business.PlugIn.dll中)处理回调的,此类整合了快递管家的回调和快递100的回调,客户只需要重写其中的 CustomLogisticsDetailInfo(Context ctx, JObject lastResult) 方法(注意此类中有另一个同名且有三个参数的重载方法是给管家二开用的)再修改Common.config及对应的快递100参数中的回调地址即可,详情可参考帖子 https://wenku.my7c.com/article/216286725399032576?productLineId=1 中的管家二开功能。
用JAVA写可以吗
二开试例:快递100物流签收后销售出库单到货确认
本文2024-09-16 17:17:21发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-14744.html