diff --git a/SDL/mdm/usrCntlMDMAuswertungen.vb b/SDL/mdm/usrCntlMDMAuswertungen.vb index fd0bb56e..6c2e09ca 100644 --- a/SDL/mdm/usrCntlMDMAuswertungen.vb +++ b/SDL/mdm/usrCntlMDMAuswertungen.vb @@ -1,5 +1,6 @@ Imports System.Data.SqlClient Imports System.IO +Imports java.awt.print Imports Microsoft.Office.Interop.Outlook Imports Microsoft.VisualBasic.FileIO Imports VERAG_PROG_ALLGEMEIN @@ -975,10 +976,7 @@ Public Class usrCntlMDMAuswertungen Dim ok As Boolean = True Dim Sachbearbeiter = cboSachbearbeiter._value - Dim varText As String = "" - Dim varNettozahlungsziel As Integer = 0 - Dim strFälligkeitsdatum As String - Dim strZahlbar As String + Dim rechnungsdatum As Date = CDate(dtRechnungsdatum.Text) @@ -1036,6 +1034,7 @@ Public Class usrCntlMDMAuswertungen ok = SQL.doSQL("update [Rechnungsausgang] set Sachbearbeiter='" & Sachbearbeiter & "' where Sammelrechnung=6 and Firma_ID=19 and Sachbearbeiter<>'" & Sachbearbeiter & "' and Abfertigungsdatum = '" & dtRechnungsdatum.Value & "'", "FMZOLL") + Exit Sub @@ -1083,280 +1082,22 @@ Public Class usrCntlMDMAuswertungen End If - Dim dtSelectedSammelrechnungen As DataTable = SQL.loadDgvBySql("SELECT [Firma_ID], [Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr], [Währungscode], isnull([Steuersatz %],0) as [Steuersatz %], cast([Lastschrift] as bit) as Lastschrift, [RK_ID], [BelegartenNr],cast([Vorkasse] as bit) as Vorkasse, [Nettozahlungsziel], [OffertenNr], [RechnungsLandKz], [Text] - FROM Rechnungsausgang - WHERE [Status] = 0 AND [Sammelrechnung] = 6 AND [Sachbearbeiter] = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' - ORDER BY [Firma_ID], [Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr], [Währungscode], [Steuersatz %], [Lastschrift], [RK_ID]", "FMZOLL") + 'Rechnungstext im RK eintragen - If dtSelectedSammelrechnungen.Rows.Count > 0 Then - - For Each rowRE In dtSelectedSammelrechnungen.Rows - - Select Case rowRE("BelegartenNr") - - Case 70 'RECHNUNG - If Not rowRE("Vorkasse") Then - If rowRE("Lastschrift") Then - varText = varText & "Der Rechnungsbetrag wurde durch erteilten Abbuchungsauftrag eingezogen." & vbCrLf - Else - If Not IsDBNull(rowRE("RechnungsKundenNr")) Then - 'Zahlungsziel aus Kundenstamm. - Dim ZZ = SQL.getValueTxtBySql("SELECT Kunden.Zahlungsziel from Kunden WHERE Kunden.KundenNr=" & rowRE("RechnungsKundenNr") & " AND Kunden.Zahlungsziel Is Not Null", "FMZOLL") - If ZZ <> "" AndAlso IsNumeric(ZZ) Then - varNettozahlungsziel = ZZ - strFälligkeitsdatum = DateAdd("d", varNettozahlungsziel, dtRechnungsdatum.Value).ToString("dd.MM.yyyy") - End If - End If - - 'Zahlungsziel aus Offertenstamm. - If strFälligkeitsdatum = "" Then - If Not IsDBNull(rowRE("OffertenNr")) Then - Dim ZZOffert = SQL.getValueTxtBySql("SELECT Offertenstamm.Zahlungsziel FROM Offertenstamm WHERE Offertenstamm.OffertenNr = " & rowRE("OffertenNr") & " AND Offertenstamm.Zahlungsziel IS NOT NULL", "FMZOLL") - If ZZOffert <> "" AndAlso IsNumeric(ZZOffert) Then - varNettozahlungsziel = ZZOffert - strFälligkeitsdatum = DateAdd("d", varNettozahlungsziel, dtRechnungsdatum.Value).ToString("dd.MM.yyyy") - End If - End If - - End If - - 'Zahlungsziel ermitteln. - If strFälligkeitsdatum = "" Then - If Not IsDBNull(rowRE("RK_ID")) Then - 'Zahlungsziel bei Kreditaufwendungen. - Dim ZZRKID = SQL.getValueTxtBySql("Select Case [Preis], [Anzahl] From [RechnungsausgangPositionen] Where [RK_ID] = " & rowRE("RK_ID") & " And [LeistungsNr] = 750 And [BerechnungsartNr] = 9", "FMZOLL") - If ZZRKID <> "" Then - strZahlbar = "Zahlbar innerhalb 10 Tagen abzüglich Pos. 750; ab 10 Tagen netto fällig." - Else - varNettozahlungsziel = 25 - strFälligkeitsdatum = DateAdd("d", varNettozahlungsziel, dtRechnungsdatum.Value).ToString("dd.MM.yyyy") - End If - End If - - End If - - - 'Fälligkeitstext in Landessprache - If strFälligkeitsdatum <> "" Then strZahlbar = "Rechnung zahlbar spätestens bis " & strFälligkeitsdatum & "!" - - If Not IsDBNull(rowRE("RechnungsLandKz")) Then - - Dim ZZRLandKZ = SQL.getValueTxtBySql("SELECT tblZahlungszieltexte.Text FROM tblZahlungszieltexte WHERE tblZahlungszieltexte.LandKz='" & rowRE("RechnungsLandKz") & "' AND tblZahlungszieltexte.Text Is Not Null", "FMZOLL") - If ZZRLandKZ <> "" Then - strZahlbar = ZZRLandKZ & " " & strFälligkeitsdatum & "!" - End If - - End If - - varText &= strZahlbar & vbCrLf - - End If - End If - - ' Text bei Zoll oder EUSt drucken - Dim Zoll = SQL.getValueTxtBySql("Select LeistungsNr From dbo.RechnungsausgangPositionen Where RK_ID = " & rowRE("RK_ID") & " And LeistungsNr In (10, 60, 70)", "FMZOLL") - If Not IsDBNull(Zoll) AndAlso Zoll <> "" Then - varText = varText & "Alle Zollbelege bitte sofort auf Richtigkeit prüfen da Einspruch gemäß § 355 AO nur 1 Monat nach Datum des Zollbescheides möglich." & vbCrLf - End If - - Case 71 'GUTSCHRIFT - If rowRE("Lastschrift") Then - varText = varText & "Der Gutschriftsbetrag wurde mit erteilten Abbuchungsauftrag verrechnet." & vbCrLf - End If - End Select - - ok = SQL.doSQL("Update [Rechnungsausgang] Set [Text] = '" & varText & "', [Nettozahlungsziel] = " & varNettozahlungsziel & " WHERE [RK_ID] = " & rowRE("RK_ID"), "FMZOLL") - If Not ok Then MsgBox("Fehler") : Exit Sub - - varText = "" - varNettozahlungsziel = 0 - strFälligkeitsdatum = "" - - Next - - End If - + setRechnungstext(Sachbearbeiter, rechnungsdatum) + ' Porto/Papiere berechnen. + PortoPapiere(Sachbearbeiter, rechnungsdatum) 'Berechnet Banküberweisung/Bankspesen. - - - Dim sqlBB = " Select Firma_ID, Status, Sammelrechnung, Sachbearbeiter, RechnungsKundenNr, BelegartenNr, Währungscode, [Steuersatz %], Lastschrift - From dbo.Rechnungsausgang - Where Status = 0 - And Sammelrechnung = 6 - And Sachbearbeiter ='" & Sachbearbeiter & "' - AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' - - Group By Firma_ID, Status, Sammelrechnung, Sachbearbeiter, RechnungsKundenNr, BelegartenNr, Währungscode, [Steuersatz %], Lastschrift - Order By Firma_ID, Status, Sammelrechnung, Sachbearbeiter, RechnungsKundenNr, BelegartenNr, Währungscode, [Steuersatz %], Lastschrift" - - - Dim dtBB As DataTable = SQL.loadDgvBySql(sqlBB, "FMZOLL") - - If dtBB.Rows.Count > 0 Then - - For Each r In dtBB.Rows - 'spSelectReDruSchnSumBS415 - Dim steuersatz As Double = Math.Round(r("Steuersatz %"), 2) - Dim SteuersatzString As String = steuersatz.ToString.Replace(",", ".") - - Dim sum As DataTable = SQL.loadDgvBySql("SELECT SUM(dbo.RechnungsausgangPositionen.Preis * dbo.RechnungsausgangPositionen.Anzahl) AS [Summe von Preis] - FROM dbo.Rechnungsausgang INNER JOIN - dbo.RechnungsausgangPositionen ON dbo.Rechnungsausgang.RK_ID = dbo.RechnungsausgangPositionen.RK_ID INNER JOIN - dbo.Leistungen ON dbo.RechnungsausgangPositionen.LeistungsNr = dbo.Leistungen.LeistungsNr - WHERE (dbo.Rechnungsausgang.Firma_ID = " & r("Firma_ID") & ") - AND (dbo.Rechnungsausgang.Status = " & r("Status") & ") - AND (dbo.Rechnungsausgang.Sammelrechnung = " & r("Sammelrechnung") & ") - AND (dbo.Rechnungsausgang.Sachbearbeiter = '" & r("Sachbearbeiter") & "') - AND (dbo.Rechnungsausgang.RechnungsKundenNr = " & r("RechnungsKundenNr") & ") - AND (dbo.Rechnungsausgang.BelegartenNr =" & r("BelegartenNr") & ") - AND (dbo.Rechnungsausgang.Währungscode = '" & r("Währungscode") & "') - AND (dbo.Rechnungsausgang.[Steuersatz %] =" & SteuersatzString & ") - AND (dbo.Rechnungsausgang.Lastschrift =" & IIf(r("Lastschrift"), 1, 0) & ") - AND (dbo.Leistungen.BS415 = 1)", "FMZOLL",) - If sum.Rows.Count > 0 Then - - For Each rowsum In sum.Rows - - Dim sumCurrenRow As Double = rowsum("Summe von Preis") - - If sumCurrenRow <> 0 Then - - Dim dtBankspesen As DataTable = SQL.loadDgvBySql("SELECT KundenNr, [Bankspesen %], [Bankspesen Mindestbetrag] FROM dbo.Kunden where KundenNr = " & r("RechnungsKundenNr"), "FMZOLL") - - If dtBankspesen.Rows.Count > 0 Then - - For Each rowBS In dtBankspesen.Rows - - If rowBS("Bankspesen %") = 0 And rowBS("Bankspesen Mindestbetrag") = 0 Then - - Else - - Dim query As String = "SELECT DISTINCT OffertenNr, RK_ID, SteuerpflichtigerGesamtbetrag, SteuerfreierGesamtbetrag, upsize_ts FROM Rechnungsausgang - WHERE (dbo.Rechnungsausgang.Firma_ID = " & r("Firma_ID") & ") - AND (Status = " & r("Status") & ") - AND (Sammelrechnung = " & r("Sammelrechnung") & ") - AND (Sachbearbeiter = '" & r("Sachbearbeiter") & "') - AND (RechnungsKundenNr = " & r("RechnungsKundenNr") & ") - AND (BelegartenNr =" & r("BelegartenNr") & ") - AND (Währungscode = '" & r("Währungscode") & "') - AND ([Steuersatz %] =" & SteuersatzString & ") - AND (Lastschrift =" & IIf(r("Lastschrift"), 1, 0) & ") - ORDER BY OffertenNr" - - Dim dtRechnung As DataTable = SQL.loadDgvBySql(query, "FMZOLL") - - If dtRechnung.Rows.Count > 0 Then - - For Each re In dtRechnung.Rows - - Dim steuerpflichtigerGesamtbetrag = re("SteuerpflichtigerGesamtbetrag") - Dim steuerfreiegerGesamtbetrag = re("SteuerfreierGesamtbetrag") - - Dim dt415 As DataTable = SQL.loadDgvBySql("Select [RK_ID], [LeistungsNr], cast([Steuerpflichtig] as bit) as Steuerpflichtig, [LeistungsBez],[IndexZkteing],SteuerpflichtigerBetrag, SteuerfreierBetrag, upsize_ts From RechnungsausgangPositionen Where RechnungsausgangPositionen.RK_ID = " & re("RK_ID") & " And RechnungsausgangPositionen.LeistungsNr = 415", "FMZOLL") - - If dt415.Rows.Count > 0 Then - - For Each r415 In dt415.Rows - - steuerpflichtigerGesamtbetrag -= dt415("SteuerpflichtigerBetrag") - steuerfreiegerGesamtbetrag -= dt415("SteuerfreierBetrag") - - Dim RECHNUNG As New cRechnungsausgang(re("RK_ID")) - - If RECHNUNG.DELETE_POSITIONEN(RECHNUNG.RK_ID, r415("LeistungsNr"), r415("Steuerpflichtig"), r415("LeistungsBez"), r415("IndexZkteing")) Then - RECHNUNG.SteuerfreierGesamtbetrag = steuerfreiegerGesamtbetrag - RECHNUNG.SteuerpflichtigerGesamtbetrag = steuerpflichtigerGesamtbetrag - RECHNUNG.SAVE() - End If + Bankspesen(Sachbearbeiter, rechnungsdatum) - Next - End If - - - Next - - - If sumCurrenRow > 0 Then - Dim RElastEntry As DataRow = dtRechnung.Rows(dtRechnung.Rows.Count - 1) - - Dim NEWPOS As New cRechnungsausgangPositionen(RElastEntry("RK_ID")) - NEWPOS.Anzahl = 1 - NEWPOS.LeistungsNr = 415 - If steuersatz = 0 Then - NEWPOS.Steuerpflichtig = False - Else - NEWPOS.Steuerpflichtig = SQL.DLookup("Steuerpflichtig", "Leistungen", "LeistungsNr= 415", "FMZOLL") - End If - NEWPOS.LeistungsBez = "Überweisungs/Bankspesen" - - Dim preis As Double = 0 - If rowBS("Bankspesen %") > 0 Then - - If sumCurrenRow > 0 Then - - preis = Math.Floor(sumCurrenRow * rowBS("Bankspesen %") + 0.5) - Else - preis = Math.Floor(0 - sumCurrenRow * rowBS("Bankspesen %") + 0.5) - - End If - Else - preis = 0 - End If - - If preis < rowBS("Bankspesen Mindestbetrag") Then - preis = rowBS("Bankspesen Mindestbetrag") - End If - - If sumCurrenRow < 0 Then - preis = 0 - preis - End If - - Dim RECHNUNG As New cRechnungsausgang(RElastEntry("RK_ID")) - - If NEWPOS.Steuerpflichtig Then - NEWPOS.SteuerpflichtigerBetrag = preis - RECHNUNG.SteuerpflichtigerGesamtbetrag = +preis - - Else - NEWPOS.SteuerfreierBetrag = preis - RECHNUNG.SteuerfreierGesamtbetrag = +preis - - End If - - NEWPOS.Preis = preis - NEWPOS.INSERT(RElastEntry("RK_ID")) - RECHNUNG.SAVE() - - - - End If - - End If - - End If - - Next - - End If - End If - - Next - - End If - - - Next - - End If - End Sub @@ -1524,6 +1265,291 @@ Public Class usrCntlMDMAuswertungen End Function + Private Function setRechnungstext(Sachbearbeiter As String, rechnungsdatum As Date) + + Dim varText As String = "" + Dim varNettozahlungsziel As Integer = 0 + Dim strFälligkeitsdatum As String + Dim strZahlbar As String + + Dim ok As Boolean = False + + Dim dtSelectedSammelrechnungen As DataTable = (New SQL).loadDgvBySql("SELECT [Firma_ID], [Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr], [Währungscode], isnull([Steuersatz %],0) as [Steuersatz %], cast([Lastschrift] as bit) as Lastschrift, [RK_ID], [BelegartenNr],cast([Vorkasse] as bit) as Vorkasse, [Nettozahlungsziel], [OffertenNr], [RechnungsLandKz], [Text] + FROM Rechnungsausgang + WHERE [Status] = 0 AND [Sammelrechnung] = 6 AND [Sachbearbeiter] = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' + ORDER BY [Firma_ID], [Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr], [Währungscode], [Steuersatz %], [Lastschrift], [RK_ID]", "FMZOLL") + + If dtSelectedSammelrechnungen.Rows.Count > 0 Then + + For Each rowRE In dtSelectedSammelrechnungen.Rows + + Select Case rowRE("BelegartenNr") + + Case 70 'RECHNUNG + If Not rowRE("Vorkasse") Then + If rowRE("Lastschrift") Then + varText = varText & "Der Rechnungsbetrag wurde durch erteilten Abbuchungsauftrag eingezogen." & vbCrLf + Else + If Not IsDBNull(rowRE("RechnungsKundenNr")) Then + 'Zahlungsziel aus Kundenstamm. + Dim ZZ = (New SQL).getValueTxtBySql("SELECT Kunden.Zahlungsziel from Kunden WHERE Kunden.KundenNr=" & rowRE("RechnungsKundenNr") & " AND Kunden.Zahlungsziel Is Not Null", "FMZOLL") + If ZZ <> "" AndAlso IsNumeric(ZZ) Then + varNettozahlungsziel = ZZ + strFälligkeitsdatum = DateAdd("d", varNettozahlungsziel, dtRechnungsdatum.Value).ToString("dd.MM.yyyy") + End If + End If + + 'Zahlungsziel aus Offertenstamm. + If strFälligkeitsdatum = "" Then + If Not IsDBNull(rowRE("OffertenNr")) Then + Dim ZZOffert = (New SQL).getValueTxtBySql("SELECT Offertenstamm.Zahlungsziel FROM Offertenstamm WHERE Offertenstamm.OffertenNr = " & rowRE("OffertenNr") & " AND Offertenstamm.Zahlungsziel IS NOT NULL", "FMZOLL") + If ZZOffert <> "" AndAlso IsNumeric(ZZOffert) Then + varNettozahlungsziel = ZZOffert + strFälligkeitsdatum = DateAdd("d", varNettozahlungsziel, dtRechnungsdatum.Value).ToString("dd.MM.yyyy") + End If + End If + + End If + + 'Zahlungsziel ermitteln. + If strFälligkeitsdatum = "" Then + If Not IsDBNull(rowRE("RK_ID")) Then + 'Zahlungsziel bei Kreditaufwendungen. + Dim ZZRKID = (New SQL).getValueTxtBySql("Select Case [Preis], [Anzahl] From [RechnungsausgangPositionen] Where [RK_ID] = " & rowRE("RK_ID") & " And [LeistungsNr] = 750 And [BerechnungsartNr] = 9", "FMZOLL") + If ZZRKID <> "" Then + strZahlbar = "Zahlbar innerhalb 10 Tagen abzüglich Pos. 750; ab 10 Tagen netto fällig." + Else + varNettozahlungsziel = 25 + strFälligkeitsdatum = DateAdd("d", varNettozahlungsziel, dtRechnungsdatum.Value).ToString("dd.MM.yyyy") + End If + End If + + End If + + + 'Fälligkeitstext in Landessprache + If strFälligkeitsdatum <> "" Then strZahlbar = "Rechnung zahlbar spätestens bis " & strFälligkeitsdatum & "!" + + If Not IsDBNull(rowRE("RechnungsLandKz")) Then + + Dim ZZRLandKZ = (New SQL).getValueTxtBySql("SELECT tblZahlungszieltexte.Text FROM tblZahlungszieltexte WHERE tblZahlungszieltexte.LandKz='" & rowRE("RechnungsLandKz") & "' AND tblZahlungszieltexte.Text Is Not Null", "FMZOLL") + If ZZRLandKZ <> "" Then + strZahlbar = ZZRLandKZ & " " & strFälligkeitsdatum & "!" + End If + + End If + + varText &= strZahlbar & vbCrLf + + End If + End If + + ' Text bei Zoll oder EUSt drucken + Dim Zoll = (New SQL).getValueTxtBySql("Select LeistungsNr From dbo.RechnungsausgangPositionen Where RK_ID = " & rowRE("RK_ID") & " And LeistungsNr In (10, 60, 70)", "FMZOLL") + If Not IsDBNull(Zoll) AndAlso Zoll <> "" Then + varText = varText & "Alle Zollbelege bitte sofort auf Richtigkeit prüfen da Einspruch gemäß § 355 AO nur 1 Monat nach Datum des Zollbescheides möglich." & vbCrLf + End If + + Case 71 'GUTSCHRIFT + If rowRE("Lastschrift") Then + varText = varText & "Der Gutschriftsbetrag wurde mit erteilten Abbuchungsauftrag verrechnet." & vbCrLf + End If + End Select + + ok = (New SQL).doSQL("Update [Rechnungsausgang] Set [Text] = '" & varText & "', [Nettozahlungsziel] = " & varNettozahlungsziel & " WHERE [RK_ID] = " & rowRE("RK_ID"), "FMZOLL") + If Not ok Then MsgBox("Fehler") : Return False + + varText = "" + varNettozahlungsziel = 0 + strFälligkeitsdatum = "" + + Next + End If + + Return ok + + End Function + + + Private Function Bankspesen(Sachbearbeiter As String, rechnungsdatum As Date) + + Dim sqlBB = " Select Firma_ID, Status, Sammelrechnung, Sachbearbeiter, RechnungsKundenNr, BelegartenNr, Währungscode, [Steuersatz %], Lastschrift + From dbo.Rechnungsausgang + Where Status = 0 + And Sammelrechnung = 6 + And Sachbearbeiter ='" & Sachbearbeiter & "' + AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' + + Group By Firma_ID, Status, Sammelrechnung, Sachbearbeiter, RechnungsKundenNr, BelegartenNr, Währungscode, [Steuersatz %], Lastschrift + Order By Firma_ID, Status, Sammelrechnung, Sachbearbeiter, RechnungsKundenNr, BelegartenNr, Währungscode, [Steuersatz %], Lastschrift" + + + Dim dtBB As DataTable = (New SQL).loadDgvBySql(sqlBB, "FMZOLL") + + If dtBB.Rows.Count > 0 Then + + For Each r In dtBB.Rows + 'spSelectReDruSchnSumBS415 + Dim steuersatz As Double = Math.Round(r("Steuersatz %"), 2) + Dim SteuersatzString As String = steuersatz.ToString.Replace(",", ".") + + Dim sum As DataTable = (New SQL).loadDgvBySql("SELECT SUM(dbo.RechnungsausgangPositionen.Preis * dbo.RechnungsausgangPositionen.Anzahl) AS [Summe von Preis] + FROM dbo.Rechnungsausgang INNER JOIN + dbo.RechnungsausgangPositionen ON dbo.Rechnungsausgang.RK_ID = dbo.RechnungsausgangPositionen.RK_ID INNER JOIN + dbo.Leistungen ON dbo.RechnungsausgangPositionen.LeistungsNr = dbo.Leistungen.LeistungsNr + WHERE (dbo.Rechnungsausgang.Firma_ID = " & r("Firma_ID") & ") + AND (dbo.Rechnungsausgang.Status = " & r("Status") & ") + AND (dbo.Rechnungsausgang.Sammelrechnung = " & r("Sammelrechnung") & ") + AND (dbo.Rechnungsausgang.Sachbearbeiter = '" & r("Sachbearbeiter") & "') + AND (dbo.Rechnungsausgang.RechnungsKundenNr = " & r("RechnungsKundenNr") & ") + AND (dbo.Rechnungsausgang.BelegartenNr =" & r("BelegartenNr") & ") + AND (dbo.Rechnungsausgang.Währungscode = '" & r("Währungscode") & "') + AND (dbo.Rechnungsausgang.[Steuersatz %] =" & SteuersatzString & ") + AND (dbo.Rechnungsausgang.Lastschrift =" & IIf(r("Lastschrift"), 1, 0) & ") + AND (dbo.Leistungen.BS415 = 1)", "FMZOLL",) + If sum.Rows.Count > 0 Then + + For Each rowsum In sum.Rows + + Dim sumCurrenRow As Double = rowsum("Summe von Preis") + + If sumCurrenRow <> 0 Then + + Dim dtBankspesen As DataTable = (New SQL).loadDgvBySql("SELECT KundenNr, [Bankspesen %], [Bankspesen Mindestbetrag] FROM dbo.Kunden where KundenNr = " & r("RechnungsKundenNr"), "FMZOLL") + + If dtBankspesen.Rows.Count > 0 Then + + For Each rowBS In dtBankspesen.Rows + + If rowBS("Bankspesen %") = 0 And rowBS("Bankspesen Mindestbetrag") = 0 Then + + Else + + Dim query As String = "SELECT DISTINCT OffertenNr, RK_ID, SteuerpflichtigerGesamtbetrag, SteuerfreierGesamtbetrag, upsize_ts FROM Rechnungsausgang + WHERE (dbo.Rechnungsausgang.Firma_ID = " & r("Firma_ID") & ") + AND (Status = " & r("Status") & ") + AND (Sammelrechnung = " & r("Sammelrechnung") & ") + AND (Sachbearbeiter = '" & r("Sachbearbeiter") & "') + AND (RechnungsKundenNr = " & r("RechnungsKundenNr") & ") + AND (BelegartenNr =" & r("BelegartenNr") & ") + AND (Währungscode = '" & r("Währungscode") & "') + AND ([Steuersatz %] =" & SteuersatzString & ") + AND (Lastschrift =" & IIf(r("Lastschrift"), 1, 0) & ") + ORDER BY OffertenNr" + + Dim dtRechnung As DataTable = (New SQL).loadDgvBySql(query, "FMZOLL") + + If dtRechnung.Rows.Count > 0 Then + + For Each re In dtRechnung.Rows + + Dim steuerpflichtigerGesamtbetrag = re("SteuerpflichtigerGesamtbetrag") + Dim steuerfreiegerGesamtbetrag = re("SteuerfreierGesamtbetrag") + + Dim dt415 As DataTable = (New SQL).loadDgvBySql("Select [RK_ID], [LeistungsNr], cast([Steuerpflichtig] as bit) as Steuerpflichtig, [LeistungsBez],[IndexZkteing],SteuerpflichtigerBetrag, SteuerfreierBetrag, upsize_ts From RechnungsausgangPositionen Where RechnungsausgangPositionen.RK_ID = " & re("RK_ID") & " And RechnungsausgangPositionen.LeistungsNr = 415", "FMZOLL") + + If dt415.Rows.Count > 0 Then + + For Each r415 In dt415.Rows + + steuerpflichtigerGesamtbetrag -= dt415("SteuerpflichtigerBetrag") + steuerfreiegerGesamtbetrag -= dt415("SteuerfreierBetrag") + + Dim RECHNUNG As New cRechnungsausgang(re("RK_ID")) + + If RECHNUNG.DELETE_POSITIONEN(RECHNUNG.RK_ID, r415("LeistungsNr"), r415("Steuerpflichtig"), r415("LeistungsBez"), r415("IndexZkteing")) Then + RECHNUNG.SteuerfreierGesamtbetrag = steuerfreiegerGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag = steuerpflichtigerGesamtbetrag + RECHNUNG.SAVE() + End If + + + + Next + + + + End If + + + Next + + + If sumCurrenRow > 0 Then + Dim RElastEntry As DataRow = dtRechnung.Rows(dtRechnung.Rows.Count - 1) + + Dim NEWPOS As New cRechnungsausgangPositionen(RElastEntry("RK_ID")) + NEWPOS.Anzahl = 1 + NEWPOS.LeistungsNr = 415 + If steuersatz = 0 Then + NEWPOS.Steuerpflichtig = False + Else + Dim sql As New SQL + NEWPOS.Steuerpflichtig = (New VERAG_PROG_ALLGEMEIN.SQL).DLookup("Steuerpflichtig", "Leistungen", "LeistungsNr= 415", "FMZOLL") + End If + NEWPOS.LeistungsBez = "Überweisungs/Bankspesen" + + Dim preis As Double = 0 + If rowBS("Bankspesen %") > 0 Then + + If sumCurrenRow > 0 Then + + preis = Math.Floor(sumCurrenRow * rowBS("Bankspesen %") + 0.5) + Else + preis = Math.Floor(0 - sumCurrenRow * rowBS("Bankspesen %") + 0.5) + + End If + Else + preis = 0 + End If + + If preis < rowBS("Bankspesen Mindestbetrag") Then + preis = rowBS("Bankspesen Mindestbetrag") + End If + + If sumCurrenRow < 0 Then + preis = 0 - preis + End If + + Dim RECHNUNG As New cRechnungsausgang(RElastEntry("RK_ID")) + + If NEWPOS.Steuerpflichtig Then + NEWPOS.SteuerpflichtigerBetrag = preis + RECHNUNG.SteuerpflichtigerGesamtbetrag = +preis + + Else + NEWPOS.SteuerfreierBetrag = preis + RECHNUNG.SteuerfreierGesamtbetrag = +preis + + End If + + NEWPOS.Preis = preis + NEWPOS.INSERT(RElastEntry("RK_ID")) + RECHNUNG.SAVE() + + + + End If + + End If + + End If + + Next + + End If + End If + + Next + + End If + + + Next + + End If + + End Function Private Sub Button16_Click(sender As Object, e As EventArgs) Handles btnContractdaten.Click Try