78 lines
2.5 KiB
Plaintext
78 lines
2.5 KiB
Plaintext
CREATE PROC DBO.GEXBPM_DELAYSEND
|
|
AS
|
|
/*
|
|
Function : FLOW 催簽作業的 sp
|
|
Description: 簡單的說, 催簽就是當有簽單卡住時, 自動再發送 mail 通知卡單的人快簽
|
|
我們的程式當然是撈出逾時的資料, 然後發 mail 如此
|
|
自動催簽的方法, 我是擴充 GEX_PREPROCESS_V2 這個 sp
|
|
這個 sp 會在 Login 時自動執行, 所以就加在現有的機制中了(每天執行一次)
|
|
Build Date : 2012/11/14
|
|
|
|
Modify History
|
|
Item Who Date Modify Docs
|
|
==== ========== ========== ================================================
|
|
1 Michael 2013/07/17 新增每一關簽核也要判斷是否逾期
|
|
|
|
*/
|
|
|
|
--取得逾期的簽核資料
|
|
WITH BPM1
|
|
AS
|
|
(
|
|
SELECT A.BILLNO,MAX(A.BILLDATE) BILLDATE FROM BPM_FLOWDATA_LOG A
|
|
LEFT JOIN BPM_FLOWDATA_M B ON A.BILLNO = B.BILLNO
|
|
WHERE B.FLOWSTATUS <= 3 --未完成
|
|
GROUP BY A.BILLNO
|
|
), BPM2
|
|
AS
|
|
(
|
|
SELECT A.BILLNO,A.FLOWINDATE BILLDATE FROM BPM_FLOWDATA_LOG A
|
|
LEFT JOIN BPM_FLOWDATA_M B ON A.BILLNO = B.BILLNO
|
|
WHERE B.FLOWSTATUS <= 3 --未完成
|
|
AND A.SEQNO = 0
|
|
), BPM3
|
|
AS
|
|
(
|
|
SELECT A.BILLNO,DATEDIFF(DAY,A.BILLDATE,B.BILLDATE) DIFFDATE,BPM2.EMERGENCYDATE FROM BPM2 A
|
|
LEFT JOIN BPM1 B ON A.BILLNO = B.BILLNO
|
|
LEFT JOIN BPM_FLOWDATA_M BPM1 ON A.BILLNO = BPM1.BILLNO
|
|
LEFT JOIN BPM_FLOWSETUP_M BPM2 ON BPM1.BILLTAG = BPM2.BILLTAG
|
|
)
|
|
|
|
SELECT BILLNO,dbo.GEXFUNC_GETNEXT(BILLNO) SIGNPERSON INTO #DELAY_BPM FROM BPM3 WHERE DIFFDATE > EMERGENCYDATE
|
|
|
|
--新增每一關簽核也要判斷是否逾期
|
|
INSERT INTO #DELAY_BPM (BILLNO,SIGNPERSON)
|
|
SELECT A.BILLNO,dbo.GEXFUNC_GETNEXT(A.BILLNO) FROM BPM_FLOWDATA_LOG A
|
|
LEFT JOIN BPM_FLOWDATA_M B ON A.BILLNO = B.BILLNO
|
|
LEFT JOIN BPM_FLOWSETUP_D X ON X.BILLTAG = B.BILLTAG AND A.SOURCESEQNO = X.SEQNO
|
|
WHERE CASE WHEN ISNULL(X.SIGNDAYS,0)=0 THEN 0 ELSE DATEDIFF(DAY,A.FLOWINDATE,GETDATE()) - X.SIGNDAYS END > 0
|
|
AND B.FLOWSTATUS <= 3 --未完成
|
|
|
|
DECLARE @BILLNO VARCHAR(20)
|
|
DECLARE @SIGNPERSON VARCHAR(20)
|
|
|
|
DECLARE contact_cursor CURSOR FOR
|
|
SELECT BILLNO,SIGNPERSON FROM #DELAY_BPM
|
|
|
|
OPEN contact_cursor
|
|
|
|
-- Perform the first fetch.
|
|
FETCH NEXT FROM contact_cursor
|
|
INTO @BILLNO,@SIGNPERSON
|
|
|
|
-- Check @@FETCH_STATUS to see if there are any more rows to fetch.
|
|
WHILE @@FETCH_STATUS = 0
|
|
BEGIN
|
|
--發送 mail
|
|
EXEC GEX_SEND_FLOWMAIL 'S',@SIGNPERSON, @BILLNO, '催簽: 簽核過期'
|
|
|
|
FETCH NEXT FROM contact_cursor
|
|
INTO @BILLNO,@SIGNPERSON
|
|
END
|
|
|
|
CLOSE contact_cursor
|
|
DEALLOCATE contact_cursor
|
|
|
|
DROP TABLE #DELAY_BPM
|