| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- SET QUOTED_IDENTIFIER ON
- GO
- SET ANSI_NULLS ON
- GO
- CREATE VIEW [transform].[Bilanzsalden_kumuliert] AS
- -- Bilanzsalden_kumuliert
- WITH
- "Config_Jahreswechsel"
- -- In welchem Monat startet das Geschäftsjahr?
- AS (SELECT *
- , iif([Monat] >= 7, 1, 0) AS [Offset1]
- , iif([Monat] >= 7, 0, -1) AS [Offset2]
- FROM (VALUES (1, 1)
- , (2, 1)
- , (3, 1)
- , (4, 1)
- , (5, 1)
- , (6, 1)
- , (7, 1)) AS [T1] ([Client_DB], [Monat]))
- , "Sachkonto_Salden_Bilanzkonten"
- -- Für alle weiteren Berechnungen sind nur Bilanzkonten interessant
- AS (SELECT [T1].[Client_DB]
- , [T1].[Branch Code]
- , [T1].[G_L Account No_] AS [Sachkontonr_]
- , month([T1].[Posting Date]) AS [Monat]
- , year([T1].[Posting Date]) AS [Jahr]
- , year([T1].[Posting Date]) * 100 + month([T1].[Posting Date]) AS [Periode]
- , [T1].[Posting Date] AS [Buchungsdatum]
- , convert(decimal(18, 2), [T1].[Amount]) AS [Betrag]
- FROM [xtract].[G_L_Entry_Salden] [T1]
- INNER JOIN [xtract].[G_L_Account] [T2] ON [T1].[Client_DB] = [T2].[Client_DB] AND [T1].[G_L Account No_] = [T2].[No_]
- WHERE [T2].[Income_Balance] = '1')
- , [Buchungsperiode_alle]
- -- alle Buchungsperioden
- AS (SELECT DISTINCT [Periode]
- , [Jahr]
- , [Monat]
- FROM [Sachkonto_Salden_Bilanzkonten])
- , [Sachkonto_alle]
- -- Liste aller bebuchten Bilanzkonten
- AS (SELECT DISTINCT [Client_DB]
- , [Branch Code]
- , [Sachkontonr_]
- FROM [Sachkonto_Salden_Bilanzkonten])
- , [Sachkonto_Salden_Null]
- -- Kreuzprodukt über alle Bilanzkonten und alle Perioden
- AS (SELECT [T1].[Client_DB]
- , [T1].[Branch Code]
- , [T1].[Sachkontonr_]
- , [T2].[Monat]
- , [T2].[Jahr]
- , [T2].[Periode]
- , 0.0 AS [Betrag]
- FROM [Sachkonto_alle] [T1]
- CROSS JOIN [Buchungsperiode_alle] [T2])
- , [Sachkonto_Salden_aufgefuellt]
- -- Kombination aus dem Kreuzprodukt von oben mit den tatsächlichen Buchungswerten, um eine vollständige Liste aller Konten und Buchungsperioden zu erhalten
- AS (SELECT [T1].[Client_DB]
- , [T1].[Branch Code]
- , [T1].[Sachkontonr_]
- , [T1].[Monat]
- , [T1].[Jahr]
- , [T1].[Periode]
- , isnull([T2].[Betrag], [T1].[Betrag]) AS [Betrag]
- FROM [Sachkonto_Salden_Null] [T1]
- LEFT JOIN [Sachkonto_Salden_Bilanzkonten] [T2] ON [T1].[Client_DB] = [T2].[Client_DB] AND T1.[Branch Code] = T2.[Branch Code] AND [T1].[Sachkontonr_] = [T2].[Sachkontonr_] AND [T1].[Periode] = [T2].[Periode])
- , [Sachkonto_Salden_Details]
- -- Berechnung Geschäftsjahr (Mandant 1, 6, 7 ab Januar, Mandant 9 ab September)
- -- Berechnung Eröffnungsbuchung, falls Feld Origin = 0
- AS (SELECT [T1].*
- , iif([T1].[Monat] >= [T2].[Monat], [T1].[Jahr] + [T2].[Offset1], [T1].[Jahr] + [T2].[Offset2]) AS [Geschaeftsjahr]
- , 0.0 AS [EB]
- , [Betrag] AS [Saldo_ohne_EB]
- FROM [Sachkonto_Salden_aufgefuellt] [T1]
- INNER JOIN [Config_Jahreswechsel] [T2] ON [T1].[Client_DB] = [T2].[Client_DB])
- , "EB_berechnet"
- -- Summe über das Vorjahr (Geschäftsjahr)
- AS (SELECT [Client_DB]
- , [Branch Code]
- , [Geschaeftsjahr]
- , min([Periode]) + 100 AS [Periode]
- , [Sachkontonr_]
- , sum([Betrag]) AS [EB_berechnet]
- FROM [Sachkonto_Salden_Details]
- GROUP BY [Client_DB]
- , [Branch Code]
- , [Geschaeftsjahr]
- , [Sachkontonr_])
- , [EB_berechnet_seit_Anbeginn]
- -- Summe über das Vorjahr (Geschäftsjahr) ab dem 1. Monat des Geschäftsjahrs
- AS (SELECT [Client_DB]
- , [Branch Code]
- , [Geschaeftsjahr]
- , [Periode]
- , [Sachkontonr_]
- , [EB_berechnet] AS [EB_berechnet_ein_Jahr]
- , sum([EB_berechnet]) OVER (
- PARTITION BY [Client_DB], [Branch Code], [Sachkontonr_]
- ORDER BY [Geschaeftsjahr]
- ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
- ) AS [EB_berechnet]
- FROM [EB_berechnet])
- , [Sachkonto_Salden_Summe]
- -- Gruppierung/Summierung nach Periode, um Konto und Periode eindeutig zu haben.
- AS (SELECT [Client_DB]
- , [Branch Code]
- , [Sachkontonr_]
- , [Geschaeftsjahr]
- , [Periode]
- , sum([EB]) AS [EB]
- , sum([Saldo_ohne_EB]) AS [Saldo_ohne_EB]
- , sum([Betrag]) AS [Saldo]
- FROM [Sachkonto_Salden_Details]
- GROUP BY [Client_DB]
- , [Branch Code]
- , [Sachkontonr_]
- , [Geschaeftsjahr]
- , [Periode])
- , [Sachkonto_Salden_EB_berechnet]
- -- Join mit dem berechneten EB über Buchungsperiode und Kontonummer
- AS (SELECT [T1].*
- , isnull([T2].[EB_berechnet], 0.0) AS [EB_berechnet]
- , [T1].[Saldo_ohne_EB] + isnull([T2].[EB_berechnet], 0.0) AS [Saldo_berechnet]
- FROM [Sachkonto_Salden_Summe] [T1]
- LEFT JOIN [EB_berechnet_seit_Anbeginn] [T2] ON [T1].[Client_DB] = [T2].[Client_DB] AND T1.[Branch Code] = T2.[Branch Code]
- AND [T1].[Periode] = [T2].[Periode]
- AND [T1].[Sachkontonr_] = [T2].[Sachkontonr_])
- , [Sachkonto_Salden_EB_Prio]
- -- Falls der EB fehlt, wird der berechnete Saldo verwendet
- AS (SELECT [T1].*
- , [T1].[Saldo_berechnet] AS [Saldo_kombiniert]
- FROM [Sachkonto_Salden_EB_berechnet] [T1])
- , [Sachkonto_Salden_kumuliert]
- -- Kumulierter Saldo ab dem 1. Monat des Geschäftsjahrs
- AS (SELECT *
- , eomonth(datefromparts([Periode] / 100, [Periode] % 100, 1)) AS [Buchungsdatum]
- , sum([Saldo]) OVER (PARTITION BY [Client_DB], [Branch Code], [Sachkontonr_], [Geschaeftsjahr] ORDER BY [Periode]) AS [Saldo_kumuliert_gebucht]
- , sum([Saldo_kombiniert]) OVER (PARTITION BY [Client_DB], [Branch Code], [Sachkontonr_], [Geschaeftsjahr] ORDER BY [Periode]) AS [Saldo_kumuliert]
- FROM [Sachkonto_Salden_EB_Prio])
- , [Sachkonto_Aktiva_Passiva]
- -- Bei Konten, die mit 0 oder 1 beginnen, wird abhängig vom Saldo ein "_A" oder "_P" angehängt
- AS (SELECT *
- , CASE
- WHEN left([Sachkontonr_], 1) NOT IN ('0', '1') THEN [Sachkontonr_]
- WHEN [Saldo_kumuliert] >= 0 THEN [Sachkontonr_] + '_A'
- ELSE [Sachkontonr_] + '_P'
- END AS [Konto_Bilanz]
- FROM [Sachkonto_Salden_kumuliert])
- , [Sachkonto_Aktiva_Passiva_SKR51]
- -- Acct_Nr mit Kostenrechnungsmerkmalen für Join mit SKR51_Uebersetzung.csv
- AS (SELECT *
- , '00-00-' + [Konto_Bilanz] + '-00-00-00' AS [Acct_Nr]
- FROM [Sachkonto_Aktiva_Passiva])
- SELECT [Client_DB]
- , [Branch Code]
- , [Sachkontonr_]
- , [Geschaeftsjahr]
- , [Periode]
- , [Buchungsdatum]
- --, [EB]
- , [EB_berechnet]
- , [Saldo_ohne_EB]
- --, [Saldo_kumuliert_gebucht]
- --, [Saldo_kombiniert]
- --, [Saldo]
- --, [Saldo_berechnet]
- , [Saldo_kumuliert]
- , [Konto_Bilanz]
- FROM [Sachkonto_Aktiva_Passiva]
- GO
- SET QUOTED_IDENTIFIER OFF
- GO
- SET ANSI_NULLS OFF
- GO
- GO
|