div. Änderungen, Gesamtsicherheiten, etc.

This commit is contained in:
2026-09-22 14:30:11 +02:00
parent 251a7a93c2
commit da7dd43a0b
6 changed files with 462 additions and 56 deletions

View File

@@ -245,6 +245,107 @@ Public Class cAufschubKonten
Return brgakto_gs_aktSaldo
End Function
Public Function CalcSaldo_new(Optional dtDate As DataTable = Nothing, Optional Stichtag As Date? = Nothing, Optional showMessage As Boolean = False) As String
Dim datumBis As Date =
If(Stichtag.HasValue, Stichtag.Value.Date, Today.Date)
Dim datumBisSql As String =
datumBis.ToString("yyyy-MM-dd")
Dim standort As String =
brgakto_gs_standort.Replace("'", "''")
Dim saldoSql As String = "DECLARE @Stichtag date = '" & datumBisSql & "'; Declare @Standort varchar(100) = '" & standort & "'; " & "DECLARE @Referenzbetrag decimal(18,2);
/* Referenzbetrag vor dem Stichtag */
SELECT TOP (1)
@Referenzbetrag = r.brgarefb_refbetrag
FROM [ADMIN].[dbo].[tblBrgAufschubKonten] AS k
INNER JOIN [ADMIN].[dbo].[tblBrgAufschubReferenzberaege] AS r
ON r.brgarefb_gsid = k.brgakto_id
WHERE k.brgakto_gs_standort = @Standort
AND ISNULL(r.brgarefb_gs_aktiv, 1) = 1
AND r.brgarefb_gueltig_ab < @Stichtag
AND (
r.brgarefb_gueltig_bis IS NULL
OR r.brgarefb_gueltig_bis >= @Stichtag
)
ORDER BY
r.brgarefb_gueltig_ab DESC,
r.brgarefb_id DESC;
/* Bewegungen vor dem Stichtag */
SELECT
ISNULL(@Referenzbetrag, 0)
+ ISNULL(SUM(Betrag), 0) AS GesamtSicherheitsSaldo
FROM
(
/* Eingänge vor dem Stichtag */
SELECT
ISNULL(gs.gs_sicherheitsbetrag, 0) * -1 AS Betrag
FROM dbo.tblGesamtsicherheit AS gs
WHERE gs.gs_standort = @Standort
AND gs.gs_datum < @Stichtag
AND ISNULL(gs.gs_ReferenzAenderung, 0) = 0
UNION ALL
/* Ausgänge vor dem Stichtag */
SELECT
ISNULL(gsp.gsp_sicherheitsbetrag, 0) AS Betrag
FROM dbo.tblGesamtsicherheitsPositionen AS gsp
WHERE gsp.gsp_datum < @Stichtag
AND EXISTS
(
SELECT 1
FROM dbo.tblGesamtsicherheit AS gs
WHERE gs.gs_gsId = gsp.gsp_gsId
AND gs.gs_standort = @Standort
AND gs.gs_datum < @Stichtag
AND ISNULL(gs.gs_ReferenzAenderung, 0) = 0
)
) AS Bewegungen;"
Dim dt As DataTable =
SQL.loadDgvBySql(saldoSql, "AVISO", 100, True)
Dim saldo As Decimal = 0D
If dt IsNot Nothing AndAlso
dt.Rows.Count > 0 AndAlso
Not IsDBNull(dt.Rows(0).Item("GesamtSicherheitsSaldo")) Then
saldo = Convert.ToDecimal(
dt.Rows(0).Item("GesamtSicherheitsSaldo")
)
End If
brgakto_gs_aktSaldo = CDbl(saldo)
If showMessage Then
MsgBox(
"Saldo zum Stichtag " &
datumBis.ToShortDateString() &
":" & vbNewLine &
brgakto_gs_aktSaldo.ToString("N2")
)
End If
If Not Stichtag.HasValue Then
updateSaldo()
End If
Return brgakto_gs_aktSaldo.ToString()
End Function
Public Function getReferenzbetrag(nowDate As Date) As Double
Try