The complete folder structure has been changed or updated
This commit is contained in:
@@ -0,0 +1,150 @@
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
-- [FNDD_CONVERT_RTF2TEXT]
|
||||
-- =================================================================
|
||||
-- Converts a RTF text to a regular text
|
||||
--
|
||||
-- Returns: NVARCHAR - text
|
||||
-- =================================================================
|
||||
-- Copyright (c) 2025 by Digital Data GmbH
|
||||
--
|
||||
-- Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim
|
||||
-- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works
|
||||
-- =================================================================
|
||||
-- Creation Date / Author: 26.09.2024 / HE,MK
|
||||
-- Version Date / Editor: 25.03.2025 / HE,MK
|
||||
-- Version Number: 1.2.0.0
|
||||
-- =================================================================
|
||||
-- History:
|
||||
-- 26.09.2024 / HE,MK - First Version
|
||||
-- 14.12.2024 / MK - code optimisation, new additional parameters
|
||||
-- 25.03.2025 / HE,MK - Remove rtf format strings
|
||||
|
||||
CREATE OR ALTER FUNCTION [dbo].[FNDD_CONVERT_RTF2TEXT](
|
||||
@pRTF nvarchar(max), -- Give the RTF text, you want to convert
|
||||
@pREMOVE_LINE_WRAP BIT = NULL, -- Set to 1 to remove line wraps
|
||||
@pREMOVE_DOUBLE_BLANKS BIT = NULL -- Set to 1 to remove unnecessary blanks
|
||||
)
|
||||
RETURNS nvarchar(max)
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
-- decalare new vars because of parameter sniffing
|
||||
DECLARE @RTF NVARCHAR(max) = ISNULL(@pRTF,''),
|
||||
@REMOVE_LINE_WRAP BIT = ISNULL(@pREMOVE_LINE_WRAP,1),
|
||||
@REMOVE_DOUBLE_BLANKS BIT = ISNULL(@pREMOVE_DOUBLE_BLANKS,1);
|
||||
|
||||
-- decalare runtime vars
|
||||
DECLARE @Pos1 int,
|
||||
@Pos2 int,
|
||||
@hex varchar(316);
|
||||
|
||||
DECLARE @Stage table ([Char] char(1), [Pos] int);
|
||||
|
||||
IF (LEN(@RTF) > 1) BEGIN
|
||||
|
||||
INSERT @Stage ([Char], [Pos])
|
||||
|
||||
SELECT SUBSTRING(@rtf, [Number], 1),
|
||||
[Number]
|
||||
FROM [master]..[spt_values]
|
||||
WHERE ([Type] = 'p')
|
||||
AND (SUBSTRING(@rtf, Number, 1) IN ('{', '}'));
|
||||
|
||||
SELECT @Pos1 = MIN([Pos])
|
||||
, @Pos2 = MAX([Pos])
|
||||
FROM @Stage;
|
||||
|
||||
DELETE
|
||||
FROM @Stage
|
||||
WHERE ([Pos] IN (@Pos1, @Pos2));
|
||||
|
||||
WHILE (1 = 1) BEGIN
|
||||
SELECT TOP 1 @Pos1 = s1.[Pos]
|
||||
, @Pos2 = s2.[Pos]
|
||||
FROM @Stage s1
|
||||
INNER JOIN @Stage s2 ON s2.[Pos] > s1.[Pos]
|
||||
WHERE (s1.[Char] = '{')
|
||||
AND (s2.[Char] = '}')
|
||||
ORDER BY s2.[Pos] - s1.[Pos];
|
||||
|
||||
IF @@ROWCOUNT = 0
|
||||
BREAK
|
||||
|
||||
DELETE
|
||||
FROM @Stage
|
||||
WHERE ([Pos] IN (@Pos1, @Pos2));
|
||||
|
||||
UPDATE @Stage
|
||||
SET [Pos] = [Pos] - @Pos2 + @Pos1 - 1
|
||||
WHERE ([Pos] > @Pos2);
|
||||
|
||||
SET @rtf = STUFF(@rtf, @Pos1, @Pos2 - @Pos1 + 1, '');
|
||||
END;
|
||||
|
||||
SET @rtf = REPLACE(@rtf, '\pard', '');
|
||||
SET @rtf = REPLACE(@rtf, '\par', '');
|
||||
SET @rtf = STUFF(@rtf, 1, CHARINDEX(' ', @rtf), '');
|
||||
|
||||
WHILE (Right(@rtf, 1) IN (' ', CHAR(13), CHAR(10), '}')) BEGIN
|
||||
SELECT @rtf = SUBSTRING(@rtf, 1, (LEN(@rtf + 'x') - 2));
|
||||
IF LEN(@rtf) = 0 BREAK
|
||||
END;
|
||||
|
||||
SET @Pos1 = CHARINDEX('\''', @rtf);
|
||||
|
||||
WHILE (@Pos1 > 0) BEGIN
|
||||
IF (@Pos1 > 0) BEGIN
|
||||
SET @hex = '0x' + SUBSTRING(@rtf, @Pos1 + 2, 2);
|
||||
SET @rtf = REPLACE(@rtf, SUBSTRING(@rtf, @Pos1, 4),CHAR(CONVERT(int, CONVERT (binary(1), @hex,1))));
|
||||
SET @Pos1 = CHARINDEX('\''', @rtf);
|
||||
END;
|
||||
END;
|
||||
|
||||
SET @rtf = @rtf + ' ';
|
||||
SET @Pos1 = PATINDEX('%\%[0123456789][\ ]%', @rtf);
|
||||
|
||||
WHILE (@Pos1 > 0) BEGIN
|
||||
|
||||
SET @Pos2 = CHARINDEX(' ', @rtf, @Pos1 + 1);
|
||||
|
||||
IF (@Pos2 < @Pos1) BEGIN
|
||||
SET @Pos2 = CHARINDEX('\', @rtf, @Pos1 + 1);
|
||||
END;
|
||||
|
||||
IF (@Pos2 < @Pos1) BEGIN
|
||||
SET @rtf = SUBSTRING(@rtf, 1, @Pos1 - 1);
|
||||
SET @Pos1 = 0;
|
||||
END; ELSE BEGIN
|
||||
SET @rtf = STUFF(@rtf, @Pos1, @Pos2 - @Pos1 + 1, '');
|
||||
SET @Pos1 = PATINDEX('%\%[0123456789][\ ]%', @rtf);
|
||||
END;
|
||||
END;
|
||||
|
||||
IF (@REMOVE_LINE_WRAP = 1) BEGIN
|
||||
SET @rtf = REPLACE(@rtf,char(10),' ');
|
||||
SET @rtf = REPLACE(@rtf,char(13),' ');
|
||||
END;
|
||||
|
||||
IF (@REMOVE_DOUBLE_BLANKS = 1) BEGIN
|
||||
WHILE (@rtf like '% %') BEGIN
|
||||
IF (@rtf like '% %') BEGIN
|
||||
SET @rtf = REPLACE(@rtf,' ',' ');
|
||||
END;
|
||||
END;
|
||||
END;
|
||||
|
||||
-- Anyway remove trailing spaces
|
||||
SET @rtf = LTRIM(RTRIM(@rtf));
|
||||
|
||||
-- Replace rtf format strings
|
||||
SET @rtf = Replace(@rtf,'Riched20 10.0.17763} ','');
|
||||
|
||||
END;
|
||||
|
||||
RETURN @rtf;
|
||||
|
||||
END;
|
||||
@@ -0,0 +1,109 @@
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
-- [FNDD_GET_LICENSE_COUNT]
|
||||
-- =================================================================
|
||||
-- Reads the table [TBDD_USER_LOGIN_OUT] for used licenses
|
||||
--
|
||||
-- Returns: An integer value
|
||||
-- =================================================================
|
||||
-- Copyright (c) 2025 by Digital Data GmbH
|
||||
--
|
||||
-- Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim
|
||||
-- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works
|
||||
-- =================================================================
|
||||
-- Creation Date / Author: 13.06.2023 / MS
|
||||
-- Version Date / Editor: 15.09.2025 / MK
|
||||
-- Version Number: 2.0.0.0
|
||||
-- =================================================================
|
||||
-- History:
|
||||
-- 13.06.2023 / MS - First Version
|
||||
-- 15.09.2025 / MK - Enhanced functionality and parameters
|
||||
|
||||
CREATE OR ALTER FUNCTION [dbo].[FNDD_GET_LICENSE_COUNT](
|
||||
@pCLIENT_ID TINYINT, -- Give the mandator ID from [TBDD_CLIENT] or 0, for all mandators.
|
||||
@pMODULE_ID TINYINT, -- Give the module ID from [TBDD_MODULES] the get the module name.
|
||||
@pLOOKBACK_IN_DAYS SMALLINT -- Give the timespan you want to monitor in the past.
|
||||
-- By giving 0, function will check sql table [TBDD_CATALOG] for global variables: <MODULE_NAME>_LICENSE_LOOKBACK_IN_DAYS.
|
||||
-- Failsafe value is 90 days.
|
||||
)
|
||||
RETURNS INTEGER
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
-- declare new vars because of parameter sniffing
|
||||
DECLARE @CLIENT_ID TINYINT = @pCLIENT_ID,
|
||||
@MODULE_ID TINYINT = @pMODULE_ID,
|
||||
@LOOKBACK_IN_DAYS SMALLINT = @pLOOKBACK_IN_DAYS;
|
||||
|
||||
-- declare runtime vars
|
||||
DECLARE @USED_LICENSE_COUNT INTEGER = 0,
|
||||
@MODULE_NAME NVARCHAR(50) = NULL,
|
||||
@MODULE_SHORT_NAME NVARCHAR(50) = NULL,
|
||||
@CATALOG_TITLE_TERM NVARCHAR(50) = '_LICENSE_LOOKBACK_IN_DAYS';
|
||||
|
||||
--=================================================-- Get module name --===================================================--
|
||||
SELECT @MODULE_NAME = [NAME],
|
||||
@MODULE_SHORT_NAME = [SHORT_NAME]
|
||||
FROM [TBDD_MODULES] (NOLOCK)
|
||||
WHERE [GUID] = @MODULE_ID AND [ACTIVE] = 1;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--===========================================-- Exit because of missing data --============================================--
|
||||
IF (LEN(@MODULE_NAME) = 0) AND (LEN(@MODULE_SHORT_NAME) = 0) BEGIN
|
||||
RETURN ISNULL(@USED_LICENSE_COUNT,0);
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--===================================-- Determ how long in the past we need to check --===================================--
|
||||
IF (@LOOKBACK_IN_DAYS = 0) BEGIN
|
||||
|
||||
IF (EXISTS (SELECT * FROM [INFORMATION_SCHEMA].[TABLES] WHERE [TABLE_NAME] = 'TBDD_CATALOG')) BEGIN
|
||||
SELECT TOP (1) @LOOKBACK_IN_DAYS = CONVERT(INTEGER,[CAT_STRING])
|
||||
FROM [TBDD_CATALOG] (NOLOCK)
|
||||
WHERE [CAT_TITLE] IN (CONCAT(@MODULE_NAME,@CATALOG_TITLE_TERM),CONCAT(@MODULE_SHORT_NAME,@CATALOG_TITLE_TERM));
|
||||
END;
|
||||
|
||||
IF ((@LOOKBACK_IN_DAYS is null) or (@LOOKBACK_IN_DAYS = 0)) BEGIN -- Failsafe is 90 days
|
||||
SET @LOOKBACK_IN_DAYS = 90;
|
||||
END;
|
||||
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--===========================================-- Exit because of missing table --===========================================--
|
||||
IF NOT (EXISTS (SELECT * FROM [INFORMATION_SCHEMA].[TABLES] WHERE [TABLE_NAME] = 'TBDD_USER_LOGIN_OUT')) BEGIN
|
||||
RETURN ISNULL(@USED_LICENSE_COUNT,0);
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--=====================================================-- main part --=====================================================--
|
||||
IF (@CLIENT_ID = 0) BEGIN
|
||||
|
||||
SET @USED_LICENSE_COUNT = (SELECT COUNT(DISTINCT [USER_ID])
|
||||
FROM [TBDD_USER_LOGIN_OUT] (NOLOCK)
|
||||
WHERE LEN([MACHINE_NAME]) > 0
|
||||
AND [CLIENT_ID] IS NOT NULL
|
||||
AND [MODULE] IN (@MODULE_NAME,@MODULE_SHORT_NAME)
|
||||
AND CONVERT(DATE,[LOGIN]) BETWEEN DATEADD(DAY, (@LOOKBACK_IN_DAYS*(-1)), GETDATE()) AND GETDATE());
|
||||
|
||||
END; ELSE BEGIN
|
||||
|
||||
SET @USED_LICENSE_COUNT = (SELECT COUNT(DISTINCT [USER_ID])
|
||||
FROM [TBDD_USER_LOGIN_OUT] (NOLOCK)
|
||||
WHERE LEN([MACHINE_NAME]) > 0
|
||||
AND [CLIENT_ID] = @CLIENT_ID
|
||||
AND [MODULE] IN (@MODULE_NAME,@MODULE_SHORT_NAME)
|
||||
AND CONVERT(DATE,[LOGIN]) BETWEEN DATEADD(DAY, (@LOOKBACK_IN_DAYS*(-1)), GETDATE()) AND GETDATE());
|
||||
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--===============================================-- Returning final count --===============================================--
|
||||
RETURN ISNULL(@USED_LICENSE_COUNT,0);
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
END;
|
||||
GO
|
||||
@@ -0,0 +1,36 @@
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
-- [FNDD_GET_WINDREAM_CHOICELIST_ITEMS]
|
||||
-- =================================================================
|
||||
-- Reads the windream database choice list and gives the
|
||||
-- choice list items
|
||||
--
|
||||
-- Returns: Table (1 column)
|
||||
-- =================================================================
|
||||
-- Copyright (c) 2024 by Digital Data GmbH
|
||||
--
|
||||
-- Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim
|
||||
-- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works
|
||||
-- =================================================================
|
||||
-- Creation Date / Author: 13.12.2024 / MK
|
||||
-- Version Date / Editor: 23.04.2025 / HE, MK
|
||||
-- Version Number: 1.1.0.0
|
||||
-- =================================================================
|
||||
-- History:
|
||||
-- 13.12.2024 / MK - First Version
|
||||
-- 23.04.2025 / HE, MK - Adding Support for other data types
|
||||
|
||||
CREATE OR ALTER FUNCTION [dbo].[FNDD_GET_WINDREAM_CHOICELIST_ITEMS] (
|
||||
@szListName NVARCHAR(255)
|
||||
)
|
||||
RETURNS TABLE
|
||||
AS
|
||||
RETURN
|
||||
|
||||
SELECT TOP (100) PERCENT COALESCE([szValue],CONVERT(NVARCHAR,[dwValue]),CONVERT(NVARCHAR,[decValue]),CONVERT(NVARCHAR,[blValue]),CONVERT(NVARCHAR,[lfValue])) as 'Auswahlliste'
|
||||
FROM [windreamDB].[dbo].[ChoiceListItem]
|
||||
WHERE [dwChoiceListID] = (SELECT [dwChoiceListID] FROM [windreamDB].[dbo].[ChoiceList] WHERE [szListName] = @szListName)
|
||||
ORDER BY [dwValueOrdNr] ASC
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,104 @@
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
-- [FNDD_GET_WINDREAM_USER_DATA]
|
||||
-- =================================================================
|
||||
-- Reads the windream and maybe digitaldata database
|
||||
-- to give you user infos including the group affiliation.
|
||||
--
|
||||
-- Returns: Table
|
||||
-- =================================================================
|
||||
-- Copyright (c) 2025 by Digital Data GmbH
|
||||
--
|
||||
-- Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim
|
||||
-- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works
|
||||
-- =================================================================
|
||||
-- Creation Date / Author: 10.06.2025 / MK
|
||||
-- Version Date / Editor: 10.06.2025 / MK
|
||||
-- Version Number: 1.0.0.0
|
||||
-- =================================================================
|
||||
-- History:
|
||||
-- 10.06.2025 / MK - First Version
|
||||
|
||||
CREATE OR ALTER FUNCTION [FNDD_GET_WINDREAM_USER_DATA] (
|
||||
@pWindreamUsername NVARCHAR(255), -- Give windream username
|
||||
@pISSyncedWithDD BIT, -- 1 = Check of user is in digitaldata db as well; 0 = Check only windream db
|
||||
@pIncludeGroup NVARCHAR(500), -- Substring (LIKE Operator!) for groups you want to include in the result
|
||||
@pExcludeGroup NVARCHAR(500) -- Substring (LIKE Operator!) for groups you want to exclude in the result
|
||||
)
|
||||
RETURNS @USER_DATA TABLE ([GUID] [bigint] IDENTITY(1,1) NOT NULL,
|
||||
[szNTDomain] [NVARCHAR] (255) NOT NULL,
|
||||
[szUserName] [NVARCHAR] (255) NOT NULL,
|
||||
[szUserFullName] [NVARCHAR] (255) NOT NULL,
|
||||
[szMailAddress] [NVARCHAR] (255) NULL,
|
||||
[szGroupName] [NVARCHAR] (255) NOT NULL)
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
-- declare new vars because of parameter sniffing
|
||||
DECLARE @WindreamUsername NVARCHAR(255) = UPPER(LTRIM(RTRIM(@pWindreamUsername))),
|
||||
@ISSyncedWithDD BIT = @pISSyncedWithDD,
|
||||
@IncludeGroup NVARCHAR(500) = UPPER(LTRIM(RTRIM(@pIncludeGroup))),
|
||||
@ExcludeGroup NVARCHAR(500) = UPPER(LTRIM(RTRIM(@pExcludeGroup)))
|
||||
|
||||
-- Give user infos if user is in windream db
|
||||
IF (@ISSyncedWithDD = 0) BEGIN
|
||||
|
||||
INSERT INTO @USER_DATA( [szNTDomain], [szUserName], [szUserFullName], [szMailAddress], [szGroupName])
|
||||
SELECT DISTINCT [wdUI].[szNTDomain], [wdUI].[szUserName], [wdUI].[szUserFullName], [wdUI].[szMailAddress], [wdGI].[szGroupName]
|
||||
|
||||
FROM [windreamDB].[dbo].[UserInfo] as [wdUI] (NOLOCK)
|
||||
INNER JOIN [windreamDB].[dbo].[UserGroup] as [wdU2G] (NOLOCK) ON [wdUI].[dwUserID] = [wdU2G].[dwUserOrGroupID]
|
||||
INNER JOIN [windreamDB].[dbo].[GroupInfo] as [wdGI] (NOLOCK) ON [wdU2G].[dwGroupID] = [wdGI].[dwGroupID]
|
||||
|
||||
WHERE UPPER([wdUI].[szUserName]) = @WindreamUsername
|
||||
AND [wdGI].[szGroupName] LIKE '%' + ISNULL(@IncludeGroup,'_') + '%'
|
||||
AND [wdGI].[szGroupName] NOT LIKE '%' + ISNULL(@ExcludeGroup,'$!dummy_value!$') + '%';
|
||||
|
||||
-- Give user infos if user is in windream and digitaldata db
|
||||
END; ELSE IF (@ISSyncedWithDD = 1) BEGIN
|
||||
|
||||
INSERT INTO @USER_DATA( [szNTDomain], [szUserName], [szUserFullName], [szMailAddress], [szGroupName])
|
||||
SELECT DISTINCT [wdUI].[szNTDomain], [wdUI].[szUserName], [wdUI].[szUserFullName], [wdUI].[szMailAddress], [wdGI].[szGroupName]
|
||||
|
||||
FROM [windreamDB].[dbo].[UserInfo] as [wdUI] (NOLOCK)
|
||||
INNER JOIN [windreamDB].[dbo].[UserGroup] as [wdU2G] (NOLOCK) ON [wdUI].[dwUserID] = [wdU2G].[dwUserOrGroupID]
|
||||
INNER JOIN [windreamDB].[dbo].[GroupInfo] as [wdGI] (NOLOCK) ON [wdU2G].[dwGroupID] = [wdGI].[dwGroupID]
|
||||
INNER JOIN [DD_ECM].[dbo].[TBDD_USER] as [ddUI] (NOLOCK) ON [wdUI].[dwUserID] = [ddUI].[USERID_FK_INT_ECM]
|
||||
INNER JOIN [DD_ECM].[dbo].[TBDD_GROUPS_USER] as [ddU2G] (NOLOCK) ON [ddUI].[GUID] = [ddU2G].[USER_ID]
|
||||
INNER JOIN [DD_ECM].[dbo].[TBDD_GROUPS] as [ddGI] (NOLOCK) ON [ddU2G].[GROUP_ID] = [ddGI].[GUID]
|
||||
|
||||
WHERE UPPER([wdUI].[szUserName]) = @WindreamUsername
|
||||
AND [wdGI].[szGroupName] LIKE '%' + ISNULL(@IncludeGroup,'_') + '%'
|
||||
AND [wdGI].[szGroupName] NOT LIKE '%' + ISNULL(@ExcludeGroup,'$!dummy_value!$') + '%';
|
||||
|
||||
END;
|
||||
|
||||
RETURN;
|
||||
|
||||
END;
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------
|
||||
-- Example call
|
||||
-- SELECT * FROM [FNDD_GET_WINDREAM_USER_DATA]('IIMAdmin',0,'Admin','User')
|
||||
----------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
-- OLD ONE
|
||||
|
||||
--SELECT concat([wdGI].[szNTDomain],'\',[wdGI].[szGroupName]) as 'RightGroups'
|
||||
--FROM [windreamDB].[dbo].[BaseAttributes] as [wdBA] (NOLOCK)
|
||||
|
||||
--INNER JOIN [windreamDB].[dbo].[UserInfo] as [wdUI] (NOLOCK) ON UPPER([wdBA].[szText22]) = UPPER([wdUI].[szUserName]) -- Username for UserID
|
||||
--INNER JOIN [windreamDB].[dbo].[UserGroup] as [wdU2G] (NOLOCK) ON [wdUI].[dwUserID] = [wdU2G].[dwUserOrGroupID] -- UserID for GroupsID
|
||||
--INNER JOIN [windreamDB].[dbo].[GroupInfo] as [wdGI] (NOLOCK) ON [wdU2G].[dwGroupID] = [wdGI].[dwGroupID] -- GroupIDs for Groupnames
|
||||
|
||||
--INNER JOIN [DD_ECM].[dbo].[TBDD_USER] as [ddUI] (NOLOCK) ON [wdUI].[dwUserID] = [ddUI].[USERID_FK_INT_ECM] -- windream UserID to DD UserID
|
||||
--INNER JOIN [DD_ECM].[dbo].[TBDD_GROUPS_USER] as [ddU2G] (NOLOCK) ON [ddUI].[GUID] = [ddU2G].[USER_ID] -- UserID for GroupsID
|
||||
--INNER JOIN [DD_ECM].[dbo].[TBDD_GROUPS] as [ddGI] (NOLOCK) ON [ddU2G].[GROUP_ID] = [ddGI].[GUID] -- GroupIDs for Groupnames
|
||||
|
||||
--WHERE UPPER([wdGI].[szGroupName]) = UPPER([ddGI].[NAME])
|
||||
-- AND [wdBA].[dwDocID] = @pWindreamUsername
|
||||
-- AND [wdGI].[szGroupName] LIKE '%' + ISNULL(@pIncludeGroup,'_') + '%'
|
||||
-- AND [wdGI].[szGroupName] NOT LIKE '%' + ISNULL(@pExcludeGroup,'') + '%'
|
||||
@@ -0,0 +1,435 @@
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
-- [PRDD_GET_TRANSLATED_CHOICELIST]
|
||||
-- =================================================================
|
||||
-- Replaces placeholders like "%term%" to a translated term
|
||||
-- for the choise list column header.
|
||||
--
|
||||
-- Returns: INT Value - 0 = Everything worked well
|
||||
-- =================================================================
|
||||
-- Copyright (c) 2025 by Digital Data GmbH
|
||||
--
|
||||
-- Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim
|
||||
-- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works
|
||||
-- =================================================================
|
||||
-- Creation Date / Author: 19.09.2025 / MK
|
||||
-- Version Date / Editor: 19.09.2025 / MK
|
||||
-- Version Number: 1.0.0.0
|
||||
-- =================================================================
|
||||
-- History:
|
||||
-- 19.09.2025 / MK - First Version
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[PRDD_GET_TRANSLATED_CHOICELIST]
|
||||
@pSOURCE_QUERY NVARCHAR(2000),
|
||||
@pLANGUAGE NVARCHAR(5)
|
||||
AS
|
||||
BEGIN TRY
|
||||
|
||||
SET NOCOUNT ON;
|
||||
|
||||
-- declare new vars because of parameter sniffing
|
||||
DECLARE @SOURCE_QUERY NVARCHAR(2000) = LTRIM(RTRIM(ISNULL(@pSOURCE_QUERY,''))),
|
||||
@LANGUAGE NVARCHAR(5) = UPPER(LTRIM(RTRIM(ISNULL(@pLANGUAGE,'DE-de'))));
|
||||
|
||||
DECLARE @vTB_DICTIONARY TABLE ([GUID] [BIGINT] IDENTITY(1,1) NOT NULL,
|
||||
[LANGUAGE] [NVARCHAR](5) NOT NULL,
|
||||
[TERM] [NVARCHAR](150) NOT NULL,
|
||||
[TRANSLATION] [NVARCHAR](150) NOT NULL);
|
||||
|
||||
-- declare runtime vars
|
||||
DECLARE @MY_PROCEDURE_NAME NVARCHAR(128) = OBJECT_NAME(@@PROCID);
|
||||
DECLARE @TERM NVARCHAR(150),
|
||||
@TRANSLATION NVARCHAR(150),
|
||||
@PERCENT_COUNT TINYINT = 0,
|
||||
@RETURN_STATUS NVARCHAR(50) = 0,
|
||||
@RETURN_STATUS_TEXT NVARCHAR(MAX) = 'START [' + @MY_PROCEDURE_NAME + '] @ ' + CONVERT(varchar(50),GETDATE(),120),
|
||||
@RETURN_ERROR_TEXT NVARCHAR(MAX) = '';
|
||||
|
||||
PRINT '====================================================================================================';
|
||||
PRINT 'PROCEDURE - ' + @return_status_text;
|
||||
PRINT 'PARAMETER01 - @SOURCE_QUERY: ' + CONVERT(NVARCHAR(50),@SOURCE_QUERY);
|
||||
PRINT 'PARAMETER02 - @LANGUAGE: ' + CONVERT(NVARCHAR(50),@LANGUAGE);
|
||||
|
||||
--===============================================-- Common translations --=================================================--
|
||||
IF (@LANGUAGE IN ('DE-DE','DE_DE')) BEGIN
|
||||
|
||||
INSERT INTO @vTB_DICTIONARY([LANGUAGE],[TERM],[TRANSLATION])
|
||||
|
||||
SELECT 'DE-de','id','ID'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','selection','Auswahl'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','result','Ergebnis'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','description','Beschreibung'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','customer','Kunde'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','vendor','Lieferant'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','number','Nummer'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','payment','Zahlung'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','flag','Kennzeichen'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','street','Straße'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','city','Ort'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','postal code','Postleitzahl'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','zip code','PLZ'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','user','Benutzer'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','group','Gruppe'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','VAT-ID','Umsatzsteuer-ID'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','accounting','Kontierung'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','history','Historie'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','item','Artikel'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','head','Kopf'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','account','Konto'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','date','Datum'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','quantity','Menge'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','amount','Betrag'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','discount','Rabatt'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','charge','Gebühr'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','fee','Gebühr'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','rate','Rate'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','confirmed','Bestätigt'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','rejected','Abgelehnt'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','document','Dokument'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','documents','Dokumente'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','approval','Freigabe'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','approvals','Freigaben'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','creditor','Kreditor'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','no','Nr'
|
||||
UNION ALL
|
||||
SELECT 'DE-de','name','Name'
|
||||
|
||||
END; ELSE IF (@LANGUAGE IN ('FR-fr','FR_fr')) BEGIN
|
||||
|
||||
INSERT INTO @vTB_DICTIONARY([LANGUAGE],[TERM],[TRANSLATION])
|
||||
|
||||
SELECT 'FR-fr','id','ID'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','selection','Sélection'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','result','Résultat'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','description','Description'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','customer','Client'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','vendor','Fournisseur'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','number','Numéro'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','payment','Paiement'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','flag','Plaque d'+ char(39) +'immatriculation'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','street','Rue'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','city','Ville'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','postal code','Code postal'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','zip code','CP'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','user','Utilisateur'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','group','Groupe'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','VAT-ID','Numéro d' + char(39) + 'identification fiscale'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','accounting','Imputation'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','history','Historique'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','item','Article'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','head','En-tête'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','account','Compte'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','date','Date'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','quantity','Quantité'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','amount','Montant'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','discount','Remise'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','charge','Frais'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','fee','Frais'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','rate','Taux'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','confirmed','Confirmé'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','rejected','Refusé'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','document','Document'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','documents','Documents'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','approval','Validation'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','approvals','Validations'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','creditor','Créditer'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','No','No'
|
||||
UNION ALL
|
||||
SELECT 'FR-fr','Name','Nom'
|
||||
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--=============================================-- Replace term placeholder --==============================================--
|
||||
DECLARE CURSOR_REPLACE_TERMS CURSOR STATIC LOCAL FOR
|
||||
SELECT [TERM], [TRANSLATION]
|
||||
FROM @vTB_DICTIONARY
|
||||
WHERE UPPER([LANGUAGE]) IN (REPLACE(@LANGUAGE,'-','_'),REPLACE(@LANGUAGE,'_','-'));
|
||||
|
||||
OPEN CURSOR_REPLACE_TERMS
|
||||
FETCH NEXT FROM CURSOR_REPLACE_TERMS INTO @TERM, @TRANSLATION;
|
||||
WHILE @@FETCH_STATUS = 0 BEGIN
|
||||
BEGIN
|
||||
|
||||
PRINT 'Replacing Term: ' + @TERM + ', with translation: ' + @TRANSLATION;
|
||||
SET @SOURCE_QUERY = REPLACE(@SOURCE_QUERY,concat('%',@TERM,'%'),@TRANSLATION);
|
||||
|
||||
END;
|
||||
|
||||
FETCH NEXT FROM CURSOR_REPLACE_TERMS INTO @TERM, @TRANSLATION;
|
||||
|
||||
END;
|
||||
|
||||
CLOSE CURSOR_REPLACE_TERMS;
|
||||
DEALLOCATE CURSOR_REPLACE_TERMS;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--==============================================-- Additional ressource 1 --===============================================--
|
||||
IF (@SOURCE_QUERY LIKE '%%%') BEGIN
|
||||
|
||||
PRINT 'Found further terms for replacement!';
|
||||
SET @PERCENT_COUNT = (SELECT LEN(@SOURCE_QUERY) - LEN(REPLACE(@SOURCE_QUERY,'%','')));
|
||||
|
||||
IF (@PERCENT_COUNT % 2 = 0) BEGIN
|
||||
|
||||
PRINT 'There are an even amount of "%" found!';
|
||||
|
||||
IF EXISTS (SELECT * FROM [INFORMATION_SCHEMA].[TABLES] WHERE TABLE_NAME = N'TBDD_TRANSLATED_CHOICELIST_COLUMNS') BEGIN
|
||||
|
||||
PRINT 'Getting additional ressources from [TBDD_TRANSLATED_CHOICELIST_COLUMNS]';
|
||||
|
||||
IF ((SELECT COUNT(*) FROM @vTB_DICTIONARY) = 0) BEGIN
|
||||
|
||||
PRINT 'Query additional source table';
|
||||
|
||||
DELETE FROM @vTB_DICTIONARY;
|
||||
INSERT INTO @vTB_DICTIONARY([LANGUAGE],[TERM],[TRANSLATION])
|
||||
SELECT @LANGUAGE, [TERM],[TRANSLATION]
|
||||
FROM [TBDD_TRANSLATED_CHOICELIST_COLUMNS] WITH (SNAPSHOT)
|
||||
WHERE UPPER([LANGUAGE]) IN (REPLACE(@LANGUAGE,'-','_'),REPLACE(@LANGUAGE,'_','-'));
|
||||
|
||||
--=============================================-- Replace term placeholder --==============================================--
|
||||
DECLARE CURSOR_REPLACE_TERMS CURSOR STATIC LOCAL FOR
|
||||
SELECT [TERM], [TRANSLATION]
|
||||
FROM @vTB_DICTIONARY
|
||||
WHERE UPPER([LANGUAGE]) IN (REPLACE(@LANGUAGE,'-','_'),REPLACE(@LANGUAGE,'_','-'));
|
||||
|
||||
OPEN CURSOR_REPLACE_TERMS
|
||||
FETCH NEXT FROM CURSOR_REPLACE_TERMS INTO @TERM, @TRANSLATION;
|
||||
WHILE @@FETCH_STATUS = 0 BEGIN
|
||||
BEGIN
|
||||
|
||||
PRINT 'Replacing Term: ' + @TERM + ', with translation: ' + @TRANSLATION;
|
||||
SET @SOURCE_QUERY = REPLACE(@SOURCE_QUERY,concat('%',@TERM,'%'),@TRANSLATION);
|
||||
|
||||
END;
|
||||
|
||||
FETCH NEXT FROM CURSOR_REPLACE_TERMS INTO @TERM, @TRANSLATION;
|
||||
|
||||
END;
|
||||
|
||||
CLOSE CURSOR_REPLACE_TERMS;
|
||||
DEALLOCATE CURSOR_REPLACE_TERMS;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'No content in additional source table!';
|
||||
END;
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'Additional ressources table [TBDD_TRANSLATED_CHOICELIST_COLUMNS] not found!';
|
||||
END;
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'There are an odd amount of "%" found!';
|
||||
END;
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'No further terms for replacement found!';
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--==============================================-- Additional ressource 2 --===============================================--
|
||||
IF (@SOURCE_QUERY LIKE '%%%') BEGIN
|
||||
|
||||
PRINT 'Found further terms for replacement!';
|
||||
SET @PERCENT_COUNT = (SELECT LEN(@SOURCE_QUERY) - LEN(REPLACE(@SOURCE_QUERY,'%','')));
|
||||
|
||||
IF (@PERCENT_COUNT % 2 = 0) BEGIN
|
||||
|
||||
PRINT 'There are an even amount of "%" found!';
|
||||
|
||||
IF EXISTS (SELECT * FROM [INFORMATION_SCHEMA].[TABLES] WHERE TABLE_NAME = N'TBDD_GUI_LANGUAGE_PHRASE') BEGIN
|
||||
|
||||
PRINT 'Getting additional ressources from [TBDD_GUI_LANGUAGE_PHRASE]';
|
||||
|
||||
IF ((SELECT COUNT(*) FROM @vTB_DICTIONARY) = 0) BEGIN
|
||||
|
||||
PRINT 'Query additional source table';
|
||||
|
||||
DELETE FROM @vTB_DICTIONARY;
|
||||
INSERT INTO @vTB_DICTIONARY([LANGUAGE],[TERM],[TRANSLATION])
|
||||
SELECT @LANGUAGE, [TITLE] as [TERM], [STRING1] as[TRANSLATION]
|
||||
FROM [TBDD_GUI_LANGUAGE_PHRASE] (NOLOCK)
|
||||
WHERE UPPER([LANGUAGE]) IN (REPLACE(@LANGUAGE,'-','_'),REPLACE(@LANGUAGE,'_','-'));
|
||||
|
||||
--=============================================-- Replace term placeholder --==============================================--
|
||||
DECLARE CURSOR_REPLACE_TERMS CURSOR STATIC LOCAL FOR
|
||||
SELECT [TERM], [TRANSLATION]
|
||||
FROM @vTB_DICTIONARY
|
||||
WHERE UPPER([LANGUAGE]) IN (REPLACE(@LANGUAGE,'-','_'),REPLACE(@LANGUAGE,'_','-'));
|
||||
|
||||
OPEN CURSOR_REPLACE_TERMS
|
||||
FETCH NEXT FROM CURSOR_REPLACE_TERMS INTO @TERM, @TRANSLATION;
|
||||
WHILE @@FETCH_STATUS = 0 BEGIN
|
||||
BEGIN
|
||||
|
||||
PRINT 'Replacing Term: ' + @TERM + ', with translation: ' + @TRANSLATION;
|
||||
SET @SOURCE_QUERY = REPLACE(@SOURCE_QUERY,concat('%',@TERM,'%'),@TRANSLATION);
|
||||
|
||||
END;
|
||||
|
||||
FETCH NEXT FROM CURSOR_REPLACE_TERMS INTO @TERM, @TRANSLATION;
|
||||
|
||||
END;
|
||||
|
||||
CLOSE CURSOR_REPLACE_TERMS;
|
||||
DEALLOCATE CURSOR_REPLACE_TERMS;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'No content in additional source table!';
|
||||
END;
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'Additional ressources table [TBDD_GUI_LANGUAGE_PHRASE] not found!';
|
||||
END;
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'There are an odd amount of "%" found!';
|
||||
END;
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'No further terms for replacement found!';
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--=========================================-- Default language will not resolved --========================================--
|
||||
IF (@LANGUAGE IN ('EN-EN','EN_EN','EN-US','EN_US')) BEGIN
|
||||
|
||||
IF (@SOURCE_QUERY LIKE '%%%') BEGIN
|
||||
|
||||
PRINT 'Found default terms to replace only the "%"!';
|
||||
SET @PERCENT_COUNT = (SELECT LEN(@SOURCE_QUERY) - LEN(REPLACE(@SOURCE_QUERY,'%','')));
|
||||
|
||||
IF (@PERCENT_COUNT % 2 = 0) BEGIN
|
||||
|
||||
PRINT 'There are an even amount of "%" found!';
|
||||
SET @SOURCE_QUERY = REPLACE(@SOURCE_QUERY,'%','');
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'There are an odd amount of "%" found!';
|
||||
END;
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'No further terms for replacement found!';
|
||||
END;
|
||||
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--===================================================-- Final steps --=====================================================--
|
||||
SET @SOURCE_QUERY = REPLACE(@SOURCE_QUERY,'@LANGUAGE',@LANGUAGE);
|
||||
PRINT @SOURCE_QUERY;
|
||||
|
||||
EXECUTE sp_executesql @SOURCE_QUERY;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--======================================================-- Output result --======================================================--
|
||||
SET @RETURN_STATUS = 0;
|
||||
SET @RETURN_STATUS_TEXT = concat('END PROCEDURE [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(NVARCHAR(50),GETDATE(),120));
|
||||
SET @RETURN_ERROR_TEXT = concat('','');
|
||||
|
||||
PRINT '' + char(13) + @RETURN_STATUS_TEXT;
|
||||
PRINT '====================================================================================================';
|
||||
-----------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
RETURN @RETURN_STATUS;
|
||||
|
||||
END TRY BEGIN CATCH
|
||||
|
||||
--======================================================-- Output result --======================================================--
|
||||
SET @RETURN_STATUS = CASE WHEN @RETURN_STATUS > 50000 THEN @RETURN_STATUS ELSE 50000 END;
|
||||
SET @RETURN_STATUS_TEXT = concat('END [',@MY_PROCEDURE_NAME,'] @ ',CONVERT(NVARCHAR(50),GETDATE(),120));
|
||||
SET @RETURN_ERROR_TEXT = concat('ERROR MESSAGE: ',CONVERT(NVARCHAR(500),ERROR_MESSAGE()));
|
||||
|
||||
PRINT '' + char(13) + 'ERROR IN PROCEDURE: [' + @MY_PROCEDURE_NAME + ']' + char(13) + @RETURN_ERROR_TEXT;
|
||||
PRINT '' + char(13) + 'PROCEDURE - ' + @RETURN_STATUS_TEXT;
|
||||
PRINT '====================================================================================================';
|
||||
-----------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
RETURN @RETURN_STATUS;
|
||||
|
||||
END CATCH;
|
||||
|
||||
|
||||
---- Example call:
|
||||
---- EXEC [dbo].[PRDD_GET_TRANSLATED_CHOICELIST]
|
||||
---- @pSOURCE_QUERY = N'SELECT [ID] as ''%ID%'',[DESCRIPTION] as ''%DESCRIPTION%'' from [FNCUST_TF_GET_PAYMENT_METHODE](''@LANGUAGE'')',
|
||||
---- @pLANGUAGE = N'de-de'
|
||||
|
||||
---- GO
|
||||
@@ -0,0 +1,101 @@
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
-- [PRDD_MOVE_USER_LOGIN_OUT_TO_ARCHIVE]
|
||||
-- =================================================================
|
||||
-- Reads the table [TBDD_USER_LOGIN_OUT] for used licenses
|
||||
--
|
||||
-- Returns: An integer value
|
||||
-- =================================================================
|
||||
-- Copyright (c) 2025 by Digital Data GmbH
|
||||
--
|
||||
-- Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim
|
||||
-- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works
|
||||
-- =================================================================
|
||||
-- Creation Date / Author: 16.09.2025 / MK
|
||||
-- Version Date / Editor: 16.09.2025 / MK
|
||||
-- Version Number: 1.0.0.0
|
||||
-- =================================================================
|
||||
-- History:
|
||||
-- 16.09.2025 / MS - First Version
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[PRDD_MOVE_USER_LOGIN_OUT_TO_ARCHIVE](
|
||||
@pCLIENT_ID INTEGER, -- Give the mandator ID from [TBDD_CLIENT] or 0, for all mandators.
|
||||
@pMODULE_ID INTEGER, -- Give the module ID from [TBDD_MODULES] the get the module name.
|
||||
@pLOOKBACK_IN_DAYS SMALLINT -- Give the timespan you want to monitor in the past.
|
||||
-- By giving 0, function will check sql table [TBDD_CATALOG] for global variables: <MODULE_NAME>_LICENSE_LOOKBACK_IN_DAYS.
|
||||
-- Failsafe value is 90 days.
|
||||
)
|
||||
RETURNS INTEGER
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
-- declare new vars because of parameter sniffing
|
||||
DECLARE @CLIENT_ID INTEGER = @pCLIENT_ID,
|
||||
@MODULE_ID INTEGER = @pMODULE_ID,
|
||||
@LOOKBACK_IN_DAYS SMALLINT = @pLOOKBACK_I[F[DF_TBDD_USER_LOGIN_OUT_STATISTICS_ADDED_WHO]K_TBDD_USER_LOGIN_OUT_HISTORY_TBDD_CLIENT][FK_TBDD_USER_LOGIN_OUT_STATISTICS_TBDD_MODULES]N[FK_TBDD_USER_LOGIN_OUT_STATISTICS_TBDD_CLIENT]_DAYS;
|
||||
|
||||
-- declare runtime vars
|
||||
DECLARE @MY_PROCEDURE_NAME NVARCHAR(128) = OBJECT_NAME(@@PROCID);
|
||||
DECLARE @USED_LICENSE_COUNT INTEGER = 0,
|
||||
@MODULE_NAME NVARCHAR(50) = NULL,
|
||||
@MODULE_SHORT_NAME NVARCHAR(50) = NULL,
|
||||
@CATALOG_TITLE_TERM NVARCHAR(50) = '_LICENSE_LOOKBACK_IN_DAYS';
|
||||
|
||||
--=================================================-- Get module name --===================================================--
|
||||
SELECT @MODULE_NAME = [NAME],
|
||||
@MODULE_SHORT_NAME = [SHORT_NAME]
|
||||
FROM [TBDD_MODULES] (NOLOCK)
|
||||
WHERE [GUID] = @MODULE_ID AND [ACTIVE] = 1;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--===========================================-- Exit because of missing data --============================================--
|
||||
IF (LEN(@MODULE_NAME) = 0) AND (LEN(@MODULE_SHORT_NAME) = 0) BEGIN
|
||||
RETURN ISNULL(@USED_LICENSE_COUNT,0);
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--===================================-- Determ how long in the past we need to check --===================================--
|
||||
IF (@LOOKBACK_IN_DAYS = 0) BEGIN
|
||||
|
||||
SELECT TOP (1) @LOOKBACK_IN_DAYS = CONVERT(INTEGER,[CAT_STRING])
|
||||
FROM [TBDD_CATALOG] (NOLOCK)
|
||||
WHERE [CAT_TITLE] IN (CONCAT(@MODULE_NAME,@CATALOG_TITLE_TERM),CONCAT(@MODULE_SHORT_NAME,@CATALOG_TITLE_TERM));
|
||||
|
||||
IF ((@LOOKBACK_IN_DAYS is null) or (@LOOKBACK_IN_DAYS = 0)) BEGIN -- Failsafe is 90 days
|
||||
SET @LOOKBACK_IN_DAYS = 90;
|
||||
END;
|
||||
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--=====================================================-- main part --=====================================================--
|
||||
IF (@CLIENT_ID = 0) BEGIN
|
||||
|
||||
SET @USED_LICENSE_COUNT = (SELECT COUNT(DISTINCT [USER_ID])
|
||||
FROM [TBDD_USER_LOGIN_OUT] (NOLOCK)
|
||||
WHERE LEN([MACHINE_NAME]) > 0
|
||||
AND [CLIENT_ID] IS NOT NULL
|
||||
AND [MODULE] IN (@MODULE_NAME,@MODULE_SHORT_NAME)
|
||||
AND CONVERT(DATE,[LOGIN]) BETWEEN DATEADD(DAY, (@LOOKBACK_IN_DAYS*(-1)), GETDATE()) AND GETDATE());
|
||||
|
||||
END; ELSE BEGIN
|
||||
|
||||
SET @USED_LICENSE_COUNT = (SELECT COUNT(DISTINCT [USER_ID])
|
||||
FROM [TBDD_USER_LOGIN_OUT] (NOLOCK)
|
||||
WHERE LEN([MACHINE_NAME]) > 0
|
||||
AND [CLIENT_ID] = @CLIENT_ID
|
||||
AND [MODULE] IN (@MODULE_NAME,@MODULE_SHORT_NAME)
|
||||
AND CONVERT(DATE,[LOGIN]) BETWEEN DATEADD(DAY, (@LOOKBACK_IN_DAYS*(-1)), GETDATE()) AND GETDATE());
|
||||
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--===============================================-- Returning final count --===============================================--
|
||||
RETURN ISNULL(@USED_LICENSE_COUNT,0);
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
END
|
||||
GO
|
||||
@@ -0,0 +1,285 @@
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
-- [PRDD_SET_STATUS_IN_THIRDPARTY_DB]
|
||||
-- =================================================================
|
||||
-- Set status info into a text field
|
||||
--
|
||||
-- Returns: 1 = SUCCESS; 0 = FAILED
|
||||
-- =================================================================
|
||||
-- Copyright (c) 2025 by Digital Data GmbH
|
||||
--
|
||||
-- Digital Data GmbH • Ludwig-Rinn-Strasse 16 • D-35452 Heuchelheim
|
||||
-- Tel.: 0641/202360 • E-Mail: info-flow@digitaldata.works
|
||||
-- =================================================================
|
||||
-- Creation Date / Author: 25.11.2024 / HE,MK
|
||||
-- Version Date / Editor: 28.03.2025 / MK
|
||||
-- Version Number: 1.1.1.0
|
||||
-- =================================================================
|
||||
-- History:
|
||||
-- 25.11.2024 / HE,MK - First Version
|
||||
-- 14.12.2024 / MK - @MyProcedureName variable implemented, Failsafe for parameters implemented
|
||||
-- 28.03.2025 / MK - Result value set to success when duplicate detected
|
||||
|
||||
CREATE OR ALTER PROCEDURE [PRDD_SET_STATUS_IN_THIRDPARTY_DB](
|
||||
@pTARGET_DB NVARCHAR(256) = '[DD_CWLDATEN_DDVP]', -- Give target DB name (without schema!)
|
||||
@pTARGET_SCHEMA NVARCHAR(256) = '[dbo]', -- Give target DB schema
|
||||
@pTARGET_TABLE NVARCHAR(256) = '[t025]', -- Give target DB table
|
||||
@pTARGET_COLUMN NVARCHAR(256) = '[c069]', -- Give target DB column
|
||||
@pTARGET_COLUMN_TYPE NVARCHAR(256) = 'NVARCHAR', -- Give target DB column type eg. INT or NVARCHAR
|
||||
@pREF_DOC_TYPE NVARCHAR(256) = 'Ausgangsrechnung', -- Give REF_DOC_TYPE, eg.: Ausgangsangebot, Ausgangsauftrag, Ausgangslieferschein, Ausgangsrechnung (ONLY FOR LOGGING PURPOSE!)
|
||||
@pREF_DOC_NR_COLUMN NVARCHAR(256) = '[c055]', -- Give the column where the REF_DOC_NR is stored (eg. WINLINE: Ausgangsangebot=[c043], Ausgangsauftrag=[c044], Ausgangslieferschein=[c045], Ausgangsrechnung=[c055])
|
||||
@pREF_DOC_NR NVARCHAR(256), -- Give REF_DOC_NR, like 'ARE-20234187' or 'AANG-20241060'
|
||||
@pADDITIONAL_WHERE NVARCHAR(256) = '', -- Give an additional WHERE clause like ' AND [COLUMN] IS NOT NULL'
|
||||
@pSTATUS_VALUE NVARCHAR(256), -- Give text to write in @pTARGET_COLUMN
|
||||
@pSTATUS_VALUE_MAX_LEN INT = 60, -- Give the max lenght of the target field for the status text
|
||||
@pSTATUS_VALUE_DELIMITER NVARCHAR(3) = '; ', -- Give the separator to concat multiple status values, like "Text1; Text2; ..."
|
||||
@pUSERNAME NVARCHAR(50), -- Give the user of the Frontend call, for the logging
|
||||
@pOVERWRITE BIT = 0, -- Set overwrite for @pTARGET_COLUMN: 0 = concat; 1 = overwrite
|
||||
@pLOGLEVEL NVARCHAR(25) = 'ERROR' -- Set Loglevel (ERROR or INFO) to be written to table [TBDD_SET_STATUS_IN_THIRDPARTY_DB_LOG]
|
||||
)
|
||||
AS
|
||||
BEGIN TRY
|
||||
|
||||
SET NOCOUNT ON;
|
||||
|
||||
-- decalare new vars because of parameter sniffing
|
||||
DECLARE @TARGET_DB NVARCHAR(256) = ISNULL(@pTARGET_DB,''),
|
||||
@TARGET_SCHEMA NVARCHAR(256) = ISNULL(@pTARGET_SCHEMA,''),
|
||||
@TARGET_TABLE NVARCHAR(256) = ISNULL(@pTARGET_TABLE,''),
|
||||
@TARGET_COLUMN NVARCHAR(256) = ISNULL(@pTARGET_COLUMN,''),
|
||||
@TARGET_COLUMN_TYPE NVARCHAR(256) = ISNULL(@pTARGET_COLUMN_TYPE,'NVARCHAR'),
|
||||
@REF_DOC_TYPE NVARCHAR(256) = ISNULL(@pREF_DOC_TYPE,''),
|
||||
@REF_DOC_NR_COLUMN NVARCHAR(256) = ISNULL(@pREF_DOC_NR_COLUMN,''),
|
||||
@REF_DOC_NR NVARCHAR(256) = ISNULL(@pREF_DOC_NR,''),
|
||||
@ADDITIONAL_WHERE NVARCHAR(256) = ISNULL(@pADDITIONAL_WHERE,''),
|
||||
@STATUS_VALUE NVARCHAR(256) = ISNULL(@pSTATUS_VALUE,''),
|
||||
@STATUS_VALUE_MAX_LEN INT = ISNULL(@pSTATUS_VALUE_MAX_LEN,60),
|
||||
@STATUS_VALUE_DELIMITER NVARCHAR(3) = ISNULL(@pSTATUS_VALUE_DELIMITER,'; '),
|
||||
@USERNAME NVARCHAR(50) = ISNULL(@pUSERNAME,LEFT(OBJECT_NAME(@@PROCID),50)),
|
||||
@OVERWRITE BIT = ISNULL(@pOVERWRITE,0),
|
||||
@LOGLEVEL NVARCHAR(25) = ISNULL(@pLOGLEVEL,'ERROR');
|
||||
|
||||
-- decalare runtime vars
|
||||
DECLARE @MyProcedureName NVARCHAR(128) = OBJECT_NAME(@@PROCID);
|
||||
DECLARE @LINE_COUNT_1 INT = 0,
|
||||
@LINE_COUNT_2 INT = 0,
|
||||
@SQL_COMMAND NVARCHAR(2000) = NULL,
|
||||
@STATUS_VALUE_OLD NVARCHAR(256) = NULL,
|
||||
@RETURN_STATUS NVARCHAR(256) = NULL,
|
||||
@RETURN_STATUS_VALUE NVARCHAR(256) = 'START ' + @MyProcedureName + ' @ ' + CONVERT(varchar(50),GETDATE(),120);
|
||||
|
||||
PRINT '==============================='
|
||||
PRINT 'PROCEDURE - ' + @RETURN_STATUS_VALUE;
|
||||
PRINT 'PARAMETER01 - @TARGET_DB: ' + CONVERT(NVARCHAR(256),@TARGET_DB);
|
||||
PRINT 'PARAMETER02 - @TARGET_SCHEMA: ' + CONVERT(NVARCHAR(256),@TARGET_SCHEMA);
|
||||
PRINT 'PARAMETER03 - @TARGET_TABLE: ' + CONVERT(NVARCHAR(256),@TARGET_TABLE);
|
||||
PRINT 'PARAMETER04 - @TARGET_COLUMN: ' + CONVERT(NVARCHAR(256),@TARGET_COLUMN);
|
||||
PRINT 'PARAMETER05 - @TARGET_COLUMN_TYPE: ' + CONVERT(NVARCHAR(256),@TARGET_COLUMN_TYPE);
|
||||
PRINT 'PARAMETER06 - @REF_DOC_TYPE: ' + CONVERT(NVARCHAR(256),@REF_DOC_TYPE);
|
||||
PRINT 'PARAMETER07 - @REF_DOC_NR_COLUMN ' + CONVERT(NVARCHAR(256),@REF_DOC_NR_COLUMN);
|
||||
PRINT 'PARAMETER08 - @REF_DOC_NR: ' + CONVERT(NVARCHAR(256),@REF_DOC_NR);
|
||||
PRINT 'PARAMETER09 - @ADDITIONAL_WHERE ' + CONVERT(NVARCHAR(256),@ADDITIONAL_WHERE);
|
||||
PRINT 'PARAMETER10 - @STATUS_VALUE: ' + CONVERT(NVARCHAR(256),@STATUS_VALUE);
|
||||
PRINT 'PARAMETER11 - @STATUS_VALUE_MAX_LEN ' + CONVERT(NVARCHAR(256),@STATUS_VALUE_MAX_LEN);
|
||||
PRINT 'PARAMETER12 - @STATUS_VALUE_DELIMITER ' + CONVERT(NVARCHAR(3),@STATUS_VALUE_DELIMITER);
|
||||
PRINT 'PARAMETER13 - @USERNAME: ' + CONVERT(NVARCHAR(50),@USERNAME);
|
||||
PRINT 'PARAMETER14 - @OVERWRITE: ' + CONVERT(NVARCHAR(1),@OVERWRITE);
|
||||
PRINT 'PARAMETER15 - @LOGLEVEL: ' + CONVERT(NVARCHAR(25),@LOGLEVEL);
|
||||
|
||||
--==============================================-- Prepare the log table --================================================--
|
||||
IF (@LOGLEVEL is not NULL) BEGIN
|
||||
PRINT '';
|
||||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_SET_STATUS_IN_THIRDPARTY_DB_LOG') BEGIN
|
||||
PRINT 'Log table already exists';
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'Log table does not exists, trying to create...';
|
||||
|
||||
CREATE TABLE [dbo].[TBDD_SET_STATUS_IN_THIRDPARTY_DB_LOG](
|
||||
[GUID] [bigint] IDENTITY(1,1) NOT NULL,
|
||||
[LOG_LEVEL] [NVARCHAR](25) NOT NULL,
|
||||
[MESSAGE1] [NVARCHAR](max) NOT NULL,
|
||||
[MESSAGE2] [NVARCHAR](max) NULL,
|
||||
[MESSAGE3] [NVARCHAR](max) NULL,
|
||||
[MESSAGE4] [NVARCHAR](max) NULL,
|
||||
[MESSAGE5] [NVARCHAR](max) NULL,
|
||||
[COMMENT] [NVARCHAR](max) NULL,
|
||||
[ADDED_WHO] [NVARCHAR](50) NOT NULL,
|
||||
[ADDED_WHEN] [datetime] NOT NULL,
|
||||
CONSTRAINT [PK_TBDD_SET_STATUS_IN_THIRDPARTY_DB_LOG] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[GUID] ASC
|
||||
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
||||
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY];
|
||||
|
||||
ALTER TABLE [dbo].[TBDD_SET_STATUS_IN_THIRDPARTY_DB_LOG] ADD CONSTRAINT [DF_TBDD_SET_STATUS_IN_THIRDPARTY_DB_LOG_ADDED_WHO] DEFAULT ('DEFAULT') FOR [ADDED_WHO];
|
||||
|
||||
ALTER TABLE [dbo].[TBDD_SET_STATUS_IN_THIRDPARTY_DB_LOG] ADD CONSTRAINT [DF_TBDD_SET_STATUS_IN_THIRDPARTY_DB_LOG_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN];
|
||||
END;
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--=====================================================-- main part --=====================================================--
|
||||
PRINT 'Check if there is a valid target...'
|
||||
SET @SQL_COMMAND = N'SELECT @LINE_COUNT_1 = count(*)
|
||||
FROM ' + @TARGET_DB + '.' + @TARGET_SCHEMA + '.' + @TARGET_TABLE + '
|
||||
WHERE ' + @REF_DOC_NR_COLUMN + ' = ''' + @REF_DOC_NR + ''' ' + @ADDITIONAL_WHERE;
|
||||
PRINT 'Build Query @SQL_COMMAND: ' + @SQL_COMMAND;
|
||||
EXEC @RETURN_STATUS = sp_executesql @SQL_COMMAND,N'@LINE_COUNT_1 INT OUTPUT', @LINE_COUNT_1 OUTPUT;
|
||||
|
||||
IF (@RETURN_STATUS = 0) BEGIN
|
||||
IF (@LINE_COUNT_1 > 0) BEGIN
|
||||
PRINT 'Found: ' + CONVERT(NVARCHAR(25),@LINE_COUNT_1) + ' docs to update!';
|
||||
PRINT 'Checking if docs have a existing "status text"';
|
||||
SET @SQL_COMMAND = N'SELECT @LINE_COUNT_2 = count(*)
|
||||
FROM ' + @TARGET_DB + '.' + @TARGET_SCHEMA + '.' + @TARGET_TABLE + '
|
||||
WHERE ' + @REF_DOC_NR_COLUMN + ' = ''' + @REF_DOC_NR + '''
|
||||
AND (' + @TARGET_COLUMN + ' = ''' + @STATUS_VALUE + '''
|
||||
OR ' + @TARGET_COLUMN + ' LIKE ''%' + @STATUS_VALUE + '''
|
||||
OR ' + @TARGET_COLUMN + ' LIKE ''' + @STATUS_VALUE + '%''
|
||||
OR ' + @TARGET_COLUMN + ' LIKE ''%' + @STATUS_VALUE + '%'') '
|
||||
+ @ADDITIONAL_WHERE;
|
||||
PRINT 'Build "status text" Query @SQL_COMMAND: ' + @SQL_COMMAND;
|
||||
EXEC @RETURN_STATUS = sp_executesql @SQL_COMMAND,N'@LINE_COUNT_2 INT OUTPUT', @LINE_COUNT_2 OUTPUT;
|
||||
|
||||
IF (@RETURN_STATUS = 0) BEGIN
|
||||
PRINT 'Query was successful!';
|
||||
PRINT 'Found: ' + CONVERT(NVARCHAR(25),@LINE_COUNT_2) + ' docs with the status text duplicate!';
|
||||
|
||||
IF (@LINE_COUNT_2 > 0) BEGIN
|
||||
PRINT 'Given status text is already there, no update needed!';
|
||||
SET @RETURN_STATUS = 0;
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'Given status text is not there, update needed!';
|
||||
|
||||
IF ((@OVERWRITE = 0) and (@LINE_COUNT_1 > 0)) BEGIN
|
||||
SET @SQL_COMMAND = N'SELECT TOP 1 @STATUS_VALUE_OLD = ' + @TARGET_COLUMN + '
|
||||
FROM ' + @TARGET_DB + '.' + @TARGET_SCHEMA + '.' + @TARGET_TABLE + '
|
||||
WHERE ' + @REF_DOC_NR_COLUMN + ' = ''' + @REF_DOC_NR + '''
|
||||
AND ' + @TARGET_COLUMN + ' IS NOT NULL
|
||||
AND ' + @TARGET_COLUMN + ' <> '''' '
|
||||
+ @ADDITIONAL_WHERE;
|
||||
PRINT 'Build "status text" Query for existing values @SQL_COMMAND: ' + @SQL_COMMAND;
|
||||
PRINT 'Found: ' + CONVERT(NVARCHAR(25),@LINE_COUNT_1) + ' docs with a existing status text!';
|
||||
EXEC @RETURN_STATUS = sp_executesql @SQL_COMMAND,N'@STATUS_VALUE_OLD NVARCHAR(256) OUTPUT', @STATUS_VALUE_OLD OUTPUT;
|
||||
|
||||
IF ((@RETURN_STATUS = 0)) BEGIN
|
||||
PRINT 'Query was successful!';
|
||||
|
||||
IF (@STATUS_VALUE_OLD <> @STATUS_VALUE) BEGIN
|
||||
PRINT 'Extending status text';
|
||||
SET @STATUS_VALUE = concat(@STATUS_VALUE_OLD,@STATUS_VALUE_DELIMITER,@STATUS_VALUE);
|
||||
END;
|
||||
|
||||
SET @STATUS_VALUE = CASE WHEN LEFT(@STATUS_VALUE,2) = @STATUS_VALUE_DELIMITER
|
||||
THEN SUBSTRING(@STATUS_VALUE, 2, LEN(@STATUS_VALUE)-2)
|
||||
ELSE @STATUS_VALUE
|
||||
END;
|
||||
END; ELSE BEGIN
|
||||
PRINT 'Query has failed!';
|
||||
PRINT '@STATUS_VALUE keeps untouched!';
|
||||
END;
|
||||
|
||||
END; ELSE IF ((@OVERWRITE = 1) or (@LINE_COUNT_1 = 0)) BEGIN
|
||||
PRINT 'Overwrite is enabled and or no doc with existing status text found!';
|
||||
END;
|
||||
|
||||
--===========================================-- data collected updating row --=============================================--
|
||||
|
||||
-- Check STATUS TEXT for its lenght
|
||||
SET @STATUS_VALUE = LTRIM(RTRIM(convert(NVARCHAR(MAX),@STATUS_VALUE)))
|
||||
IF (LEN(@STATUS_VALUE) > @STATUS_VALUE_MAX_LEN) BEGIN
|
||||
SET @STATUS_VALUE = LEFT(@STATUS_VALUE,@STATUS_VALUE_MAX_LEN);
|
||||
END;
|
||||
|
||||
SET @SQL_COMMAND = N'SET NOCOUNT ON; UPDATE ' + @TARGET_DB + '.' + @TARGET_SCHEMA + '.' + @TARGET_TABLE + ' ';
|
||||
|
||||
IF (@TARGET_COLUMN_TYPE LIKE '%INT%') BEGIN
|
||||
SET @STATUS_VALUE = convert(INT,@STATUS_VALUE);
|
||||
SET @SQL_COMMAND += ' SET ' + @TARGET_COLUMN + ' = ' + @STATUS_VALUE;
|
||||
END; ELSE BEGIN
|
||||
-- NVARCHAR is always the failsafe
|
||||
SET @SQL_COMMAND += ' SET ' + @TARGET_COLUMN + ' = ''' + @STATUS_VALUE + '''';
|
||||
END;
|
||||
|
||||
SET @SQL_COMMAND += ' WHERE ' + @REF_DOC_NR_COLUMN + ' = ''' + @REF_DOC_NR + ''' ' + @ADDITIONAL_WHERE;
|
||||
PRINT 'Build Update @SQL_COMMAND: ' + @SQL_COMMAND;
|
||||
EXEC @RETURN_STATUS = sp_executesql @SQL_COMMAND;
|
||||
|
||||
IF (@RETURN_STATUS = 0) BEGIN
|
||||
PRINT 'Update was successful!';
|
||||
SET @RETURN_STATUS = 1;
|
||||
END; ELSE BEGIN
|
||||
PRINT 'Update has failed!';
|
||||
PRINT '@RETURN_STATUS: ' + CONVERT(NVARCHAR(50),@RETURN_STATUS);
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
END;
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'Query has failed!';
|
||||
SET @RETURN_STATUS = 0;
|
||||
END;
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'No doc were found!';
|
||||
SET @RETURN_STATUS = 0;
|
||||
END;
|
||||
|
||||
END; ELSE BEGIN
|
||||
PRINT 'Error at dynamic SQL!';
|
||||
SET @RETURN_STATUS = 0;
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
IF (@RETURN_STATUS = 1) BEGIN
|
||||
SET @RETURN_STATUS_VALUE = 'SUCCESS';
|
||||
END; ELSE BEGIN
|
||||
SET @RETURN_STATUS_VALUE = 'FAILED';
|
||||
END;
|
||||
|
||||
PRINT '';
|
||||
PRINT 'PROCEDURE Result: ' + @RETURN_STATUS_VALUE;
|
||||
PRINT 'PROCEDURE - END ' + @MyProcedureName + ' @ ' + CONVERT(NVARCHAR(50),GETDATE(),120);
|
||||
PRINT '===============================';
|
||||
|
||||
--==============================================-- Log result to table --===============================================--
|
||||
|
||||
IF (@LOGLEVEL in ('INFO','WARN')) BEGIN
|
||||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_SET_STATUS_IN_THIRDPARTY_DB_LOG') BEGIN
|
||||
INSERT INTO [TBDD_SET_STATUS_IN_THIRDPARTY_DB_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [MESSAGE5], [ADDED_WHO], [ADDED_WHEN])
|
||||
VALUES (@LOGLEVEL, concat(@TARGET_DB,'.',@TARGET_SCHEMA,'.',@TARGET_TABLE,'.',@TARGET_COLUMN), concat(@REF_DOC_TYPE,' - Nr: ',@REF_DOC_NR), @STATUS_VALUE, 'OVERWRITE = ' + convert(varchar,@OVERWRITE), @RETURN_STATUS_VALUE, @USERNAME ,GetDate());
|
||||
END;
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
RETURN @RETURN_STATUS; -- Because of the target index in windream!
|
||||
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
|
||||
-- Handle any errors that occur during the process.
|
||||
SELECT ERROR_MESSAGE() AS ErrorMessage;
|
||||
|
||||
--================================================-- Log error to table --=================================================--
|
||||
IF (@LOGLEVEL in ('INFO','WARN','ERROR')) BEGIN
|
||||
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'TBDD_SET_STATUS_IN_THIRDPARTY_DB_LOG') BEGIN
|
||||
INSERT INTO [TBDD_SET_STATUS_IN_THIRDPARTY_DB_LOG]([LOG_LEVEL],[MESSAGE1], [MESSAGE2], [MESSAGE3], [MESSAGE4], [MESSAGE5], [ADDED_WHO], [ADDED_WHEN])
|
||||
VALUES ('ERROR', concat(@TARGET_DB,'.',@TARGET_SCHEMA,'.',@TARGET_TABLE,'.',@TARGET_COLUMN), concat(@REF_DOC_TYPE,' - Nr: ',@REF_DOC_NR), @STATUS_VALUE, 'OVERWRITE = ' + convert(NVARCHAR,@OVERWRITE), ERROR_MESSAGE(), @USERNAME, GetDate());
|
||||
END;
|
||||
END;
|
||||
-----------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
PRINT '';
|
||||
PRINT 'PROCEDURE Result: ERROR! ' + ERROR_MESSAGE();
|
||||
PRINT 'PROCEDURE - END ' + @MyProcedureName + ' @ ' + CONVERT(varchar(50),GETDATE(),120);
|
||||
PRINT '===============================';
|
||||
|
||||
RETURN 0; -- Because of the target index in windream!
|
||||
|
||||
END CATCH;
|
||||
GO
|
||||
Reference in New Issue
Block a user