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