Zugferd Sammelrechnung

This commit is contained in:
2024-12-30 12:28:09 +01:00
parent 150f9e0f09
commit a6ab0aecc8
2 changed files with 65 additions and 88 deletions

View File

@@ -6,7 +6,8 @@ Imports VERAG_PROG_ALLGEMEIN
Imports s2industries.ZUGFeRD
Imports System.IO
Imports VERAG_PROG_ALLGEMEIN.TESTJSON
Imports org.omg.PortableServer
Imports GrapeCity.ActiveReports.ReportsCore.Tools
Public Class cFakturierung
@@ -1927,7 +1928,7 @@ Public Class cFakturierung
Dim RechnungsLandKz As String = ""
If ROW("RechnungsLandKz") IsNot DBNull.Value AndAlso ROW("RechnungsLandKz") <> "" Then
RechnungsLandKz = cProgramFunctions.getLandBez_fromISO1Land(ROW("RechnungsLandKz"), "", ROW("RechnungSprache")).ToString.ToUpper
RechnungsLandKz = ROW("RechnungsLandKz") 'cProgramFunctions.getLandBez_fromISO1Land(ROW("RechnungsLandKz"), "", ROW("RechnungSprache")).ToString.ToUpper
End If
@@ -1937,13 +1938,15 @@ Public Class cFakturierung
'If RECHNUNG.Besonderheiten IsNot Nothing Then
' desc.AddNote(RECHNUNG.Besonderheiten.ToString, SubjectCodes.AAI)
'End If
If rpt.txtVermerk.Text IsNot Nothing AndAlso rpt.txtVermerk.Text <> "" Then desc.AddNote(rpt.txtVermerk.Text.ToString, SubjectCodes.AAI)
desc.AddNote("Es bestehen Rabatt- und Bonusvereinbarungen.", SubjectCodes.AAK)
desc.SetBuyer(ROW("RechnungsName 1") & " " & Rechnugnsname2, RechnungsOrt, RechnungsOrt, RechnungsStraße, GetCountryCodeFromLandKZ(RechnungsLandKz, vatBuyer), IIf(Not IsDBNull(ROW("RechnungsKundenNr")), ROW("RechnungsKundenNr"), ""))
desc.SetSeller(FIRMA.Firma_Bez, FIRMA.Firma_Ort, FIRMA.Firma_Ort, FIRMA.Firma_Straße, GetCountryCodeFromLandKZ(FIRMA.Firma_LandKz, vatSeller))
If FIRMA.Firma_Steuernummer IsNot Nothing Then desc.AddSellerTaxRegistration(FIRMA.Firma_Steuernummer, TaxRegistrationSchemeID.FC)
desc.AddSellerTaxRegistration(FIRMA.Firma_UID.ToString.Replace("UID: ", ""), TaxRegistrationSchemeID.VA)
' Optionally, to support Peppol-----------------------------
@@ -1965,108 +1968,79 @@ Public Class cFakturierung
steuerProzenFaktor = steuerProzent * 100
End If
Dim einzelpreis As Double = 0
Dim sumNetto As Double = 0
'---------------------------------------------------------------------------------
'--------------------------------TODO---------------------------------------------
'---------------------------------------------------------------------------------
For Each pos As DataRow In SR_DT.Rows
'AddHandler rpt.Detail.Format, Sub()
' ' rpt.lblVon.Text = CDate(rpt.Fields.Item("von").Value).ToShortDateString
' ' rpt.lblLKWNr.Text = CDate(rpt.Fields.Item("bis").Value).ToShortDateString
Dim SteuerpflichtigerBetrag As Double = 0
Dim SteuerfreierBetrag As Double = 0
Dim anzahl As Double = 0
Dim bez As String = ""
' rpt.lblLeistungNr.Text = checkNull(rpt.Fields.Item("LeistungsNr").Value)
' rpt.txtLeistung.Text = checkNull(rpt.Fields.Item("LeistungsBez").Value)
Dim einzepreis = 0
' If Not ROW("Lastschrift") Then
' If checkNull(rpt.Fields.Item("LeistungsNr").Value) = "750" Then
' strText = "Pos. 750 kann bei Zahlung innerhalb 10 Tagen gekürzt werden."
' End If
' End If
einzelpreis = IIf(pos.Item("SteuerpflichtigerBetrag") > 0, pos.Item("SteuerpflichtigerBetrag") / checkNull(pos.Item("Anzahl")), pos.Item("SteuerfreierBetrag") / checkNull(pos.Item("Anzahl")))
' If rpt.Fields.Item("Belegdaten") IsNot Nothing AndAlso rpt.Fields.Item("Belegdaten").Value IsNot Nothing Then
' rpt.txtLeistung.Text &= vbNewLine & checkNull(rpt.Fields.Item("Belegdaten").Value)
' End If
' rpt.lblAnzahl.Text = checkNull(rpt.Fields.Item("Anzahl").Value)
' ' rpt.lblBetrag.Text = rpt.Fields.Item("betrag").Value
' Dim stPfl As Double = 0
' Dim stFrei As Double = 0
' If IsNumeric(checkNull(rpt.Fields.Item("SteuerpflichtigerBetrag").Value)) Then stPfl = CDbl(rpt.Fields.Item("SteuerpflichtigerBetrag").Value())
' rpt.lblSteuerpflichtig.Text = If(stPfl <> 0, CDbl(stPfl).ToString("N2", Globalization.CultureInfo.CurrentCulture), "")
' If IsNumeric(checkNull(rpt.Fields.Item("SteuerfreierBetrag").Value)) Then stFrei = CDbl(rpt.Fields.Item("SteuerfreierBetrag").Value())
' rpt.lblSteuerfrei.Text = If(stFrei <> 0, CDbl(stFrei).ToString("N2", Globalization.CultureInfo.CurrentCulture), "")
' sumSteuerpflichtig += stPfl
' sumSteuerfrei += stFrei
' ' Anz += 1
' ' gesAnz += 1
' ' If Anz Mod 2 = 0 Then
' ' rpt.Detail.BackColor = Color.FromArgb(240, 240, 240)
' 'Else
' ' rpt.Detail.BackColor = Color.White
' ' End If
' 'rpt.Line10.Height = rpt.Detail.Height
' End Sub
'AddHandler rpt.ReportFooter1.Format, Sub()
' rpt.lblSteuerpflichtigGes.Text = If(sumSteuerpflichtig <> 0, (sumSteuerpflichtig).ToString("N2", CultureInfo.CurrentCulture), "")
' rpt.lblSteuerfreiGes.Text = If(sumSteuerfrei <> 0, (sumSteuerfrei).ToString("N2", CultureInfo.CurrentCulture), "")
' Dim steuerProz As Double = 0
' Dim steuerBez As String = ""
' Dim dt2 As DataTable = SQL.loadDgvBySql("SELECT TOP 1 isnull([Steuersatz %],0),isnull([Steuerbezeichnung],'') FROM [Steuertabelle] WHERE [Steuerschlüssel]='" & ROW("Steuerschlüssel") & "'", "FMZOLL")
' If dt2 IsNot Nothing AndAlso dt2.Rows.Count > 0 Then
' steuerProz = dt2.Rows(0)(0)
' steuerBez = dt2.Rows(0)(1)
' End If
' rpt.lblSteuersatz.Text = steuerBez
' rpt.lblSteuerbetrag.Text = If((sumSteuerpflichtig * steuerProz) <> 0, (sumSteuerpflichtig * steuerProz).ToString("N2", CultureInfo.CurrentCulture), "")
' rpt.lblZWSumme.Text = (sumSteuerpflichtig + sumSteuerfrei).ToString("N2", CultureInfo.CurrentCulture)
' rpt.lblSumme.Text = (sumSteuerpflichtig + sumSteuerfrei + (sumSteuerpflichtig * steuerProz)).ToString("N2", CultureInfo.CurrentCulture)
' rpt.Label46.Text = If(ROW("Währungscode") IsNot DBNull.Value, ROW("Währungscode"), "EUR")
' If sumSteuerfrei = 0 Or sumSteuerpflichtig = 0 Then
' rpt.lblZwText.Visible = False
' rpt.lblZWSumme.Visible = False
' End If
Dim tradeLineItemNew As TradeLineItem = desc.AddTradeLineItem(
name:=checkNull(pos.Item("LeistungsBez")),
billedQuantity:=Convert.ToDecimal(checkNull(pos.Item("Anzahl"))),
unitCode:=QuantityCodes.C62, ' immer in Stück
netUnitPrice:=Convert.ToDecimal(einzelpreis),
grossUnitPrice:=Convert.ToDecimal(einzelpreis),
categoryCode:=IIf(pos.Item("SteuerpflichtigerBetrag") > 0, TaxCategoryCodes.S, TaxCategoryCodes.Z),
taxPercent:=IIf(pos.Item("SteuerpflichtigerBetrag") > 0, Convert.ToDecimal(steuerProzent * 100), 0),
taxType:=IIf(pos.Item("SteuerpflichtigerBetrag") > 0, TaxTypes.VAT, TaxTypes.VAT)
)
Dim netUnitPrice = Convert.ToDecimal(einzelpreis)
Dim netPricePos = netUnitPrice * Convert.ToDecimal(checkNull(pos.Item("Anzahl")))
sumNetto += netPricePos
'For Each search As GrapeCity.ActiveReports.SectionReportModel.ARControl In rpt.Detail.Controls
' If search.Name = "lblAnzahl" Then
' anzahl = IIf(DirectCast(search, GrapeCity.ActiveReports.SectionReportModel.Label).[Text] <> "", DirectCast(search, GrapeCity.ActiveReports.SectionReportModel.Label).[Text], 0)
' End If
' If search.Name = "lblSteuerpflichtig" Then
' SteuerpflichtigerBetrag = IIf(DirectCast(search, GrapeCity.ActiveReports.SectionReportModel.Label).[Text] <> "", DirectCast(search, GrapeCity.ActiveReports.SectionReportModel.Label).[Text], 0)
' End If
' End Sub
' If search.Name = "lblSteuerfrei" Then
' SteuerfreierBetrag = IIf(DirectCast(search, GrapeCity.ActiveReports.SectionReportModel.Label).[Text] <> "", DirectCast(search, GrapeCity.ActiveReports.SectionReportModel.Label).[Text], 0)
' End If
' If search.Name = "txtLeistung" Then
' bez = IIf(DirectCast(search, GrapeCity.ActiveReports.SectionReportModel.TextBox).[Text] <> "", DirectCast(search, GrapeCity.ActiveReports.SectionReportModel.TextBox).[Text], 0)
' End If
AddHandler rpt.Detail.Format, Sub()
'If bez <> "" Then
Dim einzelpreis As Double = IIf(rpt.Fields.Item("SteuerpflichtigerBetrag").Value > 0, rpt.Fields.Item("SteuerpflichtigerBetrag").Value / checkNull(rpt.Fields.Item("Anzahl").Value), rpt.Fields.Item("SteuerfreierBetrag").Value / checkNull(rpt.Fields.Item("Anzahl").Value))
' einzelpreis = IIf(SteuerpflichtigerBetrag > 0, SteuerpflichtigerBetrag / checkNull(anzahl), SteuerfreierBetrag / checkNull(anzahl))
Dim tradeLineItemNew As TradeLineItem = desc.AddTradeLineItem(
name:=checkNull(rpt.Fields.Item("LeistungsBez").Value),
billedQuantity:=Convert.ToDecimal(checkNull(rpt.Fields.Item("Anzahl").Value)),
unitCode:=QuantityCodes.C62, ' immer in Stück
netUnitPrice:=Convert.ToDecimal(einzelpreis),
grossUnitPrice:=Convert.ToDecimal(einzelpreis),
categoryCode:=IIf(rpt.Fields.Item("SteuerpflichtigerBetrag").Value > 0, TaxCategoryCodes.S, TaxCategoryCodes.Z),
taxPercent:=IIf(rpt.Fields.Item("SteuerpflichtigerBetrag").Value > 0, Convert.ToDecimal(steuerProzent * 100), 0),
taxType:=IIf(rpt.Fields.Item("SteuerpflichtigerBetrag").Value > 0, TaxTypes.VAT, TaxTypes.VAT)
)
Dim netUnitPrice = Convert.ToDecimal(einzelpreis)
Dim netPricePos = netUnitPrice * Convert.ToDecimal(checkNull(rpt.Fields.Item("Anzahl").Value))
sumNetto += netPricePos
' Dim tradeLineItemNew As TradeLineItem = desc.AddTradeLineItem(
' name:=checkNull(bez),
' billedQuantity:=Convert.ToDecimal(checkNull(anzahl)),
' unitCode:=QuantityCodes.C62, ' immer in Stück
' netUnitPrice:=Convert.ToDecimal(einzelpreis),
' grossUnitPrice:=Convert.ToDecimal(einzelpreis),
' categoryCode:=IIf(SteuerpflichtigerBetrag > 0, TaxCategoryCodes.S, TaxCategoryCodes.Z),
' taxPercent:=IIf(SteuerpflichtigerBetrag > 0, Convert.ToDecimal(steuerProzent * 100), 0),
' taxType:=IIf(SteuerpflichtigerBetrag > 0, TaxTypes.VAT, TaxTypes.VAT)
' )
' Dim netUnitPrice = Convert.ToDecimal(einzelpreis)
' Dim netPricePos = netUnitPrice * Convert.ToDecimal(checkNull(anzahl))
' sumNetto += netPricePos
End Sub
' bez = ""
' End If
'Next
Next
'Summe aller Rechnungspositions-Nettobeträge der Rechnung
@@ -3850,6 +3824,7 @@ Public Class cFakturierung
sumSteuerpflichtig += stPfl
sumSteuerfrei += stFrei
' Anz += 1
' gesAnz += 1

View File

@@ -28,6 +28,7 @@ Public Class cFirmen
Property Firma_E_Mail_Mahnungen As Object = Nothing
Property Firma_Webadresse As Object = Nothing ' NVARCHAR (40) NULL,
Property Firma_LandKz As Object = Nothing ' NVARCHAR (40) NULL,
Property Firma_Steuernummer As Object = Nothing
Property Firmengruppe As Object = Nothing
@@ -72,6 +73,7 @@ Public Class cFirmen
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Firma_Webadresse", Firma_Webadresse))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Firma_LandKz", Firma_LandKz))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Firmengruppe", Firmengruppe))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Firma_Steuernummer", Firma_Steuernummer))
Return list