Browse Source

Kalender ergänzt

Automag 3 weeks ago
parent
commit
da0e055e52
31 changed files with 1177 additions and 0 deletions
  1. 2 0
      System/ARI/SQL/schema/GC_ETL_ARI.bat
  2. 2 0
      System/ARI/SQL/schema/GC_ETL_ARI_create.bat
  3. 8 0
      System/ARI/SQL/schema/Kalender/foreign_keys/kalender.Bundesland_Info.sql
  4. 4 0
      System/ARI/SQL/schema/Kalender/foreign_keys/kalender.Feiertage.sql
  5. 8 0
      System/ARI/SQL/schema/Kalender/foreign_keys/kalender.Feiertage_Bundesland.sql
  6. 37 0
      System/ARI/SQL/schema/Kalender/functions/kalender.Busstag.sql
  7. 79 0
      System/ARI/SQL/schema/Kalender/functions/kalender.Ostern.sql
  8. 18 0
      System/ARI/SQL/schema/Kalender/functions/kalender.bomonth.sql
  9. 18 0
      System/ARI/SQL/schema/Kalender/functions/kalender.boquarter.sql
  10. 18 0
      System/ARI/SQL/schema/Kalender/functions/kalender.quarter_name.sql
  11. 30 0
      System/ARI/SQL/schema/Kalender/props.sql
  12. 7 0
      System/ARI/SQL/schema/Kalender/schemas.sql
  13. 8 0
      System/ARI/SQL/schema/Kalender/tables/kalender.Buchungsbelege.sql
  14. 11 0
      System/ARI/SQL/schema/Kalender/tables/kalender.Bundesland_Info.sql
  15. 6 0
      System/ARI/SQL/schema/Kalender/tables/kalender.Datum_Heute.sql
  16. 14 0
      System/ARI/SQL/schema/Kalender/tables/kalender.Feiertage.sql
  17. 9 0
      System/ARI/SQL/schema/Kalender/tables/kalender.Feiertage_Bundesland.sql
  18. 9 0
      System/ARI/SQL/schema/Kalender/tables/kalender.Feiertage_Kategorie.sql
  19. 11 0
      System/ARI/SQL/schema/Kalender/tables/kalender.Konfiguration.sql
  20. 13 0
      System/ARI/SQL/schema/Kalender/tables/kalender.Konfiguration_Mandant.sql
  21. 9 0
      System/ARI/SQL/schema/Kalender/tables/kalender.Laender_Info.sql
  22. 6 0
      System/ARI/SQL/schema/Kalender/users/gaps.sql
  23. 41 0
      System/ARI/SQL/schema/Kalender/views/kalender.Aktueller_Tag.sql
  24. 33 0
      System/ARI/SQL/schema/Kalender/views/kalender.Feiertage_Berechnet.sql
  25. 17 0
      System/ARI/SQL/schema/Kalender/views/kalender.Jahre.sql
  26. 252 0
      System/ARI/SQL/schema/Kalender/views/kalender.Kalender_Dimension.sql
  27. 151 0
      System/ARI/SQL/schema/Kalender/views/kalender.Kalender_Mandant.sql
  28. 170 0
      System/ARI/SQL/schema/Kalender/views/kalender.Kalender_Matrix.sql
  29. 77 0
      System/ARI/SQL/schema/Kalender/views/kalender.Kalender_Tage.sql
  30. 86 0
      System/ARI/SQL/schema/Kalender/views/kalender.Kalender_Zeitkategorie.sql
  31. 23 0
      System/ARI/SQL/schema/Kalender/views/kalender.Zeitraum.sql

+ 2 - 0
System/ARI/SQL/schema/GC_ETL_ARI.bat

@@ -9,4 +9,6 @@ call schema.bat export GC_TRANSIT_ARI
 call schema.bat export GC_ETL_ARI
 
 call schema.bat export GC_DWH_ARI
+
+call schema.bat export Kalender
 pause

+ 2 - 0
System/ARI/SQL/schema/GC_ETL_ARI_create.bat

@@ -11,4 +11,6 @@ call schema.bat create GC_TRANSIT_ARI
 call schema.bat create GC_ETL_ARI
 
 call schema.bat create GC_DWH_ARI
+
+call schema.bat create Kalender
 pause

+ 8 - 0
System/ARI/SQL/schema/Kalender/foreign_keys/kalender.Bundesland_Info.sql

@@ -0,0 +1,8 @@
+ALTER TABLE [kalender].[Bundesland_Info] WITH CHECK ADD 
+   FOREIGN KEY([Land_ID]) REFERENCES [kalender].[Laender_Info] ([Land_ID])
+
+GO
+ALTER TABLE [kalender].[Bundesland_Info] WITH CHECK ADD 
+   FOREIGN KEY([Land_ID]) REFERENCES [kalender].[Laender_Info] ([Land_ID])
+
+GO

+ 4 - 0
System/ARI/SQL/schema/Kalender/foreign_keys/kalender.Feiertage.sql

@@ -0,0 +1,4 @@
+ALTER TABLE [kalender].[Feiertage] WITH CHECK ADD CONSTRAINT [FK_Feiertage_Feiertage_Kategorie]
+   FOREIGN KEY([Feiertage_Kategorie_ID]) REFERENCES [kalender].[Feiertage_Kategorie] ([Feiertage_Kategorie_ID])
+
+GO

+ 8 - 0
System/ARI/SQL/schema/Kalender/foreign_keys/kalender.Feiertage_Bundesland.sql

@@ -0,0 +1,8 @@
+ALTER TABLE [kalender].[Feiertage_Bundesland] WITH CHECK ADD CONSTRAINT [FK_Feiertage_Bundesland_Bundesland_Info]
+   FOREIGN KEY([Bundesland_ID]) REFERENCES [kalender].[Bundesland_Info] ([Bundesland_ID])
+
+GO
+ALTER TABLE [kalender].[Feiertage_Bundesland] WITH CHECK ADD CONSTRAINT [FK_Feiertage_Bundesland_Feiertage]
+   FOREIGN KEY([Feiertag_ID]) REFERENCES [kalender].[Feiertage] ([Feiertag_ID])
+
+GO

+ 37 - 0
System/ARI/SQL/schema/Kalender/functions/kalender.Busstag.sql

@@ -0,0 +1,37 @@
+SET QUOTED_IDENTIFIER ON 
+GO
+SET ANSI_NULLS ON 
+GO
+CREATE FUNCTION [kalender].[Busstag] (@Jahr AS INT)
+RETURNS DATE
+AS 
+/*  
+   Berechnung Datum Buß- und Bettag
+   Input:  Beliebiges Datum
+   Output: Buß- und Bettag des Jahres 
+     
+   Das Datum des Buß- und Bettages liegt 11 Tage vor dem ersten Adventssonntag
+
+   Weitere Informationen findet man im Internet bei Wikipedia unter dem Suchbegriff 'Buß- und Bettag'
+
+
+   Autor  : Berthold Neumann (www.sql-ssis.de)
+   Version: 03.12.2006  1.0  Erstimplementierung
+
+*/
+
+BEGIN
+   DECLARE @Weihnachten DATE
+   DECLARE @Offset INT
+
+   SET @Weihnachten = DATEFROMPARTS(@Jahr, 12, 25)
+   SET @Offset = DATEPART(WEEKDAY, @Weihnachten) + (4 * 7) + 4
+   RETURN DATEADD(dd, -1 * @Offset, @Weihnachten)
+END
+GO
+SET QUOTED_IDENTIFIER OFF 
+GO
+SET ANSI_NULLS OFF 
+GO
+
+GO

+ 79 - 0
System/ARI/SQL/schema/Kalender/functions/kalender.Ostern.sql

@@ -0,0 +1,79 @@
+SET QUOTED_IDENTIFIER ON 
+GO
+SET ANSI_NULLS ON 
+GO
+CREATE FUNCTION [kalender].[Ostern] (@Jahr AS INT)
+RETURNS DATE
+AS 
+/*
+Gaußsche Osterformel (ergänzt von H. Lichtenberg)
+
+Ostern wird nach einer christlichen Tradition am ersten Sonntag nach dem ersten Vollmond des Frühjahrsanfangs auf der nördlichen Halbkugel gefeiert. 
+Die Bestimmung des kalendarischen Datums nutzt die zyklische Natur der Erd- und Mondbewegung aus 
+(76 Jahre = 940 Mond-Monate = 27759 Tage, Kallippischer Zyklus, benannt nach Kallippos aus Kyzikos, um 330 v. Chr.). 
+Sie nimmt dagegen keine Rücksicht auf aktuelle astronomische Beobachtungen von Vollmond und Tag-und-Nacht-Gleichen. 
+
+Zur besseren Anpassung an die tatsächlichen Umlaufzeiten von Mond und Erde werden seit der Einführung des Gregorianischen Kalenders 
+an den Jahrhundertgrenzen gewisse Korrekturen am Kallippischen Zyklus angebracht. 
+Carl Friedrich Gauß (1777 - 1855) hat aus den langen und schwer verständlichen Texten von Christophorus Clavius eine praktische Rechenvorschrift abgeleitet. 
+Diese wird hier in einer von Dr. Heiner Lichtenberg, Bonn, modifizierten Form angegeben 
+(H. Lichtenberg, Zur Interpretation der Gaußschen Osterformel und ihrer Ausnahmeregeln, Historia Mathematica 24, 441 - 444 (1997)). 
+
+In dieser modernen Form lässt sie sich leicht in eine Funktion übersetzen, um das Osterdatum für jedes Jahr zu errechnen.
+
+[1] https://www.ptb.de/cms/ptb/fachabteilungen/abt4/fb-44/ag-441/darstellung-der-gesetzlichen-zeit/wann-ist-ostern.html
+[2] https://de.wikipedia.org/wiki/Gau%C3%9Fsche_Osterformel#Eine_erg%C3%A4nzte_Osterformel
+
+*/
+
+BEGIN
+  DECLARE @K INT, @M INT, @S INT, @A INT, @D INT, @R INT, @OG INT, @SZ INT, @OE INT
+  DECLARE @Ostersonntag_Tag INT, @Ostersonntag_Monat INT
+
+  -- 1. die Säkularzahl	(Jahrhundert)
+  SET @K = @Jahr / 100
+
+  -- 2. die säkulare Mondschaltung	
+  SET @M = 15 + (3 * @K + 3) / 4 - (8 * @K + 13) / 25
+
+  -- 3.	die säkulare Sonnenschaltung	
+  SET @S = 2 - (3 * @K + 3) / 4
+  
+  -- 4. den Mondparameter	
+  SET @A = @Jahr % 19
+
+  -- 5. den Keim für den ersten Vollmond im Frühling	
+  SET @D = (19 * @A + @M) % 30
+
+  -- 6. die kalendarische Korrekturgröße	
+  SET @R = (@D + @A / 11) / 29
+
+  -- 7. die Ostergrenze	(Tag im März)
+  SET @OG = 21 + @D - @R
+
+  -- 8. den ersten Sonntag im März	
+  SET @SZ = 7 - (@Jahr + @Jahr / 4 + @S) % 7
+
+  -- 9. die Entfernung des Ostersonntags von der Ostergrenze (Osterentfernung in Tagen)	
+  SET @OE = 7 - (@OG - @SZ) % 7
+
+  --10. das Datum des Ostersonntags	als Märzdatum (32. März = 1. April usw.)
+  SET @Ostersonntag_Monat = 3
+  SET @Ostersonntag_Tag = @OG + @OE
+
+  --11. Falls Ostersonntag im April liegt
+  IF @Ostersonntag_Tag > 31
+    BEGIN 
+      SET @Ostersonntag_Monat = 4
+      SET @Ostersonntag_Tag = @Ostersonntag_Tag - 31
+	END
+   
+  RETURN DATEFROMPARTS(@Jahr, @Ostersonntag_Monat, @Ostersonntag_Tag)
+END
+GO
+SET QUOTED_IDENTIFIER OFF 
+GO
+SET ANSI_NULLS OFF 
+GO
+
+GO

+ 18 - 0
System/ARI/SQL/schema/Kalender/functions/kalender.bomonth.sql

@@ -0,0 +1,18 @@
+SET QUOTED_IDENTIFIER ON 
+GO
+SET ANSI_NULLS ON 
+GO
+CREATE FUNCTION [kalender].[bomonth] (@Datum AS DATE)
+RETURNS DATE
+AS 
+
+BEGIN
+   RETURN DATEADD(dd, 1 - Day(@Datum), @Datum)
+END
+GO
+SET QUOTED_IDENTIFIER OFF 
+GO
+SET ANSI_NULLS OFF 
+GO
+
+GO

+ 18 - 0
System/ARI/SQL/schema/Kalender/functions/kalender.boquarter.sql

@@ -0,0 +1,18 @@
+SET QUOTED_IDENTIFIER ON 
+GO
+SET ANSI_NULLS ON 
+GO
+CREATE FUNCTION [kalender].[boquarter] (@Datum AS DATE)
+RETURNS DATE
+AS 
+
+BEGIN
+   RETURN datefromparts(year(@Datum), ((datepart(qq, @Datum) - 1) * 3) + 1, 1)
+END
+GO
+SET QUOTED_IDENTIFIER OFF 
+GO
+SET ANSI_NULLS OFF 
+GO
+
+GO

+ 18 - 0
System/ARI/SQL/schema/Kalender/functions/kalender.quarter_name.sql

@@ -0,0 +1,18 @@
+SET QUOTED_IDENTIFIER ON 
+GO
+SET ANSI_NULLS ON 
+GO
+CREATE FUNCTION [kalender].[quarter_name] (@Datum AS DATE)
+RETURNS VARCHAR(30)
+AS 
+
+BEGIN
+   RETURN convert(varchar, datepart(qq, @Datum)) + '. Q. ' + convert(varchar, year(@Datum))
+END
+GO
+SET QUOTED_IDENTIFIER OFF 
+GO
+SET ANSI_NULLS OFF 
+GO
+
+GO

+ 30 - 0
System/ARI/SQL/schema/Kalender/props.sql

@@ -0,0 +1,30 @@
+DECLARE @DB VARCHAR(255)
+SET @DB = DB_NAME()
+EXEC dbo.sp_dbcmptlevel @DB, 150
+EXEC('ALTER DATABASE [' + @DB + '] COLLATE Latin1_General_CI_AS')
+EXEC('ALTER DATABASE [' + @DB + '] SET AUTO_CLOSE OFF')
+EXEC('ALTER DATABASE [' + @DB + '] SET AUTO_SHRINK OFF')
+EXEC('ALTER DATABASE [' + @DB + '] SET ALLOW_SNAPSHOT_ISOLATION OFF')
+EXEC('ALTER DATABASE [' + @DB + '] SET READ_COMMITTED_SNAPSHOT OFF')
+EXEC('ALTER DATABASE [' + @DB + '] SET RECOVERY SIMPLE')
+EXEC('ALTER DATABASE [' + @DB + '] SET PAGE_VERIFY CHECKSUM')
+EXEC('ALTER DATABASE [' + @DB + '] SET AUTO_CREATE_STATISTICS ON')
+EXEC('ALTER DATABASE [' + @DB + '] SET AUTO_UPDATE_STATISTICS ON')
+EXEC('ALTER DATABASE [' + @DB + '] SET AUTO_UPDATE_STATISTICS_ASYNC OFF')
+EXEC('ALTER DATABASE [' + @DB + '] SET ANSI_NULL_DEFAULT OFF')
+EXEC('ALTER DATABASE [' + @DB + '] SET ANSI_NULLS OFF')
+EXEC('ALTER DATABASE [' + @DB + '] SET ANSI_PADDING OFF')
+EXEC('ALTER DATABASE [' + @DB + '] SET ANSI_WARNINGS OFF')
+EXEC('ALTER DATABASE [' + @DB + '] SET ARITHABORT OFF')
+EXEC('ALTER DATABASE [' + @DB + '] SET CONCAT_NULL_YIELDS_NULL OFF')
+EXEC('ALTER DATABASE [' + @DB + '] SET NUMERIC_ROUNDABORT OFF')
+EXEC('ALTER DATABASE [' + @DB + '] SET QUOTED_IDENTIFIER OFF')
+EXEC('ALTER DATABASE [' + @DB + '] SET RECURSIVE_TRIGGERS OFF')
+EXEC('ALTER DATABASE [' + @DB + '] SET CURSOR_CLOSE_ON_COMMIT OFF')
+EXEC('ALTER DATABASE [' + @DB + '] SET CURSOR_DEFAULT GLOBAL')
+EXEC('ALTER DATABASE [' + @DB + '] SET TRUSTWORTHY OFF')
+EXEC('ALTER DATABASE [' + @DB + '] SET DB_CHAINING OFF')
+EXEC('ALTER DATABASE [' + @DB + '] SET PARAMETERIZATION SIMPLE')
+EXEC('ALTER DATABASE [' + @DB + '] SET DATE_CORRELATION_OPTIMIZATION OFF')
+GO
+

+ 7 - 0
System/ARI/SQL/schema/Kalender/schemas.sql

@@ -0,0 +1,7 @@
+
+if not exists(select s.schema_id from sys.schemas s where s.name = 'kalender') 
+	and exists(select p.principal_id from sys.database_principals p where p.name = 'dbo') begin
+	exec sp_executesql N'create schema [kalender] authorization [dbo]'
+end
+GO
+

+ 8 - 0
System/ARI/SQL/schema/Kalender/tables/kalender.Buchungsbelege.sql

@@ -0,0 +1,8 @@
+CREATE TABLE [kalender].[Buchungsbelege] (
+   [Client_DB] [varchar](20) NULL,
+   [Buchung_von] [datetime] NULL,
+   [Buchung_bis] [datetime] NULL
+)
+
+
+GO

+ 11 - 0
System/ARI/SQL/schema/Kalender/tables/kalender.Bundesland_Info.sql

@@ -0,0 +1,11 @@
+CREATE TABLE [kalender].[Bundesland_Info] (
+   [Bundesland_ID] [int] NOT NULL,
+   [Name] [varchar](50) NOT NULL,
+   [Bundesland_Kuerzel] [varchar](2) NOT NULL,
+   [Land_ID] [varchar](2) NOT NULL
+
+   ,CONSTRAINT [PK__Bundesla__BCB08531AE578C35] PRIMARY KEY CLUSTERED ([Bundesland_ID])
+)
+
+
+GO

+ 6 - 0
System/ARI/SQL/schema/Kalender/tables/kalender.Datum_Heute.sql

@@ -0,0 +1,6 @@
+CREATE TABLE [kalender].[Datum_Heute] (
+   [Datum] [date] NULL
+)
+
+
+GO

+ 14 - 0
System/ARI/SQL/schema/Kalender/tables/kalender.Feiertage.sql

@@ -0,0 +1,14 @@
+CREATE TABLE [kalender].[Feiertage] (
+   [Feiertag_ID] [int] NOT NULL,
+   [Feiertag_Name] [varchar](100) NOT NULL,
+   [Feiertage_Kategorie_ID] [int] NOT NULL,
+   [Feiertag_Monat] [int] NULL,
+   [Feiertag_Tag] [int] NULL,
+   [Ostern_Offset] [int] NOT NULL,
+   [Busstag] [bit] NOT NULL
+
+   ,CONSTRAINT [PK_Feiertage] PRIMARY KEY CLUSTERED ([Feiertag_ID])
+)
+
+
+GO

+ 9 - 0
System/ARI/SQL/schema/Kalender/tables/kalender.Feiertage_Bundesland.sql

@@ -0,0 +1,9 @@
+CREATE TABLE [kalender].[Feiertage_Bundesland] (
+   [Feiertag_ID] [int] NOT NULL,
+   [Bundesland_ID] [int] NOT NULL
+
+   ,CONSTRAINT [PK_Feiertage_Bundesland] PRIMARY KEY CLUSTERED ([Feiertag_ID], [Bundesland_ID])
+)
+
+
+GO

+ 9 - 0
System/ARI/SQL/schema/Kalender/tables/kalender.Feiertage_Kategorie.sql

@@ -0,0 +1,9 @@
+CREATE TABLE [kalender].[Feiertage_Kategorie] (
+   [Feiertage_Kategorie_ID] [int] NOT NULL,
+   [Feiertage_Kategorie_Name] [varchar](50) NOT NULL
+
+   ,CONSTRAINT [PK__Feiertag__1ADFA61345C7DF9C] PRIMARY KEY CLUSTERED ([Feiertage_Kategorie_ID])
+)
+
+
+GO

+ 11 - 0
System/ARI/SQL/schema/Kalender/tables/kalender.Konfiguration.sql

@@ -0,0 +1,11 @@
+CREATE TABLE [kalender].[Konfiguration] (
+   [Jahr_von] [int] NOT NULL,
+   [Jahr_bis] [int] NOT NULL,
+   [Vortag] [bit] NOT NULL
+      CONSTRAINT [DF_Konfiguration_Vortag] DEFAULT ((1))
+
+   ,CONSTRAINT [PK_Konfiguration] PRIMARY KEY CLUSTERED ([Jahr_von], [Jahr_bis])
+)
+
+
+GO

+ 13 - 0
System/ARI/SQL/schema/Kalender/tables/kalender.Konfiguration_Mandant.sql

@@ -0,0 +1,13 @@
+CREATE TABLE [kalender].[Konfiguration_Mandant] (
+   [Hauptbetrieb_ID] [varchar](10) NOT NULL,
+   [Standort_ID] [varchar](10) NOT NULL,
+   [Bundesland_ID] [int] NOT NULL,
+   [Samstag_Arbeitstag] [bit] NOT NULL,
+   [GJ_erster_Monat] [int] NOT NULL
+      CONSTRAINT [DF_Konfiguration_Mandant_GJ_erster_Monat] DEFAULT ((1))
+
+   ,CONSTRAINT [PK_Konfiguration_Mandant] PRIMARY KEY CLUSTERED ([Hauptbetrieb_ID], [Standort_ID], [Bundesland_ID])
+)
+
+
+GO

+ 9 - 0
System/ARI/SQL/schema/Kalender/tables/kalender.Laender_Info.sql

@@ -0,0 +1,9 @@
+CREATE TABLE [kalender].[Laender_Info] (
+   [Land_ID] [varchar](2) NOT NULL,
+   [Name] [varchar](50) NOT NULL
+
+   ,CONSTRAINT [PK__Laender___075CE4ED403E307A] PRIMARY KEY CLUSTERED ([Land_ID])
+)
+
+
+GO

+ 6 - 0
System/ARI/SQL/schema/Kalender/users/gaps.sql

@@ -0,0 +1,6 @@
+IF SUSER_ID('gaps') IS NULL
+				BEGIN CREATE LOGIN gaps WITH PASSWORD = 0x02004264FF86CEFCB5B6C8272E1D83BA925BDA302E429CC3116B666F99B45975240322CF5D5B7ED1A4FDE278DF15BC87EA11BE7586BB59B77391F3A9198845E593BFAB64F9E1 HASHED END
+CREATE USER [gaps] FOR LOGIN [gaps] WITH DEFAULT_SCHEMA = [dbo]
+/*ALTER ROLE db_ddladmin ADD MEMBER gaps*/ exec sp_addrolemember 'db_ddladmin', 'gaps'
+/*ALTER ROLE db_datareader ADD MEMBER gaps*/ exec sp_addrolemember 'db_datareader', 'gaps'
+GO

+ 41 - 0
System/ARI/SQL/schema/Kalender/views/kalender.Aktueller_Tag.sql

@@ -0,0 +1,41 @@
+SET QUOTED_IDENTIFIER ON 
+GO
+SET ANSI_NULLS ON 
+GO
+CREATE VIEW [kalender].[Aktueller_Tag]
+AS
+
+
+WITH
+    [Aktueller_Tag_mit_Vortag]
+        AS (SELECT [T1].[Hauptbetrieb_ID]
+                 , [T1].[Standort_ID]
+                 , [T1].[Datum]
+                 , (SELECT max([T2].[Datum])
+                    FROM [kalender].[Kalender_Mandant] [T2]
+                    WHERE [T2].[Datum] < [T1].[Datum]
+                      AND [T2].[Arbeitstag] = 1
+                      AND [T1].[Hauptbetrieb_ID] = [T2].[Hauptbetrieb_ID]
+                      AND (
+                        [T1].[Standort_ID] = [T2].[Standort_ID]
+                            OR [T1].[Standort_ID] IS NULL
+                        )) AS [Datum_Vortag]
+            FROM [kalender].[Kalender_Mandant] [T1])
+
+SELECT TOP (1) [Hauptbetrieb_ID]
+             , [Standort_ID]
+             , [T1].[Datum]
+             , [Datum_Vortag]
+             , iif([T3].[Vortag] = 1, [Datum_Vortag], [T1].[Datum]) AS "Invoice Date"
+             , iif([T3].[Vortag] = 1, [Datum_Vortag], [T1].[Datum]) AS "Bookkeep Date"
+FROM [Aktueller_Tag_mit_Vortag] [T1]
+         --INNER JOIN [kalender].[Buchungsbelege] [T2] ON [T1].[Datum] = [T2].[Buchung_bis]
+         INNER JOIN [kalender].[Datum_Heute] [T2] ON [T1].[Datum] = [T2].[Datum]
+         CROSS JOIN [kalender].[Konfiguration] [T3]
+GO
+SET QUOTED_IDENTIFIER OFF 
+GO
+SET ANSI_NULLS OFF 
+GO
+
+GO

+ 33 - 0
System/ARI/SQL/schema/Kalender/views/kalender.Feiertage_Berechnet.sql

@@ -0,0 +1,33 @@
+SET QUOTED_IDENTIFIER ON 
+GO
+SET ANSI_NULLS ON 
+GO
+CREATE VIEW [kalender].[Feiertage_Berechnet]
+AS
+SELECT T1.Feiertag_ID,
+	T1.Feiertag_Name,
+	T1.Feiertage_Kategorie_ID,
+	T1.Feiertag_Monat,
+	T1.Feiertag_Tag,
+	T1.Ostern_Offset,
+	T1.Busstag,
+	T2.Bundesland_ID,
+	T3.Bundesland_Kuerzel,
+	CASE 
+		WHEN T1.[Feiertage_Kategorie_ID] = 1
+			THEN datefromparts(T4.[Jahr], T1.[Feiertag_Monat], T1.[Feiertag_Tag])
+		WHEN T1.[Busstag] = '1'
+			THEN [kalender].Busstag(T4.[Jahr])
+		ELSE dateadd(DD, T1.[Ostern_Offset], [kalender].Ostern(T4.[Jahr]))
+		END AS Datum
+FROM kalender.Jahre AS T4
+CROSS JOIN kalender.Feiertage AS T1
+INNER JOIN kalender.Feiertage_Bundesland AS T2 ON T1.Feiertag_ID = T2.Feiertag_ID
+INNER JOIN kalender.Bundesland_Info AS T3 ON T2.Bundesland_ID = T3.Bundesland_ID
+GO
+SET QUOTED_IDENTIFIER OFF 
+GO
+SET ANSI_NULLS OFF 
+GO
+
+GO

+ 17 - 0
System/ARI/SQL/schema/Kalender/views/kalender.Jahre.sql

@@ -0,0 +1,17 @@
+SET QUOTED_IDENTIFIER ON 
+GO
+SET ANSI_NULLS ON 
+GO
+CREATE view [kalender].[Jahre] as
+    SELECT DISTINCT (T1.number + 2000) AS "Jahr"
+    FROM [master].[dbo].[spt_values] T1,
+         [kalender].[Konfiguration] T2
+    WHERE (T1.number + 2000) BETWEEN T2.[Jahr_von] AND T2.[Jahr_bis]
+      AND T1.[type] = 'P'
+GO
+SET QUOTED_IDENTIFIER OFF 
+GO
+SET ANSI_NULLS OFF 
+GO
+
+GO

+ 252 - 0
System/ARI/SQL/schema/Kalender/views/kalender.Kalender_Dimension.sql

@@ -0,0 +1,252 @@
+SET QUOTED_IDENTIFIER ON 
+GO
+SET ANSI_NULLS ON 
+GO
+CREATE VIEW [kalender].[Kalender_Dimension] AS
+
+WITH
+    [Zeit_Dimension_mit_Text]
+        AS (SELECT [Datum]
+                 , [Tag_im_Jahr]
+                 , [Wochentag]
+                 , [Wochentag_int]
+                 , [Periode]
+                 , [Kalenderwoche]
+                 , [Quartal_int]
+                 , [Datum_str]
+                 , [Datum_int]
+                 , [MoFr]
+                 , [MoSa]
+                 , [Jahr]
+                 , [Quartal]
+                 , [Monat]
+                 , [Tag]
+                 , [Heute]
+                 , [Heute_Vorjahr]
+                 , [Heute_Vormonat]
+                 , iif([Aktueller Tag] = 1, [Tag], NULL) AS [Aktueller Tag]
+                 , iif([Gestern] = 1, [Tag], NULL) AS [Gestern]
+                 , iif([M bisher] = 1, [Tag], NULL) AS [M bisher]
+                 , iif([M bisher Vorjahr] = 1, [Tag], NULL) AS [M bisher Vorjahr]
+                 , convert(varchar(30), CASE WHEN [M bisher / M bisher VJ] = 1 THEN 'M bisher' WHEN [M bisher / M bisher VJ] = 2 THEN 'M bisher VJ' ELSE NULL END) AS [M bisher / M bisher VJ]
+                 , iif([Voriger M bisher] = 1, [Tag], NULL) AS [Voriger M bisher]
+                 , convert(varchar(30), CASE WHEN [M bisher gruppiert] = 1 THEN 'M bisher' WHEN [M bisher gruppiert] = 2 THEN 'Voriger M bisher' ELSE NULL END) AS [M bisher gruppiert]
+
+                 , iif([Q bisher] = 1, [Quartal], NULL) AS [Q bisher]
+                 , iif([Voriges Q bisher] = 1, [Quartal], NULL) AS [Voriges Q bisher]
+                 , convert(varchar(30), CASE WHEN [Q bisher gruppiert] = 1 THEN 'Q bisher' WHEN [Q bisher gruppiert] = 2 THEN 'Voriges Q bisher' ELSE NULL END) AS [Q bisher gruppiert]
+                 , iif([J bisher] = 1, [Quartal], NULL) AS [J bisher]
+                 , iif([Voriges J bisher] = 1, [Quartal], NULL) AS [Voriges J bisher]
+                 , convert(varchar(30), CASE WHEN [J bisher gruppiert] = 1 THEN 'J bisher' WHEN [J bisher gruppiert] = 2 THEN 'Voriges J bisher' ELSE NULL END) AS [J bisher gruppiert]
+
+                 , iif([Aktueller Monat] = 1, [Monat], NULL) AS [Aktueller Monat]
+                 , iif([Vormonat (-1)] = 1, [Monat], NULL) AS [Vormonat (-1)]
+                 , iif([Vormonat (-2)] = 1, [Monat], NULL) AS [Vormonat (-2)]
+                 , iif([Vormonat (-3)] = 1, [Monat], NULL) AS [Vormonat (-3)]
+                 , iif([Akt. Monat Vorjahr] = 1, [Monat], NULL) AS [Akt. Monat Vorjahr]
+                 , iif([Vormonat (-1) Vorjahr] = 1, [Monat], NULL) AS [Vormonat (-1) Vorjahr]
+                 , iif([Vormonat (-2) Vorjahr] = 1, [Monat], NULL) AS [Vormonat (-2) Vorjahr]
+                 , iif([Vormonat (-3) Vorjahr] = 1, [Monat], NULL) AS [Vormonat (-3) Vorjahr]
+                 , iif([letzte 6 Monate] = 1, [Monat], NULL) AS [letzte 6 Monate]
+                 , iif([letzte 12 Monate] = 1, [Monat], NULL) AS [letzte 12 Monate]
+
+                 , iif([per Vormonat] = 1, [Quartal], NULL) AS [per Vormonat]
+                 , iif([per Vormonat (-2)] = 1, [Quartal], NULL) AS [per Vormonat (-2)]
+                 , iif([per Vormonat (-3)] = 1, [Quartal], NULL) AS [per Vormonat (-3)]
+                 , iif([per Vormonat Vorjahr] = 1, [Quartal], NULL) AS [per Vormonat Vorjahr]
+                 , iif([per Vormonat (-2) Vorjahr] = 1, [Quartal], NULL) AS [per Vormonat (-2) Vorjahr]
+                 , iif([per Vormonat (-3) Vorjahr] = 1, [Quartal], NULL) AS [per Vormonat (-3) Vorjahr]
+
+                 , iif([Aktuelles Jahr] = 1, [Jahr], NULL) AS [Aktuelles Jahr]
+                 , iif([letztes Jahr] = 1, [Jahr], NULL) AS [letztes Jahr]
+                 , iif([3 Monate bis Vormonat (-2)] = 1, [Monat], NULL) AS [3 Monate bis Vormonat (-2)]
+
+                 , iif([Quartal (-1)] = 1, [Quartal], NULL) AS [Quartal (-1)]
+                 , iif([Quartal (-2)] = 1, [Quartal], NULL) AS [Quartal (-2)]
+                 , iif([Quartal (-3)] = 1, [Quartal], NULL) AS [Quartal (-3)]
+                 , iif([Quartal (-1) Vorjahr] = 1, [Quartal], NULL) AS [Quartal (-1) Vorjahr]
+                 , iif([Quartal (-2) Vorjahr] = 1, [Quartal], NULL) AS [Quartal (-2) Vorjahr]
+                 , iif([Quartal (-3) Vorjahr] = 1, [Quartal], NULL) AS [Quartal (-3) Vorjahr]
+                 , iif([Quartal (-1) kum.] = 1, [Quartal], NULL) AS [Quartal (-1) kum.]
+                 , iif([Quartal (-1) kum. Vorjahr] = 1, [Quartal], NULL) AS [Quartal (-1) kum. Vorjahr]
+
+                 , iif([letzte 11 Monate] = 1, [Monat], NULL) AS [letzte 11 Monate]
+                 , iif([letzte 13 Monate] = 1, [Monat], NULL) AS [letzte 13 Monate]
+                 , iif([letzte 3 Tage] = 1, [Tag], NULL) AS [letzte 3 Tage]
+                 , iif([letzte 7 Tage] = 1, [Tag], NULL) AS [letzte 7 Tage]
+                 , iif([letzte 14 Tage] = 1, [Tag], NULL) AS [letzte 14 Tage]
+                 , iif([letzte 30 Tage] = 1, [Tag], NULL) AS [letzte 30 Tage]
+
+            FROM [kalender].[Kalender_Matrix])
+
+  , [Zeit_Pivot]
+        AS (SELECT [Datum], [Zeit_Spezialkategorie], [Zeit_Ebene1]
+            FROM (SELECT [Datum]
+                       , [Aktueller Tag]
+                       , [Gestern]
+                       , [M bisher]
+                       , [M bisher Vorjahr]
+                       , [M bisher / M bisher VJ]
+                       , [Voriger M bisher]
+                       , [M bisher gruppiert]
+                       , [Q bisher]
+                       , [Voriges Q bisher]
+                       , [Q bisher gruppiert]
+                       , [J bisher]
+                       , [Voriges J bisher]
+                       , [J bisher gruppiert]
+                       , [Aktueller Monat]
+                       , [Vormonat (-1)]
+                       , [Vormonat (-2)]
+                       , [Vormonat (-3)]
+                       , [Akt. Monat Vorjahr]
+                       , [Vormonat (-1) Vorjahr]
+                       , [Vormonat (-2) Vorjahr]
+                       , [Vormonat (-3) Vorjahr]
+                       , [letzte 6 Monate]
+                       , [letzte 12 Monate]
+                       , [per Vormonat]
+                       , [per Vormonat (-2)]
+                       , [per Vormonat (-3)]
+                       , [per Vormonat Vorjahr]
+                       , [per Vormonat (-2) Vorjahr]
+                       , [per Vormonat (-3) Vorjahr]
+                       , [Aktuelles Jahr]
+                       , [letztes Jahr]
+                       , [3 Monate bis Vormonat (-2)]
+                       , [Quartal (-1)]
+                       , [Quartal (-2)]
+                       , [Quartal (-3)]
+                       , [Quartal (-1) Vorjahr]
+                       , [Quartal (-2) Vorjahr]
+                       , [Quartal (-3) Vorjahr]
+                       , [Quartal (-1) kum.]
+                       , [Quartal (-1) kum. Vorjahr]
+                       , [letzte 11 Monate]
+                       , [letzte 13 Monate]
+                       , [letzte 3 Tage]
+                       , [letzte 7 Tage]
+                       , [letzte 14 Tage]
+                       , [letzte 30 Tage]
+                  FROM [Zeit_Dimension_mit_Text]) [p]
+                     UNPIVOT
+                     ([Zeit_Ebene1] FOR [Zeit_Spezialkategorie] IN
+                    ([Aktueller Tag]
+                    ,[Gestern]
+                    ,[M bisher]
+                    ,[M bisher Vorjahr]
+                    ,[M bisher / M bisher VJ]
+                    ,[Voriger M bisher]
+                    ,[M bisher gruppiert]
+                    ,[Q bisher]
+                    ,[Voriges Q bisher]
+                    ,[Q bisher gruppiert]
+                    ,[J bisher]
+                    ,[Voriges J bisher]
+                    ,[J bisher gruppiert]
+                    ,[Aktueller Monat]
+                    ,[Vormonat (-1)]
+                    ,[Vormonat (-2)]
+                    ,[Vormonat (-3)]
+                    ,[Akt. Monat Vorjahr]
+                    ,[Vormonat (-1) Vorjahr]
+                    ,[Vormonat (-2) Vorjahr]
+                    ,[Vormonat (-3) Vorjahr]
+                    ,[letzte 6 Monate]
+                    ,[letzte 12 Monate]
+                    ,[per Vormonat]
+                    ,[per Vormonat (-2)]
+                    ,[per Vormonat (-3)]
+                    ,[per Vormonat Vorjahr]
+                    ,[per Vormonat (-2) Vorjahr]
+                    ,[per Vormonat (-3) Vorjahr]
+                    ,[Aktuelles Jahr]
+                    ,[letztes Jahr]
+                    ,[3 Monate bis Vormonat (-2)]
+                    ,[Quartal (-1)]
+                    ,[Quartal (-2)]
+                    ,[Quartal (-3)]
+                    ,[Quartal (-1) Vorjahr]
+                    ,[Quartal (-2) Vorjahr]
+                    ,[Quartal (-3) Vorjahr]
+                    ,[Quartal (-1) kum.]
+                    ,[Quartal (-1) kum. Vorjahr]
+                    ,[letzte 11 Monate]
+                    ,[letzte 13 Monate]
+                    , [letzte 3 Tage]
+                    , [letzte 7 Tage]
+                    , [letzte 14 Tage]
+                    , [letzte 30 Tage])
+                     ) AS [unpvt]
+            WHERE [Zeit_Ebene1] IS NOT NULL)
+
+  , [Zeit_Pivot_fuer_Datum]
+        AS (SELECT [T1].[Datum]
+                 , [T2].[Jahr]
+                 , [T2].[Quartal]
+                 , [T2].[Monat]
+                 , [T2].[Tag]
+                 , [T1].[Zeit_Spezialkategorie]
+                 , [T1].[Zeit_Ebene1]
+            FROM [Zeit_Pivot] [T1]
+                     INNER JOIN [kalender].[Kalender_Tage] [T2] ON [T1].[Datum] = [T2].[Datum])
+
+
+  , [Zeit_Spezial_Ebene2]
+        AS (SELECT [Datum]
+                 , [Jahr]
+                 , [Quartal]
+                 , [Monat]
+                 , [Tag]
+                 , [Zeit_Spezialkategorie]
+                 , [Zeit_Ebene1]
+                 , CASE
+                       WHEN [Zeit_Ebene1] = [Jahr] THEN [Quartal]
+                       WHEN [Zeit_Ebene1] = [Quartal] THEN [Monat]
+                       WHEN [Zeit_Ebene1] = [Monat] THEN [Tag]
+                       WHEN [Zeit_Spezialkategorie] IN ('J bisher gruppiert') THEN [Quartal]
+                       WHEN [Zeit_Spezialkategorie] IN ('Q bisher gruppiert') THEN [Monat]
+                       WHEN [Zeit_Spezialkategorie] IN ('M bisher / M bisher VJ', 'M bisher gruppiert') THEN [Tag]
+            END AS [Zeit_Ebene2]
+            FROM [Zeit_Pivot_fuer_Datum])
+
+  , [Zeit_Spezial_Ebene3]
+        AS (SELECT [Datum]
+                 , [Jahr]
+                 , [Quartal]
+                 , [Monat]
+                 , [Tag]
+                 , [Zeit_Spezialkategorie]
+                 , [Zeit_Ebene1]
+                 , [Zeit_Ebene2]
+                 , CASE
+                       WHEN [Zeit_Ebene2] = [Quartal] THEN [Monat]
+                       WHEN [Zeit_Ebene2] = [Monat] THEN [Tag]
+            END AS [Zeit_Ebene3]
+            FROM [Zeit_Spezial_Ebene2])
+
+  , [Zeit_Spezial_Ebene4]
+        AS (SELECT [Datum]
+                 , [Jahr]
+                 , [Quartal]
+                 , [Monat]
+                 , [Tag]
+                 , [Zeit_Spezialkategorie]
+                 , [Zeit_Ebene1]
+                 , [Zeit_Ebene2]
+                 , [Zeit_Ebene3]
+                 , CASE
+                       WHEN [Zeit_Ebene3] = [Monat] THEN [Tag]
+            END AS [Zeit_Ebene4]
+            FROM [Zeit_Spezial_Ebene3])
+
+
+SELECT *
+FROM [Zeit_Spezial_Ebene4]
+GO
+SET QUOTED_IDENTIFIER OFF 
+GO
+SET ANSI_NULLS OFF 
+GO
+
+GO

+ 151 - 0
System/ARI/SQL/schema/Kalender/views/kalender.Kalender_Mandant.sql

@@ -0,0 +1,151 @@
+SET QUOTED_IDENTIFIER ON 
+GO
+SET ANSI_NULLS ON 
+GO
+CREATE VIEW [kalender].[Kalender_Mandant] AS
+
+WITH
+    [Kalender_Mandant_mit_Arbeitstag]
+        AS (SELECT [T1].[Hauptbetrieb_ID]
+                 , [T1].[Standort_ID]
+                 , [T1].[Bundesland_ID]
+                 , [T2].[Datum]
+                 , [T2].[Tag_im_Jahr]
+                 , [T2].[Wochentag]
+                 , [T2].[Wochentag_int]
+                 , [T2].[Periode]
+                 , [T2].[Kalenderwoche]
+                 , [T2].[Quartal]
+                 , [T2].[Datum_str]
+                 , [T2].[Datum_int]
+                 , [T1].[Samstag_Arbeitstag]
+                 , iif([T1].[Samstag_Arbeitstag] = 1, [T2].[MoSa], [T2].[MoFr]) AS [Arbeitstag]
+            FROM [kalender].[Konfiguration_Mandant] [T1]
+                     CROSS JOIN [kalender].[Kalender_Tage] [T2])
+  , [Kalender_Mandant_mit_Feiertag]
+        AS (SELECT [T1].[Hauptbetrieb_ID]
+                 , [T1].[Standort_ID]
+                 , [T1].[Bundesland_ID]
+--                  , [T2].[Bundesland_Kuerzel]
+                 , [T1].[Datum]
+                 , [T1].[Tag_im_Jahr]
+                 , [T1].[Wochentag]
+                 , [T1].[Wochentag_int]
+                 , [T1].[Periode]
+                 , [T1].[Kalenderwoche]
+                 , [T1].[Quartal]
+                 , [T1].[Datum_str]
+                 , [T1].[Datum_int]
+                 , [T2].[Feiertag_Name]
+                 , iif([T2].[Feiertag_ID] IS NOT NULL, 1, 0) AS [Feiertag]
+                 , [T1].[Samstag_Arbeitstag]
+                 , [T1].[Arbeitstag] * iif([T2].[Feiertag_ID] IS NULL, 1, 0) AS [Arbeitstag]
+            FROM [Kalender_Mandant_mit_Arbeitstag] [T1]
+                     LEFT JOIN [kalender].[Feiertage_Berechnet] [T2] ON [T1].[Bundesland_ID] = [T2].[Bundesland_ID]
+                AND [T1].[Datum] = [T2].[Datum])
+
+  , [Kalender_Mandant_mit_Summe]
+        AS (SELECT [Hauptbetrieb_ID]
+                 , [Standort_ID]
+                 , [Bundesland_ID]
+--                  , [Bundesland_Kuerzel]
+                 , [Datum]
+                 , [Tag_im_Jahr]
+                 , [Wochentag]
+                 , [Wochentag_int]
+                 , [Periode]
+                 , [Kalenderwoche]
+                 , [Quartal]
+                 , [Datum_str]
+                 , [Datum_int]
+                 , [Feiertag_Name]
+                 , [Feiertag]
+                 , [Samstag_Arbeitstag]
+                 , [Arbeitstag]
+                 , rank() OVER (
+            PARTITION BY [Arbeitstag],
+            [Hauptbetrieb_ID],
+            [Standort_ID],
+            [Periode] ORDER BY [Datum]
+            ) * [Arbeitstag] AS [Arbeitstag_Zaehler_Monat]
+                 , rank() OVER (
+            PARTITION BY [Arbeitstag],
+            [Hauptbetrieb_ID],
+            [Standort_ID],
+            year([Datum]) ORDER BY [Datum]
+            ) * [Arbeitstag] AS [Arbeitstag_Zaehler_Jahr]
+                 , rank() OVER (
+            PARTITION BY [Arbeitstag],
+            [Hauptbetrieb_ID],
+            [Standort_ID] ORDER BY [Datum]
+            ) * [Arbeitstag] AS [Arbeitstag_Zaehler_Absolut]
+                 , sum([Arbeitstag]) OVER (
+            PARTITION BY [Hauptbetrieb_ID],
+            [Standort_ID],
+            [Periode]
+            ) AS [Arbeitstag_Summe_Monat]
+                 , sum([Arbeitstag]) OVER (
+            PARTITION BY [Hauptbetrieb_ID],
+            [Standort_ID],
+            year([Datum])
+            ) AS [Arbeitstag_Summe_Jahr]
+            FROM [Kalender_Mandant_mit_Feiertag])
+
+  , [Kalender_Mandant_mit_produktiv]
+        AS (SELECT [Hauptbetrieb_ID]
+                 , [Standort_ID]
+                 , [Bundesland_ID]
+--                  , [Bundesland_Kuerzel]
+                 , [T1].[Datum]
+                 , [T1].[Datum] AS "Invoice Date"
+                 , [T1].[Datum] AS "Bookkeep Date"
+                 , [Tag_im_Jahr]
+                 , [Wochentag]
+                 , [Wochentag_int]
+                 , [Periode]
+                 , [Kalenderwoche]
+                 , [Quartal]
+                 , [Datum_str]
+                 , [Datum_int]
+                 , [Feiertag_Name]
+                 , [Feiertag]
+                 , [Samstag_Arbeitstag]
+                 , [Arbeitstag]
+                 , [Arbeitstag_Zaehler_Absolut]
+                 , [Arbeitstag_Zaehler_Jahr]
+                 , [Arbeitstag_Summe_Jahr]
+                 , 1.0 * [Arbeitstag] / [Arbeitstag_Summe_Jahr] AS [ProduktivFaktorJahr]
+                 , [Arbeitstag_Zaehler_Monat]
+                 , [Arbeitstag_Summe_Monat]
+                 , 1.0 * [Arbeitstag] / [Arbeitstag_Summe_Monat] AS [ProduktivFaktorMonat]
+                 , month([T1].[Datum]) AS [Monat]
+            FROM [Kalender_Mandant_mit_Summe] [T1]
+                     --                     CROSS JOIN [kalender].[Buchungsbelege] [T2]
+--            WHERE [T1].[Datum] BETWEEN datefromparts(year([T2].[Buchung_von]), 1, 1) AND eomonth([T2].[Buchung_bis]))
+                     INNER JOIN [kalender].[Datum_Heute] [T2] ON [T1].[Datum] <= datefromparts(year([T2].[Datum]), 12, 31))
+--WHERE [Datum] <= datefromparts(year(getdate()), 12, 31))
+  , [Kalender_Mandant_produktiv_Monatswerte]
+        AS (SELECT *
+                 , iif([Monat] = 1, [ProduktivFaktorMonat], 0.0) AS [Monat_01]
+                 , iif([Monat] = 2, [ProduktivFaktorMonat], 0.0) AS [Monat_02]
+                 , iif([Monat] = 3, [ProduktivFaktorMonat], 0.0) AS [Monat_03]
+                 , iif([Monat] = 4, [ProduktivFaktorMonat], 0.0) AS [Monat_04]
+                 , iif([Monat] = 5, [ProduktivFaktorMonat], 0.0) AS [Monat_05]
+                 , iif([Monat] = 6, [ProduktivFaktorMonat], 0.0) AS [Monat_06]
+                 , iif([Monat] = 7, [ProduktivFaktorMonat], 0.0) AS [Monat_07]
+                 , iif([Monat] = 8, [ProduktivFaktorMonat], 0.0) AS [Monat_08]
+                 , iif([Monat] = 9, [ProduktivFaktorMonat], 0.0) AS [Monat_09]
+                 , iif([Monat] = 10, [ProduktivFaktorMonat], 0.0) AS [Monat_10]
+                 , iif([Monat] = 11, [ProduktivFaktorMonat], 0.0) AS [Monat_11]
+                 , iif([Monat] = 12, [ProduktivFaktorMonat], 0.0) AS [Monat_12]
+
+            FROM [Kalender_Mandant_mit_produktiv])
+SELECT *
+FROM [Kalender_Mandant_produktiv_Monatswerte]
+GO
+SET QUOTED_IDENTIFIER OFF 
+GO
+SET ANSI_NULLS OFF 
+GO
+
+GO

+ 170 - 0
System/ARI/SQL/schema/Kalender/views/kalender.Kalender_Matrix.sql

@@ -0,0 +1,170 @@
+SET QUOTED_IDENTIFIER ON 
+GO
+SET ANSI_NULLS ON 
+GO
+CREATE VIEW [kalender].[Kalender_Matrix] AS
+
+WITH
+    [Kalender_Heute]
+        AS (SELECT [T1].*
+                 , [T2].[Invoice Date] AS [Heute]
+            FROM [kalender].[Kalender_Tage] [T1]
+                     CROSS JOIN [kalender].[Aktueller_Tag] [T2])
+
+  , [Kalender_Heute_Vorjahr_Vormonat]
+        AS (SELECT [Datum]
+                 , [Tag_im_Jahr]
+                 , [Wochentag]
+                 , [Wochentag_int]
+                 , [Periode]
+                 , [Kalenderwoche]
+                 , [Quartal_int]
+                 , [Datum_str]
+                 , [Datum_int]
+                 , [MoFr]
+                 , [MoSa]
+                 , [Jahr]
+                 , [Quartal]
+                 , [Monat]
+                 , [Tag]
+                 , [Heute]
+                 , dateadd(YY, -1, [Heute]) AS [Heute_Vorjahr]
+                 , dateadd(MM, -1, [Heute]) AS [Heute_Vormonat]
+            FROM [Kalender_Heute])
+
+  , [Zeit_Dimension_Berechnung]
+        AS (SELECT [T1].*
+                 , iif([Datum] = [Heute], 1, 0) AS "Aktueller Tag"
+                 , iif([Datum] = dateadd(DD, -1, [Heute]), 1, 0) AS "Gestern"
+                 , iif([Datum] <= [Heute] AND [Datum] >= [kalender].[bomonth]([Heute]), 1, 0) AS "M bisher"
+                 , iif([Datum] <= [Heute_Vorjahr] AND [Datum] >= [kalender].[bomonth]([Heute_Vorjahr]), 1, 0) AS "M bisher Vorjahr"
+                 -- "M bisher / M bisher VJ",
+                 , iif([Datum] <= [Heute_Vormonat] AND [Datum] >= [kalender].[bomonth]([Heute_Vormonat]), 1, 0) AS "Voriger M bisher"
+                 -- "M bisher gruppiert",
+                 , iif([Datum] <= [Heute] AND [Datum] >= [kalender].[boquarter]([Heute]), 1, 0) AS "Q bisher" -- TODO
+                 , iif([Datum] <= dateadd(MM, -3, [Heute]) AND [Datum] >= [kalender].[boquarter](dateadd(MM, -3, [Heute])), 1, 0) AS "Voriges Q bisher"
+                 -- "Q bisher gruppiert",
+                 , iif([Datum] <= [Heute] AND [Datum] >= datefromparts(year([Heute]), 1, 1), 1, 0) AS "J bisher"
+                 , iif([Datum] <= [Heute_Vorjahr] AND [Datum] >= datefromparts(year([Heute]) - 1, 1, 1), 1, 0) AS "Voriges J bisher"
+                 ,
+                 -- "J bisher gruppiert",
+                 -- 0 as "J bisher / VJ bisher",
+                iif([Datum] <= eomonth([Heute]) AND [Datum] >= [kalender].[bomonth]([Heute]), 1, 0) AS "Aktueller Monat"
+                 , iif([Datum] <= eomonth([Heute_Vormonat]) AND [Datum] >= [kalender].[bomonth]([Heute_Vormonat]), 1, 0) AS "Vormonat (-1)"
+                 , iif([Datum] <= eomonth(dateadd(MM, -2, [Heute])) AND [Datum] >= [kalender].[bomonth](dateadd(MM, -2, [Heute])), 1, 0) AS "Vormonat (-2)"
+                 , iif([Datum] <= eomonth(dateadd(MM, -3, [Heute])) AND [Datum] >= [kalender].[bomonth](dateadd(MM, -3, [Heute])), 1, 0) AS "Vormonat (-3)"
+                 , iif([Datum] <= eomonth([Heute_Vorjahr]) AND [Datum] >= [kalender].[bomonth]([Heute_Vorjahr]), 1, 0) AS "Akt. Monat Vorjahr"
+                 , iif([Datum] <= eomonth(dateadd(MM, -1, [Heute_Vorjahr])) AND [Datum] >= [kalender].[bomonth](dateadd(MM, -1, [Heute_Vorjahr])), 1, 0) AS "Vormonat (-1) Vorjahr"
+                 , iif([Datum] <= eomonth(dateadd(MM, -2, [Heute_Vorjahr])) AND [Datum] >= [kalender].[bomonth](dateadd(MM, -2, [Heute_Vorjahr])), 1, 0) AS "Vormonat (-2) Vorjahr"
+                 , iif([Datum] <= eomonth(dateadd(MM, -3, [Heute_Vorjahr])) AND [Datum] >= [kalender].[bomonth](dateadd(MM, -3, [Heute_Vorjahr])), 1, 0) AS "Vormonat (-3) Vorjahr"
+                 , iif([Datum] <= eomonth([Heute]) AND [Datum] >= [kalender].[bomonth](dateadd(MM, -6, [Heute])), 1, 0) AS "letzte 6 Monate"
+                 , iif([Datum] <= eomonth([Heute]) AND [Datum] >= [kalender].[bomonth](dateadd(MM, -12, [Heute])), 1, 0) AS "letzte 12 Monate"
+                 , iif([Datum] <= [Heute_Vormonat] AND [Datum] >= datefromparts(year([Heute_Vormonat]), 1, 1), 1, 0) AS "per Vormonat"
+                 , iif([Datum] <= dateadd(MM, -2, [Heute]) AND [Datum] >= datefromparts(year(dateadd(MM, -2, [Heute])), 1, 1), 1, 0) AS "per Vormonat (-2)"
+                 , iif([Datum] <= dateadd(MM, -3, [Heute]) AND [Datum] >= datefromparts(year(dateadd(MM, -3, [Heute])), 1, 1), 1, 0) AS "per Vormonat (-3)"
+                 , iif([Datum] <= dateadd(MM, -1, [Heute_Vorjahr]) AND [Datum] >= datefromparts(year(dateadd(MM, -1, [Heute_Vorjahr])), 1, 1), 1, 0) AS "per Vormonat Vorjahr"
+                 , iif([Datum] <= dateadd(MM, -2, [Heute_Vorjahr]) AND [Datum] >= datefromparts(year(dateadd(MM, -2, [Heute_Vorjahr])), 1, 1), 1, 0) AS "per Vormonat (-2) Vorjahr"
+                 , iif([Datum] <= dateadd(MM, -3, [Heute_Vorjahr]) AND [Datum] >= datefromparts(year(dateadd(MM, -3, [Heute_Vorjahr])), 1, 1), 1, 0) AS "per Vormonat (-3) Vorjahr"
+                 , iif(year([Datum]) = year([Heute]), 1, 0) AS "Aktuelles Jahr"
+                 , iif(year([Datum]) = year([Heute]) - 1, 1, 0) AS "letztes Jahr"
+                 , iif([Datum] <= eomonth(dateadd(MM, -2, [Heute])) AND [Datum] >= [kalender].[bomonth](dateadd(MM, -5, [Heute])), 1, 0) AS "3 Monate bis Vormonat (-2)"
+                 , iif([Quartal] = [kalender].[quarter_name](dateadd(QQ, -1, [Heute])), 1, 0) AS "Quartal (-1)"
+                 , iif([Quartal] = [kalender].[quarter_name](dateadd(QQ, -2, [Heute])), 1, 0) AS "Quartal (-2)"
+                 , iif([Quartal] = [kalender].[quarter_name](dateadd(QQ, -3, [Heute])), 1, 0) AS "Quartal (-3)"
+                 , iif([Quartal] = [kalender].[quarter_name](dateadd(QQ, -1, [Heute_Vorjahr])), 1, 0) AS "Quartal (-1) Vorjahr"
+                 , iif([Quartal] = [kalender].[quarter_name](dateadd(QQ, -2, [Heute_Vorjahr])), 1, 0) AS "Quartal (-2) Vorjahr"
+                 , iif([Quartal] = [kalender].[quarter_name](dateadd(QQ, -3, [Heute_Vorjahr])), 1, 0) AS "Quartal (-3) Vorjahr"
+                 , iif(([Datum] <= dateadd(QQ, -1, [Heute]) AND [Datum] >= datefromparts(year(dateadd(QQ, -1, [Heute])), 1, 1)) OR [Quartal] = [kalender].[quarter_name](dateadd(QQ, -1, [Heute])), 1, 0) AS "Quartal (-1) kum."
+                 , iif(([Datum] <= dateadd(QQ, -1, [Heute_Vorjahr]) AND [Datum] >= datefromparts(year(dateadd(QQ, -1, [Heute_Vorjahr])), 1, 1)) OR [Quartal] = [kalender].[quarter_name](dateadd(QQ, -1, [Heute_Vorjahr])), 1, 0) AS "Quartal (-1) kum. Vorjahr"
+                 ,
+                 --0 as "restl. Jahr",
+                 --0 as "Gesamtjahr",
+                iif([Datum] <= eomonth([Heute_Vormonat]) AND [Datum] >= [kalender].[bomonth](dateadd(MM, -12, [Heute])), 1, 0) AS "letzte 11 Monate"
+                 , iif([Datum] <= eomonth([Heute_Vormonat]) AND [Datum] >= [kalender].[bomonth](dateadd(MM, -14, [Heute])), 1, 0) AS "letzte 13 Monate"
+                 --0 as "12 Monate kum. rollierend"
+
+                 , iif([Datum] <= [Heute] AND [Datum] > dateadd(DD, -3, [Heute]), 1, 0) AS "letzte 3 Tage"
+                 , iif([Datum] <= [Heute] AND [Datum] > dateadd(DD, -7, [Heute]), 1, 0) AS "letzte 7 Tage"
+                 , iif([Datum] <= [Heute] AND [Datum] > dateadd(DD, -14, [Heute]), 1, 0) AS "letzte 14 Tage"
+                 , iif([Datum] <= [Heute] AND [Datum] > dateadd(DD, -30, [Heute]), 1, 0) AS "letzte 30 Tage"
+
+            FROM [Kalender_Heute_Vorjahr_Vormonat] [T1])
+
+
+  , [Zeit_Dimension_mit_Gruppen]
+        AS (SELECT [Datum]
+                 , [Tag_im_Jahr]
+                 , [Wochentag]
+                 , [Wochentag_int]
+                 , [Periode]
+                 , [Kalenderwoche]
+                 , [Quartal_int]
+                 , [Datum_str]
+                 , [Datum_int]
+                 , [MoFr]
+                 , [MoSa]
+                 , [Jahr]
+                 , [Quartal]
+                 , [Monat]
+                 , [Tag]
+                 , [Heute]
+                 , [Heute_Vorjahr]
+                 , [Heute_Vormonat]
+                 , [Aktueller Tag]
+                 , [Gestern]
+                 , [M bisher]
+                 , [M bisher Vorjahr]
+                 , [M bisher] + [M bisher Vorjahr] * 2 AS [M bisher / M bisher VJ]
+                 , [Voriger M bisher]
+                 , [M bisher] + [Voriger M bisher] * 2 AS [M bisher gruppiert]
+                 , [Q bisher]
+                 , [Voriges Q bisher]
+                 , [Q bisher] + [Voriges Q bisher] * 2 AS [Q bisher gruppiert]
+                 , [J bisher]
+                 , [Voriges J bisher]
+                 , [J bisher] + [Voriges J bisher] * 2 AS [J bisher gruppiert]
+                 , [Aktueller Monat]
+                 , [Vormonat (-1)]
+                 , [Vormonat (-2)]
+                 , [Vormonat (-3)]
+                 , [Akt. Monat Vorjahr]
+                 , [Vormonat (-1) Vorjahr]
+                 , [Vormonat (-2) Vorjahr]
+                 , [Vormonat (-3) Vorjahr]
+                 , [letzte 6 Monate]
+                 , [letzte 12 Monate]
+                 , [per Vormonat]
+                 , [per Vormonat (-2)]
+                 , [per Vormonat (-3)]
+                 , [per Vormonat Vorjahr]
+                 , [per Vormonat (-2) Vorjahr]
+                 , [per Vormonat (-3) Vorjahr]
+                 , [Aktuelles Jahr]
+                 , [letztes Jahr]
+                 , [3 Monate bis Vormonat (-2)]
+                 , [Quartal (-1)]
+                 , [Quartal (-2)]
+                 , [Quartal (-3)]
+                 , [Quartal (-1) Vorjahr]
+                 , [Quartal (-2) Vorjahr]
+                 , [Quartal (-3) Vorjahr]
+                 , [Quartal (-1) kum.]
+                 , [Quartal (-1) kum. Vorjahr]
+                 , [letzte 11 Monate]
+                 , [letzte 13 Monate]
+                 , [letzte 3 Tage]
+                 , [letzte 7 Tage]
+                 , [letzte 14 Tage]
+                 , [letzte 30 Tage]
+            FROM [Zeit_Dimension_Berechnung])
+
+
+SELECT *
+FROM [Zeit_Dimension_mit_Gruppen]
+GO
+SET QUOTED_IDENTIFIER OFF 
+GO
+SET ANSI_NULLS OFF 
+GO
+
+GO

+ 77 - 0
System/ARI/SQL/schema/Kalender/views/kalender.Kalender_Tage.sql

@@ -0,0 +1,77 @@
+SET QUOTED_IDENTIFIER ON 
+GO
+SET ANSI_NULLS ON 
+GO
+CREATE   VIEW [kalender].[Kalender_Tage] AS
+
+WITH
+    [Monate]
+        AS (SELECT *
+            FROM (VALUES (1, 'Jan.')
+                       , (2, 'Feb.')
+                       , (3, 'März')
+                       , (4, 'Apr.')
+                       , (5, 'Mai')
+                       , (6, 'Juni')
+                       , (7, 'Juli')
+                       , (8, 'Aug.')
+                       , (9, 'Sep.')
+                       , (10, 'Okt.')
+                       , (11, 'Nov.')
+                       , (12, 'Dez.')) AS [T1] ([Monat_int], [Monat_Name]))
+  , [Kalender_Tage_im_Jahr]
+        AS (SELECT dateadd(DAY, [T1].[number], datefromparts([T2].[Jahr], 1, 1)) AS [Datum]
+                 , [T1].[number] AS [Tag_im_Jahr]
+            FROM [master].[dbo].[spt_values] [T1]
+                     INNER JOIN [kalender].[Jahre] [T2] ON dateadd(DAY, [T1].[number], datefromparts([T2].[Jahr], 1, 1)) <= datefromparts([T2].[Jahr], 12, 31)
+            WHERE [T1].[type] = 'P')
+
+  , [Kalender_Infos]
+        AS (SELECT [T1].[Datum]
+                 , [T1].[Tag_im_Jahr]
+                 , datename(WEEKDAY, [T1].[Datum]) AS [Wochentag]
+                 , datepart(WEEKDAY, [T1].[Datum]) AS [Wochentag_int]
+                 , year([T1].[Datum]) * 100 + month([T1].[Datum]) AS [Periode]
+                 , datepart(ISO_WEEK, [T1].[Datum]) AS [Kalenderwoche]
+                 , datepart(QUARTER, [T1].[Datum]) AS [Quartal_int]
+                 , cast([T1].[Datum] AS varchar) AS [Datum_str]
+                 , year([T1].[Datum]) * 10000 + month([T1].[Datum]) * 100 + day([T1].[Datum]) AS [Datum_int]
+            FROM [Kalender_Tage_im_Jahr] [T1])
+
+  , [Kalender_mit_Arbeitstagen]
+        AS (SELECT [Datum]
+                 , [Tag_im_Jahr]
+                 , [Wochentag]
+                 , [Wochentag_int]
+                 , [Periode]
+                 , [Kalenderwoche]
+                 , [Quartal_int]
+                 , [Datum_str]
+                 , [Datum_int]
+                 , iif(datepart(WEEKDAY, [Datum]) BETWEEN 1 AND 5,
+                       1,
+                       0) AS [MoFr]
+                 , iif(datepart(WEEKDAY, [Datum]) BETWEEN 1 AND 6,
+                       1,
+                       0) AS [MoSa]
+            FROM [Kalender_Infos])
+
+  , [Kalender_mit_Cognos_Format]
+        AS (SELECT [T1].*
+                 , convert(varchar(30), year([T1].[Datum])) AS [Jahr]
+                 , convert(varchar(30), convert(varchar, datepart(Q, [T1].[Datum])) + '. Q. ' + convert(varchar, year([T1].[Datum]))) AS [Quartal]
+                 , convert(varchar(30), [T2].[Monat_Name] + '/' + convert(varchar, year([T1].[Datum]))) AS [Monat]
+                 , convert(varchar(30), [T1].[Datum], 103) AS [Tag]
+            FROM [Kalender_mit_Arbeitstagen] [T1]
+                     INNER JOIN [Monate] [T2] ON [T2].[Monat_int] = month([T1].[Datum]))
+
+
+SELECT *
+FROM [Kalender_mit_Cognos_Format]
+GO
+SET QUOTED_IDENTIFIER OFF 
+GO
+SET ANSI_NULLS OFF 
+GO
+
+GO

+ 86 - 0
System/ARI/SQL/schema/Kalender/views/kalender.Kalender_Zeitkategorie.sql

@@ -0,0 +1,86 @@
+SET QUOTED_IDENTIFIER ON 
+GO
+SET ANSI_NULLS ON 
+GO
+CREATE   VIEW [kalender].[Kalender_Zeitkategorie] AS
+
+SELECT [Datum]
+     , [Tag_im_Jahr]
+     , [Wochentag]
+     , [Wochentag_int]
+     , [Periode]
+     , [Kalenderwoche]
+     , [Quartal_int]
+     , [Datum_str]
+     , [Datum_int]
+     , [MoFr]
+     , [MoSa]
+     , [Jahr]
+     , [Quartal]
+     , [Monat]
+     , [Tag]
+     , [Heute]
+     , [Heute_Vorjahr]
+     , [Heute_Vormonat]
+
+     , iif([Aktueller Tag] = 1, 'Aktueller Tag', NULL) AS [Aktueller Tag]
+     , iif([Gestern] = 1, 'Gestern', NULL) AS [Gestern]
+     , iif([M bisher] = 1, 'M bisher', NULL) AS [M bisher]
+     , iif([M bisher Vorjahr] = 1, 'M bisher Vorjahr', NULL) AS [M bisher Vorjahr]
+     , iif([M bisher / M bisher VJ] = 1, 'M bisher / M bisher VJ', NULL) AS [M bisher / M bisher VJ]
+     , iif([Voriger M bisher] = 1, 'Voriger M bisher', NULL) AS [Voriger M bisher]
+     , iif([M bisher gruppiert] = 1, 'M bisher gruppiert', NULL) AS [M bisher gruppiert]
+
+     , iif([Q bisher] = 1, 'Q bisher', NULL) AS [Q bisher]
+     , iif([Voriges Q bisher] = 1, 'Voriges Q bisher', NULL) AS [Voriges Q bisher]
+     , iif([Q bisher gruppiert] = 1, 'Q bisher gruppiert', NULL) AS [Q bisher gruppiert]
+     , iif([J bisher] = 1, 'J bisher', NULL) AS [J bisher]
+     , iif([Voriges J bisher] = 1, 'Voriges J bisher', NULL) AS [Voriges J bisher]
+     , iif([J bisher gruppiert] = 1, 'J bisher gruppiert', NULL) AS [J bisher gruppiert]
+
+     , iif([Aktueller Monat] = 1, 'Aktueller Monat', NULL) AS [Aktueller Monat]
+     , iif([Vormonat (-1)] = 1, 'Vormonat (-1)', NULL) AS [Vormonat (-1)]
+     , iif([Vormonat (-2)] = 1, 'Vormonat (-2)', NULL) AS [Vormonat (-2)]
+     , iif([Vormonat (-3)] = 1, 'Vormonat (-3)', NULL) AS [Vormonat (-3)]
+     , iif([Akt. Monat Vorjahr] = 1, 'Akt. Monat Vorjahr', NULL) AS [Akt. Monat Vorjahr]
+     , iif([Vormonat (-1) Vorjahr] = 1, 'Vormonat (-1) Vorjahr', NULL) AS [Vormonat (-1) Vorjahr]
+     , iif([Vormonat (-2) Vorjahr] = 1, 'Vormonat (-2) Vorjahr', NULL) AS [Vormonat (-2) Vorjahr]
+     , iif([Vormonat (-3) Vorjahr] = 1, 'Vormonat (-3) Vorjahr', NULL) AS [Vormonat (-3) Vorjahr]
+     , iif([letzte 6 Monate] = 1, 'letzte 6 Monate', NULL) AS [letzte 6 Monate]
+     , iif([letzte 12 Monate] = 1, 'letzte 12 Monate', NULL) AS [letzte 12 Monate]
+
+     , iif([per Vormonat] = 1, 'per Vormonat', NULL) AS [per Vormonat]
+     , iif([per Vormonat (-2)] = 1, 'per Vormonat (-2)', NULL) AS [per Vormonat (-2)]
+     , iif([per Vormonat (-3)] = 1, 'per Vormonat (-3)', NULL) AS [per Vormonat (-3)]
+     , iif([per Vormonat Vorjahr] = 1, 'per Vormonat Vorjahr', NULL) AS [per Vormonat Vorjahr]
+     , iif([per Vormonat (-2) Vorjahr] = 1, 'per Vormonat (-2) Vorjahr', NULL) AS [per Vormonat (-2) Vorjahr]
+     , iif([per Vormonat (-3) Vorjahr] = 1, 'per Vormonat (-3) Vorjahr', NULL) AS [per Vormonat (-3) Vorjahr]
+
+     , iif([Aktuelles Jahr] = 1, 'Aktuelles Jahr', NULL) AS [Aktuelles Jahr]
+     , iif([letztes Jahr] = 1, 'letztes Jahr', NULL) AS [letztes Jahr]
+     , iif([3 Monate bis Vormonat (-2)] = 1, '3 Monate bis Vormonat (-2)', NULL) AS [3 Monate bis Vormonat (-2)]
+
+     , iif([Quartal (-1)] = 1, 'Quartal (-1)', NULL) AS [Quartal (-1)]
+     , iif([Quartal (-2)] = 1, 'Quartal (-2)', NULL) AS [Quartal (-2)]
+     , iif([Quartal (-3)] = 1, 'Quartal (-3)', NULL) AS [Quartal (-3)]
+     , iif([Quartal (-1) Vorjahr] = 1, 'Quartal (-1) Vorjahr', NULL) AS [Quartal (-1) Vorjahr]
+     , iif([Quartal (-2) Vorjahr] = 1, 'Quartal (-2) Vorjahr', NULL) AS [Quartal (-2) Vorjahr]
+     , iif([Quartal (-3) Vorjahr] = 1, 'Quartal (-3) Vorjahr', NULL) AS [Quartal (-3) Vorjahr]
+     , iif([Quartal (-1) kum.] = 1, 'Quartal (-1) kum.', NULL) AS [Quartal (-1) kum.]
+     , iif([Quartal (-1) kum. Vorjahr] = 1, 'Quartal (-1) kum. Vorjahr', NULL) AS [Quartal (-1) kum. Vorjahr]
+
+     , iif([letzte 11 Monate] = 1, 'letzte 11 Monate', NULL) AS [letzte 11 Monate]
+     , iif([letzte 13 Monate] = 1, 'letzte 13 Monate', NULL) AS [letzte 13 Monate]
+     , iif([letzte 3 Tage] = 1, 'letzte 3 Tage', NULL) AS [letzte 3 Tage]
+     , iif([letzte 7 Tage] = 1, 'letzte 7 Tage', NULL) AS [letzte 7 Tage]
+     , iif([letzte 14 Tage] = 1, 'letzte 14 Tage', NULL) AS [letzte 14 Tage]
+     , iif([letzte 30 Tage] = 1, 'letzte 30 Tage', NULL) AS [letzte 30 Tage]
+
+FROM [kalender].[Kalender_Matrix]
+GO
+SET QUOTED_IDENTIFIER OFF 
+GO
+SET ANSI_NULLS OFF 
+GO
+
+GO

+ 23 - 0
System/ARI/SQL/schema/Kalender/views/kalender.Zeitraum.sql

@@ -0,0 +1,23 @@
+SET QUOTED_IDENTIFIER ON 
+GO
+SET ANSI_NULLS ON 
+GO
+CREATE VIEW [kalender].[Zeitraum]
+AS
+SELECT [T1].[Datum]
+     , [T1].[Datum] AS "Invoice Date"
+     , [T1].[Datum] AS "Bookkeep Date"
+     , 1 AS [Zeitraum]
+FROM [kalender].[Kalender_Tage] [T1]
+         -- CROSS JOIN [kalender].[Buchungsbelege] T2
+-- WHERE T1.[Datum] BETWEEN DATEFROMPARTS(YEAR(T2.[Buchung_von]), 1, 1) AND EOMONTH(T2.[Buchung_bis])
+         CROSS JOIN [kalender].[Konfiguration] [T2]
+         CROSS JOIN [kalender].[Datum_Heute] [T3]
+WHERE [T1].[Datum] BETWEEN datefromparts([T2].[Jahr_von], 1, 1) AND eomonth([T3].[Datum])
+GO
+SET QUOTED_IDENTIFIER OFF 
+GO
+SET ANSI_NULLS OFF 
+GO
+
+GO