2 Angajamente e98742b65c ... 27e7e7c6cf

Autor SHA1 Permisiunea de a trimite mesaje. Dacă este dezactivată, utilizatorul nu va putea trimite nici un fel de mesaj Data
  Automag 27e7e7c6cf Kleine Anpassungen im Import 10 luni în urmă
  Automag da0e055e52 Kalender ergänzt 10 luni în urmă
33 a modificat fișierele cu 1182 adăugiri și 5 ștergeri
  1. 4 4
      System/ARI/SQL/config/GC_TRANSIT_ARI.csv
  2. 2 0
      System/ARI/SQL/schema/GC_ETL_ARI.bat
  3. 2 0
      System/ARI/SQL/schema/GC_ETL_ARI_create.bat
  4. 8 0
      System/ARI/SQL/schema/Kalender/foreign_keys/kalender.Bundesland_Info.sql
  5. 4 0
      System/ARI/SQL/schema/Kalender/foreign_keys/kalender.Feiertage.sql
  6. 8 0
      System/ARI/SQL/schema/Kalender/foreign_keys/kalender.Feiertage_Bundesland.sql
  7. 37 0
      System/ARI/SQL/schema/Kalender/functions/kalender.Busstag.sql
  8. 79 0
      System/ARI/SQL/schema/Kalender/functions/kalender.Ostern.sql
  9. 18 0
      System/ARI/SQL/schema/Kalender/functions/kalender.bomonth.sql
  10. 18 0
      System/ARI/SQL/schema/Kalender/functions/kalender.boquarter.sql
  11. 18 0
      System/ARI/SQL/schema/Kalender/functions/kalender.quarter_name.sql
  12. 30 0
      System/ARI/SQL/schema/Kalender/props.sql
  13. 7 0
      System/ARI/SQL/schema/Kalender/schemas.sql
  14. 8 0
      System/ARI/SQL/schema/Kalender/tables/kalender.Buchungsbelege.sql
  15. 11 0
      System/ARI/SQL/schema/Kalender/tables/kalender.Bundesland_Info.sql
  16. 6 0
      System/ARI/SQL/schema/Kalender/tables/kalender.Datum_Heute.sql
  17. 14 0
      System/ARI/SQL/schema/Kalender/tables/kalender.Feiertage.sql
  18. 9 0
      System/ARI/SQL/schema/Kalender/tables/kalender.Feiertage_Bundesland.sql
  19. 9 0
      System/ARI/SQL/schema/Kalender/tables/kalender.Feiertage_Kategorie.sql
  20. 11 0
      System/ARI/SQL/schema/Kalender/tables/kalender.Konfiguration.sql
  21. 13 0
      System/ARI/SQL/schema/Kalender/tables/kalender.Konfiguration_Mandant.sql
  22. 9 0
      System/ARI/SQL/schema/Kalender/tables/kalender.Laender_Info.sql
  23. 6 0
      System/ARI/SQL/schema/Kalender/users/gaps.sql
  24. 41 0
      System/ARI/SQL/schema/Kalender/views/kalender.Aktueller_Tag.sql
  25. 33 0
      System/ARI/SQL/schema/Kalender/views/kalender.Feiertage_Berechnet.sql
  26. 17 0
      System/ARI/SQL/schema/Kalender/views/kalender.Jahre.sql
  27. 252 0
      System/ARI/SQL/schema/Kalender/views/kalender.Kalender_Dimension.sql
  28. 151 0
      System/ARI/SQL/schema/Kalender/views/kalender.Kalender_Mandant.sql
  29. 170 0
      System/ARI/SQL/schema/Kalender/views/kalender.Kalender_Matrix.sql
  30. 77 0
      System/ARI/SQL/schema/Kalender/views/kalender.Kalender_Tage.sql
  31. 86 0
      System/ARI/SQL/schema/Kalender/views/kalender.Kalender_Zeitkategorie.sql
  32. 23 0
      System/ARI/SQL/schema/Kalender/views/kalender.Zeitraum.sql
  33. 1 1
      Tasks/ARI_load_ETL.bat

+ 4 - 4
System/ARI/SQL/config/GC_TRANSIT_ARI.csv

@@ -11,15 +11,15 @@ source;dest;dest_db;filter;query;iterative;cols
 {0}$Employee_T;Employee_T;GC_TRANSIT_ARI;;;;
 {0}$G_L Account;G_L_Account;GC_TRANSIT_ARI;;;;
 {0}$G_L Budget Entry;G_L_Budget_Entry;GC_TRANSIT_ARI;;;;
-{0}$G_L Entry;G_L_Entry;GC_TRANSIT_ARI;T1.[Posting Date] >= '{2}';;;
+{0}$G_L Entry;G_L_Entry;GC_TRANSIT_ARI;;SELECT T1.* FROM [{0}$G_L Entry] T1 INNER JOIN [{0}$G_L Account] T2 ON T1.[G_L Account No_] = T2.[No_] WHERE T1.[Posting Date] >= '{2}' AND T2.[Income_Balance] = '0';;
 {0}$Item;Item;GC_TRANSIT_ARI;;;;
 {0}$Labor;Labor;GC_TRANSIT_ARI;;;;
 {0}$Labor Ledger Entry;Labor_Ledger_Entry;GC_TRANSIT_ARI;T1.[Posting Date] >= '{1}';;;
 {0}$Reminder_Fin_ Charge Entry;Reminder_Fin_Charge_Entry;GC_TRANSIT_ARI;;;;
 {0}$Resource;Resource;GC_TRANSIT_ARI;;;;
-{0}$Sales Credit Memo Header;Sales_Credit_Memo_Header;GC_TRANSIT_ARI;;;;
-{0}$Sales Credit Memo Line;Sales_Credit_Memo_Line;GC_TRANSIT_ARI;;SELECT T1.* FROM [{0}$Sales Credit Memo Line] T1 INNER JOIN [{0}$Sales Credit Memo Header] T2 ON T1.[Document No_] = T2.[No_] WHERE T2.[Posting Date] >= '{1}';;
-{0}$Sales Invoice Header;Sales_Invoice_Header;GC_TRANSIT_ARI;T1.[Posting Date] >= '{1}';;;
+{0}$Sales Credit Memo Header;Sales_Credit_Memo_Header;GC_TRANSIT_ARI;T1.[Posting Date] >= '{2}';;;
+{0}$Sales Credit Memo Line;Sales_Credit_Memo_Line;GC_TRANSIT_ARI;;SELECT T1.* FROM [{0}$Sales Credit Memo Line] T1 INNER JOIN [{0}$Sales Credit Memo Header] T2 ON T1.[Document No_] = T2.[No_] WHERE T2.[Posting Date] >= '{2}';;
+{0}$Sales Invoice Header;Sales_Invoice_Header;GC_TRANSIT_ARI;T1.[Posting Date] >= '{2}';;;
 {0}$Sales Invoice Line;Sales_Invoice_Line;GC_TRANSIT_ARI;;SELECT T1.* FROM [{0}$Sales Invoice Line] T1 INNER JOIN [{0}$Sales Invoice Header] T2 ON T1.[Document No_] = T2.[No_] WHERE T2.[Posting Date] >= '{2}';;
 {0}$Salesperson_Purchaser;Salesperson_Purchaser;GC_TRANSIT_ARI;;;;
 {0}$Service Header;Service_Header;GC_TRANSIT_ARI;;;;

+ 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

+ 1 - 1
Tasks/ARI_load_ETL.bat

@@ -14,7 +14,7 @@ call sqlexec.bat CREATE_Kalender.sql
 call sqlexec.bat CREATE_temp_Fahrzeug_Kunde.sql
 call sqlexec.bat CREATE_Fibu_Belege.sql
 call sqlexec.bat CREATE_Fibu_Bilanzsalden.sql
-call sqlexec.bat CREATE_Fibu_Forderungen.sql
+call sqlexec.bat CREATE_Forderungen.sql
 call sqlexec.bat CREATE_Kontenrahmen.sql
 rem call sqlexec.bat CREATE_Fibu_Verkauf_Stk_Betrag.sql
 rem call sqlexec.bat CREATE_Fibu_Verkauf_Stk_Menge.sql