From bfdd2ba9b3bd8ba7b13b92828777434b49de4e17 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Thu, 30 Oct 2025 14:11:55 +0100 Subject: [PATCH] fremdrechnungen --- SDL/My Project/AssemblyInfo.vb | 4 +- SDL/mdm/usrcntlFremdrechnungen.vb | 81 +++++++++++++++++++++---------- 2 files changed, 58 insertions(+), 27 deletions(-) diff --git a/SDL/My Project/AssemblyInfo.vb b/SDL/My Project/AssemblyInfo.vb index 884e7716..a96f218b 100644 --- a/SDL/My Project/AssemblyInfo.vb +++ b/SDL/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + diff --git a/SDL/mdm/usrcntlFremdrechnungen.vb b/SDL/mdm/usrcntlFremdrechnungen.vb index af0e5e01..961006f1 100644 --- a/SDL/mdm/usrcntlFremdrechnungen.vb +++ b/SDL/mdm/usrcntlFremdrechnungen.vb @@ -450,15 +450,23 @@ Public Class usrcntlFremdrechnungen End Function - Private Function setSQLDetailWhere(aktLieferant As String, land As String, Optional alle As Boolean = False) As String + Private Function setSQLDetailWhere(aktLieferant As String, land As String, Optional alle As Boolean = False, Optional KundenNr_Input As Integer = -1, Optional dtKundeMWSTTemp As DataTable = Nothing) As String 'das hier ist nur PRO KUNDE möglich!!! Dim SQLWhere = "" - If cbx.Checked AndAlso KUNDE IsNot Nothing Then - Dim erw As New cKundenErweitert(KUNDE.KundenNr) + If (cbx.Checked AndAlso KUNDE IsNot Nothing AndAlso KUNDE.KundenNr > 0 OrElse cbx.Checked AndAlso KundenNr_Input > 0) Then + Dim checkKundenNR As Integer = -1 + If KUNDE.KundenNr > 0 Then + checkKundenNR = KUNDE.KundenNr + ElseIf KundenNr_Input > 0 Then + checkKundenNR = KundenNr_Input + KUNDE = kundenSQL.getKundeByKdNr(KundenNr_Input) + End If + + Dim erw As New cKundenErweitert(checkKundenNR) If erw.kde_keineMWSt Then Return SQLWhere SQLWhere &= "AND (" 'ORIGINAL-RECHNUNG senden wenn: @@ -499,21 +507,45 @@ Public Class usrcntlFremdrechnungen End If - '4. Rechnungen der Länder, in denen der Kunde selber MWST beantragt - If land <> "" AndAlso dtKundeMWST.Rows.Count > 0 Then - Dim counter = 0 - Dim landBez As String = "" - For Each row As DataRow In dtKundeMWST.Rows - landBez &= "'" & row.Item("LandKz") & "'" - counter = counter + 1 - If (dtKundeMWST.Rows.Count <> 0 And counter <> dtKundeMWST.Rows.Count) Then landBez &= "," - Next - SQLWhere &= " OR " & land & " in (" & landBez & ")" - End If - SQLWhere &= ")" - End If + If dtKundeMWST Is Nothing Then + + If dtKundeMWSTTemp IsNot Nothing Then + + If land <> "" AndAlso dtKundeMWSTTemp.Rows.Count > 0 Then + Dim counter = 0 + Dim landBez As String = "" + For Each row As DataRow In dtKundeMWSTTemp.Rows + landBez &= "'" & row.Item("LandKz") & "'" + counter = counter + 1 + If (dtKundeMWSTTemp.Rows.Count <> 0 And counter <> dtKundeMWSTTemp.Rows.Count) Then landBez &= "," + Next + SQLWhere &= " OR " & land & " in (" & landBez & ")" + End If + SQLWhere &= ")" + + End If + + + + + Else + + + If land <> "" AndAlso dtKundeMWST.Rows.Count > 0 Then + Dim counter = 0 + Dim landBez As String = "" + For Each row As DataRow In dtKundeMWST.Rows + landBez &= "'" & row.Item("LandKz") & "'" + counter = counter + 1 + If (dtKundeMWST.Rows.Count <> 0 And counter <> dtKundeMWST.Rows.Count) Then landBez &= "," + Next + SQLWhere &= " OR " & land & " in (" & landBez & ")" + End If + SQLWhere &= ")" + End If + End If Return SQLWhere End Function @@ -845,11 +877,8 @@ Public Class usrcntlFremdrechnungen Dim dtKundeMWSTTemp As DataTable = (New SQL).loadDgvBySql("select LandKz from tblKundenMWST where KdNr = " & KUNDE_TEMP.KundenNr, "FMZOLL") - '2. wenn die Rechnung die Summe NULL aufweist - '3. Rechnungen der Länder in denen der Kunde keine MWST erstattet bekommt (auch nicht auf Diesel -> IDS) - '4. Rechnungen der Länder, in denen der Kunde selber MWST beantragt @@ -945,7 +974,7 @@ Public Class usrcntlFremdrechnungen Dim sendÍnvoice As Boolean = IIf(onlyRelevantInvioces AndAlso KUNDE.KundenNr = 0, False, True) - If onlyRelevantInvioces AndAlso Lieferant <> "IDS" AndAlso erw.kde_keineMWSt Then + If onlyRelevantInvioces AndAlso erw.kde_keineMWSt Then ' AndAlso Lieferant <> "IDS" sendÍnvoice = True 'dann immer mitschicken! End If @@ -960,8 +989,8 @@ Public Class usrcntlFremdrechnungen '3. Rechnungen der Länder in denen der Kunde keine MWST erstattet bekommt -> dtkeineMWST If Not sendÍnvoice AndAlso landKZiso2 <> "" AndAlso dtkeineMWST.Rows.Count > 0 Then - Dim rows() As DataRow = dtkeineMWST.Select("Lieferant <> 'IDS' AND Land = '" & landKZiso2 & "' and Erstattungsland = '" & row.Cells("Land").Value & "'") - Dim dtkeineMWST_ohneContraint As New DataTable + Dim rows() As DataRow = dtkeineMWST.Select("Lieferant <> 'IDS' AND Land = '" & landKZiso2 & "' and Erstattungsland = '" & row.Cells("Land").Value & "'") + Dim dtkeineMWST_ohneContraint As New DataTable If rows.Length > 0 Then dtkeineMWST_ohneContraint = rows.CopyToDataTable() If dtkeineMWST_ohneContraint.Rows.Count > 0 Then sendÍnvoice = True End If @@ -994,8 +1023,10 @@ Public Class usrcntlFremdrechnungen If Lieferant = "IDS" Then + 'IDS hat wieder sonderlogik + Dim dt As New DataTable - dt = initDGVRechnungsdetails(row.Cells("invoice_id").Value, True) + dt = initDGVRechnungsdetails(row.Cells("invoice_id").Value, True, kvp.Key, dtKundeMWSTTemp) For Each r As DataRow In dt.Rows @@ -1436,11 +1467,11 @@ Public Class usrcntlFremdrechnungen End Sub - Private Function initDGVRechnungsdetails(rechnugnsID As Integer, Optional setDatatable As Boolean = False) As DataTable + Private Function initDGVRechnungsdetails(rechnugnsID As Integer, Optional setDatatable As Boolean = False, Optional KundenNr_Input As Integer = -1, Optional dtKundeMWSTTemp As DataTable = Nothing) As DataTable Dim sql = " select [YearMonthDay] as Rechnungsdatum,[Invoicenumber] as Rechnungsnummer, CustomerCode as Kundennummer,[daId],[TransactionVolume] as Transaktionsmenge,[AmminclVAT] as Bruttobetrag,[TotalNetAmount] as Nettobetrag,[VATAmount] as MWSt, cast(case when [daId] is not null then 1 else 0 end as bit) as PDFvorhanden,[Country] as Land - FROM [VERAG].[dbo].[tblIDSInvoicesNewSplittedByCountry] WHERE [TotalInvoiceId] = " & rechnugnsID & setSQLDetailWhere(aktLieferant, "Country") + FROM [VERAG].[dbo].[tblIDSInvoicesNewSplittedByCountry] WHERE [TotalInvoiceId] = " & rechnugnsID & setSQLDetailWhere(aktLieferant, "Country", , KundenNr_Input, dtKundeMWSTTemp) If setDatatable Then