From 670f58e1fa092ffa27b47cb9167eb4a86ce12f4d Mon Sep 17 00:00:00 2001 From: Developer01 Date: Thu, 11 Dec 2025 14:39:42 +0100 Subject: [PATCH] commit 11.12 --- .../CreateDBObjects_WINDREAM_RELATED.sql | 51 ++++---- .../01_DD_ECM/Update/1.9.8.5.sql | 52 +++++++- 00_DB_SETUP_SINGLE/01_DD_ECM/Update/2.1.sql | 74 ++++++------ 00_DB_SETUP_SINGLE/01_DD_ECM/Update/2.2.sql | 111 ++++++++++++++---- 00_DB_SETUP_SINGLE/01_DD_ECM/Update/2.3.sql | 2 + 01_SMART_UP_TOOLS/02_TASKFLOW/Updates/2.5.sql | 8 ++ 01_SMART_UP_TOOLS/02_TASKFLOW/Updates/2.6.sql | 8 ++ .../Updates/Added2MainScript/2.4.2.0.sql | 2 +- .../Updates/Added2MainScript/2.4.2.1.sql | 2 +- .../08_ORGFLOW/SQL/UPDATE_SCRIPTS/2.7.1.sql | Bin 0 -> 4300 bytes .../08_ORGFLOW/SQL/UPDATE_SCRIPTS/2.7.sql | Bin 17972 -> 29990 bytes ...ateDBObjects_IN DD_ECM Main integriert.sql | 23 ---- 05_ToolCollection/CreateObjects_TBTC.sql | 15 +-- .../Updates/Added2MainScript/1.1.0.0.sql | 2 + .../Vorlagen (Cursor, Reseed etc).sql | 2 +- 15 files changed, 229 insertions(+), 123 deletions(-) create mode 100644 00_DB_SETUP_SINGLE/01_DD_ECM/Update/2.3.sql create mode 100644 01_SMART_UP_TOOLS/02_TASKFLOW/Updates/2.5.sql create mode 100644 01_SMART_UP_TOOLS/02_TASKFLOW/Updates/2.6.sql create mode 100644 01_SMART_UP_TOOLS/08_ORGFLOW/SQL/UPDATE_SCRIPTS/2.7.1.sql diff --git a/00_DB_SETUP_SINGLE/01_DD_ECM/CreateDBObjects_WINDREAM_RELATED.sql b/00_DB_SETUP_SINGLE/01_DD_ECM/CreateDBObjects_WINDREAM_RELATED.sql index 9e31b9e..9a15c12 100644 --- a/00_DB_SETUP_SINGLE/01_DD_ECM/CreateDBObjects_WINDREAM_RELATED.sql +++ b/00_DB_SETUP_SINGLE/01_DD_ECM/CreateDBObjects_WINDREAM_RELATED.sql @@ -97,36 +97,33 @@ DECLARE cursPRDD_USER_REFRESH_WM_ID CURSOR FOR CLOSE cursPRDD_USER_REFRESH_WM_ID DEALLOCATE cursPRDD_USER_REFRESH_WM_ID GO -CREATE VIEW [dbo].[VWDD_WM_ACCESS_RIGHTS_GROUP] AS -SELECT AR.dwObjectID, - UG.dwUserOrGROUPID, - AR.dwAccessRight, - AR.dwObjectDBID -FROM [windreamDB].dbo.AccessRight AR LEFT JOIN [windreamDB].dbo.UserGroup UG ON AR.dwUserOrGroupID = UG.dwGroupID - INNER JOIN TBDD_USER TU ON UG.dwUserOrGroupID = TU.USERID_FK_INT_ECM -WHERE UG.dwUserOrGroupID IS NOT NULL + +CREATE OR ALTER VIEW [dbo].[VWDD_WM_ACCESS_RIGHTS_GROUP] +AS +SELECT [AR].[dwObjectID], + [UG].[dwUserOrGROUPID], + [AR].[dwAccessRight], + [AR].[dwObjectDBID] +FROM [TBDD_USER] TU (NOLOCK) +INNER JOIN [windreamDB].[dbo].[UserGroup] UG (NOLOCK) ON TU.[USERID_FK_INT_ECM] = UG.[dwUserOrGroupID] +INNER JOIN [windreamDB].[dbo].[AccessRight] AR (NOLOCK) ON UG.[dwGroupID] = AR.[dwUserOrGroupID]; +GO +USE [DD_ECM] +GO + +SET ANSI_NULLS ON GO -CREATE VIEW [dbo].[VWDD_WM_ACCESS_RIGHTS_USER] AS -SELECT AR.dwObjectID, - AR.dwUserOrGROUPID, - AR.dwAccessRight, - AR.dwObjectDBID -FROM [windreamDB].dbo.AccessRight AR LEFT JOIN [windreamDB].dbo.UserGroup UG ON AR.dwUserOrGroupID = UG.dwGroupID - INNER JOIN TBDD_USER TU ON AR.dwUserOrGroupID = TU.USERID_FK_INT_ECM -WHERE UG.dwUserOrGroupID IS NULL +SET QUOTED_IDENTIFIER ON GO -CREATE VIEW [dbo].[VWDD_WM_ACCESS_RIGHTS] AS -SELECT ARU.dwObjectID, - ARU.dwUserOrGROUPID, - ARU.dwAccessRight, - ARU.dwObjectDBID -FROM VWDD_WM_ACCESS_RIGHTS_USER ARU UNION -SELECT ARG.dwObjectID, - ARG.dwUserOrGROUPID, - ARG.dwAccessRight, - ARG.dwObjectDBID -FROM VWDD_WM_ACCESS_RIGHTS_GROUP ARG +CREATE OR ALTER VIEW [dbo].[VWDD_WM_ACCESS_RIGHTS_USER] +AS +SELECT [AR].[dwObjectID], + [AR].[dwUserOrGROUPID], + [AR].[dwAccessRight], + [AR].[dwObjectDBID] +FROM [TBDD_USER] TU (NOLOCK) +LEFT JOIN [windreamDB].[dbo].[AccessRight] AR (NOLOCK) ON TU.[USERID_FK_INT_ECM] = AR.[dwUserOrGroupID]; GO diff --git a/00_DB_SETUP_SINGLE/01_DD_ECM/Update/1.9.8.5.sql b/00_DB_SETUP_SINGLE/01_DD_ECM/Update/1.9.8.5.sql index 007ad30..037ad5c 100644 --- a/00_DB_SETUP_SINGLE/01_DD_ECM/Update/1.9.8.5.sql +++ b/00_DB_SETUP_SINGLE/01_DD_ECM/Update/1.9.8.5.sql @@ -1,5 +1,55 @@ UPDATE TBDD_BASECONFIG SET DB_VERSION = '1.9.8.5'; GO + CREATE TABLE [dbo].[TBEDMI_ITEM_VALUE]( + [GUID] [bigint] IDENTITY(1,1) NOT NULL, + [REFERENCE_GUID] NVARCHAR(250) NOT NULL, + [ITEM_DESCRIPTION] NVARCHAR(250) NOT NULL, + [ITEM_VALUE] NVARCHAR(4000) NULL, + [CREATEDWHEN] DATETIME NOT NULL, + [CREATEDWHO] NVARCHAR(100) NULL, + [CHANGEDWHEN] DATETIME NULL, + [GROUP_COUNTER] [int] NULL, + [SPEC_NAME] NVARCHAR(100) NULL, + [IS_REQUIRED] BIT NOT NULL, + [COMMENT] [nvarchar](100) NULL, + [CHANGEDWHO] [nvarchar](100) NULL, + CONSTRAINT [PK_TBEDMI_ITEM_VALUE_GUID] 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] +GO + +ALTER TABLE [dbo].[TBEDMI_ITEM_VALUE] ADD CONSTRAINT [DEF_TBEDMI_ITEM_VALUE_CREATEDWHEN] DEFAULT (getdate()) FOR [CREATEDWHEN] +GO + +ALTER TABLE [dbo].[TBEDMI_ITEM_VALUE] ADD CONSTRAINT [DEF_TBEDMI_ITEM_VALUE_ISREQUIRED] DEFAULT ((0)) FOR [IS_REQUIRED] +GO + + + +CREATE NONCLUSTERED INDEX IDX_TBEDMI_ITEM_VALUE_SPECNAME_REFGUID +ON TBEDMI_ITEM_VALUE (SPEC_NAME, REFERENCE_GUID) include (ITEM_VALUE, GROUP_COUNTER, ITEM_DESCRIPTION, IS_REQUIRED, CREATEDWHEN, CHANGEDWHEN, CHANGEDWHO) ; + +CREATE NONCLUSTERED INDEX IDX_TBEDMI_ITEM_VALUE_REFGUID +ON TBEDMI_ITEM_VALUE (REFERENCE_GUID) include (ITEM_VALUE, SPEC_NAME, GROUP_COUNTER, ITEM_DESCRIPTION, IS_REQUIRED, CREATEDWHEN, CHANGEDWHEN, CHANGEDWHO) ; +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 + /****** Object: StoredProcedure [dbo].[PRDD_SEND_REJECTION_MAIL] Script Date: 15.05.2025 09:29:08 ******/ SET ANSI_NULLS ON GO @@ -505,7 +555,7 @@ Insert INTO TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE GO --CHANGED 25.04.2025 INV_POSITION_UNIT_TYPE integriert --CHANGED 06.03.2025 INV_POS_NOTE integriert -ALTER FUNCTION [dbo].[FNDD_ZUGFERD_VIEW_RECEIPT_CUST_RESULT] (@pMSGID VARCHAR(100)) +CREATE OR ALTER FUNCTION [dbo].[FNDD_ZUGFERD_VIEW_RECEIPT_CUST_RESULT] (@pMSGID VARCHAR(100)) RETURNS TABLE AS RETURN ( diff --git a/00_DB_SETUP_SINGLE/01_DD_ECM/Update/2.1.sql b/00_DB_SETUP_SINGLE/01_DD_ECM/Update/2.1.sql index eaa8ca5..73ce428 100644 --- a/00_DB_SETUP_SINGLE/01_DD_ECM/Update/2.1.sql +++ b/00_DB_SETUP_SINGLE/01_DD_ECM/Update/2.1.sql @@ -44,7 +44,43 @@ Insert INTO TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE ('INVOICE_PAYMENT_IBAN','IBAN:', 'PAYMENT', 10, 501, 0, 1), ('INVOICE_PAYMENT_BIC','BIC:', 'PAYMENT', 10, 502, 0, 1); GO - +--CHANGED +CREATE OR ALTER FUNCTION [dbo].[FNDD_ZUGFERD_VIEW_ALLOWANCE_POSITIONS] (@pMSGID VARCHAR(100)) +RETURNS @TABLE TABLE(SPEC_NAME VARCHAR(100),ITEM_VALUE VARCHAR(250),Area VARCHAR(60),SequenceItem INT,Display BIT) +AS +BEGIN + + DECLARE @GROUP_COUNTER INT,@INDEX INT + SELECT @INDEX = MIN(SequenceItem) FROM TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE WHERE Area = 'ALLOWANCE'; + DECLARE cursGroupCounter CURSOR FOR + select GROUP_COUNTER from TBEDMI_ITEM_VALUE WHERE REFERENCE_GUID = @pMSGID And SPEC_NAME = 'POSITION_ALLOWANCE_ACTUAL_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),@Display BIT + DECLARE cursPosItems CURSOR FOR + select A.SPEC_NAME,ITEM_VALUE,Display 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 (SELECT SPECNAME FROM TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE WHERE Area = 'ALLOWANCE') AND A.GROUP_COUNTER = @GROUP_COUNTER + AND LEN(ITEM_VALUE) > 0 + ORDER BY B.SequenceItem + OPEN cursPosItems + FETCH NEXT FROM cursPosItems INTO @SPEC_NAME,@ITEM_VALUE,@Display + WHILE @@FETCH_STATUS = 0 + BEGIN + SET @INDEX += 1 + INSERT INTO @TABLE (SPEC_NAME,ITEM_VALUE,Area,SequenceItem,Display) VALUES + (@SPEC_NAME,@ITEM_VALUE,'ALLOWANCE',@INDEX,@Display) + FETCH NEXT FROM cursPosItems INTO @SPEC_NAME,@ITEM_VALUE,@Display + END + CLOSE cursPosItems + DEALLOCATE cursPosItems + FETCH NEXT FROM cursGroupCounter INTO @GROUP_COUNTER + END + CLOSE cursGroupCounter + DEALLOCATE cursGroupCounter +RETURN +END +GO --CHANGED 16.09.2025 Nur auf die Area gehen --CHANGED 25.04.2025 INV_POSITION_UNIT_TYPE integriert --CHANGED 25.04.2025 INV_POSITION_UNIT_TYPE integriert @@ -105,39 +141,3 @@ BEGIN RETURN END GO ---CHANGED -ALTER FUNCTION [dbo].[FNDD_ZUGFERD_VIEW_ALLOWANCE_POSITIONS] (@pMSGID VARCHAR(100)) -RETURNS @TABLE TABLE(SPEC_NAME VARCHAR(100),ITEM_VALUE VARCHAR(250),Area VARCHAR(60),SequenceItem INT,Display BIT) -AS -BEGIN - - DECLARE @GROUP_COUNTER INT,@INDEX INT - SELECT @INDEX = MIN(SequenceItem) FROM TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE WHERE Area = 'ALLOWANCE'; - DECLARE cursGroupCounter CURSOR FOR - select GROUP_COUNTER from TBEDMI_ITEM_VALUE WHERE REFERENCE_GUID = @pMSGID And SPEC_NAME = 'POSITION_ALLOWANCE_ACTUAL_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),@Display BIT - DECLARE cursPosItems CURSOR FOR - select A.SPEC_NAME,ITEM_VALUE,Display 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 (SELECT SPECNAME FROM TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE WHERE Area = 'ALLOWANCE') AND A.GROUP_COUNTER = @GROUP_COUNTER - AND LEN(ITEM_VALUE) > 0 - ORDER BY B.SequenceItem - OPEN cursPosItems - FETCH NEXT FROM cursPosItems INTO @SPEC_NAME,@ITEM_VALUE,@Display - WHILE @@FETCH_STATUS = 0 - BEGIN - SET @INDEX += 1 - INSERT INTO @TABLE (SPEC_NAME,ITEM_VALUE,Area,SequenceItem,Display) VALUES - (@SPEC_NAME,@ITEM_VALUE,'ALLOWANCE',@INDEX,@Display) - FETCH NEXT FROM cursPosItems INTO @SPEC_NAME,@ITEM_VALUE,@Display - END - CLOSE cursPosItems - DEALLOCATE cursPosItems - FETCH NEXT FROM cursGroupCounter INTO @GROUP_COUNTER - END - CLOSE cursGroupCounter - DEALLOCATE cursGroupCounter -RETURN -END \ No newline at end of file diff --git a/00_DB_SETUP_SINGLE/01_DD_ECM/Update/2.2.sql b/00_DB_SETUP_SINGLE/01_DD_ECM/Update/2.2.sql index e8f5e7d..ef7433b 100644 --- a/00_DB_SETUP_SINGLE/01_DD_ECM/Update/2.2.sql +++ b/00_DB_SETUP_SINGLE/01_DD_ECM/Update/2.2.sql @@ -45,40 +45,41 @@ Insert INTO TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE ('INVOICE_BUYER_POSTALCODE', '', 'BUYER', 10, 17, 0, 1), ('INVOICE_BUYER_CITY', '', 'BUYER', 35, 18, 1, 1), --('STATIC_Y_SWITCH', '271', 'INTERNAL', 35, 15, 0, 0), -('INVOICE_POSITION_AMOUNT', '', 'POSITION', 10, 20, 0, 0), -('INVOICE_POSITION_UNIT_TYPE', '', 'POSITION', 10, 21, 0, 0), -('INVOICE_POSITION_ARTICLE', '', 'POSITION', 10, 22, 0, 0), -('INVOICE_POSITION_ARTICLE_DESCRIPTION', '', 'POSITION', 10, 23, 0, 0), -('INVOICE_POSITION_NOTE', '', 'POSITION', 10, 24, 0, 0), -('INVOICE_TAXPOS_TAX_RATE', '', 'POSITION', 10, 25, 0, 0), -('INVOICE_POSITION_TAX_AMOUNT', '', 'POSITION', 10, 26, 0, 1), +('INVOICE_POSITION_AMOUNT', '', 'POSITION', 10, 20, 0, 1), +('INVOICE_POSITION_UNIT_TYPE', '', 'POSITION', 10, 21, 1, 1), +('INVOICE_POSITION_ARTICLE', '', 'POSITION', 10, 22, 1, 1), +('INVOICE_POSITION_ARTICLE_DESCRIPTION', '', 'POSITION', 10, 23, 1, 1), +('INVOICE_POSITION_NOTE', '', 'POSITION', 10, 24, 1, 1), +('INVOICE_TAXPOS_TAX_RATE', '', 'POSITION', 10, 25, 1, 1), +('INVOICE_POSITION_TAX_AMOUNT', '', 'POSITION', 10, 26, 1, 1), ('POSITION_ALLOWANCE_ACTUAL_AMOUNT', '', 'ALLOWANCE',10, 100, 0, 1), -('POSITION_ALLOWANCE_REASON', '', 'ALLOWANCE',10, 101, 0, 1), -('POSITION_ALLOWANCE_REASON_CODE', '', 'ALLOWANCE',10, 102, 0, 1), +('POSITION_ALLOWANCE_REASON', '', 'ALLOWANCE',10, 101, 1, 1), +('POSITION_ALLOWANCE_REASON_CODE', '', 'ALLOWANCE',10, 102, 1, 1), ('POSITION_ALLOWANCE_CALCULATION_PERCENT', '', 'ALLOWANCE',10, 103, 0, 1), ('RECEIPT_ALLOWANCE_CHARGE_INDICATOR', '', 'ALLOWANCE',10, 110, 0, 0), ('RECEIPT_ALLOWANCE_ACTUAL_AMOUNT', '', 'ALLOWANCE',10, 111, 0, 1), -('RECEIPT_ALLOWANCE_REASON', '', 'ALLOWANCE',10, 112, 0, 1), -('RECEIPT_ALLOWANCE_REASON_CODE', '', 'ALLOWANCE',10, 113, 0, 1), +('RECEIPT_ALLOWANCE_REASON', '', 'ALLOWANCE',10, 112, 1, 1), +('RECEIPT_ALLOWANCE_REASON_CODE', '', 'ALLOWANCE',10, 113, 1, 1), ('RECEIPT_ALLOWANCE_CALCULATION_PERCENT', '', 'ALLOWANCE',10, 114, 0, 1), ('RECEIPT_ALLOWANCE_VAT_RATE', '', 'ALLOWANCE',10, 115, 0, 1), -('RECEIPT_ALLOWANCE_VAT_CODE', '', 'ALLOWANCE',10, 116, 0, 1), +('RECEIPT_ALLOWANCE_VAT_CODE', '', 'ALLOWANCE',10, 116, 1, 1), ('INVOICE_TOTAL_NET', 'Nettobetrag/Net amount:', 'AMOUNT', 10, 400, 0, 1), ('INVOICE_TOTAL_TAX', 'Steuerbetrag/Tax amount:', 'AMOUNT', 10, 401, 0, 1), ('INVOICE_TOTAL_GROSS', 'Bruttobetrag/Gross amount:', 'AMOUNT', 10, 402, 0, 1), ('INVOICE_TAXPOS_RATE', '', 'TAXPOS', 10, 403, 1, 0), ('INVOICE_TAXPOS_AMOUNT', '', 'TAXPOS', 10, 404, 0, 0), ('INVOICE_TAXPOS_TYPE', '', 'TAXPOS', 10, 405, 1, 1), -('INVOICE_TAXPOS_EXEMPTION_REASON', '', 'EXEMPTION', 10, 406, 0, 1), -('INVOICE_TAXPOS_EXEMPTION_REASON_CODE', '', 'EXEMPTION', 10, 407, 0, 1), +('INVOICE_TAXPOS_EXEMPTION_REASON', '', 'EXEMPTION',10, 406, 0, 1), +('INVOICE_TAXPOS_EXEMPTION_REASON_CODE', '', 'EXEMPTION',10, 407, 0, 1), ('INVOICE_PAYMENT_TERMS','', 'PAYMENT', 10, 500, 0, 1), ('INVOICE_PAYMENT_IBAN','IBAN:', 'PAYMENT', 10, 501, 0, 1), ('INVOICE_PAYMENT_BIC','BIC:', 'PAYMENT', 10, 502, 0, 1); GO +--Changed 13.11.2025 Y_eq_lastrow --CHANGED 27.10.2025 Beide Allowance Varianten -ALTER FUNCTION [dbo].[FNDD_ZUGFERD_VIEW_ALLOWANCE_POSITIONS] (@pMSGID VARCHAR(100)) -RETURNS @TABLE TABLE(SPEC_NAME VARCHAR(100),ITEM_VALUE VARCHAR(250),Area VARCHAR(60),SequenceItem INT,Display BIT) +CREATE OR ALTER FUNCTION [dbo].[FNDD_ZUGFERD_VIEW_ALLOWANCE_POSITIONS] (@pMSGID VARCHAR(100)) +RETURNS @TABLE TABLE(SPEC_NAME VARCHAR(100),ITEM_VALUE VARCHAR(250),Area VARCHAR(60),SequenceItem INT,Display BIT,Y_eq_lastrow BIT) AS BEGIN @@ -92,21 +93,21 @@ BEGIN FETCH NEXT FROM cursGroupCounter INTO @GROUP_COUNTER WHILE @@FETCH_STATUS = 0 BEGIN - DECLARE @SPEC_NAME VARCHAR(100),@ITEM_VALUE VARCHAR(100),@Display BIT + DECLARE @SPEC_NAME VARCHAR(100),@ITEM_VALUE VARCHAR(100),@Display BIT,@Y_eq_lastrow BIT DECLARE cursPosItems CURSOR FOR - select A.SPEC_NAME,ITEM_VALUE,Display from TBEDMI_ITEM_VALUE A INNER JOIN TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE B ON A.SPEC_NAME = B.SPECNAME + select A.SPEC_NAME,ITEM_VALUE,Display,Y_eq_lastrow 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 (SELECT SPECNAME FROM TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE WHERE Area = 'ALLOWANCE') AND A.GROUP_COUNTER = @GROUP_COUNTER AND LEN(ITEM_VALUE) > 0 ORDER BY B.SequenceItem OPEN cursPosItems - FETCH NEXT FROM cursPosItems INTO @SPEC_NAME,@ITEM_VALUE,@Display + FETCH NEXT FROM cursPosItems INTO @SPEC_NAME,@ITEM_VALUE,@Display,@Y_eq_lastrow WHILE @@FETCH_STATUS = 0 BEGIN SET @INDEX += 1 - INSERT INTO @TABLE (SPEC_NAME,ITEM_VALUE,Area,SequenceItem,Display) VALUES - (@SPEC_NAME,@ITEM_VALUE,'ALLOWANCE',@INDEX,@Display) - FETCH NEXT FROM cursPosItems INTO @SPEC_NAME,@ITEM_VALUE,@Display + INSERT INTO @TABLE (SPEC_NAME,ITEM_VALUE,Area,SequenceItem,Display,Y_eq_lastrow) VALUES + (@SPEC_NAME,@ITEM_VALUE,'ALLOWANCE',@INDEX,@Display,@Y_eq_lastrow) + FETCH NEXT FROM cursPosItems INTO @SPEC_NAME,@ITEM_VALUE,@Display,@Y_eq_lastrow END CLOSE cursPosItems DEALLOCATE cursPosItems @@ -115,4 +116,68 @@ BEGIN CLOSE cursGroupCounter DEALLOCATE cursGroupCounter RETURN -END \ No newline at end of file +END +GO +--CHANGED 13.11.2025 +--CHANGED 06.10.2025 Über Area +--CHANGED 02.06.2025 Nur Items mit INhalt +--CHANGED 25.04.2025 INV_POSITION_UNIT_TYPE integriert +--CHANGED 06.03.2025 INV_POS_NOTE integriert +CREATE OR ALTER 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,Display BIT,Y_eq_lastrow BIT) +AS +BEGIN + DECLARE @GROUP_COUNTER INT,@INDEX INT = 20 + 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),@Display BIT,@Y_eq_lastrow BIT + DECLARE cursPosItems CURSOR FOR + select A.SPEC_NAME,ITEM_VALUE,Display,B.Y_eq_lastrow from TBEDMI_ITEM_VALUE A INNER JOIN TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE B ON A.SPEC_NAME = B.SPECNAME + WHERE REFERENCE_GUID = @pMSGID And B.Area = 'POSITION' AND GROUP_COUNTER = @GROUP_COUNTER + AND LEN(ITEM_VALUE) > 0 + ORDER BY B.SequenceItem + OPEN cursPosItems + FETCH NEXT FROM cursPosItems INTO @SPEC_NAME,@ITEM_VALUE,@Display,@Y_eq_lastrow + WHILE @@FETCH_STATUS = 0 + BEGIN + SET @INDEX += 1 + INSERT INTO @TABLE (SPEC_NAME,ITEM_VALUE,Area,SequenceItem,Display,Y_eq_lastrow) VALUES + (@SPEC_NAME,@ITEM_VALUE,'POSITION',@INDEX,@Display,@Y_eq_lastrow); + FETCH NEXT FROM cursPosItems INTO @SPEC_NAME,@ITEM_VALUE,@Display,@Y_eq_lastrow + END + CLOSE cursPosItems + DEALLOCATE cursPosItems + FETCH NEXT FROM cursGroupCounter INTO @GROUP_COUNTER + END + CLOSE cursGroupCounter + DEALLOCATE cursGroupCounter +RETURN +END +GO + +--CHANGED 13.11.2025 Y_eq_lastRow +--CHANGED 16.09.2025 Nur auf die Area gehen +--CHANGED 25.04.2025 INV_POSITION_UNIT_TYPE integriert +--CHANGED 25.04.2025 INV_POSITION_UNIT_TYPE integriert +--CHANGED 06.03.2025 INV_POS_NOTE integriert +CREATE OR ALTER 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.Area NOT IN ('ALLOWANCE','POSITION') + UNION + SELECT SPEC_NAME,ITEM_VALUE,Area,'' Row_Caption,10 xPosition, Y_eq_lastrow,SequenceItem ORDER_SEQ, Display FROM [dbo].[FNDD_ZUGFERD_VIEW_RECEIPT_POSITIONS] (@pMSGID) + UNION + SELECT SPEC_NAME,ITEM_VALUE,Area,'' Row_Caption,10 xPosition, Y_eq_lastrow ,SequenceItem ORDER_SEQ, Display FROM [dbo].[FNDD_ZUGFERD_VIEW_ALLOWANCE_POSITIONS] (@pMSGID) + UNION + SELECT SPEC_NAME,ITEM_VALUE,Area,'' Row_Caption,10 xPosition, 0 Y_eq_lastrow,SequenceItem ORDER_SEQ, Display FROM [dbo].[FNDD_ZUGFERD_VIEW_RECEIPT_TAX] (@pMSGID) + UNION + SELECT SPECNAME SPEC_NAME,Row_Caption,Area,Row_Caption Row_Caption,10 xPosition, 0 Y_eq_lastrow,SequenceItem ORDER_SEQ, Display FROM TBDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE WHERE Area = 'INTERNAL' + ) +GO \ No newline at end of file diff --git a/00_DB_SETUP_SINGLE/01_DD_ECM/Update/2.3.sql b/00_DB_SETUP_SINGLE/01_DD_ECM/Update/2.3.sql new file mode 100644 index 0000000..f072542 --- /dev/null +++ b/00_DB_SETUP_SINGLE/01_DD_ECM/Update/2.3.sql @@ -0,0 +1,2 @@ +UPDATE TBDD_BASECONFIG SET DB_VERSION = '2.3.0'; +GO \ No newline at end of file diff --git a/01_SMART_UP_TOOLS/02_TASKFLOW/Updates/2.5.sql b/01_SMART_UP_TOOLS/02_TASKFLOW/Updates/2.5.sql new file mode 100644 index 0000000..a9bed3b --- /dev/null +++ b/01_SMART_UP_TOOLS/02_TASKFLOW/Updates/2.5.sql @@ -0,0 +1,8 @@ +UPDATE TBDD_MODULES SET DB_VERSION = '2.5' where NAME = 'Process-Manager'; +GO +ALTER TABLE dbo.TBPM_PROFILE +ADD NOT_RESP_COMMENT BIT NOT NULL DEFAULT 1 ; + + + + diff --git a/01_SMART_UP_TOOLS/02_TASKFLOW/Updates/2.6.sql b/01_SMART_UP_TOOLS/02_TASKFLOW/Updates/2.6.sql new file mode 100644 index 0000000..5f0fbee --- /dev/null +++ b/01_SMART_UP_TOOLS/02_TASKFLOW/Updates/2.6.sql @@ -0,0 +1,8 @@ +UPDATE TBDD_MODULES SET DB_VERSION = '2.6' where NAME = 'Process-Manager'; +GO +ALTER TABLE dbo.TBPM_PROFILE_CONTROLS +ADD TEXT_ALIGNMENT NVARCHAR(20) NOT NULL DEFAULT 'Near'; + + + + diff --git a/01_SMART_UP_TOOLS/02_TASKFLOW/Updates/Added2MainScript/2.4.2.0.sql b/01_SMART_UP_TOOLS/02_TASKFLOW/Updates/Added2MainScript/2.4.2.0.sql index ed57fbb..33a2507 100644 --- a/01_SMART_UP_TOOLS/02_TASKFLOW/Updates/Added2MainScript/2.4.2.0.sql +++ b/01_SMART_UP_TOOLS/02_TASKFLOW/Updates/Added2MainScript/2.4.2.0.sql @@ -1,3 +1,4 @@ +UPDATE TBDD_MODULES SET DB_VERSION = '2.4.2.0' where NAME = 'Process-Manager'; --Das Overview-SQL muss um folgenden LEFT JOIN erweitert werden --############################################################################################# --LEFT JOIN TBTF_PROFILE_FILES_WORK PFW ON T.DOC_ID = PFW.DocID AND T.PROFIL_ID = PFW.ProfileID @@ -43,7 +44,6 @@ BEGIN WHERE DocID = @pDocID AND ProfileID = @pProfilID AND Worked = 0; END GO -UPDATE TBDD_MODULES SET DB_VERSION = '2.4.2.0' where NAME = 'Process-Manager'; --############################################################################################# IF NOT EXISTS(SELECT GUID FROM [DD_ECM].[dbo].[TBPM_KONFIGURATION] where [SQL_PROFILE_MAIN_VIEW] like '%(PFW.DocID IS NULL OR (PFW.InWork = 0 AND PFW.Worked = 0))%') PRINT 'ACHTUNG: Bitte erste Anweisung in Skript beachten: Es fehlt eine Erweiterung im Overview SQL!!!' diff --git a/01_SMART_UP_TOOLS/02_TASKFLOW/Updates/Added2MainScript/2.4.2.1.sql b/01_SMART_UP_TOOLS/02_TASKFLOW/Updates/Added2MainScript/2.4.2.1.sql index 59dbce5..55619fa 100644 --- a/01_SMART_UP_TOOLS/02_TASKFLOW/Updates/Added2MainScript/2.4.2.1.sql +++ b/01_SMART_UP_TOOLS/02_TASKFLOW/Updates/Added2MainScript/2.4.2.1.sql @@ -1,3 +1,4 @@ +UPDATE TBDD_MODULES SET DB_VERSION = '2.4.2.1' where NAME = 'Process-Manager'; --Das Overview-SQL zur Workflowdarstellung muss um folgenden LEFT JOIN erweitert werden --############################################################################################# --LEFT JOIN TBTF_PROFILE_FILES_WORK PFW ON T.DOC_ID = PFW.DocID AND T.PROFIL_ID = PFW.ProfileID @@ -5,7 +6,6 @@ --und einen where-Teil: --############################################################################################# --(PFW.DocID IS NULL OR (PFW.InWork = 0 AND PFW.Worked = 0)) -UPDATE TBDD_MODULES SET DB_VERSION = '2.4.2.1' where NAME = 'Process-Manager'; GO IF EXISTS(SELECT * FROM sys.columns WHERE Name = N'SQL_PROFILE_MAIN_VIEW' diff --git a/01_SMART_UP_TOOLS/08_ORGFLOW/SQL/UPDATE_SCRIPTS/2.7.1.sql b/01_SMART_UP_TOOLS/08_ORGFLOW/SQL/UPDATE_SCRIPTS/2.7.1.sql new file mode 100644 index 0000000000000000000000000000000000000000..a391ea2972b8a8b6712a186783d73d57fbcdfa55 GIT binary patch literal 4300 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 delta 1658 zcmah}OHUJF6upf=CAv?(6_pgzGFG{(0HS z73(cLA0FrJozBBI>$4WFk5t;nX^KJ=r+G?{k8aU4MJdLSMrZXn&5;)tjk2`N$1OHa z`>UFxK+WQwq!_uW1Os0Uwi{d zjhvxh8vJ{?cE`4F1zin(lkf{GX{MAM!py1|m=gCxKHa|!aU_-xIp{WZBJ$d!1!R_^ z9ZI2CTLtbKxX)5=krHm4kQgp9$U*usrd)27kojE*#&c1p$BOXxaP1+Oh?+y_BxPX9 z(h_arYngUIr431TsYIjvBI@E`Syj18kRJ^;a8taVpDtW*jRA48i=;QeiX)qjf=^&k zw@ONqMo`BfJrN)b4#H#$vGaYX{_6sqj_~3P=~%rmeNjim5X_IBj$A+2sB93*A`EdUX^6lVVCKb>c_!F zS9zY?>>73QhwXDVH~xjtQX1mJj(NS!iL9ecY>AtK94GS)-!s*$C1oVhqtoV0=a=Nf^0 z<`|T05kAVaHJ8ezw}{MYQNblHKk2VHqn2oEE05i;95Io_j3nEzlC~X%Ep0$)2PGvx z+^{vf3o@VH*jR@gN!x3T!sIv5;ZbJ4?5gZ