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

View File

@@ -3,6 +3,7 @@ Imports System.Data.SqlClient
Imports System.IO
Imports System.Net
Imports System.Reflection
Imports System.Windows.Forms
Public Class cIDS
@@ -757,6 +758,77 @@ Public Class cIDS
End Function
Function genIDSMautberichtDatatByKdNr(KdNr As String, rechnungsdatum As Date, art As String, Gruppierung_nach_Ort As Boolean) As DataTable
Dim dt As New DataTable
Dim displayFilter = False
Dim sqlstr As String = ""
Dim sqljoin_nachOrt As String = ""
Dim sqlgroup_nachOrt = ""
Dim sqlselect_nachOrt = ""
If Gruppierung_nach_Ort Then
sqljoin_nachOrt = "INNER JOIN tbl_IDS_Stationen ON tblIDSTransactionsNew.OutletCountryCode = tbl_IDS_Stationen.OutletCountryCode and tblIDSTransactionsNew.OutletCode = tbl_IDS_Stationen.OutletCode and tbl_IDS_Stationen.[OutletCountryCode]=740543"
sqlgroup_nachOrt = ",tbl_IDS_Stationen.OutletOrt"
sqlselect_nachOrt = "tbl_IDS_Stationen.OutletOrt,"
End If
Select Case art
Case "IDS" 'Offert17
sqlstr = "SELECT Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], tblIDSTransactionsNew.[OutletCountry], tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz, Sum(tblIDSTransactionsNew.[TransactionVolume]) AS Liter, Sum(tblIDSTransactionsNew.[TotalNetAmount]) AS Nettobetrag, Sum(tblIDSTransactionsNew.[VATAmount]) AS Steuerbetrag,
Case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([TotalNetAmount])/Sum([TransactionVolume]) END AS NettopreisProLiter,
Sum(tblIDSTransactionsNew.Rabattbetrag) As [SummevonRabattbetrag],
Case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([Rabattbetrag])/Sum([TransactionVolume]) END AS RabattbetragProLiter
FROM((tblIDSTransactionsNew INNER JOIN tbl_IDS_Länder ON tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode) INNER JOIN tbl_IDS_Produkte On tblIDSTransactionsNew.[ProductTypeCode] = tbl_IDS_Produkte.ProductTypeCode ) INNER JOIN Adressen On tblIDSTransactionsNew.KdNrVERAG = Adressen.AdressenNr
Where cast(tblIDSTransactionsNew.YearMonthDay As Date) = '" & rechnungsdatum.ToShortDateString & "' AND tblIDSTransactionsNew.[OutletCountryCode]<>740543 AND tblIDSTransactionsNew.KdNrVERAG = " & KdNr & "
GROUP BY Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], tblIDSTransactionsNew.[OutletCountry], tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz"
Case "IDS_AT" 'Offert21
sqlstr = " SELECT Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], CASE WHEN tblIDSTransactionsNew.OutletCode BETWEEN 4473 And 4474 THEN 'Austria Suben' ELSE tblIDSTransactionsNew.OutletCountry END AS OutletCountry, tbl_IDS_Produkte.ProductDescription," & sqlselect_nachOrt & " tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz, Sum(tblIDSTransactionsNew.[TransactionVolume]) AS Liter, Sum(tblIDSTransactionsNew.[TotalNetAmount]) AS Nettobetrag, Sum(tblIDSTransactionsNew.[VATAmount]) AS Steuerbetrag,
Case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([TotalNetAmount])/Sum([TransactionVolume]) END AS NettopreisProLiter,
Sum(tblIDSTransactionsNew.Rabattbetrag) As [SummevonRabattbetrag],
Case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([Rabattbetrag])/Sum([TransactionVolume]) END AS RabattbetragProLiter
FROM tblIDSTransactionsNew INNER JOIN tbl_IDS_Länder ON tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode INNER JOIN tbl_IDS_Produkte On tblIDSTransactionsNew.[ProductTypeCode] = tbl_IDS_Produkte.ProductTypeCode " & sqljoin_nachOrt & " INNER JOIN Adressen On tblIDSTransactionsNew.KdNrVERAG = Adressen.AdressenNr
Where cast(tblIDSTransactionsNew.YearMonthDay As Date) = '" & rechnungsdatum.ToShortDateString & "' And tblIDSTransactionsNew.[OutletCountryCode]=740543 AND tblIDSTransactionsNew.KdNrVERAG = " & KdNr & "
GROUP BY Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], CASE WHEN tblIDSTransactionsNew.OutletCode BETWEEN 4473 AND 4474 THEN 'Austria Suben' ELSE tblIDSTransactionsNew.OutletCountry END, tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz" & sqlgroup_nachOrt
End Select
dt = SQL.loadDgvBySql_Param(sqlstr, "FMZOLL")
Return dt
End Function
Public Function getCurrentInvoicedate(kdNr As String) As String
Dim datum As String = ""
If kdNr <> "" AndAlso IsNumeric(kdNr) Then
Dim rechnungsdatum As String = SQL.getValueTxtBySql(" select top(1) cast(tblIDSTransactionsNew.YearMonthDay As Date) from tblIDSTransactionsNew Where tblIDSTransactionsNew.KdNrVERAG = " & kdNr & " order by tblIDSTransactionsNew.YearMonthDay desc", "FMZOLL")
If rechnungsdatum <> "" AndAlso IsDate(rechnungsdatum) Then
datum = rechnungsdatum
End If
End If
Return datum
End Function
Public Class Paramter
Shared apiSettingsloaded As Boolean = False