This commit is contained in:
2025-10-09 11:41:11 +02:00
parent ca2e86ac26
commit 71248e97a9
3 changed files with 102 additions and 59 deletions

View File

@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.4.6.0")>
<Assembly: AssemblyFileVersion("1.4.6.0")>
<Assembly: AssemblyVersion("1.4.6.2")>
<Assembly: AssemblyFileVersion("1.4.6.2")>

View File

@@ -1322,66 +1322,70 @@ Public Class frmMDM_USTVAntrag
Dim leistenderName As String = ""
Dim useNewAdress As Boolean = False
If CDate(USTV_POS.UStVPo_ReDat) >= New Date("2025", "09", "30") Then useNewAdress = True
Select Case Antrag_LandKz
Case "RO"
leistenderName = "Kuwait Petroleum Romania S.R.L"
Case "SE"
leistenderName = "OK-Q8 AB"
Case "DK"
leistenderName = "Q8 Danmark A/S"
Case "PL"
leistenderName = "Kuwait Petroleum Sp. Z.o.o"
Case "DE"
leistenderName = "Kuwait Petroleum Gmbh"
Case "IT"
leistenderName = "Kuwait Petroleum Italie Spa"
Case "ES"
leistenderName = "Fuel Iberia S.L.U"
Case Else
leistenderName = "IDS EUROPE B.V."
Case "RO"
leistenderName = "Kuwait Petroleum Romania S.R.L"
Case "SE"
leistenderName = "OK-Q8 AB"
Case "DK"
leistenderName = "Q8 Danmark A/S"
Case "PL"
leistenderName = "Kuwait Petroleum Sp. Z.o.o"
Case "DE"
leistenderName = "Kuwait Petroleum Gmbh"
Case "IT"
leistenderName = "Kuwait Petroleum Italie Spa"
Case "ES"
leistenderName = "Fuel Iberia S.L.U"
Case Else
leistenderName = IIf(Not useNewAdress, "IDS EUROPE B.V.", "Q8Truck International B.V.")
End Select
Dim leistender As New cUStVLeistender(leistenderName & " " & Antrag_LandKz, Antrag_LandKz)
If leistender.UStV_LeistenderId < 1 Then
leistender = New cUStVLeistender(leistenderName)
If leistender.UStV_LeistenderId < 1 Then
leistender = New cUStVLeistender(leistenderName)
End If
USTV_POS.UStVPo_Leistender = leistender.UStV_Leistender.ToString
USTV_POS.UStVPo_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
USTV_POS.UStVPo_Zeitstempel = Now()
Dim umrechKurs As Double = 1
'TODO: IDS liefert Beträge immer in EUR, wir müssen allerdings die Beträge in FREMDW umrechnen, ev. bei IDS nachfragen, ob wir den Fremdwährungsbetrag bekommen können (würde uns einige manuelle Arbeit ersparen oder zumindest den Umrechnungskurs, das IDS einen Mischsatz verwendet und nicht den Umrechnungskurs vom Rechnungsdatum)!!
Dim UST_EUR = CDbl(r.Item("Steuerbetrag")) 'ist immer EUR
Dim UST_org = CDbl(r.Item("Steuerbetrag"))
If USTV_ANTRAG.UStVAn_Währungscode <> "EUR" Then
Dim kurs As New cEZB_Waehrungskurse(USTV_ANTRAG.UStVAn_Währungscode)
UST_org = Math.Round(kurs.EXCHANGE_EURTOCUR(UST_EUR, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2)
End If
If (UST_org <> 0 AndAlso UST_org <> UST_EUR) Then
umrechKurs = Math.Floor((UST_org / UST_EUR * 100 + 0.5)) / 100
End If
If UST_org <> 0 Then
USTV_POS.UStVPo_USteuerbetragEUR = UST_EUR
USTV_POS.UStVPo_Umrechnungskurs = umrechKurs
USTV_POS.UStVPo_USteuerbetrag = UST_org
End If
If USTV_POS.INSERT() Then
cIDS.UPDATE_ARCHIV(USTV_POS.UStVPo_ReDat, USTV_POS.UStVPo_ReNr, kdnr, Antrag_LandKz, USTV_POS.UStVAn_ID)
End If
'tblUStVPositionen
End If
USTV_POS.UStVPo_Leistender = leistender.UStV_Leistender.ToString
USTV_POS.UStVPo_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
USTV_POS.UStVPo_Zeitstempel = Now()
Dim umrechKurs As Double = 1
'TODO: IDS liefert Beträge immer in EUR, wir müssen allerdings die Beträge in FREMDW umrechnen, ev. bei IDS nachfragen, ob wir den Fremdwährungsbetrag bekommen können (würde uns einige manuelle Arbeit ersparen oder zumindest den Umrechnungskurs, das IDS einen Mischsatz verwendet und nicht den Umrechnungskurs vom Rechnungsdatum)!!
Dim UST_EUR = CDbl(r.Item("Steuerbetrag")) 'ist immer EUR
Dim UST_org = CDbl(r.Item("Steuerbetrag"))
If USTV_ANTRAG.UStVAn_Währungscode <> "EUR" Then
Dim kurs As New cEZB_Waehrungskurse(USTV_ANTRAG.UStVAn_Währungscode)
UST_org = Math.Round(kurs.EXCHANGE_EURTOCUR(UST_EUR, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2)
End If
If (UST_org <> 0 AndAlso UST_org <> UST_EUR) Then
umrechKurs = Math.Floor((UST_org / UST_EUR * 100 + 0.5)) / 100
End If
If UST_org <> 0 Then
USTV_POS.UStVPo_USteuerbetragEUR = UST_EUR
USTV_POS.UStVPo_Umrechnungskurs = umrechKurs
USTV_POS.UStVPo_USteuerbetrag = UST_org
End If
If USTV_POS.INSERT() Then
cIDS.UPDATE_ARCHIV(USTV_POS.UStVPo_ReDat, USTV_POS.UStVPo_ReNr, kdnr, Antrag_LandKz, USTV_POS.UStVAn_ID)
End If
'tblUStVPositionen
End If
Next
End If

View File

@@ -619,14 +619,50 @@ Public Class frmUSTVoffeneAntraege
'bei Einstellung "ALLE KUNDEN"
If dtKundeMWST.Rows.Count > 0 Then sqlwhereLand &= " AND ( NOT ("
If dtKundeMWST.Rows.Count > 0 Then sqlwhereLand &= " AND NOT EXISTS (SELECT 1 FROM (VALUES "
For Each row As DataRow In dtKundeMWST.Rows
landBez = row.Item("abc").ToString.Replace(";", "'")
counter = counter + 1
sqlwhereLand &= " (isnull(AdressenNr,0) = " & row.Item("KdNr") & " AND Einreichland in (" & landBez.ToString.Substring(0, landBez.ToString.Length - 1) & ")) " & IIf(dtKundeMWST.Rows.Count <> 0 And counter <> dtKundeMWST.Rows.Count, "OR ", "))")
' landBez = row.Item("abc").ToString.Replace(";", "'")
' counter = counter + 1
' sqlwhereLand &= " (" & row.Item("KdNr") & "," & landBez.ToString.Substring(0, landBez.ToString.Length - 1) & ") " & IIf(dtKundeMWST.Rows.Count <> 0 And counter <> dtKundeMWST.Rows.Count, ", ", ") AS Excluded(AdressenNr, Einreichland) WHERE Excluded.AdressenNr = temp.KdNr AND Excluded.Einreichland = temp.Einreichland)")
'Next
Dim kdNr_ As String = row("KdNr").ToString()
Dim landBez_ As String = row("abc").ToString()
' Entferne führende/mehrfache Semikolons
landBez_ = landBez_.Replace(";;", ";").Trim(";"c, " "c)
' Teile die Länder anhand von „;,;“
Dim laender() As String = landBez_.Split(New String() {",,"}, StringSplitOptions.None)
' Fallback: wenn nur einfache Trennung mit „;,“
If laender.Length = 1 Then
laender = landBez_.Split(New String() {",;"}, StringSplitOptions.RemoveEmptyEntries)
End If
' Jede gültige Länderkombination hinzufügen
For Each land In landBez_.Split(New String() {",;"}, StringSplitOptions.RemoveEmptyEntries)
land = land.Replace(";", "").Trim()
If land <> "" Then
Dim landTemp As String = land.Replace(",", "")
counter += 1
sqlwhereLand &= "(" & kdNr_ & ", '" & landTemp & "'), "
End If
Next
Next
If sqlwhereLand.EndsWith(", ") Then
sqlwhereLand = sqlwhereLand.Substring(0, sqlwhereLand.Length - 2)
End If
' Abschluss der NOT EXISTS-Klausel
sqlwhereLand &= ") AS Excluded(AdressenNr, Einreichland) " &
"WHERE Excluded.AdressenNr = temp.KdNr " &
"AND Excluded.Einreichland = temp.Einreichland)"
Else
'bei Einstellung "SPEZIFISCHER KUNDE"
@@ -640,10 +676,13 @@ Public Class frmUSTVoffeneAntraege
End If
End If
End If
If year >= 2025 Then
SQLPLOSEUMSTELLUNG = "