82 lines
3.0 KiB
Plaintext
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
|