开发目的:商务下单后,计划人员可根据实际交付情况回复销售订单预计交付时间,并将回复日期自动反写至K3数据,可供后续销售订单按期交付率统计,也可供商务、销售人员了解订单在生产端的相关交付动态。
开发工具:金蝶K3;IMS;MSSQL
开发逻辑:先在K3销售订单表体中增加交期回复列字段,作为数据反写的容器;将销售订单信息通过视图方式展示至IMS前台;计划在IMS前台修改时,在IMS对应视图上增加触发器,将计划前端回复日期反写至对应的销售订单数据表体条目数据中,商务可在销售订单中查看即时的生产回复交期。
开发过程:
1、K3单据自定义增加生产交期回复字段。K3-客户端工具包-辅助工具-单据自定义进入,增加分录列“计划交期回复”,保存后退出;
2、在IMS数据库搭建销售订单交期回复系统模块;
-
CREATE view [dbo].[TA0QJZP]
-
as
-
SELECT distinct convert(int,row_number()over(order by FRAYEKK)) as id,a.* from(
-
select
-
66 DirID,
-
convert(tinyint,'0') SecLevel,
-
convert(nvarchar(255),t10.fname) Builder,
-
getdate() LastModified,
-
convert(nvarchar(255),'admin') LastMender,
-
t1.fbillno as FZYRUJ6,--订单号
-
t2.fname as F1XUPMM,--客户名称
-
T3.Fname as F0VTA4K,--销售分公司
-
t4.fname as FCBCGMJ,--业务员
-
t8.fnumber as FG8XD3M,--物料编码
-
t8.fname as F2JJC6M,--物料名称
-
t.fauxqty as FYNQP5Z,--下单台数,没有出库时,取订单数
-
t1.fdate as FRAYEKK,--下单日期
-
t.fdate as FB6UX7E,--需求日期
-
case when t8.FERpClsID=1 then '/' when T3.Fname='国际销售' then t9.fbillno else '/' end as FPSV82Q,--生产任务单
-
t9.FStockQty as FCL5R3B,--入库数量
-
t9.FCloseDate as F8Y4KKW,--结案日期
-
CONVERT(DATETIME,t.fentryselfs0167,120) as FGLAZ5V,--计划回复交期
-
t.finterid as F4LJ89I,--订单内码
-
t.fitemid as F9LZIRY--订单物料内码
-
from [K3].[AIS20100809145719].[dbo].seorderentry t WITH(NOLOCK)--销售订单行数据
-
inner join [K3].[AIS20100809145719].[dbo].SEOrder T1 ON T1.FinterID=T.finterid and t1.fcancellation=0 and t1.fchangemark=0--订单头数据
-
inner join [K3].[AIS20100809145719].[dbo].t_organization T2 ON T2.FitemID=T1.fcustid --购货单位
-
inner join [K3].[AIS20100809145719].[dbo].t_department T3 ON T3.FitemID=T1.fdeptid--销售部门
-
inner join [K3].[AIS20100809145719].[dbo].t_Base_Emp T4 ON T4.FitemID=T1.fempid--业务员
-
inner join [K3].[AIS20100809145719].[dbo].t_icitem T8 ON T8.FitemID=T.fitemid and t8.fparentid<>22561 --物料表
-
left join [K3].[AIS20100809145719].[dbo].icmo t9 on t9.forderinterid=t.finterid and t9.fitemid=t.fitemid--生产任务单
-
LEFT JOIN [K3].[AIS20100809145719].[dbo].t_User t10 ON t10.FUserID = t1.FBillerID--职员表,引入制单人姓名
-
where t.fcommitqty=0 and t.fauxprice>0 and t.fmrpautoclosed=1 and t.fstockqty=0
-
)a
4、在创建的视图上增加一个触发器,一旦IMS系统的FGLAZ5V列数据有变动,就将该数值写入K3数据库销售订单行数据表Seorderentry中,匹配值为销售订单内码;
-
CREATE TRIGGER [TR_TA0QJZP] ON [dbo].[TA0QJZP]
-
INSTEAD OF UPDATE
-
AS
-
BEGIN
-
BEGIN TRANSACTION
-
SET NOCOUNT ON
-
BEGIN
-
update t1 set t1.fentryselfs0167=t.FGLAZ5V from Inserted T
-
INNER JOIN [K3].[AIS20100809145719].dbo.SeorderEntry t1 ON t1.FinterID = t.F4LJ89I-- 销售行数据匹配,计划只需要回复订单中的一条数据,该订单均会被写入回复日期,如果需要计划针对每一条数据进行回复,可以加上and t1.fitemid=t.F9LZIRY限制条件
-
END
-
IF (@@error <> 0)
-
ROLLBACK TRANSACTION
-
ELSE
-
COMMIT TRANSACTION
-
END
5、IMS前端页面展示效果:可以将销售订单信息、生产任务单信息、入库情况等直接展示出来;
6、计划找到需要回复交期的数据,在计划交期回复列右键点击“就地编辑”,即可实现交期的回复,输入后回车,数据即反写到K3数据库中。
7、可以在K3系统中查到回复的交期数据;