销售订单新变更单物流自动跟踪二开案例
销售物流信息列表默认只会显示销售订单,发货通知单,销售出库单,销售退货单上的物流信息,其它单据不显示。如果要显示其它单据,则需要二开修改V_SAL_LOGISTICSINFO视图,本文以追加销售订单新变更单上的物流单号为例演示如何配置(注意数据库是基于SQL Server,星空版本基于2023年11月,客户可参阅此文类似地添加其它单据上的物流单号)。首先定义视图修改语句,使用UNION ALL 追加销售订单新变更单的物流单号,如下图1-1所示:
图1-1
上图1-1对应的视图修改SQL脚本如下:
IF EXISTS (SELECT 1 FROM (SELECT NAME AS TABLE_NAME, XTYPE AS TABLE_XTYPE FROM sysobjects WHERE XTYPE = 'U' OR XTYPE = 'V') AS KSQL_USERTABLES WHERE TABLE_NAME = 'V_SAL_LOGISTICSINFO') BEGIN DROP VIEW V_SAL_LOGISTICSINFO END ; GO CREATE VIEW V_SAL_LOGISTICSINFO AS SELECT ((((CONVERT(VARCHAR(8000), OD.FID) + '-') + OT.FOBJECTTYPEID) + '-') + CONVERT(VARCHAR(8000), OD.FENTRYID)) fid, ((((CONVERT(VARCHAR(8000), OD.FID) + '-') + OT.FOBJECTTYPEID) + '-') + CONVERT(VARCHAR(8000), OD.FENTRYID)) fmasterid, ((CONVERT(VARCHAR(8000), OD.FID) + '-') + OT.FOBJECTTYPEID) forderid, OT.FDATE, OI.FSETTLECURRID, OT.FBILLTYPEID, OT.FBILLNO fsalbillno, OT.FOBJECTTYPEID, OT.FSALEORGID, OT.FCUSTID fcustomerid, OD.FTRACESTATUS, OD.FLOGCOMID, OD.FCARRYBILLNO, OD.FPHONENUMBER, OD.FFROM, OD.FTO FROM T_SAL_ORDER OT INNER JOIN T_SAL_ORDERTRACE OD ON OT.FID = OD.FID INNER JOIN T_SAL_ORDERFIN OI ON OI.FID = OD.FID WHERE OD.FCARRYBILLNOTYPE IN ('M', 'R') UNION ALL SELECT ((((CONVERT(VARCHAR(8000), DR.FID) + '-') + DE.FOBJECTTYPEID) + '-') + CONVERT(VARCHAR(8000), DR.FENTRYID)) fid, ((((CONVERT(VARCHAR(8000), DR.FID) + '-') + DE.FOBJECTTYPEID) + '-') + CONVERT(VARCHAR(8000), DR.FENTRYID)) fmasterid, ((CONVERT(VARCHAR(8000), DR.FID) + '-') + DE.FOBJECTTYPEID) forderid, DE.FDATE, DF.FSETTLECURRID, DE.FBILLTYPEID, DE.FBILLNO fsalbillno, DE.FOBJECTTYPEID, DE.FSALEORGID, DE.FCUSTOMERID fcustomerid, DR.FTRACESTATUS, DR.FLOGCOMID, DR.FCARRYBILLNO, DR.FPHONENUMBER, DR.FFROM, DR.FTO FROM T_SAL_DELIVERYNOTICE DE INNER JOIN T_SAL_DELIVERYNOTICETRACE DR ON DE.FID = DR.FID INNER JOIN T_SAL_DELIVERYNOTICEFIN DF ON DF.FID = DR.FID WHERE DR.FCARRYBILLNOTYPE IN ('M', 'R') UNION ALL SELECT ((((CONVERT(VARCHAR(8000), UT.FID) + '-') + OU.FOBJECTTYPEID) + '-') + CONVERT(VARCHAR(8000), UT.FENTRYID)) fid, ((((CONVERT(VARCHAR(8000), UT.FID) + '-') + OU.FOBJECTTYPEID) + '-') + CONVERT(VARCHAR(8000), UT.FENTRYID)) fmasterid, ((CONVERT(VARCHAR(8000), UT.FID) + '-') + OU.FOBJECTTYPEID) forderid, OU.FDATE, UI.FSETTLECURRID, OU.FBILLTYPEID, OU.FBILLNO fsalbillno, OU.FOBJECTTYPEID, OU.FSALEORGID, OU.FCUSTOMERID fcustomerid, UT.FTRACESTATUS, UT.FLOGCOMID, UT.FCARRYBILLNO, UT.FPHONENUMBER, UT.FFROM, UT.FTO FROM T_SAL_OUTSTOCK OU INNER JOIN T_SAL_OUTSTOCKTRACE UT ON OU.FID = UT.FID INNER JOIN T_SAL_OUTSTOCKFIN UI ON UI.FID = UT.FID WHERE UT.FCARRYBILLNOTYPE IN ('M', 'R') UNION ALL SELECT ((((CONVERT(VARCHAR(8000), RT.FID) + '-') + RE.FOBJECTTYPEID) + '-') + CONVERT(VARCHAR(8000), RT.FENTRYID)) fid, ((((CONVERT(VARCHAR(8000), RT.FID) + '-') + RE.FOBJECTTYPEID) + '-') + CONVERT(VARCHAR(8000), RT.FENTRYID)) fmasterid, ((CONVERT(VARCHAR(8000), RT.FID) + '-') + RE.FOBJECTTYPEID) forderid, RE.FDATE, RI.FSETTLECURRID, RE.FBILLTYPEID, RE.FBILLNO fsalbillno, RE.FOBJECTTYPEID, RE.FSALEORGID, RE.FRETCUSTID fcustomerid, RT.FTRACESTATUS, RT.FLOGCOMID, RT.FCARRYBILLNO, RT.FPHONENUMBER, RT.FFROM, RT.FTO FROM T_SAL_RETURNSTOCK RE INNER JOIN T_SAL_RETURNSTOCKTRACE RT ON RE.FID = RT.FID INNER JOIN T_SAL_RETURNSTOCKFIN RI ON RI.FID = RT.FID WHERE RT.FCARRYBILLNOTYPE IN ('M', 'R') UNION ALL SELECT ((((CONVERT(VARCHAR(8000), OD.FID) + '-') + OT.FOBJECTTYPEID) + '-') + CONVERT(VARCHAR(8000), OD.FENTRYID)) fid, ((((CONVERT(VARCHAR(8000), OD.FID) + '-') + OT.FOBJECTTYPEID) + '-') + CONVERT(VARCHAR(8000), OD.FENTRYID)) fmasterid, ((CONVERT(VARCHAR(8000), OD.FID) + '-') + OT.FOBJECTTYPEID) forderid, OT.FDATE, OI.FSETTLECURRID, OT.FBILLTYPEID, OT.FBILLNO fsalbillno, OT.FOBJECTTYPEID, OT.FSALEORGID, OT.FCUSTID fcustomerid, OD.FTRACESTATUS, OD.FLOGCOMID, OD.FCARRYBILLNO, OD.FPHONENUMBER, OD.FFROM, OD.FTO FROM T_SAL_XORDER OT INNER JOIN T_SAL_XORDERTRACE OD ON OT.FID = OD.FID INNER JOIN T_SAL_XORDERFIN OI ON OI.FID = OD.FID WHERE OD.FCARRYBILLNOTYPE IN ('M', 'R')
注意上文中的SELECT从句和WHERE条件在不同星空版本中是有不同列的,要根据实际的星空版本对应的V_SAL_LOGISTICSINFO 视图追加 UNION ALL 从句,建议其中的FID, FMASTERID, FORDERID字段取值逻辑要参照标准销售订单(FID要在整个视图中唯一)。视图定义语句修改完毕后就可以直接跳转查询物流详细信息了,下图1-2为销售订单新变更单的'物流查询'按钮跳转示意图:
图1-2
下图1-3为执行计划'销售物流更新'手工点击运行时生成的中间记录表 T_SAL_LOGISTICINFOPLAN 的数据,有关执行计划'销售物流更新'的介绍可参阅论坛: https://vip.kingdee.com/article/469227469845996800 了解详情,由于本地测试环境网络限制(本地为研发内网环境,没有访问快递100等第三方应用的权限)可以忽略执行情况中有 '基础连接已经关闭**' 的失败信息。
图1-3
注意事项:
1,基础资料'销售物流信息'的列表插件Kingdee.K3.SCM.Sal.Business.PlugIn.SalLogistInfoList中的PrepareFilterParameter方法会根据传进来的FORDERID参数过滤列表数据,因此从其它单据上通过'物流查询'按钮跳转到销售物流信息列时要传入正确的FOrderId,标准功能是通过调用工具类方法Kingdee.K3.SCM.Sal.Business.PlugIn.Kuaidi.KD100Tool.SkipToLogisticInfo(this); 实现的,客户二开时可以反编辑下此方法。
2,销售订单新变更单默认自动继承了销售订单上的插件Kingdee.K3.SCM.Sal.Business.PlugIn.SaleOrderEdit,此插件在'物流查询'按钮单击时会向销售物流信息列表插件传入正确的FORDERID。如果是其它单据,则要在二开代码中传入正确FORDERID,如果FORDERID在视图V_SAL_LOGISTICSINFO 中定义的比较规范,则可以直接二开插件相应按钮事件处理程序中调用工具类方法Kingdee.K3.SCM.Sal.Business.PlugIn.Kuaidi.KD100Tool.SkipToLogisticInfo(this); 即可。
销售订单新变更单物流自动跟踪二开案例
本文2024-09-23 02:47:14发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-154695.html