Files
e-Book/3.玩轉SQL/參考資料/erp/Day7/參考文檔/BPM-sp/GEXBPM_SIGNBACK.txt
T

82 lines
3.0 KiB
Plaintext

CREATE PROC DBO.GEXBPM_SIGNBACK
(
@BILLTAG VARCHAR(20), --單別
@BILLNO VARCHAR(20), --簽核單號
@SOURCESEQNO INT, --簽核單序號
@LOGINID VARCHAR(30),
@BACKPERSON VARCHAR(30), --退回給誰
@SIGNMEMO NVARCHAR(600)
)
AS
/*
Function : FLOW 退簽時的更新資料程序
Description: 行動簽核 @SOURCESEQNO = -1
Build Date : 2011/10/05
Modify History
Item Who Date Modify Docs
==== ========== ========== ================================================
1 Michael 2013/08/09 當退簽人員未傳入時, 依參數取得是前一筆或第一筆
本需求是配合行動簽核的需求修改
*/
DECLARE @BACKWHO VARCHAR(10)
DECLARE @PRE_DATE DATETIME
DECLARE @SEQ1 INT
DECLARE @SEQ2 INT
DECLARE @CNT INT
--傳入的是原單號還是簽核單號
SELECT @CNT=COUNT(*) FROM BPM_FLOWDATA_M WHERE BILLTAG = @BILLTAG AND BILLNO = @BILLNO
IF @CNT <= 0 SELECT @BILLNO=BILLNO FROM BPM_FLOWDATA_M WHERE BILLTAG = @BILLTAG AND SOURCEBILLNO = @BILLNO
SELECT @SEQ1=MAX(SEQNO)+1,@PRE_DATE=MAX(BILLDATE) FROM BPM_FLOWDATA_LOG WHERE BILLNO = @BILLNO
--行動簽核未指定退回給誰, 如果 @BACKPERSON 為空, 依參數設定, 退回前一人或原上呈人
IF ISNULL(@BACKPERSON,'') = ''
BEGIN
--
SELECT @BACKWHO=PARAVALUE FROM PARAMETER WHERE PARATYPE = 'SYS' AND PARAFIELD = 'BPMBACKWHO'
IF @BACKWHO IS NULL SET @BACKWHO = 'F'
IF @BACKWHO = 'P'
BEGIN
SELECT @SEQ2=MAX(SEQNO) FROM BPM_FLOWDATA_LOG WHERE BILLNO = @BILLNO
SELECT @BACKPERSON=SIGNPERSON FROM BPM_FLOWDATA_LOG WHERE BILLNO = @BILLNO AND SEQNO = @SEQ2
END
ELSE BEGIN
SELECT @BACKPERSON=SIGNPERSON FROM BPM_FLOWDATA_LOG WHERE BILLNO = @BILLNO AND SEQNO = 0
END
END
--防錯, 如果 @SOURCESEQNO < 0, 則要取目前待簽的那一筆 SEQNO(配合行動簽核修改)
IF @SOURCESEQNO < 0 SELECT TOP 1 @SOURCESEQNO=SEQNO,@LOGINID=SIGNPERSON FROM BPM_FLOWDATA_D WHERE BILLNO = @BILLNO AND FLOWSTATUS = 0
--寫 LOG
INSERT INTO BPM_FLOWDATA_LOG (BILLNO,SOURCESEQNO,SEQNO,FLOWINDATE,BILLDATE,FLOWSTATUS,SIGNPERSON,BACKTOPERSON,BACKMEMOCHAR)
SELECT @BILLNO,@SOURCESEQNO,@SEQ1,@PRE_DATE,GETDATE(),2,@LOGINID,@BACKPERSON,@SIGNMEMO
DECLARE @SENDMAIL CHAR(1)
DECLARE @ORG_PERSON VARCHAR(20)
DECLARE @SOURCEBILLNO VARCHAR(20)
DECLARE @SIGN_TITLE NVARCHAR(30)
SELECT @SEQ2=MIN(SEQNO) FROM BPM_FLOWDATA_D WHERE BILLNO = @BILLNO AND SIGNPERSON = @BACKPERSON
SELECT @SOURCEBILLNO=SOURCEBILLNO FROM BPM_FLOWDATA_M WHERE BILLNO = @BILLNO
SELECT @ORG_PERSON=SIGNPERSON FROM BPM_FLOWDATA_D WHERE BILLNO = @BILLNO AND SEQNO = 0
--將 BPM_FLOWDATA_D 狀態改為 [2-退回]
UPDATE BPM_FLOWDATA_D SET FLOWSTATUS = 0 WHERE BILLNO = @BILLNO AND SEQNO = @SEQ2
UPDATE BPM_FLOWDATA_D SET FLOWSTATUS = 2 WHERE BILLNO = @BILLNO AND SEQNO > @SEQ2 AND SEQNO <= @SOURCESEQNO
SELECT @SENDMAIL=SENDMAIL,@SIGN_TITLE=SIGN_TITLE FROM BPM_FLOWSETUP_D WHERE BILLTAG = @BILLTAG AND SEQNO = @SEQ2
IF @SENDMAIL = 'Y'
BEGIN
--INSERT INTO BPM_SENDMAIL (LOGINID,SENDDATE,SENDWHO,NOTIFY_ONLY,BILLNO,SEQNO)
--SELECT @LOGINID,GETDATE(),@ORG_PERSON,'B',@BILLNO,@SOURCESEQNO
--sql db sendmail
EXEC GEX_SEND_FLOWMAIL 'B',@ORG_PERSON, @BILLNO, @SIGN_TITLE
END