From 63e306e20b774b5a3cad39650afd670163e557b4 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Fri, 8 Aug 2025 14:51:08 +0200 Subject: [PATCH] fix Zugferd --- SDL/Fakturierung/cFakturierung.vb | 18 ++--- VERAG_PROG_ALLGEMEIN/Classes/cOfferte.vb | 91 ++++++++++++++++-------- 2 files changed, 72 insertions(+), 37 deletions(-) diff --git a/SDL/Fakturierung/cFakturierung.vb b/SDL/Fakturierung/cFakturierung.vb index d8b757df..4ae86500 100644 --- a/SDL/Fakturierung/cFakturierung.vb +++ b/SDL/Fakturierung/cFakturierung.vb @@ -2119,13 +2119,14 @@ Public Class cFakturierung 'Summe aller Rechnungspositions-Nettobeträge der Rechnung Dim lineTotalAmont = sumNetto 'Der Gesamtbetrag der Umsatzsteuer für die Rechnung, - Dim taxTotalAmount = IIf(RECHNUNG.SteuerpflichtigerGesamtbetrag <> 0, Math.Round(Convert.ToDecimal(RECHNUNG.SteuerpflichtigerGesamtbetrag) / (100 + steuerProzenFaktor) * steuerProzenFaktor, 2), 0) + 'IIf(RECHNUNG.SteuerpflichtigerGesamtbetrag <> 0, Math.Round(Convert.ToDecimal(RECHNUNG.SteuerpflichtigerGesamtbetrag) / (100 + steuerProzenFaktor) * steuerProzenFaktor, 2), 0) + Dim taxTotalAmount = IIf(RECHNUNG.SteuerpflichtigerGesamtbetrag <> 0, Math.Round(Convert.ToDecimal(RECHNUNG.SteuerpflichtigerGesamtbetrag) / (100) * steuerProzenFaktor, 2), 0) ' Die Gesamtsumme der Rechnung ohne Umsatzsteuer ' RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + 0 - 0 - Dim taxBasisAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + 0 - 0 - taxTotalAmount) + Dim taxBasisAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + 0 - 0) 'Der Gesamtbetrag der Rechnung mit Umsatzsteuer - Dim grandTotalAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag) + Dim grandTotalAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + taxTotalAmount) 'Der ausstehende Betrag, um dessen Zahlung gebeten wird. Dieser Betrag ist der Rechnungsgesamtbetrag einschließlich Umsatzsteuer abzüglich des im Voraus gezahlten Betrages.Im Falle einer vollständig beglichenen Rechnung ist dieser Betrag gleich null. Der Betrag kann negativ sein; In diesem Fall schuldet der Verkäufer dem Käufer den Betrag - Dim duePayableAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag) + Dim duePayableAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + taxTotalAmount) desc.SetTotals( lineTotalAmount:=Convert.ToDecimal(lineTotalAmont), @@ -2417,13 +2418,14 @@ Public Class cFakturierung 'Summe aller Rechnungspositions-Nettobeträge der Rechnung Dim lineTotalAmont = sumNetto 'Der Gesamtbetrag der Umsatzsteuer für die Rechnung, - Dim taxTotalAmount = IIf(Gesamt_RG_BetragSteuerpflichtig <> 0, Math.Round(Convert.ToDecimal(Gesamt_RG_BetragSteuerpflichtig) / (100 + steuerProzenFaktor) * steuerProzenFaktor, 2), 0) + 'IIf(Gesamt_RG_BetragSteuerpflichtig <> 0, Math.Round(Convert.ToDecimal(Gesamt_RG_BetragSteuerpflichtig) / (100 + steuerProzenFaktor) * steuerProzenFaktor, 2), 0) + Dim taxTotalAmount = IIf(Gesamt_RG_BetragSteuerpflichtig <> 0, Math.Round(Convert.ToDecimal(Gesamt_RG_BetragSteuerpflichtig) / (100) * steuerProzenFaktor, 2), 0) ' Die Gesamtsumme der Rechnung ohne Umsatzsteuer ' RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + 0 - 0 - Dim taxBasisAmount = Convert.ToDecimal(Gesamt_RG_BetragSteuerfrei + Gesamt_RG_BetragSteuerpflichtig + 0 - 0 - taxTotalAmount) + Dim taxBasisAmount = Convert.ToDecimal(Gesamt_RG_BetragSteuerfrei + Gesamt_RG_BetragSteuerpflichtig + 0 - 0) 'Der Gesamtbetrag der Rechnung mit Umsatzsteuer - Dim grandTotalAmount = Convert.ToDecimal(Gesamt_RG_BetragSteuerfrei + Gesamt_RG_BetragSteuerpflichtig) + Dim grandTotalAmount = Convert.ToDecimal(Gesamt_RG_BetragSteuerfrei + Gesamt_RG_BetragSteuerpflichtig + taxTotalAmount) 'Der ausstehende Betrag, um dessen Zahlung gebeten wird. Dieser Betrag ist der Rechnungsgesamtbetrag einschließlich Umsatzsteuer abzüglich des im Voraus gezahlten Betrages.Im Falle einer vollständig beglichenen Rechnung ist dieser Betrag gleich null. Der Betrag kann negativ sein; In diesem Fall schuldet der Verkäufer dem Käufer den Betrag - Dim duePayableAmount = Convert.ToDecimal(Gesamt_RG_BetragSteuerfrei + Gesamt_RG_BetragSteuerpflichtig) + Dim duePayableAmount = Convert.ToDecimal(Gesamt_RG_BetragSteuerfrei + Gesamt_RG_BetragSteuerpflichtig + taxTotalAmount) desc.SetTotals( lineTotalAmount:=Convert.ToDecimal(lineTotalAmont), diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cOfferte.vb b/VERAG_PROG_ALLGEMEIN/Classes/cOfferte.vb index 5e448af9..3b2064ad 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cOfferte.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cOfferte.vb @@ -1,6 +1,7 @@  Imports System.Data.SqlClient Imports System.Reflection +Imports jdk.nashorn.internal.ir Public Class cOfferteList Property KundenNr As Object = Nothing @@ -270,21 +271,8 @@ Public Class cOfferte 'P.PreisänderungProzent = XXXXXXXXX 'P.PreisAlt = XXXXXXXXX - Dim LandISO As String = "" - - Select Case P.OffertenNr - - Case 31, 15, 14 - If (P.LeistungsNr = 124 Or P.LeistungsNr = 125 Or P.LeistungsNr = 126) Then - LandISO = P.LeistungsBez.ToString.Substring(P.LeistungsBez.ToString.Length - 2, 2) - End If - - - End Select - - If LandISO <> "" AndAlso LandISO.All(Function(c) Char.IsUpper(c)) Then - P.Land = LandISO - End If + P.Land = setLand(P.OffertenNr, P.LeistungsNr, P.LeistungsBez) + P.VZ = setVZ(P.OffertenNr, P.LeistungsNr, P.LeistungsBez) If Not P.INSERT() Then Return False @@ -307,10 +295,8 @@ Public Class cOfferte Dim P As New cOffertPosition() Dim Leistung As New cLeistungen(r("LeistungsNr")) - P.KundenNr = Me.KundenNr P.OffertenNr = Me.OffertenNr - P.LeistungsNr = r("LeistungsNr") Dim leistBez As String = "" @@ -346,18 +332,8 @@ Public Class cOfferte 'P.PreisänderungProzent = XXXXXXXXX 'P.PreisAlt = XXXXXXXXX - - Dim LandISO As String = "" - - Select Case P.OffertenNr - - Case 31, 15, 14 - LandISO = P.LeistungsBez.ToString.Substring(P.LeistungsBez.ToString.Length - 2, 2) - End Select - - If LandISO <> "" AndAlso LandISO.All(Function(c) Char.IsUpper(c)) Then - P.Land = LandISO - End If + P.Land = setLand(P.OffertenNr, P.LeistungsNr, P.LeistungsBez) + P.VZ = setVZ(P.OffertenNr, P.LeistungsNr, P.LeistungsBez) If Not P.INSERT() Then Return False @@ -370,6 +346,63 @@ Public Class cOfferte End If End Function + Private Function setLand(OffertenNr As Integer, LeistungsNr As Integer, LeistungsBez As String) As String + + Dim LandISO As String = "" + + Select Case OffertenNr + + Case 31, 15, 14 + If (LeistungsNr = 124 Or LeistungsNr = 125 Or LeistungsNr = 126) Then + LandISO = LeistungsBez.ToString.Substring(LeistungsBez.ToString.Length - 2, 2) + End If + + If (LeistungsNr = 117 Or LeistungsNr = 118 Or LeistungsNr = 119) Then + LandISO = LeistungsBez.ToString.Substring(LeistungsBez.ToString.Length - 2, 2) + End If + + End Select + + If LandISO <> "" AndAlso LandISO.All(Function(c) Char.IsUpper(c)) Then + If LandISO <> "EU" And LandISO <> "RG" Then + Return LandISO + Else + Return LandISO + End If + End If + + Return LandISO + + End Function + + Private Function setVZ(OffertenNr As Integer, LeistungsNr As Integer, LeistungsBez As String) As Boolean + + Select Case OffertenNr + + Case 31, 15, 14 + + If (LeistungsNr = 117 Or LeistungsNr = 118 Or LeistungsNr = 119) Then + If LeistungsBez.ToString.Contains("ZV") Then + Return True + Else + Return False + End If + End If + + + If (LeistungsNr = 124 Or LeistungsNr = 125 Or LeistungsNr = 126) Then + If LeistungsBez.ToString.Contains("ZV") Then + Return True + Else + Return False + End If + + End If + + End Select + + End Function + End Class