easy/signFLOW Updates

This commit is contained in:
Developer01 2025-02-11 16:48:09 +01:00
parent f1409427f7
commit 294bb8bfd0
7 changed files with 328 additions and 77 deletions

View File

@ -1,5 +1,4 @@
UPDATE TBDD_BASECONFIG SET DB_VERSION = '1.9.8.1'; UPDATE TBDD_BASECONFIG SET DB_VERSION = '1.9.8.1';
GO
IF NOT EXISTS(SELECT 1 FROM sys.columns IF NOT EXISTS(SELECT 1 FROM sys.columns
WHERE Name = N'GENERAL_VIEWER' WHERE Name = N'GENERAL_VIEWER'
AND Object_ID = Object_ID(N'TBDD_USER')) AND Object_ID = Object_ID(N'TBDD_USER'))
@ -13,5 +12,17 @@ IF NOT EXISTS(SELECT 1 FROM sys.columns
AND Object_ID = Object_ID(N'TBDD_USER')) AND Object_ID = Object_ID(N'TBDD_USER'))
BEGIN BEGIN
ALTER TABLE TBDD_USER ALTER TABLE TBDD_USER
ADD WAN_ENVIRONMENT BIT NOT NULL DEFAULT 0 ADD WAN_ENVIRONMENT BIT NOT NULL DEFAULT 0;
END END
CREATE OR ALTER VIEW [dbo].[VWDD_GROUPS_USER] AS
select
USR.GUID AS USR_ID
,USR.USERNAME,
GRP.GUID AS GRP_ID
,GRP.NAME AS GRP_NAME
,GU.ADDED_WHEN
,GU.ADDED_WHO
from
TBDD_GROUPS GRP INNER JOIN TBDD_GROUPS_USER GU ON GRP.GUID = GU.GROUP_ID
INNER JOIN TBDD_USER USR ON GU.USER_ID = USR.GUID;

View File

@ -0,0 +1,164 @@
UPDATE TBDD_BASECONFIG SET DB_VERSION = '1.9.8.2';
--DROP TABLE TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE
CREATE TABLE TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE
(
GUID INT IDENTITY(1,1),
SPECNAME VARCHAR(100) NOT NULL,
Row_Caption VARCHAR(250) NOT NULL,
Area VARCHAR(100) NOT NULL,
xPosition INTEGER NOT NULL DEFAULT 10,
--yPosition INTEGER NOT NULL,
SequenceItem INTEGER NOT NULL DEFAULT 1,
Y_eq_lastrow BIT NOT NULL DEFAULT 0,
Display BIT NOT NULL DEFAULT 1,
Active BIT NOT NULL DEFAULT 1,
AddedWho VARCHAR(50) DEFAULT 'DD_ECM DEFAULT' NOT NULL,
AddedWhen DATETIME DEFAULT GETDATE(),
ChangedWho VARCHAR(50),
ChangedWhen DATETIME,
CONSTRAINT PK_TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE PRIMARY KEY (GUID),
CONSTRAINT UNIQUE_TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE UNIQUE(SPECNAME)
)
GO
------------------------------------------------------------------------------
CREATE TRIGGER TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE_AFT_UPD ON TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE
FOR UPDATE
AS
UPDATE TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE SET ChangedWhen = GETDATE() FROM INSERTED WHERE TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE.GUID = INSERTED.GUID
GO
CREATE VIEW VWDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE_ITEMS AS
SELECT
A.SPEC_NAME,
A.ITEM_VALUE,
B.Area,
B.Row_Caption,
B.xPosition,
B.Y_eq_lastrow,
B.SequenceItem,
B.Display,
A.REFERENCE_GUID
FROM
(SELECT * FROM TBEDMI_ITEM_VALUE ) A INNER JOIN
(SELECT * FROM TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE WHERE Active = 1) B ON A.SPEC_NAME = B.SPECNAME
GO
CREATE FUNCTION [dbo].[FNDD_ZUGFERD_VIEW_RECEIPT_TAX] (@pMSGID VARCHAR(100))
RETURNS @TABLE TABLE(SPEC_NAME VARCHAR(100),ITEM_VALUE VARCHAR(250),Area VARCHAR(60),Row_Caption Varchar(100), SequenceItem INT)
AS
BEGIN
DECLARE @GROUP_COUNTER INT,@INDEX INT = 60
DECLARE cursGroupCounter CURSOR FOR
select GROUP_COUNTER from TBEDMI_ITEM_VALUE WHERE REFERENCE_GUID = @pMSGID And SPEC_NAME = 'INVOICE_TAXPOS_RATE' ORDER BY GROUP_COUNTER
OPEN cursGroupCounter
FETCH NEXT FROM cursGroupCounter INTO @GROUP_COUNTER
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @SPEC_NAME VARCHAR(100),@ITEM_VALUE VARCHAR(100),@Row_Caption VARCHAR(100)
DECLARE cursPosItems CURSOR FOR
select A.SPEC_NAME,ITEM_VALUE, B.Row_Caption from TBEDMI_ITEM_VALUE A INNER JOIN TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE B ON A.SPEC_NAME = B.SPECNAME WHERE REFERENCE_GUID = @pMSGID And A.SPEC_NAME IN ('INVOICE_TAXPOS_AMOUNT',
'INVOICE_TAXPOS_RATE','INVOICE_TAXPOS_TYPE') AND GROUP_COUNTER = @GROUP_COUNTER ORDER BY B.SequenceItem
OPEN cursPosItems
FETCH NEXT FROM cursPosItems INTO @SPEC_NAME,@ITEM_VALUE,@Row_Caption
WHILE @@FETCH_STATUS = 0
BEGIN
SET @INDEX += 1
INSERT INTO @TABLE (SPEC_NAME,ITEM_VALUE,Area,Row_Caption,SequenceItem) VALUES
(@SPEC_NAME,@ITEM_VALUE,'TAXPOS',@Row_Caption,@INDEX)
FETCH NEXT FROM cursPosItems INTO @SPEC_NAME,@ITEM_VALUE, @Row_Caption
END
CLOSE cursPosItems
DEALLOCATE cursPosItems
FETCH NEXT FROM cursGroupCounter INTO @GROUP_COUNTER
END
CLOSE cursGroupCounter
DEALLOCATE cursGroupCounter
RETURN
END
GO
CREATE FUNCTION [dbo].[FNDD_ZUGFERD_VIEW_RECEIPT_POSITIONS] (@pMSGID VARCHAR(100))
RETURNS @TABLE TABLE(SPEC_NAME VARCHAR(100),ITEM_VALUE VARCHAR(250),Area VARCHAR(60),SequenceItem INT)
AS
BEGIN
DECLARE @GROUP_COUNTER INT,@INDEX INT = 15
DECLARE cursGroupCounter CURSOR FOR
select GROUP_COUNTER from TBEDMI_ITEM_VALUE WHERE REFERENCE_GUID = @pMSGID And SPEC_NAME = 'INVOICE_POSITION_AMOUNT' ORDER BY GROUP_COUNTER
OPEN cursGroupCounter
FETCH NEXT FROM cursGroupCounter INTO @GROUP_COUNTER
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @SPEC_NAME VARCHAR(100),@ITEM_VALUE VARCHAR(100)
DECLARE cursPosItems CURSOR FOR
select A.SPEC_NAME,ITEM_VALUE from TBEDMI_ITEM_VALUE A INNER JOIN TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE B ON A.SPEC_NAME = B.SPECNAME WHERE REFERENCE_GUID = @pMSGID And A.SPEC_NAME IN ('INVOICE_POSITION_AMOUNT',
'INVOICE_TAXPOS_TAX_RATE','INVOICE_POSITION_ARTICLE') AND GROUP_COUNTER = @GROUP_COUNTER ORDER BY B.SequenceItem
OPEN cursPosItems
FETCH NEXT FROM cursPosItems INTO @SPEC_NAME,@ITEM_VALUE
WHILE @@FETCH_STATUS = 0
BEGIN
SET @INDEX += 1
INSERT INTO @TABLE (SPEC_NAME,ITEM_VALUE,Area,SequenceItem) VALUES
(@SPEC_NAME,@ITEM_VALUE,'POSITION',@INDEX)
FETCH NEXT FROM cursPosItems INTO @SPEC_NAME,@ITEM_VALUE
END
CLOSE cursPosItems
DEALLOCATE cursPosItems
FETCH NEXT FROM cursGroupCounter INTO @GROUP_COUNTER
END
CLOSE cursGroupCounter
DEALLOCATE cursGroupCounter
RETURN
END
GO
CREATE FUNCTION [dbo].[FNDD_ZUGFERD_VIEW_RECEIPT_CUST_RESULT] (@pMSGID VARCHAR(100))
RETURNS TABLE
AS RETURN
(
SELECt A.SPEC_NAME,A.ITEM_VALUE,A.Area,A.Row_Caption,A.xPosition,A.Y_eq_lastrow,A.SequenceItem ORDER_SEQ,A.Display FROM VWDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE_ITEMS A
WHERE REFERENCE_GUID = @pMSGID
AND A.SPEC_NAME NOT IN ('INVOICE_POSITION_AMOUNT',
'INVOICE_TAXPOS_TAX_RATE','INVOICE_POSITION_ARTICLE','INVOICE_TAXPOS_AMOUNT',
'INVOICE_TAXPOS_RATE','INVOICE_TAXPOS_TYPE')
UNION
SELECT SPEC_NAME,ITEM_VALUE,Area,'' Row_Caption,10 xPosition, 0 Y_eq_lastrow,SequenceItem ORDER_SEQ, 1 Display FROM [dbo].[FNDD_ZUGFERD_VIEW_RECEIPT_POSITIONS] (@pMSGID)
UNION
SELECT SPEC_NAME,ITEM_VALUE,Area,Row_Caption Row_Caption,10 xPosition, 0 Y_eq_lastrow,SequenceItem ORDER_SEQ, 1 Display FROM [dbo].[FNDD_ZUGFERD_VIEW_RECEIPT_TAX] (@pMSGID)
)
GO
DELETE FROM TBDD_SQL_COMMANDS WHERE TITLE = 'VWDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE_ITEMS';
INSERT INTO TBDD_SQL_COMMANDS (TITLE,SQL_COMMAND) VALUES
('VWDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE_ITEMS','
SELECT * FROM [dbo].[FNDD_ZUGFERD_VIEW_RECEIPT_CUST_RESULT] (''@MSG_ID'') ORDER BY ORDER_SEQ')
DELETE FROM TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE;
Insert INTO TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE
(SPECNAME, Row_Caption, Area, xPosition, SequenceItem, Y_eq_lastrow, Display) values
('INVOICE_TYPE', '', 'TYPE', 10, 1, 0, 0),
('INVOICE_CURRENCY', '', 'TYPE', 10, 2, 0, 0),
('INVOICE_NUMBER', 'Rechnungsnummer/Invoice-No:', 'HEAD', 10, 3, 0, 1),
('INVOICE_DATE', 'Datum/Date:', 'HEAD', 10, 4, 0, 1),
('INVOICE_SERVICE_DATE','Leistungsdatum/Service date:', 'HEAD', 10, 5, 0, 1),
('INVOICE_SELLER_NAME', '', 'SELLER', 10, 6, 0, 1),
('INVOICE_SELLER_ADRESS', '', 'SELLER', 10, 7, 0, 1),
('INVOICE_SELLER_POSTALCODE', '', 'SELLER', 10, 8, 0, 1),
('INVOICE_SELLER_CITY', '', 'SELLER', 35, 9, 1, 1),
('INVOICE_SELLER_TAX_ID', 'USt-ID/Seller tax ID:', 'SELLER', 10, 10, 0, 1),
('INVOICE_BUYER_NAME', '', 'BUYER', 10, 11, 0, 1),
('INVOICE_BUYER_ADRESS', '', 'BUYER', 10, 12, 0, 1),
('INVOICE_BUYER_POSTALCODE', '', 'BUYER', 10, 13, 0, 1),
('INVOICE_BUYER_CITY', '', 'BUYER', 35, 14, 1, 1),
('INVOICE_POSITION_AMOUNT', '', 'POSITION', 10, 15, 0, 0),
('INVOICE_POSITION_ARTICLE', '', 'POSITION', 10, 16, 0, 0),
('INVOICE_TAXPOS_TAX_RATE', '', 'POSITION', 10, 17, 0, 1),
('INVOICE_TOTAL_NET', 'Nettobetrag/Net amount:', 'AMOUNT', 10, 58, 0, 1),
('INVOICE_TOTAL_GROSS', 'Bruttobetrag/Gross amount:', 'AMOUNT', 10, 59, 0, 1),
('INVOICE_TAXPOS_RATE', '', 'TAXPOS', 10, 60, 1, 0),
('INVOICE_TAXPOS_AMOUNT', '', 'TAXPOS', 10, 61, 0, 0),
('INVOICE_TAXPOS_TYPE', '', 'TAXPOS', 10, 62, 1, 1),
('INVOICE_PAYMENT_TERMS','', 'PAYMENT', 10, 100, 0, 1),
('INVOICE_PAYMENT_IBAN','IBAN:', 'PAYMENT', 10, 101, 0, 1),
('INVOICE_PAYMENT_BIC','BIC:', 'PAYMENT', 10, 102, 0, 1);
GO

View File

@ -8,6 +8,7 @@ BEGIN
ALTER TABLE [dbo].[TBSIG_ENVELOPE_RECEIVER] DROP CONSTRAINT [DF_TBSIG_ENVELOPE_RECEIVER_TFA_ENABLED]; ALTER TABLE [dbo].[TBSIG_ENVELOPE_RECEIVER] DROP CONSTRAINT [DF_TBSIG_ENVELOPE_RECEIVER_TFA_ENABLED];
ALTER TABLE [dbo].TBSIG_ENVELOPE_RECEIVER DROP COLUMN TFA_ENABLED; ALTER TABLE [dbo].TBSIG_ENVELOPE_RECEIVER DROP COLUMN TFA_ENABLED;
END END
IF EXISTS(SELECT * IF EXISTS(SELECT *
FROM INFORMATION_SCHEMA.COLUMNS FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'TBSIG_CONFIG' WHERE TABLE_NAME = 'TBSIG_CONFIG'
@ -20,6 +21,8 @@ ALTER TABLE [dbo].TBSIG_ENVELOPE ADD TFA_ENABLED BIT NOT NULL DEFAULT 0;
GO GO
ALTER TABLE [dbo].TBSIG_CONFIG ADD DEF_TFA_ENABLED BIT NOT NULL DEFAULT 0; ALTER TABLE [dbo].TBSIG_CONFIG ADD DEF_TFA_ENABLED BIT NOT NULL DEFAULT 0;
GO GO
ALTER TABLE [dbo].TBSIG_CONFIG ADD DEF_TFA_WITH_PHONE BIT NOT NULL DEFAULT 0;
GO
-- Changed 23.01.2025 MS TFA_ENABLED -- Changed 23.01.2025 MS TFA_ENABLED
-- Changed 07.01.2025 MS VerifType integriert -- Changed 07.01.2025 MS VerifType integriert
ALTER VIEW [dbo].[VWSIG_ENVELOPE_DATA] AS ALTER VIEW [dbo].[VWSIG_ENVELOPE_DATA] AS
@ -55,7 +58,7 @@ SELECT
FROM FROM
[TBSIG_ENVELOPE] ENV INNER JOIN TBDD_USER USR ON ENV.USER_ID = USR.GUID [TBSIG_ENVELOPE] ENV INNER JOIN TBDD_USER USR ON ENV.USER_ID = USR.GUID
GO GO
IF EXISTS(SELECT * IF NOT EXISTS(SELECT *
FROM INFORMATION_SCHEMA.COLUMNS FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'TBSIG_ENVELOPE_RECEIVER' WHERE TABLE_NAME = 'TBSIG_ENVELOPE_RECEIVER'
AND COLUMN_NAME = 'PHONE_NUMBER') AND COLUMN_NAME = 'PHONE_NUMBER')
@ -63,6 +66,7 @@ BEGIN
ALTER TABLE [dbo].TBSIG_ENVELOPE_RECEIVER ADD PHONE_NUMBER VARCHAR(30) NOT NULL DEFAULT ''; ALTER TABLE [dbo].TBSIG_ENVELOPE_RECEIVER ADD PHONE_NUMBER VARCHAR(30) NOT NULL DEFAULT '';
END END
GO GO
--CHANGED 13.11.2024 MS RECEIVER_TERM integriert
ALTER VIEW [dbo].[VWSIG_ENVELOPE_RECEIVER] AS ALTER VIEW [dbo].[VWSIG_ENVELOPE_RECEIVER] AS
SELECT SELECT
ENV.GUID ENV_ID, ENV.GUID ENV_ID,
@ -155,3 +159,71 @@ FOR UPDATE
AS AS
UPDATE TBSIG_CHART SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBSIG_CHART.GUID = INSERTED.GUID UPDATE TBSIG_CHART SET CHANGED_WHEN = GETDATE() FROM INSERTED WHERE TBSIG_CHART.GUID = INSERTED.GUID
GO GO
IF NOT EXISTS(SELECT 1 FROM TBDD_GROUPS WHERE NAME = 'ENVELOPE-ADMIN')
INSERT INTO TBDD_GROUPS (NAME, INTERNAL,ACTIVE) VALUES ('ENVELOPE-ADMIN',1,1)
GO
CREATE VIEW [dbo].[VWSIG_REPORT_ENVELOPES_OPENED_DELETED] AS
SELECT
DEL.* FROM
(SELECT [ENVELOPE_ID],POS_WHEN FROM [DD_ECM].[dbo].[VWSIG_ENVELOPE_REPORT] A where POS_STATUS = 1009) DEL INNER JOIN --DELETED
(SELECT [ENVELOPE_ID],POS_WHEN FROM [DD_ECM].[dbo].[VWSIG_ENVELOPE_REPORT] A where POS_STATUS = 3002) REQ ON DEL.ENVELOPE_ID = REQ.ENVELOPE_ID INNER JOIN --AccessCodeSent
(SELECT [ENVELOPE_ID],POS_WHEN FROM [DD_ECM].[dbo].[VWSIG_ENVELOPE_REPORT] A where POS_STATUS = 2004) OP ON REQ.ENVELOPE_ID = OP.ENVELOPE_ID --DocOpened
GO
CREATE TABLE [dbo].[TBSIG_REORT_ENV_COUNT](
GUID INTEGER IDENTITY(1,1) NOT NULL,
ENV_ID INTEGER NOT NULL,
MONTH_REPORT VARCHAR(50) NOT NULL,
ADDED_WHEN DATETIME DEFAULT GETDATE(),
CONSTRAINT PK_TBSIG_REORT_ENV_COUNT PRIMARY KEY (GUID)
)
GO
INSERT INTO TBDD_CATALOG (CAT_TITLE,CAT_STRING) VALUES ('SIG_REPORT_RECEIVER_ENV_MONTHLY','m.schreiber@digitaldata.works;a.truebenbach@digitaldata.works');
GO
INSERT INTO TBDD_CATALOG (CAT_TITLE,CAT_STRING) VALUES ('SIG_CUSTOMER_NAME','Digital Data Testsystem');
GO
CREATE 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 FROM TBDD_CATALOG WHERE CAT_TITLE = 'SIG_CUSTOMER_NAME';
SELECT @EML_RECEIPIANTS 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: <p>'
SET @Body += 'Kunde: <b>' + @CUSTOMER + '</b><p>'
SET @Body += 'Monat: <b>' + @Month + '</b><p>'
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_OPENED_DELETED 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_OPENED_DELETED WHERE DATEDIFF(month,POS_WHEN,GETDATE()) = 1;
SET @SUM_MONTH = @AM_FINISHED + @AM_SENT_DELETED
SET @Body += 'Anzahl final signierte Envelopes: <b>' + Convert(Varchar(5),@AM_FINISHED) + '</b> <br>'
SET @Body += 'Anzahl Gelöschte aber geöffnete Envelopes: <b>' + Convert(Varchar(5),@AM_SENT_DELETED) + '</b> <p>'
SET @Body += 'Summe abrechenbare Envelopes: <b>' + Convert(Varchar(5),@SUM_MONTH) + '</b> <p>'
IF LEN(@EML_RECEIPIANTS) > 0 AND LEN(@EML_RECEIPIANTS) > 0
EXEC PREMAIL_NEW_EMAIL 1,@EML_RECEIPIANTS,@SUBJ,@Body,'sigFLOW-EnvCount',9000,9000,'signFLOW-EnvelopeCount'
END

View File

@ -1,50 +1,51 @@
--DROP TABLE TBMigrationLog --DROP TABLE TBDD_MigrationScripts
CREATE TABLE TBMigrationLog CREATE TABLE TBDD_MigrationLog
( (
MigrationID INTEGER NOT NULL, MigrationID INTEGER NOT NULL,
ScriptName VARCHAR(255) NOT NULL,
ExecutedWhen DATETIME NOT NULL, ExecutedWhen DATETIME NOT NULL,
ExecutedWho VARCHAR(50) NOT NULL, ExecutedWho VARCHAR(50) NOT NULL,
ExecState VARCHAR(50), ExecState VARCHAR(50),
ErrorMessage VARCHAR(500), ErrorMessage VARCHAR(500),
CONSTRAINT PK_TBMigrationLog PRIMARY KEY (MigrationID) CONSTRAINT PK_TBDD_MigrationLog PRIMARY KEY (MigrationID)
) )
GO GO
--DROP TABLE TBMigrationScripts --DROP TABLE TBDD_MigrationScripts
CREATE TABLE TBMigrationScripts CREATE TABLE TBDD_MigrationScripts
( (
MigrationID INTEGER IDENTITY(1,1), MigrationID INTEGER IDENTITY(1,1),
ScriptName VARCHAR(255) NOT NULL, ScriptName VARCHAR(255) NOT NULL,
ScriptDescription VARCHAR(255), ModuleName VARCHAR(100) NOT NULL,
ScriptType VARCHAR(255),
ScriptPath_Command NVARCHAR(MAX), ScriptPath_Command NVARCHAR(MAX),
IsActive BIT NOT NULL DEFAULT 0, IsActive BIT NOT NULL DEFAULT 0,
AddedWhen DATETIME NOT NULL DEFAULT GETDATE() AddedWhen DATETIME NOT NULL DEFAULT GETDATE()
CONSTRAINT PK_TBMigrationScripts PRIMARY KEY (MigrationID) CONSTRAINT PK_TBDD_MigrationScripts PRIMARY KEY (MigrationID)
) )
GO GO
INSERT INTO TBMigrationScripts (ScriptName, ScriptDescription, ScriptPath_Command, IsActive) INSERT INTO TBDD_MigrationScripts (ScriptName, ModuleName, ScriptType, ScriptPath_Command, IsActive)
VALUES ('007', 'FILE', 'E:\TreeSizeFree\1.9.8.1.sql', 1); VALUES ('007', 'fileFLOW','FILE', 'E:\TreeSizeFree\1.9.8.1.sql', 1);
GO
--CREATE PROCEDURE ExecuteMigrations CREATE PROCEDURE PRDD_MigrationsExecute @Test BIT
--AS AS
BEGIN BEGIN
DECLARE @MigrationID INT, @ScriptName VARCHAR(255), @ScriptPath_Command NVARCHAR(MAX), @SQL NVARCHAR(MAX),@ScriptDescription VARCHAR(20); DECLARE @MigrationID INT, @ScriptName VARCHAR(255), @ScriptPath_Command NVARCHAR(MAX), @SQL NVARCHAR(MAX),@ScriptType VARCHAR(20);
DECLARE @ROOT_FOLDER VARCHAR(500) = 'E:\DocumentProcessing\Manual\File\DBMigration\'
DECLARE MigrationCursor CURSOR FOR DECLARE MigrationCursor CURSOR FOR
SELECT MS.MigrationID, MS.ScriptName, ScriptPath_Command,MS.ScriptDescription SELECT MS.MigrationID, MS.ScriptName, ScriptPath_Command,MS.ScriptType
FROM TBMigrationScripts MS FROM TBDD_MigrationScripts MS
LEFT JOIN TBMigrationLog ML ON MS.MigrationID = ML.MigrationID LEFT JOIN TBDD_MigrationLog ML ON MS.MigrationID = ML.MigrationID
WHERE ML.MigrationID IS NULL AND MS.IsActive = 1 WHERE MS.IsActive = 1 AND ML.MigrationID IS NULL
ORDER BY MS.MigrationID; ORDER BY MS.MigrationID;
OPEN MigrationCursor; OPEN MigrationCursor;
FETCH NEXT FROM MigrationCursor INTO @MigrationID, @ScriptName, @ScriptPath_Command,@ScriptDescription; FETCH NEXT FROM MigrationCursor INTO @MigrationID, @ScriptName, @ScriptPath_Command,@ScriptType;
WHILE @@FETCH_STATUS = 0 WHILE @@FETCH_STATUS = 0
BEGIN BEGIN
BEGIN TRY BEGIN TRY
-- Lies das SQL-Skript aus der Datei -- Lies das SQL-Skript aus der Datei
IF @ScriptDescription = 'FILE' IF @ScriptType = 'FILE'
BEGIN BEGIN
DECLARE @DynamicSQL NVARCHAR(500), @FileContent NVARCHAR(MAX); DECLARE @DynamicSQL NVARCHAR(500), @FileContent NVARCHAR(MAX);
SET @DynamicSQL = 'SELECT @FileContentOut = BulkColumn SET @DynamicSQL = 'SELECT @FileContentOut = BulkColumn
@ -52,7 +53,7 @@ BEGIN
EXEC sp_executesql @DynamicSQL, N'@FileContentOut NVARCHAR(MAX) OUTPUT', @FileContent OUTPUT; EXEC sp_executesql @DynamicSQL, N'@FileContentOut NVARCHAR(MAX) OUTPUT', @FileContent OUTPUT;
SET @SQL = @FileContent; SET @SQL = @FileContent;
PRINT '==============================' PRINT '============= COMMAND FROM FILE ================='
PRINT @SQL PRINT @SQL
PRINT '==============================' PRINT '=============================='
END END
@ -60,26 +61,29 @@ BEGIN
SET @SQL = @ScriptPath_Command; SET @SQL = @ScriptPath_Command;
-- Führe das Skript aus -- Führe das Skript aus
IF @Test = 1
BEGIN
PRINT 'EXECUTING - MIGRATION SKRIPT [' + @ScriptName + '] ...' PRINT 'EXECUTING - MIGRATION SKRIPT [' + @ScriptName + '] ...'
EXEC sp_executesql @SQL; EXEC sp_executesql @SQL;
PRINT '########################################' PRINT '########################################'
PRINT 'EXECUTION SUCCESSFUL!' PRINT 'EXECUTION SUCCESSFUL!'
PRINT '########################################' PRINT '########################################'
END
IF @Test = 0
-- Erfolgreiche Migration protokollieren -- Erfolgreiche Migration protokollieren
INSERT INTO TBMigrationLog (MigrationID, ScriptName, ExecutedWhen, ExecutedWho, ExecState) INSERT INTO TBDD_MigrationLog (MigrationID, ExecutedWhen, ExecutedWho, ExecState)
VALUES (@MigrationID, @ScriptName, GETDATE(), SYSTEM_USER, 'Success'); VALUES (@MigrationID, GETDATE(), SYSTEM_USER, 'Success');
END TRY END TRY
BEGIN CATCH BEGIN CATCH
DECLARE @ERR VARCHAR(1500) = ERROR_MESSAGE(); DECLARE @ERR VARCHAR(1500) = ERROR_MESSAGE();
PRINT @ERR PRINT @ERR
-- Fehler protokollieren -- Fehler protokollieren
INSERT INTO TBMigrationLog (MigrationID, ScriptName, ExecutedWhen, ExecutedWho, ExecState, ErrorMessage) INSERT INTO TBDD_MigrationLog (MigrationID, ExecutedWhen, ExecutedWho, ExecState, ErrorMessage)
VALUES (@MigrationID, @ScriptName, GETDATE(), 'XXXX', 'Failed', @ERR); VALUES (@MigrationID, GETDATE(), 'XXXX', 'Failed', @ERR);
BREAK; BREAK;
END CATCH; END CATCH;
PRINT '' PRINT ''
FETCH NEXT FROM MigrationCursor INTO @MigrationID, @ScriptName, @ScriptPath_Command,@ScriptDescription; FETCH NEXT FROM MigrationCursor INTO @MigrationID, @ScriptName, @ScriptPath_Command,@ScriptType;
END; END;
CLOSE MigrationCursor; CLOSE MigrationCursor;