天天看點

IMS+金蝶K3搭建簡易版本供應商協同管理平台(SRM)

SRM其縮寫為 Supplier Relationship Management ,SRM的最基本内容包括以下四個方面:供應商分類選擇、戰略關系發展、供應商談判和供應商績效評價。

本文主要介紹使用IMS資訊化管理平台及金蝶K3系統搭建SRM系統中的供應商訂單交期回複系統與供應商自主對賬系統。

一、供應商訂單交期回複系統:

1、目的:供應商訂單交期回複系統主要解決采購手工傳遞訂單資訊所造成的效率低下、傳遞延誤或遺漏、以及後續供應商交期的人工下線确認資訊的遺漏。

2、原理:使用IMS系統将封裝成視圖的在途采購/委外訂單提取出來推送給供應商,供應商使用各自賬号登入IMS系統檢視并列印實時訂單資訊,并可對訂單交期和延期異常原因進行回複,形成“内部下單-自動推送-自主回複-反寫K3-内部确認”的環路。

3、實作形式:

(1)使用BOS在采購/委外訂單表體增加供應商交期回複字段(日期型)和交期回複内容(字元型)兩個字段,如果還需要内部做二次确認,可以再增加一組字段作為二次交期回複的存放列;

(2)在IMS資訊化平台建立表單模闆:

采購訂單表單模闆見下

IMS+金蝶K3搭建簡易版本供應商協同管理平台(SRM)

委外訂單表單模闆見下:

IMS+金蝶K3搭建簡易版本供應商協同管理平台(SRM)

(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系統就可以檢視實時的在途采購訂單與委外訂單明細了(在途指的是已下單稽核,但是未入庫的資料)

IMS+金蝶K3搭建簡易版本供應商協同管理平台(SRM)

(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訂單中檢視反寫情況,至此交期回複系統開發完畢。
IMS+金蝶K3搭建簡易版本供應商協同管理平台(SRM)
IMS+金蝶K3搭建簡易版本供應商協同管理平台(SRM)
二、供應商自主對賬系統: 1、目的:供應商自主對賬系統主要解決供應商對賬确認被動、紙單資料逐一确認繁瑣、付款依據手工制作繁瑣易錯的問題。 2、原理:使用IMS系統将封裝成視圖的已稽核且未取消且未勾稽的外購入庫和委外加工入庫提取出來推送給供應商,供應商使用各自賬号登入IMS系統檢視并列印實時的對賬清單資訊,形成“内部收貨入庫-自動推送-供應商确認-采購确認-供應商開票-采購付款-發票勾稽入賬”的環路。 3、實作形式: (1)IMS資訊化平台建立表單模闆: 外購入庫表單模闆見下:
IMS+金蝶K3搭建簡易版本供應商協同管理平台(SRM)
委外架構入庫表單模闆見下:
IMS+金蝶K3搭建簡易版本供應商協同管理平台(SRM)
(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=''
           
(4)IMS系統确認資料是否展現,如果正常顯示,至此開發完畢。
IMS+金蝶K3搭建簡易版本供應商協同管理平台(SRM)

繼續閱讀