SRM其缩写为 Supplier Relationship Management ,SRM的最基本内容包括以下四个方面:供应商分类选择、战略关系发展、供应商谈判和供应商绩效评价。
本文主要介绍使用IMS信息化管理平台及金蝶K3系统搭建SRM系统中的供应商订单交期回复系统与供应商自主对账系统。
一、供应商订单交期回复系统:
1、目的:供应商订单交期回复系统主要解决采购手工传递订单信息所造成的效率低下、传递延误或遗漏、以及后续供应商交期的人工下线确认信息的遗漏。
2、原理:使用IMS系统将封装成视图的在途采购/委外订单提取出来推送给供应商,供应商使用各自账号登录IMS系统查看并打印实时订单信息,并可对订单交期和延期异常原因进行回复,形成“内部下单-自动推送-自主回复-反写K3-内部确认”的环路。
3、实现形式:
(1)使用BOS在采购/委外订单表体增加供应商交期回复字段(日期型)和交期回复内容(字符型)两个字段,如果还需要内部做二次确认,可以再增加一组字段作为二次交期回复的存放列;
(2)在IMS信息化平台创建表单模板:
委外订单表单模板见下:
(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
(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
(6)测试刚生效的触发器是否OK,可以到K3订单中查看反写情况,至此交期回复系统开发完毕。
二、供应商自主对账系统:
1、目的:供应商自主对账系统主要解决供应商对账确认被动、纸单数据逐一确认繁琐、付款依据手工制作繁琐易错的问题。
2、原理:使用IMS系统将封装成视图的已审核且未取消且未勾稽的外购入库和委外加工入库提取出来推送给供应商,供应商使用各自账号登录IMS系统查看并打印实时的对账清单信息,形成“内部收货入库-自动推送-供应商确认-采购确认-供应商开票-采购付款-发票勾稽入账”的环路。
3、实现形式:
(1)IMS信息化平台创建表单模板:
外购入库表单模板见下:
委外架构入库表单模板见下:
(2)请先确认开票税率逻辑是根据供应商资料还是根据采购订单,如果是供应商资料、确保K3供应商主数据的税率字段已经维护完毕,因为供应商开票会根据该字段计算相应的税点;如果是采购订单自行录入,需要定义好入库单与订单之间的税率字段下推对应逻辑。本文以供应商字段为例。
(3)将IMS后台数据库表名称记录下来后修改成其他名称,然后使用如下SQL语句封装新增一个同名的视图:
外购入库视图代码见下: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=''