UPDATE TBDD_MODULES SET DB_VERSION = '1.5.4.3' WHERE SHORT_NAME = 'SIG_ENV_CR' GO IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'TBSIG_RECEIVER' AND COLUMN_NAME = 'CULTURE') BEGIN PRINT 'SPALTE CULTURE EXISTIERT NICHT IN TBSIG_RECEIVER' ALTER TABLE [dbo].TBSIG_RECEIVER ADD CULTURE VARCHAR(10); END GO IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'TBSIG_ENVELOPE' AND COLUMN_NAME = 'SOURCE') BEGIN PRINT 'SPALTE SOURCE EXISTIERT NICHT IN TBSIG_ENVELOPE' ALTER TABLE [dbo].TBSIG_ENVELOPE ADD SOURCE VARCHAR(10) NOT NULL DEFAULT 'FRONTEND'; END GO IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'TBSIG_ENVELOPE' AND COLUMN_NAME = 'COMMENT') BEGIN ALTER TABLE [dbo].TBSIG_ENVELOPE ADD COMMENT VARCHAR(128) ; END GO --Changed 23.04.2025 MS Neuer Dokumenten und Withdrawn-Status ALTER PROCEDURE [dbo].[PRSIG_GET_CLOSED_ENVELOPES_FOR_USER] @pUSRID INT AS BEGIN SELECT * FROM [dbo].[TBSIG_ENVELOPE] WHERE USER_ID = @pUSRID AND STATUS IN (1006,1007,1008,1009,10007,10009) ORDER BY CHANGED_WHEN Desc END GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO --Changed 12.05.2025 MS Status 3004 when Messages sent --Changed 09.05.2025 MS Withdrawn nur als Status in History --Changed 23.04.2025 MS Neuer Dokumenten und Withdrawn-Status --CHANGED 06.06.2024 MS Status 2007, emailMeldungen integriert --CHANGED 11.06.2024 MS Status 2007, Cursor für andere REceiver ALTER TRIGGER [dbo].[TBSIG_ENVELOPE_HISTORY_AFT_INS] ON [dbo].[TBSIG_ENVELOPE_HISTORY] WITH EXECUTE AS CALLER FOR INSERT AS BEGIN TRY DECLARE @GUID BIGINT, @ENVELOPE_ID INTEGER, @STATUS INTEGER, @USER_REFERENCE VARCHAR(100) SELECT @GUID = GUID, @ENVELOPE_ID = ENVELOPE_ID, @STATUS = STATUS, @USER_REFERENCE = USER_REFERENCE FROM INSERTED PRINT '@USER_REFERENCE: ' + @USER_REFERENCE PRINT 'STATUS IS: ' + CONVERT(VARCHAR(10),@STATUS) --PRÜFEN OB ES EIN STATUS VOM WEBCLIENT IST 0 2 IF LEFT(CONVERT(VARCHAR(5),@STATUS),1) = 1 BEGIN PRINT 'REGULÄRER 1erStatus.. ' IF @STATUS IN (1001, 1002, 1003, 1007, 1008, 1009,10009) BEGIN UPDATE TBSIG_ENVELOPE SET STATUS = @STATUS WHERE GUID = @ENVELOPE_ID; --IF @STATUS In (1009,10009) AND @USER_REFERENCE <> 'API' -- INSERT INTO TBSIG_ENVELOPE_HISTORY (ENVELOPE_ID,STATUS,ADDED_WHEN,ACTION_DATE) VALUES (@ENVELOPE_ID,3006,GETDATE(),GETDATE()); --MessageWithdrawn/Deleted Sent END END ELSE IF LEFT(CONVERT(VARCHAR(5),@STATUS),1) = 2 BEGIN IF @STATUS = 2005 /*DOKUMENT SIGINIERT*/ BEGIN DECLARE @COUNT_SIGNED INT, @COUNT_SIGNERS INT SELECT @COUNT_SIGNED = COUNT(GUID) FROM TBSIG_ENVELOPE_HISTORY WHERE ENVELOPE_ID = @ENVELOPE_ID AND STATUS = 2005 SELECT @COUNT_SIGNERS = COUNT(REC_ID) FROM VWSIG_ENVELOPE_RECEIVER WHERE ENV_ID = @ENVELOPE_ID IF @COUNT_SIGNED = @COUNT_SIGNERS BEGIN UPDATE TBSIG_ENVELOPE SET STATUS = 1006 WHERE GUID = @ENVELOPE_ID /*FULLY SIGNED*/ INSERT INTO TBSIG_ENVELOPE_HISTORY (ENVELOPE_ID, USER_REFERENCE, STATUS, ACTION_DATE) VALUES (@ENVELOPE_ID, 'System', 1006, DATEADD(second, 5, GETDATE())) END ELSE UPDATE TBSIG_ENVELOPE SET STATUS = 1005 WHERE GUID = @ENVELOPE_ID /*PARTLY SIGNED*/ END ELSE IF @STATUS = 2007 /*VORGANG DURCH USER ABGELEHNT*/ BEGIN DECLARE @COMMENT VARCHAR(500),@REC_EMAIL VARCHAR(200),@EML_BODY_ADM VARCHAR(3000),@EML_SUBJ_ADM VARCHAR(3000),@EML_BODY_REC VARCHAR(3000),@EML_SUBJ_REC VARCHAR(3000), @EML_BODY_REC2 VARCHAR(3000),@EML_SUBJ_REC2 VARCHAR(3000) ,@ADM_MAIL VARCHAR(250),@ADM_NAME VARCHAR(200),@TITLE VARCHAR(200),@NAME_PORTAL VARCHAR(100),@NAME_RECEIVER VARCHAR(150),@SENDING_PROFILE INT,@ENV_UUID VARCHAR(200) SELECT @COMMENT = COMMENT,@REC_EMAIL = USER_REFERENCE FROM INSERTED SELECT @NAME_PORTAL = [EXTERNAL_PROGRAM_NAME],@SENDING_PROFILE = SENDING_PROFILE FROM [DD_ECM].[dbo].[TBSIG_CONFIG]; SELECT @EML_BODY_ADM = BODY,@EML_SUBJ_ADM = SUBJECT FROM TBSIG_EMAIL_TEMPLATE WHERE NAME = 'DocumentRejected_ADM' SELECT @EML_BODY_REC = BODY,@EML_SUBJ_REC = SUBJECT FROM TBSIG_EMAIL_TEMPLATE WHERE NAME = 'DocumentRejected_REC' SELECT @EML_BODY_REC2 = BODY,@EML_SUBJ_REC2 = SUBJECT FROM TBSIG_EMAIL_TEMPLATE WHERE NAME = 'DocumentRejected_REC_2' SELECT @ADM_MAIL = USER_EMAIL,@ADM_NAME = USER_PRE_NAME, @TITLE = TITLE,@ENV_UUID = [ENVELOPE_UUID] FROM VWSIG_ENVELOPE_DATA WHERE ENVELOPE_ID = @ENVELOPE_ID SELECT @NAME_RECEIVER = [NAME] FROM [DD_ECM].[dbo].[VWSIG_ENVELOPE_RECEIVER] where ENV_ID = @ENVELOPE_ID AND REC_EMAIL = @REC_EMAIL SET @EML_BODY_ADM = REPLACE(@EML_BODY_ADM,'[NAME_SENDER]',@ADM_NAME) --PRINT '#1' + @EML_BODY_ADM SET @EML_BODY_ADM = REPLACE(@EML_BODY_ADM,'[NAME_RECEIVER]',@NAME_RECEIVER) --PRINT '#2' + @EML_BODY_ADM SET @EML_BODY_ADM = REPLACE(@EML_BODY_ADM,'[DOCUMENT_TITLE]',@TITLE) --PRINT '#3' + @EML_BODY_ADM SET @EML_BODY_ADM = REPLACE(@EML_BODY_ADM,'[REASON]',@COMMENT) --PRINT '#4' + @EML_BODY_ADM SET @EML_BODY_ADM = REPLACE(@EML_BODY_ADM,'[NAME_PORTAL]',@NAME_PORTAL) --PRINT @EML_BODY_ADM SET @EML_SUBJ_ADM = REPLACE(@EML_SUBJ_ADM,'[DOCUMENT_TITLE]',@TITLE) PRINT 'EMAIL1...' INSERT INTO [dbo].[TBEMLP_EMAIL_OUT] (EMAIL_ADRESS, EMAIL_SUBJ, EMAIL_BODY, ADDED_WHO, SENDING_PROFILE, REFERENCE_ID, REFERENCE_STRING, REMINDER_TYPE_ID, WF_ID) VALUES (@ADM_MAIL, @EML_SUBJ_ADM, @EML_BODY_ADM, 'SIG RECEIVER REJECTED1', @SENDING_PROFILE, @ENVELOPE_ID, @ENV_UUID, 202377, @STATUS); SET @EML_BODY_REC = REPLACE(@EML_BODY_REC,'[NAME_SENDER]',@ADM_NAME) SET @EML_BODY_REC = REPLACE(@EML_BODY_REC,'[NAME_RECEIVER]',@NAME_RECEIVER) SET @EML_BODY_REC = REPLACE(@EML_BODY_REC,'[DOCUMENT_TITLE]',@TITLE) SET @EML_BODY_REC = REPLACE(@EML_BODY_REC,'[REASON]',@COMMENT) SET @EML_BODY_REC = REPLACE(@EML_BODY_REC,'[NAME_PORTAL]',@NAME_PORTAL) SET @EML_BODY_REC = REPLACE(@EML_BODY_REC,'[DOCUMENT_TITLE]',@TITLE) SET @EML_SUBJ_REC = REPLACE(@EML_SUBJ_REC,'[DOCUMENT_TITLE]',@TITLE) PRINT 'EMAIL2...' PRINT '@REC_EMAIL: ' + COALESCE(@REC_EMAIL,'IS NULL') INSERT INTO [dbo].[TBEMLP_EMAIL_OUT] (EMAIL_ADRESS, EMAIL_SUBJ, EMAIL_BODY, ADDED_WHO, SENDING_PROFILE, REFERENCE_ID, REFERENCE_STRING, REMINDER_TYPE_ID, WF_ID) VALUES (@REC_EMAIL, @EML_SUBJ_REC, @EML_BODY_REC, 'SIG RECEIVER REJECTED2', @SENDING_PROFILE, @ENVELOPE_ID, @ENV_UUID, 202377, @STATUS); PRINT 'EMAIL2 inserted...' /*Andere Receiver über die Ablehnung informieren*/ SET @EML_SUBJ_REC2 = REPLACE(@EML_SUBJ_REC2,'[DOCUMENT_TITLE]',@TITLE) DECLARE @BODY_RECEIVER NVARCHAR(MAX),@EML_RECEIVER2 VARCHAR(250) DECLARE cursReceiver_TBSIG_ENVELOPE_HISTORY CURSOR FOR SELECT [NAME], [REC_EMAIL] FROM [DD_ECM].[dbo].[VWSIG_ENVELOPE_RECEIVER] where ENV_ID = @ENVELOPE_ID AND REC_EMAIL <> @REC_EMAIL OPEN cursReceiver_TBSIG_ENVELOPE_HISTORY FETCH NEXT FROM cursReceiver_TBSIG_ENVELOPE_HISTORY INTO @NAME_RECEIVER,@EML_RECEIVER2 WHILE @@FETCH_STATUS = 0 BEGIN PRINT '@EML_BODY_REC2: ' + @EML_BODY_REC2 SET @BODY_RECEIVER = @EML_BODY_REC2 SET @BODY_RECEIVER = REPLACE(@BODY_RECEIVER,'[NAME_SENDER]',@ADM_NAME) SET @BODY_RECEIVER = REPLACE(@BODY_RECEIVER,'[NAME_RECEIVER]',@NAME_RECEIVER) SET @BODY_RECEIVER = REPLACE(@BODY_RECEIVER,'[DOCUMENT_TITLE]',@TITLE) SET @BODY_RECEIVER = REPLACE(@BODY_RECEIVER,'[REASON]',@COMMENT) SET @BODY_RECEIVER = REPLACE(@BODY_RECEIVER,'[NAME_PORTAL]',@NAME_PORTAL) SET @BODY_RECEIVER = REPLACE(@BODY_RECEIVER,'[DOCUMENT_TITLE]',@TITLE) SET @BODY_RECEIVER = REPLACE(@BODY_RECEIVER,'[DOCUMENT_TITLE]',@TITLE) PRINT 'EMAIL3...' INSERT INTO [dbo].[TBEMLP_EMAIL_OUT] (EMAIL_ADRESS, EMAIL_SUBJ, EMAIL_BODY, ADDED_WHO, SENDING_PROFILE, REFERENCE_ID, REFERENCE_STRING, REMINDER_TYPE_ID, WF_ID) VALUES (@EML_RECEIVER2, @EML_SUBJ_REC2, @BODY_RECEIVER, 'SIG RECEIVER REJECTED3', @SENDING_PROFILE, @ENVELOPE_ID, @ENV_UUID, 202377, @STATUS); FETCH NEXT FROM cursReceiver_TBSIG_ENVELOPE_HISTORY INTO @NAME_RECEIVER,@EML_RECEIVER2 END CLOSE cursReceiver_TBSIG_ENVELOPE_HISTORY DEALLOCATE cursReceiver_TBSIG_ENVELOPE_HISTORY UPDATE TBSIG_ENVELOPE SET STATUS = 10007 WHERE GUID = @ENVELOPE_ID /*Umschlag abgelehnt*/; INSERT INTO TBSIG_ENVELOPE_HISTORY (ENVELOPE_ID,STATUS,USER_REFERENCE, ADDED_WHEN,ACTION_DATE) VALUES (@ENVELOPE_ID,3004,@USER_REFERENCE,GETDATE(),GETDATE()); --MessageDeletion Sent END END ELSE IF LEFT(CONVERT(VARCHAR(5),@STATUS),1) = 3 IF @STATUS = 3001 /*EMAIL OUT SIGNATUREINLADUNG*/ BEGIN DECLARE @COUNT_MSG_OUT INT, @COUNT_USERS2_SIGN INT SELECT @COUNT_MSG_OUT = COUNT(GUID) FROM TBSIG_ENVELOPE_HISTORY WHERE ENVELOPE_ID = @ENVELOPE_ID AND STATUS = 3001 PRINT '@COUNT_MSG_OUT:' + CONVERT(VARCHAR(3),@COUNT_MSG_OUT) SELECT @COUNT_USERS2_SIGN = COUNT(REC_ID) FROM VWSIG_ENVELOPE_RECEIVER WHERE ENV_ID = @ENVELOPE_ID PRINT '@@COUNT_USERS2_SIGN:' + CONVERT(VARCHAR(3),@COUNT_USERS2_SIGN) IF @COUNT_MSG_OUT = @COUNT_USERS2_SIGN UPDATE TBSIG_ENVELOPE SET STATUS = 1004 WHERE GUID = @ENVELOPE_ID /*ALL INVITATIONS SENT*/ -- INSERT INTO TBSIG_ENVELOPE_HISTORY (ENVELOPE_ID,USER_REFERENCE,STATUS,ACTION_DATE) VALUES (@ENVELOPE_ID,'Digital Data Email-Service',1004,GETDATE()) END END TRY BEGIN CATCH PRINT 'ERROR IN PROCEDURE: ' + CONVERT(VARCHAR(30),ERROR_PROCEDURE()) + ' - ERROR-MESSAGE: ' + CONVERT(VARCHAR(500),ERROR_MESSAGE()) END CATCH GO INSERT INTO TBDD_SQL_COMMANDS(TITLE,SQL_COMMAND) VALUES ('REPORT ENV ALL_USER_THIS_MONTH','EXEC PRSIG_ADMIN_GET_ALL_ENV_INV_REPORT 0') GO INSERT INTO TBDD_SQL_COMMANDS(TITLE,SQL_COMMAND) VALUES ('REPORT ENV ALL_USER_LAST_MONTH','EXEC PRSIG_ADMIN_GET_ALL_ENV_INV_REPORT 1') GO DROP VIEW [VWSIG_REPORT_ENVELOPES_OPENED_DELETED] GO CREATE VIEW [dbo].[VWSIG_REPORT_ENVELOPES_REJ_WITHDRAWN_SENT] AS SELECT DEL.*,CASE DEL.POS_STATUS WHEN 1009 THEN 'Envelope Deleted/Send' WHEN 10007 THEN 'Envelope Rejected/Send' WHEN 10009 THEN 'Envelope Withdrawn/Send' END STATUS_STRING FROM (SELECT * FROM [DD_ECM].[dbo].[VWSIG_ENVELOPE_REPORT] A where POS_STATUS In (10007,10009,1009)) DEL INNER JOIN -- EnvelopeRejected, EnvelopeWithdrawn, EnvelopeDeleted (SELECT * FROM [DD_ECM].[dbo].[VWSIG_ENVELOPE_REPORT] A where POS_STATUS = 3001) REQ ON DEL.ENVELOPE_ID = REQ.ENVELOPE_ID --MessageInvitationSend GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO --Changed 24.04.2025 MS Neuer View ViewSIG_REPORT_ENVELOPES_REJ_WITHDRAWN_SENT ALTER PROCEDURE [dbo].[PRSIG_EMAIL_REPORT_MONTHLY_ENVELOPES] AS BEGIN Declare @Body VARCHAR(MAX),@AM_FINISHED INT,@AM_SENT_DELETED INT, @Month VARCHAR(100),@SUM_MONTH INT,@CUSTOMER VARCHAR(100),@EML_RECEIPIANTS VARCHAR(500) SELECT @CUSTOMER = CAT_STRING FROM TBDD_CATALOG WHERE CAT_TITLE = 'SIG_CUSTOMER_NAME'; SELECT @EML_RECEIPIANTS = CAT_STRING FROM TBDD_CATALOG WHERE CAT_TITLE = 'SIG_REPORT_RECEIVER_ENV_MONTHLY'; Declare @SUBJ VARCHAR(250) = 'Verbrauchsmeldung signFLOW - Kunde: ' + @CUSTOMER SELECT @Month = DATENAME(MONTH, GETDATE() -1) SET @Body = 'Automatisch erzeugte Email zur Abrechnung signFLOW-Envelopes:

' SET @Body += 'Kunde: ' + @CUSTOMER + '

' SET @Body += 'Monat: ' + @Month + '

' SELECT @AM_FINISHED = COUNT(ENVELOPE_ID) FROM [DD_ECM].[dbo].[VWSIG_ENVELOPE_DATA] A --LEFT JOIN TBSIG_REORT_ENV_COUNT B ON A.ENVELOPE_ID = B.ENV_ID WHERE envelope_State = 1008 and DATEDIFF(month,CHANGED_WHEN,GETDATE()) = 1 --AND B.GUID IS NULL; SELECT @AM_SENT_DELETED = COUNT(ENVELOPE_ID) FROM VWSIG_REPORT_ENVELOPES_REJ_WITHDRAWN_SENT A --LEFT JOIN TBSIG_REORT_ENV_COUNT B ON A.ENVELOPE_ID = B.ENV_ID WHERE DATEDIFF(month,POS_WHEN,GETDATE()) = 1 --AND B.GUID IS NULL; INSERT INTO TBSIG_REORT_ENV_COUNT (ENV_ID,MONTH_REPORT) SELECT ENVELOPE_ID,@Month FROM [DD_ECM].[dbo].[VWSIG_ENVELOPE_DATA] where envelope_State = 1008 and DATEDIFF(month,CHANGED_WHEN,GETDATE()) = 1; INSERT INTO TBSIG_REORT_ENV_COUNT (ENV_ID,MONTH_REPORT) SELECT ENVELOPE_ID,@Month FROM VWSIG_REPORT_ENVELOPES_REJ_WITHDRAWN_SENT WHERE DATEDIFF(month,POS_WHEN,GETDATE()) = 1; SET @SUM_MONTH = @AM_FINISHED + @AM_SENT_DELETED SET @Body += 'Anzahl final signierte Envelopes: ' + Convert(Varchar(5),@AM_FINISHED) + '
' SET @Body += 'Anzahl Gelöschte aber geöffnete Envelopes: ' + Convert(Varchar(5),@AM_SENT_DELETED) + '

' SET @Body += 'Summe abrechenbare Envelopes: ' + Convert(Varchar(5),@SUM_MONTH) + '

' IF LEN(@EML_RECEIPIANTS) > 0 and @SUM_MONTH > 0 BEGIN PRINT 'Erzeugend er Emails ...' EXEC PREMAIL_NEW_EMAIL 1,@EML_RECEIPIANTS,@SUBJ,@Body,'sigFLOW-EnvCount',9000,9000,'signFLOW-EnvelopeCount' END ELSE PRINT 'ES WIRD KEIN REPORT ERZEUGT' END GO CREATE PROCEDURE PRSIG_ADMIN_GET_ALL_ENV_INV_REPORT @pMonthDiffas Integer AS BEGIN DECLARE @MONTH INTEGER,@YEAR INTEGER SET @MONTH = DATEPART(Month,GETDATE()) - @pMonthDiffas SET @YEAR = DATEPART(YEAR,GETDATE()) IF @MONTH = 1 BEGIN SET @YEAR = @YEAR -1 END BEGIN SELECT DISTINCT B.ENVELOPE_ID [Envelope-ID],B.USER_EMAIL [Envelope-Creator], TITLE As [Envelope-Title] , ENVELOPE_STATE [Envelope-State], CASE ENVELOPE_STATE WHEN 1009 THEN 'Envelope Deleted/Send' WHEN 10007 THEN 'Envelope Rejected/Send' WHEN 10009 THEN 'Envelope Withdrawn/Send' END [Envelope-State-Description], B.CHANGED_WHEN as [Envelope-Changed] FROM VWSIG_REPORT_ENVELOPES_REJ_WITHDRAWN_SENT A INNER JOIN VWSIG_ENVELOPE_DATA B ON A.ENVELOPE_ID = B.ENVELOPE_ID WHERE DATEPART(Month,B.CHANGED_WHEN) = @MONTH AND DATEPART(YEAR,B.CHANGED_WHEN) = @YEAR UNION SELECT DISTINCT B.ENVELOPE_ID [Envelope-ID],B.USER_EMAIL [Envelope-Creator], TITLE As [Envelope-Title] , ENVELOPE_STATE [Envelope-State], CASE ENVELOPE_STATE WHEN 1008 THEN 'Envelope Comletely signed' WHEN 10007 THEN 'Envelope Rejected/Send' WHEN 10009 THEN 'Envelope Withdrawn/Send' END [Envelope-State-Description], B.CHANGED_WHEN as [Envelope-Changed] FROM VWSIG_ENVELOPE_DATA B WHERE envelope_State = 1008 AND DATEPART(Month,B.CHANGED_WHEN) = @MONTH AND DATEPART(YEAR,B.CHANGED_WHEN) = @YEAR ORDER BY [Envelope-Changed] DESC END END GO -- ============================================= -- Author: DD MS -- Changed 07.05.2025 MS Adding more defaultvalues -- ============================================= ALTER PROCEDURE [dbo].[PRSIG_API_CREATE_ENVELOPE] @USER_ID INTEGER, @TITLE VARCHAR(128), @TFAEnabled BIT, @MESSAGE VARCHAR(250), @OUT_UID VARCHAR(36) OUTPUT AS BEGIN DECLARE @UID VARCHAR(36) SET @OUT_UID = '' SELECT @UID = NEWID(); INSERT INTO TBSIG_ENVELOPE (USER_ID,STATUS,ENVELOPE_UUID,MESSAGE,TITLE,TFA_ENABLED,SOURCE,CONTRACT_TYPE,LANGUAGE,USE_ACCESS_CODE,FINAL_EMAIL_TO_CREATOR,FINAL_EMAIL_TO_RECEIVERS, SEND_REMINDER_EMAILS,FIRST_REMINDER_DAYS,REMINDER_INTERVAL_DAYS,ENVELOPE_TYPE,CERTIFICATION_TYPE) VALUES (@USER_ID,1002,@UID,@MESSAGE,@TITLE,CONVERT(BIT,@TFAEnabled),'API',1,'de-DE',1,1,1, 0,0,0,1,1); IF EXISTS(SELECT GUID FROM TBSIG_ENVELOPE WHERE ENVELOPE_UUID = @UID) SET @OUT_UID = @UID PRINT @OUT_UID END GO CREATE OR ALTER PROCEDURE [dbo].[PRSIG_API_CREATE_RECEIVER] @ENV_UID VARCHAR(36), @EMAIL_ADRESS VARCHAR(250), @SALUTATION VARCHAR(100), @PHONE VARCHAR(20), @OUT_RECEIVER_ID INTEGER OUTPUT AS BEGIN DECLARE @RECEIVER_ID INTEGER, @ENV_ID INTEGER, @SIGNATUREID VARCHAR(64), @SEQUENCE INTEGER, @ACCESS_CODE VARCHAR(5) IF @SALUTATION IS NULL SET @SALUTATION = 'Bitte unterzeichnen Sie das Dokument/Please sign the document' IF @PHONE IS NULL OR LEN(@PHONE) < 9 SET @PHONE = '' SELECT @ENV_ID = GUID FROM TBSIG_ENVELOPE WHERE ENVELOPE_UUID = @ENV_UID; SET @OUT_RECEIVER_ID = 0 IF NOT EXISTS(SELECT GUID FROM TBSIG_RECEIVER WHERE EMAIL_ADDRESS = @EMAIL_ADRESS) BEGIN SELECT @SIGNATUREID = CONVERT(VARCHAR(40), HASHBYTES('SHA1', UPPER(@EMAIL_ADRESS)), 2); INSERT INTO TBSIG_RECEIVER(EMAIL_ADDRESS,[SIGNATURE]) VALUES (@EMAIL_ADRESS,@SIGNATUREID); END SELECT @RECEIVER_ID = GUID FROM TBSIG_RECEIVER WHERE EMAIL_ADDRESS = @EMAIL_ADRESS; IF EXISTS(SELECT GUID FROM TBSIG_ENVELOPE_RECEIVER WHERE ENVELOPE_ID = @ENV_ID AND RECEIVER_ID = @RECEIVER_ID) BEGIN PRINT 'RECEIVER IS ALREADY EXISTING FOR THIS ENVELOPE!' END ELSE BEGIN SELECT @SEQUENCE = COALESCE(MAX(SEQUENCE),0) FROM TBSIG_ENVELOPE_RECEIVER WHERE ENVELOPE_ID = @ENV_ID; SELECT @ACCESS_CODE = [dbo].[FNDD_Generate5DigitRandomCode] (); INSERT INTO TBSIG_ENVELOPE_RECEIVER (ENVELOPE_ID,RECEIVER_ID,SEQUENCE,NAME,ACCESS_CODE,PHONE_NUMBER ) VALUES (@ENV_ID,@RECEIVER_ID,@SEQUENCE,@SALUTATION,@ACCESS_CODE,@PHONE); END SELECT @OUT_RECEIVER_ID = GUID FROM TBSIG_ENVELOPE_RECEIVER WHERE ENVELOPE_ID = @ENV_ID AND RECEIVER_ID = @RECEIVER_ID; END GO -- ============================================= -- Author: DD MS -- Changed 07.05.2025 MS Wrong sql -- ============================================= ALTER PROCEDURE [dbo].[PRSIG_API_ADD_DOC] @ENV_UID VARCHAR(36), @BYTE_DATA VARBINARY(MAX), @OUT_DOCID INTEGER OUTPUT AS BEGIN DECLARE @ENV_ID INTEGER SELECT @ENV_ID = GUID FROM TBSIG_ENVELOPE WHERE ENVELOPE_UUID = @ENV_UID; SET @OUT_DOCID = 0 IF NOT EXISTS(SELECT GUID FROM TBSIG_ENVELOPE_DOCUMENT WHERE ENVELOPE_ID = @ENV_ID) INSERT INTO TBSIG_ENVELOPE_DOCUMENT (ENVELOPE_ID,BYTE_DATA,FILENAME,FILEPATH) VALUES(@ENV_ID,@BYTE_DATA,'API ADD','API BASED'); ELSE BEGIN PRINT 'THERE IS ALREADY A DOC FOR THIS ENVELOPE' END SELECT @OUT_DOCID = GUID FROM TBSIG_ENVELOPE_DOCUMENT WHERE ENVELOPE_ID = @ENV_ID; END GO CREATE TRIGGER [dbo].[TBSIG_ENVELOPE_AFT_UPD] ON [dbo].TBSIG_ENVELOPE FOR UPDATE AS UPDATE TBSIG_ENVELOPE SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBSIG_ENVELOPE.GUID = INSERTED.GUID GO -- ============================================= -- Author: DD MS -- Changed -- ============================================= CREATE OR ALTER PROCEDURE [dbo].[PRSIG_API_WITHDRAW_ENVELOPE] @ENVELOPE_ID INTEGER, @REASON VARCHAR(128), @OUT_RESULT VARCHAR(36) OUTPUT AS BEGIN INSERT INTO TBSIG_ENVELOPE_HISTORY (ENVELOPE_ID,USER_REFERENCE,[STATUS],ADDED_WHEN,ACTION_DATE,COMMENT) VALUES (@ENVELOPE_ID,'API',1009,GETDATE(),GETDATE(),@REASON); IF EXISTS(SELECT GUID FROM TBSIG_ENVELOPE WHERE STATUS = 1009 AND GUID = @ENVELOPE_ID) SET @OUT_RESULT = 'Envelope withdrawn' ELSE SET @OUT_RESULT = 'Withdrawing not successful' PRINT @OUT_RESULT END GO --Changed 12.05.2025 MS Status 3004 when Messages sent --Changed 09.05.2025 MS Withdrawn nur als Status in History --Changed 23.04.2025 MS Neuer Dokumenten und Withdrawn-Status --CHANGED 06.06.2024 MS Status 2007, emailMeldungen integriert --CHANGED 11.06.2024 MS Status 2007, Cursor für andere REceiver ALTER TRIGGER [dbo].[TBSIG_ENVELOPE_HISTORY_AFT_INS] ON [dbo].[TBSIG_ENVELOPE_HISTORY] WITH EXECUTE AS CALLER FOR INSERT AS BEGIN TRY DECLARE @GUID BIGINT, @ENVELOPE_ID INTEGER, @STATUS INTEGER, @USER_REFERENCE VARCHAR(100) SELECT @GUID = GUID, @ENVELOPE_ID = ENVELOPE_ID, @STATUS = STATUS, @USER_REFERENCE = USER_REFERENCE FROM INSERTED PRINT '@USER_REFERENCE: ' + @USER_REFERENCE PRINT 'STATUS IS: ' + CONVERT(VARCHAR(10),@STATUS) --PRÜFEN OB ES EIN STATUS VOM WEBCLIENT IST 0 2 IF LEFT(CONVERT(VARCHAR(5),@STATUS),1) = 1 BEGIN PRINT 'REGULÄRER 1erStatus.. ' IF @STATUS IN (1001, 1002, 1003, 1007, 1008, 1009,10009) BEGIN UPDATE TBSIG_ENVELOPE SET STATUS = @STATUS WHERE GUID = @ENVELOPE_ID; --IF @STATUS In (1009,10009) AND @USER_REFERENCE <> 'API' -- INSERT INTO TBSIG_ENVELOPE_HISTORY (ENVELOPE_ID,STATUS,ADDED_WHEN,ACTION_DATE) VALUES (@ENVELOPE_ID,3006,GETDATE(),GETDATE()); --MessageWithdrawn/Deleted Sent END END ELSE IF LEFT(CONVERT(VARCHAR(5),@STATUS),1) = 2 BEGIN IF @STATUS = 2005 /*DOKUMENT SIGINIERT*/ BEGIN DECLARE @COUNT_SIGNED INT, @COUNT_SIGNERS INT SELECT @COUNT_SIGNED = COUNT(GUID) FROM TBSIG_ENVELOPE_HISTORY WHERE ENVELOPE_ID = @ENVELOPE_ID AND STATUS = 2005 SELECT @COUNT_SIGNERS = COUNT(REC_ID) FROM VWSIG_ENVELOPE_RECEIVER WHERE ENV_ID = @ENVELOPE_ID IF @COUNT_SIGNED = @COUNT_SIGNERS BEGIN UPDATE TBSIG_ENVELOPE SET STATUS = 1006 WHERE GUID = @ENVELOPE_ID /*FULLY SIGNED*/ INSERT INTO TBSIG_ENVELOPE_HISTORY (ENVELOPE_ID, USER_REFERENCE, STATUS, ACTION_DATE) VALUES (@ENVELOPE_ID, 'System', 1006, DATEADD(second, 5, GETDATE())) END ELSE UPDATE TBSIG_ENVELOPE SET STATUS = 1005 WHERE GUID = @ENVELOPE_ID /*PARTLY SIGNED*/ END ELSE IF @STATUS = 2007 /*VORGANG DURCH USER ABGELEHNT*/ BEGIN DECLARE @COMMENT VARCHAR(500),@REC_EMAIL VARCHAR(200),@EML_BODY_ADM VARCHAR(3000),@EML_SUBJ_ADM VARCHAR(3000),@EML_BODY_REC VARCHAR(3000),@EML_SUBJ_REC VARCHAR(3000), @EML_BODY_REC2 VARCHAR(3000),@EML_SUBJ_REC2 VARCHAR(3000) ,@ADM_MAIL VARCHAR(250),@ADM_NAME VARCHAR(200),@TITLE VARCHAR(200),@NAME_PORTAL VARCHAR(100),@NAME_RECEIVER VARCHAR(150),@SENDING_PROFILE INT,@ENV_UUID VARCHAR(200) SELECT @COMMENT = COMMENT,@REC_EMAIL = USER_REFERENCE FROM INSERTED SELECT @NAME_PORTAL = [EXTERNAL_PROGRAM_NAME],@SENDING_PROFILE = SENDING_PROFILE FROM [DD_ECM].[dbo].[TBSIG_CONFIG]; SELECT @EML_BODY_ADM = BODY,@EML_SUBJ_ADM = SUBJECT FROM TBSIG_EMAIL_TEMPLATE WHERE NAME = 'DocumentRejected_ADM' SELECT BODY,SUBJECT FROM TBSIG_EMAIL_TEMPLATE WHERE NAME = 'DocumentRejected_ADM' SELECT @EML_BODY_REC = BODY,@EML_SUBJ_REC = SUBJECT FROM TBSIG_EMAIL_TEMPLATE WHERE NAME = 'DocumentRejected_REC' SELECT @EML_BODY_REC2 = BODY,@EML_SUBJ_REC2 = SUBJECT FROM TBSIG_EMAIL_TEMPLATE WHERE NAME = 'DocumentRejected_REC_2' SELECT @ADM_MAIL = USER_EMAIL,@ADM_NAME = USER_PRE_NAME, @TITLE = TITLE,@ENV_UUID = [ENVELOPE_UUID] FROM VWSIG_ENVELOPE_DATA WHERE ENVELOPE_ID = @ENVELOPE_ID SELECT @NAME_RECEIVER = [NAME] FROM [DD_ECM].[dbo].[VWSIG_ENVELOPE_RECEIVER] where ENV_ID = @ENVELOPE_ID AND REC_EMAIL = @REC_EMAIL SET @EML_BODY_ADM = REPLACE(@EML_BODY_ADM,'[NAME_SENDER]',@ADM_NAME) --PRINT '#1' + @EML_BODY_ADM SET @EML_BODY_ADM = REPLACE(@EML_BODY_ADM,'[NAME_RECEIVER]',@NAME_RECEIVER) --PRINT '#2' + @EML_BODY_ADM SET @EML_BODY_ADM = REPLACE(@EML_BODY_ADM,'[DOCUMENT_TITLE]',@TITLE) --PRINT '#3' + @EML_BODY_ADM SET @EML_BODY_ADM = REPLACE(@EML_BODY_ADM,'[REASON]',@COMMENT) --PRINT '#4' + @EML_BODY_ADM SET @EML_BODY_ADM = REPLACE(@EML_BODY_ADM,'[NAME_PORTAL]',@NAME_PORTAL) --PRINT @EML_BODY_ADM SET @EML_SUBJ_ADM = REPLACE(@EML_SUBJ_ADM,'[DOCUMENT_TITLE]',@TITLE) PRINT 'EMAIL1...' INSERT INTO [dbo].[TBEMLP_EMAIL_OUT] (EMAIL_ADRESS, EMAIL_SUBJ, EMAIL_BODY, ADDED_WHO, SENDING_PROFILE, REFERENCE_ID, REFERENCE_STRING, REMINDER_TYPE_ID, WF_ID) VALUES (@ADM_MAIL, @EML_SUBJ_ADM, @EML_BODY_ADM, 'SIG RECEIVER REJECTED1', @SENDING_PROFILE, @ENVELOPE_ID, @ENV_UUID, 202377, @STATUS); SET @EML_BODY_REC = REPLACE(@EML_BODY_REC,'[NAME_SENDER]',@ADM_NAME) SET @EML_BODY_REC = REPLACE(@EML_BODY_REC,'[NAME_RECEIVER]',@NAME_RECEIVER) SET @EML_BODY_REC = REPLACE(@EML_BODY_REC,'[DOCUMENT_TITLE]',@TITLE) SET @EML_BODY_REC = REPLACE(@EML_BODY_REC,'[REASON]',@COMMENT) SET @EML_BODY_REC = REPLACE(@EML_BODY_REC,'[NAME_PORTAL]',@NAME_PORTAL) SET @EML_BODY_REC = REPLACE(@EML_BODY_REC,'[DOCUMENT_TITLE]',@TITLE) SET @EML_SUBJ_REC = REPLACE(@EML_SUBJ_REC,'[DOCUMENT_TITLE]',@TITLE) PRINT 'EMAIL2...' PRINT '@REC_EMAIL: ' + COALESCE(@REC_EMAIL,'IS NULL') INSERT INTO [dbo].[TBEMLP_EMAIL_OUT] (EMAIL_ADRESS, EMAIL_SUBJ, EMAIL_BODY, ADDED_WHO, SENDING_PROFILE, REFERENCE_ID, REFERENCE_STRING, REMINDER_TYPE_ID, WF_ID) VALUES (@REC_EMAIL, @EML_SUBJ_REC, @EML_BODY_REC, 'SIG RECEIVER REJECTED2', @SENDING_PROFILE, @ENVELOPE_ID, @ENV_UUID, 202377, @STATUS); PRINT 'EMAIL2 inserted...' /*Andere Receiver über die Ablehnung informieren*/ SET @EML_SUBJ_REC2 = REPLACE(@EML_SUBJ_REC2,'[DOCUMENT_TITLE]',@TITLE) DECLARE @BODY_RECEIVER NVARCHAR(MAX),@EML_RECEIVER2 VARCHAR(250) DECLARE cursReceiver_TBSIG_ENVELOPE_HISTORY CURSOR FOR SELECT [NAME], [REC_EMAIL] FROM [DD_ECM].[dbo].[VWSIG_ENVELOPE_RECEIVER] where ENV_ID = @ENVELOPE_ID AND REC_EMAIL <> @REC_EMAIL OPEN cursReceiver_TBSIG_ENVELOPE_HISTORY FETCH NEXT FROM cursReceiver_TBSIG_ENVELOPE_HISTORY INTO @NAME_RECEIVER,@EML_RECEIVER2 WHILE @@FETCH_STATUS = 0 BEGIN PRINT '@EML_BODY_REC2: ' + @EML_BODY_REC2 SET @BODY_RECEIVER = @EML_BODY_REC2 SET @BODY_RECEIVER = REPLACE(@BODY_RECEIVER,'[NAME_SENDER]',@ADM_NAME) SET @BODY_RECEIVER = REPLACE(@BODY_RECEIVER,'[NAME_RECEIVER]',@NAME_RECEIVER) SET @BODY_RECEIVER = REPLACE(@BODY_RECEIVER,'[DOCUMENT_TITLE]',@TITLE) SET @BODY_RECEIVER = REPLACE(@BODY_RECEIVER,'[REASON]',@COMMENT) SET @BODY_RECEIVER = REPLACE(@BODY_RECEIVER,'[NAME_PORTAL]',@NAME_PORTAL) SET @BODY_RECEIVER = REPLACE(@BODY_RECEIVER,'[DOCUMENT_TITLE]',@TITLE) SET @BODY_RECEIVER = REPLACE(@BODY_RECEIVER,'[DOCUMENT_TITLE]',@TITLE) PRINT 'EMAIL3...' INSERT INTO [dbo].[TBEMLP_EMAIL_OUT] (EMAIL_ADRESS, EMAIL_SUBJ, EMAIL_BODY, ADDED_WHO, SENDING_PROFILE, REFERENCE_ID, REFERENCE_STRING, REMINDER_TYPE_ID, WF_ID) VALUES (@EML_RECEIVER2, @EML_SUBJ_REC2, @BODY_RECEIVER, 'SIG RECEIVER REJECTED3', @SENDING_PROFILE, @ENVELOPE_ID, @ENV_UUID, 202377, @STATUS); FETCH NEXT FROM cursReceiver_TBSIG_ENVELOPE_HISTORY INTO @NAME_RECEIVER,@EML_RECEIVER2 END CLOSE cursReceiver_TBSIG_ENVELOPE_HISTORY DEALLOCATE cursReceiver_TBSIG_ENVELOPE_HISTORY UPDATE TBSIG_ENVELOPE SET STATUS = 10007 WHERE GUID = @ENVELOPE_ID /*Umschlag abgelehnt*/; INSERT INTO TBSIG_ENVELOPE_HISTORY (ENVELOPE_ID,STATUS,USER_REFERENCE, ADDED_WHEN,ACTION_DATE) VALUES (@ENVELOPE_ID,3004,@USER_REFERENCE,GETDATE(),GETDATE()); --MessageDeletion Sent END END ELSE IF LEFT(CONVERT(VARCHAR(5),@STATUS),1) = 3 IF @STATUS = 3001 /*EMAIL OUT SIGNATUREINLADUNG*/ BEGIN DECLARE @COUNT_MSG_OUT INT, @COUNT_USERS2_SIGN INT SELECT @COUNT_MSG_OUT = COUNT(GUID) FROM TBSIG_ENVELOPE_HISTORY WHERE ENVELOPE_ID = @ENVELOPE_ID AND STATUS = 3001 PRINT '@COUNT_MSG_OUT:' + CONVERT(VARCHAR(3),@COUNT_MSG_OUT) SELECT @COUNT_USERS2_SIGN = COUNT(REC_ID) FROM VWSIG_ENVELOPE_RECEIVER WHERE ENV_ID = @ENVELOPE_ID PRINT '@@COUNT_USERS2_SIGN:' + CONVERT(VARCHAR(3),@COUNT_USERS2_SIGN) IF @COUNT_MSG_OUT = @COUNT_USERS2_SIGN UPDATE TBSIG_ENVELOPE SET STATUS = 1004 WHERE GUID = @ENVELOPE_ID /*ALL INVITATIONS SENT*/ -- INSERT INTO TBSIG_ENVELOPE_HISTORY (ENVELOPE_ID,USER_REFERENCE,STATUS,ACTION_DATE) VALUES (@ENVELOPE_ID,'Digital Data Email-Service',1004,GETDATE()) END END TRY BEGIN CATCH PRINT 'ERROR IN PROCEDURE: ' + CONVERT(VARCHAR(30),ERROR_PROCEDURE()) + ' - ERROR-MESSAGE: ' + CONVERT(VARCHAR(500),ERROR_MESSAGE()) END CATCH GO ALTER TRIGGER [dbo].[TBSIG_ENVELOPE_RECEIVER_AFT_UPD] ON [dbo].[TBSIG_ENVELOPE_RECEIVER] FOR INSERT AS BEGIN DECLARE @ENVELOPE_ID INT,@RECEIVER_ID INT,@ACCESS_CODE NVARCHAR(64) SELECT @ENVELOPE_ID = ENVELOPE_ID, @RECEIVER_ID = RECEIVER_ID, @ACCESS_CODE = ACCESS_CODE FROM inserted IF LEN(@ACCESS_CODE) = 0 BEGIN SELECT @ACCESS_CODE = [dbo].[FNDD_Generate5DigitRandomCode] (); UPDATE TBSIG_ENVELOPE_RECEIVER SET ACCESS_CODE = @ACCESS_CODE FROM INSERTED WHERE TBSIG_ENVELOPE_RECEIVER.ENVELOPE_ID = INSERTED.ENVELOPE_ID AND TBSIG_ENVELOPE_RECEIVER.RECEIVER_ID = INSERTED.RECEIVER_ID; END UPDATE TBSIG_ENVELOPE_RECEIVER SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBSIG_ENVELOPE_RECEIVER.GUID = INSERTED.GUID END GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[PRSIG_DELETE_ENVELOPE_FINALLY_ID] @ENV_GUID INT AS DELETE FROM TBSIG_ENVELOPE_CERTIFICATE where ENVELOPE_ID = @ENV_GUID; DELETE FROM TBSIG_ENVELOPE_DOCUMENT where ENVELOPE_ID = @ENV_GUID; DELETE FROM TBSIG_ENVELOPE_HISTORY where ENVELOPE_ID = @ENV_GUID; DELETE FROM TBSIG_ENVELOPE_RECEIVER where ENVELOPE_ID = @ENV_GUID; DELETE FROM TBSIG_ENVELOPE where GUID = @ENV_GUID; GO USE [msdb] GO /****** Object: Job [DD_SIG_EVERY_HOUR] Script Date: 08.05.2025 14:43:18 ******/ BEGIN TRANSACTION DECLARE @ReturnCode INT SELECT @ReturnCode = 0 /****** Object: JobCategory [[Uncategorized (Local)]] Script Date: 08.05.2025 14:43:18 ******/ IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1) BEGIN EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback END DECLARE @jobId BINARY(16) EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'DD_SIG_EVERY_HOUR', @enabled=1, @notify_level_eventlog=0, @notify_level_email=0, @notify_level_netsend=0, @notify_level_page=0, @delete_level=0, @description=N'Es ist keine Beschreibung verfügbar.', @category_name=N'[Uncategorized (Local)]', @owner_login_name=N'sa', @job_id = @jobId OUTPUT IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback /****** Object: Step [CLEAN_UP SQLS] Script Date: 08.05.2025 14:43:18 ******/ EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'CLEAN_UP SQLS', @step_id=1, @cmdexec_success_code=0, @on_success_action=1, @on_success_step_id=0, @on_fail_action=2, @on_fail_step_id=0, @retry_attempts=0, @retry_interval=0, @os_run_priority=0, @subsystem=N'TSQL', @command=N'UPDATE TBSIG_RECEIVER SET TOTP_SECRET_KEY = NULL, TFA_REG_DEADLINE = NULL WHERE GUID In (SELECT GUID FROM [DD_ECM].[dbo].[TBSIG_RECEIVER] where TOTP_SECRET_KEY is not null and TFA_REG_DEADLINE >= GETDATE() AND TFA_REG_DEADLINE < DATEADD(HOUR, 1, GETDATE()));', @database_name=N'DD_ECM', @flags=0 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'DAILY_PER_HOUR', @enabled=1, @freq_type=8, @freq_interval=62, @freq_subday_type=8, @freq_subday_interval=1, @freq_relative_interval=0, @freq_recurrence_factor=1, @active_start_date=20250508, @active_end_date=99991231, @active_start_time=600, @active_end_time=220000, @schedule_uid=N'10e7e173-d6e0-46d5-b9f0-a2f390076d79' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback COMMIT TRANSACTION GOTO EndSave QuitWithRollback: IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION EndSave: GO