获取电子面单表单插件可重写方法汇总
供应链领域的销售模块集成了快递100功能,其中的获取电子面单是一个最常用但又最复杂的功能,也是通版不能完全覆盖所有客户需求的地方(标准功能不管如何迭代产品,都是无法涵盖所有需求)。因此标准功能考虑了部分二开需求,并提供了多个可重写逻辑的方法,本文简单介绍下2024年之后的版本中的获取电子面单可重写的方法及二开应用案例。
获取电子面单的标准插件名为Kingdee.K3.SCM.Sal.Business.PlugIn.GetKuaidiBillEdit(在应用程序集文件Kingdee.K3.SCM.Sal.Business.PlugIn.dll 中),GetKuaidiBillEdit插件里面提供很多可重写的方法,其中绝大部分可重写的方法名都是以Custom**开发的,反编译如下图1-1所示(红框内为可重写的方法):
图1-1
1,CustomHandleExpressNo(Context contxt, Dictionary<int, GetKuaidiBillResult> results)
本方法用于自定义快递100申请电子面单成功后的相关逻辑(不适用快递管家订单导入),results参数是一个以获取电子面单动态表单中的序号(此序号从1开始递增)为KEY,电子面单申请结果为VALUE的字典。GetKuaidiBillResult类中有是否成功(IsSucceed属性),失败信息(ErrorMessage属性),申请成功后电子面单(SuccessDataEnity属性,此属性里面是星空电子面单基础资料,里面保存有关联的单据编号,物流单号,收发件人等信息)等相关信息。这个方法重写的一种应用场景是如果有第三方单据想要申请快递100电子面单,那么在这个方法里面就可以处理一些把物流单号写回到第三方单据上的逻辑。
2,CustomPopulateDataFromBillView(string formId, int rowIndex, IBillView billView)
此方法用于从销售单据/单据列表跳转到获取电子面单界面时如何自定义填充'获取电子面单'数据的逻辑,其中参数formId是单据标识,rowIndex是获取电子面单当前基于0的行号,billView是单据视图对象。客户如果想在第三方单据上跳转到获取电子面单界面,则可以在第三方单据表单插件/列表插件中的某个按钮事件处理程序中先调用工具类方法 Kingdee.K3.SCM.Sal.Business.PlugIn.Kuaidi.KD100Tool.SkipToGetKD100Bill(this.View); 然后重写CustomPopulateDataFromBillView方法,在重写方法中通过billView中的Model.DataObject属性可以获取到单据的相关数据。
3,CustomPopulateRowData(Kuaidi100Parameter parameter, ListSelectedRow row, int rowIndex)
本方法与上面的方法2类似,只不过这个方法只适用于在'获取电子面单'界面中选择某种单据后的自定义填充逻辑,通版在此方法前就已经对相关字段(比如收件人,寄件人等)有默认填充逻辑,如果这种默认逻辑不合客户实际需求,则可以在此方法中覆盖通版逻辑。
4,CustomResetBaseData(Context contxt, DynamicObject baseData, DynamicObject dynamicObject)
此方法是快递100申请电子面单或快递管家订单导入成功后(此方法预计在2024年1月版本才有,其它可重写的方法在2023年10月版本前就已经陆续提供了),自定义电子面单基础资料数据的可重写方法。baseData就是星空电子面单基础资料,在此方法中修改它的相关字段信息最终会导致生成的电子面单相关字段也跟着修改(一些快递100电子面单接口返回的字段在此方法重写不了,比如说大头笔,集包名称等字段即使在此方法中重写过,最终还是会保存由快递100接口返回的值),如果客户在获取电子面单界面中自定义了一个字段,也在电子面单基础资料中自定义了相同类型字段,那么客户就可以在这个方法中把获取电子面单界面中的自定义字段值赋值给电子面单基础资料中对应的字段。
5,CustomSetBatchSelectionFilters(ListRegularFilterParameter parameter, string formId, int row)
本方法用于自定义'获取电子面单'界面中的批量回填字段的过滤条件逻辑。一种应用场景是,如果我在'获取电子面单'中的'单据编号'字段里面选择了一个销售出库单,批量回填能选择的出库单必须和'单据编号'里的出库单的收件人相同,这时就可以在这个方法中自定义过滤条件,paramter参数是单据列表过滤条件参数,默认paramter.Filter = "FDocumentStatus <> 'Z' ",即只要不是暂存的单据都可以被选择到,客户可以在此方法中修改Filter属性值,formId参数是单据标识,row是'获取电子面单'中基于0的行号。
6,CustomSetSelectionFilters(ListRegularFilterParameter parameter, string formId)
此方法与前面的方法5类似,不过它只是对'单据编号'字段的自定义过滤逻辑,并且此方法因历史原因没有行号参数。
7,CustomSetSelectionFilters(ListRegularFilterParameter parameter, string formId, int row)
本方法与前面的方法6类似,并且提供了行号参数,默认情况下此方法调用了方法6,因此建议重写了此方法时不用重写方法6。
8,FillKuaidiInfo(FormResult result)
此方法是在'单据编号'字段中选择相关单据后的填充逻辑(批量回填字段没有相关重写逻辑),由于历史原因它也可以被重写,这个方法默认就包含有相关赋值逻辑,一般情况下如果要重写此方法,则要先调用基类的同名方法,不然获取电子面单中很多字段都没有数据,一旦调用了基类同名方法,获取电子面单界面中就追加了选择的单据数据。
最后说下GetKuaidiBillEdit插件会依据客户提单在后面版本中追加可重写的方法,但历史的可重写方法不会删除,即使历史可重写方法的设计不合理也不会删除,因为要确保外部客户重写过历史可重写方法并可能后续客户要升级。
获取电子面单表单插件可重写方法汇总
本文2024-09-23 03:44:42发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-160828.html