SRM其缩写为 Supplier Relationship Management ,SRM的最基本内容包括以下四个方面:供应商分类选择、战略关系发展、供应商谈判和供应商绩效评价。

本文主要介绍使用IMS信息化管理平台及金蝶K3系统搭建SRM系统中的供应商订单交期回复系统与供应商自主对账系统。

一、供应商订单交期回复系统:

1、目的:供应商订单交期回复系统主要解决采购手工传递订单信息所造成的效率低下、传递延误或遗漏、以及后续供应商交期的人工下线确认信息的遗漏。

2、原理:使用IMS系统将封装成视图的在途采购/委外订单提取出来推送给供应商,供应商使用各自账号登录IMS系统查看并打印实时订单信息,并可对订单交期和延期异常原因进行回复,形成“内部下单-自动推送-自主回复-反写K3-内部确认”的环路。

3、实现形式:

(1)使用BOS在采购/委外订单表体增加供应商交期回复字段(日期型)和交期回复内容(字符型)两个字段,如果还需要内部做二次确认,可以再增加一组字段作为二次交期回复的存放列;

(2)在IMS信息化平台创建表单模板:

采购订单表单模板见下

T3 修改ufsystem版本号 t3系统怎么修改制单人_交期回复

委外订单表单模板见下:

T3 修改ufsystem版本号 t3系统怎么修改制单人_供应商协调_02

(3)将IMS后台数据库表名称记录下来后修改成其他名称,然后使用如下SQL语句封装新增一个同名的视图:

采购订单视图语句见下:

CREATE view [dbo].[TNU80Z1]--[TNU80Z1]为IMS系统创建的外购数据表,请根据实际情况调整
as
SELECT convert(int,t.FDetailid) as ID,66 DirID,convert(tinyint,'0') SecLevel,(case when t4.fname<>'' then t4.fname else 'admin' end) Builder,t1.fdate LastModified,(case when t5.fname<>'' then t5.fname else 'admin' end) LastMender,
t1.fbillno FBX0TCY,--订单编号
t1.fcheckdate FWCQI5Q,--下单日期取订单审核日期
t.Fdate F4MFU5L,--PO需求日期
t3.fname FY43Y7N,--供应商名称
t2.fnumber FFMEV5U,--物料代码
t2.fname FQMBUVG,--物料名称
t.fqty F73UQXY,--订单数量
t.fstockqty F9D8KSI,--入库数量
t.FAuxCommitQty FT4STBK,--已交货数量
t.fdetailID FWLKXMI,--行内码
t2.FVersion FIMROWM,--物料版本
t.fentryselfP0270 FBKFLZR,--首次回复交期,fentryselfP0270为BOS后台新增的一个日期型字段列名,请根据实际列名修改
--CONVERT(DATETIME,t.fentryselfP0278,120) F1E289L,--二次回复交期,如果需要供应商做二次确认的话,可以打开
t.fentryselfP0271 FN7ER51,--交期异常原因,fentryselfP0271为BOS后台新增的一个字符型字段列名,请根据实际列名修改
t2.fmodel F3CUNDQ,--规格型号
--t.fentryselfP0272 F4AC2IW,--交付方式
--t2.f_119 F9GZPOJ,--制造商
t.fauxpricediscount F7693XC,--实际含税单价
t.fcess FIN1ADR,--税率
t1.fheadselfp0256 F7QE8KN--PO备注t.fnote
--convert(nvarchar(100),t.fentryselfP0279) FX2DZNU--是否接受交期,如果需要计划做交期确认的话,可以打开
FROM [AIS20140104204141].[dbo].Poorderentry t--采购订单序时簿信息
inner JOIN [AIS20140104204141].[dbo].POOrder t1 ON t1.FInterID = t.FInterID--关联采购订单主表,行内码一致,行业务未取消、状态为非关闭、审核人不为空、行业务未关闭
LEFT JOIN [AIS20140104204141].[dbo].t_icitem t2 ON t2.FItemID = t.FitemID--物料表,引入物料信息
LEFT JOIN [AIS20140104204141].[dbo].t_supplier t3 ON t3.Fitemid = t1.FsupplyID--供应商表,引入供应商姓名
LEFT JOIN [AIS20140104204141].[dbo].t_user t4 ON t4.Fuserid = t1.FbillerID--职员表,引入制单人姓名
LEFT JOIN [AIS20140104204141].[dbo].t_user t5 ON t5.Fuserid = t1.FcheckerID--职员表,引入审核员姓名
INNER JOIN [AIS20140104204141].[dbo].t_BaseProperty  t6 ON t6.FItemID= t.Fitemid
where  t.FMrpClosed=0 and t1.fcancellation =0 and t1.fstatus >0 and t1.FCheckerID is not null and t1.fclosed=0--行业务关闭标识



委外订单视图见下:

CREATE
 view [dbo].[T14181w222220C33]--[T14181w222220C33]为IMS系统创建的外购数据表,请根据实际情况调整
as
SELECT t.Fdetailid as ID,66 DirID,convert(tinyint,'0') SecLevel,case when t4.fname<>'' then t4.fname else 'admin' end Builder,t1.fdate LastModified,case when t4.fname<>'' then t4.fname else 'admin' end LastMender,
convert(nvarchar(11),t1.fbillno) F1412228A52b2051,t1.fdate Fx193A412222217,
t.ffetchdate F14122V2202p2119,convert(nvarchar(30),t3.fname) F161412u22221P29,
convert(nvarchar(50),t2.fnumber) F104122a2221M43,convert(nvarchar(200),t2.fname) F14501p2222I2157,
convert(nvarchar(500),t2.fmodel) F1P4122672u22212,convert(nvarchar(10),t2.Fversion) F1W4211222n22225,
convert(float,t.fqty) F141259222w22Q46,convert(float,t.fstockqty) F189k41222222N57,
convert(float,t.fqty-t.fstockqty) F1413E122222i37,convert(float,t.fauxcommitqty) FJ1412269222h326,
t.fsupconfetchdate F141267cP2222337,convert(nvarchar(1000),t.fsupconmem) F14G122222e1357,
convert(float,t.fallamount) Fp1412B1513512921,convert(float,t.fauxpricediscount) Fj141215153329T30,
convert(float,t.ftaxrate) F1412Vh8915132944,convert(nvarchar(1000),t1.ftext) F141R21c513302912
from [AIS20140104204141].[dbo].icsubcontractentry  t
INNER JOIN [AIS20140104204141].[dbo].icsubcontract t1 ON t1.FInterID = t.FInterID
left JOIN [AIS20140104204141].[dbo].t_icitem t2 on t2.fitemid=t.fitemid
left JOIN [AIS20140104204141].[dbo].t_supplier t3 on t3.fitemid=t1.fsupplyid
left JOIN [AIS20140104204141].[dbo].t_base_emp t4 on t4.fitemid=t1.femployee
where t1.fstatus<>0 and t1.fcancellation=0 and t.fqty-t.fstockqty<>0 and t.fmrpclosed=0



(4)视图封装完毕后,在IMS系统就可以查看实时的在途采购订单与委外订单明细了(在途指的是已下单审核,但是未入库的数据)

T3 修改ufsystem版本号 t3系统怎么修改制单人_供应商协调_03

(5)在IMS如上视图上创建一个触发器,一旦供应商在IMS系统维护了交期数据,就可以自动反写到对应的K3订单数据表中;

采购在途触发器代码见下(本文仅反写首次交期日期和回复内容,其余请根据实际情况调整):

CREATE TRIGGER [dbo].[TR_TNU80Z1] ON [dbo].[TNU80Z1]
        INSTEAD OF UPDATE  
        AS
BEGIN  
           SET NOCOUNT ON  
            BEGIN  
update t1 set 

t1.fentryselfP0270=t.FBKFLZR,--交期
t1.fentryselfP0271=FN7ER51--原因
--t1.fentryselfP0280=getdate() 
from Inserted T
INNER JOIN [AIS20140104204141].dbo.POOrderEntry t1 ON t1.FdetailID = t.id where t1.fentryselfP0270 is null --and t1.fentryselfP0278 is null
--上述触发器在首次交期及二次交期为空时有效,主要用于供应商首次交期回复,更新数据后写入首次交期、写入备注、写入是否接受交期值为‘接受’、首次确认时间
--update t1 set t1.fentryselfP0274=FN7ER51,t1.fentryselfP0279='不接受',t1.fentryselfP0281=getdate() from Inserted T
--INNER JOIN [10.32.4.1].[AIS20100809145719].dbo.POOrderEntry t1 ON t1.FdetailID = t.id where t1.fentryselfP0273<>'' and t1.fentryselfP0278 is null
--上述触发器在首次交期回复且第二次未回复时有效,主要用于计划反确认,更新数据后写入是否接受交期值为‘不接受’、且重新写入备注、写入首次确认时间
--update t1 set t1.fentryselfP0274=FN7ER51,t1.fentryselfP0278=F1E289L,t1.fentryselfP0279='' from Inserted T
--INNER JOIN [10.32.4.1].[AIS20100809145719].dbo.POOrderEntry t1 ON t1.FdetailID = t.id where t1.fentryselfP0273<>'' and t1.fentryselfP0278 is null and t1.fentryselfP0279='不接受'
--上述触发器在首次交期回复且第二次未回复、是否接受交期值为‘不接受’时有效,主要用于供应商二次交期回复,更新数据后写入二次交期、重新写入备注、写入是否接受交期值为空
--update t1 set t1.fentryselfP0274=FBKFLZR,t1.fentryselfP0279='接受' from Inserted T
--INNER JOIN [10.32.4.1].[AIS20100809145719].dbo.POOrderEntry t1 ON t1.FdetailID = t.id where t1.fentryselfP0273<>'' and t1.fentryselfP0278<>'' and t1.fentryselfP0279=''
--上述触发器在两次交期均已回复、是否接受交期值为空时有效,主要用于计划确认二次变更,更新数据后重新写入备注、写入是否接受交期值为‘接受’
 
      END
CREATE TRIGGER [dbo].[TR_T14181w222220C33] ON [dbo].[T14181w222220C33]
        INSTEAD OF UPDATE  
        AS
BEGIN  
           BEGIN TRANSACTION  
           SET NOCOUNT ON  
            BEGIN   
update t1 set t1.fsupconfetchdate=t.F141267cP2222337,t1.fsupconmem=t.F14G122222e1357 from Inserted T
INNER JOIN [AIS20140104204141].dbo.icsubcontractentry t1 ON t1.Fdetailid = t.id
        END
        IF (@@error <> 0)  
            ROLLBACK TRANSACTION  
        ELSE  
            COMMIT TRANSACTION  
        END

alter view [dbo].[T1jW4834518269]
AS
select DISTINCT convert(int,t1.FDetailid) as ID,83 DirID,convert(tinyint,'0') SecLevel,'admin' Builder,getdate() LastModified,'admin' LastMender,
t.fdate [F1485y179P82624],--入库日期
t.fbillno [F141485u182M653],--入库单号
t.fsupplyid [Fr148545182H73],--供应商名称
t.fnumber [F614851F827p15],--物料代码
t.fitemid [F1485u13782J724],--物料名称
t.fmodel [F1934851w827U35],--规格型号
t.funitid [F147Q48n5182750],--计量单位
t.fauxprice [F14851828P38c12],--采购不含税单价
t.fqty [Fc14851V8247821],--入库数量
t3.fvalueaddrate [F157I48610x179],--根据供应商资料增值税率字段
t1.forderbillno [F1Ma48617101810],--采购订单单号
t.fsourcebillno [F14208X61g01833],--收料通知单单号
convert(nvarchar,t1.fdetailid,10) [F148x61235F243],--入库单行内码
t2.fpricediscount [F12J4p86101748]--含税单价
from [AIS20140104204141].[dbo].vwICBill_1 t
inner JOIN [AIS20140104204141].[dbo].ICStockBillEntry t1 ON t1.FinterID = t.FinterID and t1.fentryid=t.fentryid
inner join [AIS20140104204141].[dbo].t_supplier t3 on t3.fname=t.fsupplyid 
inner JOIN [AIS20140104204141].[dbo].poorderentry t2 ON t2.FinterID = t1.forderinterid and t2.fentryid=t1.forderentryid
where  t.fcancellation='' and t.fcheckflag ='※' and t.fhookflag=''
CREATE VIEW [dbo].[T152k561Q92019]
AS
select DISTINCT convert(int,t1.FDetailid) as ID,83 DirID,convert(tinyint,'0') SecLevel,'admin' Builder,getdate() LastModified,'admin' LastMender,
t.fsupplyid [F15255H592l135],--供应商名称,
t.fdate [Ff15258292C27],--入库日期,
t.fbillno [FI15182592s221],--入库单号,
t.fnumber [F35152592vR232],--物料编码,
t.fitemid [F15v24659D2240],--物料名称,
t.fmodel [F1P5262j592247],--规格型号,
t.fauxqty [F1525R9542b33],--实收数量,
t.fprocessprice [FP1525x9852321],--不含税单价,
t2.fvalueaddrate [FU1k5872592333],--税率,
round(t.fprocessprice*(t2.fvalueaddrate+100)/100,2)*t.fauxqty-t.ftaxamount [F18852i59T2344],--不含税金额,
t.ftaxamount [F152v5921E43],--税额,
t1.forderbillno [F15259s362P76],--订单单号,
round(t.fprocessprice*(t2.fvalueaddrate+100)/100,2) [F152yY86592716],--含税单价,
round(t.fprocessprice*(t2.fvalueaddrate+100)/100,2)*t.fauxqty [F1U55725927p33]--价税合计 
from [AIS20140104204141].[dbo].vwicbill_5 t 
inner JOIN [AIS20140104204141].[dbo].ICStockBillEntry t1 ON t1.FinterID = t.FinterID and t1.fentryid=t.fentryid
inner JOIN [AIS20140104204141].[dbo].ICStockBill t3 ON t3.FinterID = t.FinterID
left JOIN [AIS20140104204141].[dbo].t_supplier t2 ON t2.FitemID = t3.fsupplyid
where t.fcheckflag='※' and t.fcancellation='' and t.fhookflag=''