From d5f4859ed426aaf7f105cd1034177397804d2811 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Fri, 10 Jan 2025 17:20:13 +0100 Subject: [PATCH] sammelrechnung SDL --- SDL/Fakturierung/cFakturierung.vb | 309 +++++++++++---------- SDL/Fakturierung/frmAbrechnungsMaske.vb | 14 +- SDL/Fakturierung/frmFaktSammelRgDrucken.vb | 15 +- SDL/Fakturierung/usrCntlFaktAbrechnung.vb | 11 +- 4 files changed, 176 insertions(+), 173 deletions(-) diff --git a/SDL/Fakturierung/cFakturierung.vb b/SDL/Fakturierung/cFakturierung.vb index 1cb2d600..956130c5 100644 --- a/SDL/Fakturierung/cFakturierung.vb +++ b/SDL/Fakturierung/cFakturierung.vb @@ -5,9 +5,6 @@ Imports Microsoft.Office.Interop 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 @@ -1831,7 +1828,7 @@ 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) + Dim taxTotalAmount = IIf(RECHNUNG.SteuerpflichtigerGesamtbetrag <> 0, Math.round(Convert.ToDecimal(RECHNUNG.SteuerpflichtigerGesamtbetrag) / (100 + steuerProzenFaktor) * 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) 'Der Gesamtbetrag der Rechnung mit Umsatzsteuer @@ -1900,98 +1897,98 @@ Public Class cFakturierung If ROW("RechnungsNr") Is DBNull.Value Then Return "" Dim RechnungsNr = If(ROW("RechnungsNr") IsNot DBNull.Value, addYeartoRgNr(FIRMA.Firma_ID, ROW("Buchungsjahr")) & ROW("RechnungsNr"), "Vorschau") - Dim RechnungsDatum = If(ROW("RechnungsDatum") IsNot DBNull.Value, ROW("RechnungsDatum"), "Vorschau") - Dim zahlungszieldatum As Date = CDate(RechnungsDatum).AddDays(ZZTage) - Dim desc As InvoiceDescriptor = InvoiceDescriptor.CreateInvoice(RechnungsNr, RechnungsDatum, IIf(FIRMA.Firma_ID = 26, CurrencyCodes.GBP, CurrencyCodes.EUR)) + Dim RechnungsDatum = If(ROW("RechnungsDatum") IsNot DBNull.Value, ROW("RechnungsDatum"), "Vorschau") + Dim zahlungszieldatum As Date = CDate(RechnungsDatum).AddDays(ZZTage) + Dim desc As InvoiceDescriptor = InvoiceDescriptor.CreateInvoice(RechnungsNr, RechnungsDatum, IIf(FIRMA.Firma_ID = 26, CurrencyCodes.GBP, CurrencyCodes.EUR)) - Select Case BelegartenKz - Case "AR" - desc.Name = "SPEDITIONSRECHNUNG" - desc.Type = InvoiceType.ForwardersInvoice - Case "AG" - desc.Name = "GUTSCHRIFT" - desc.Type = InvoiceType.CreditNote - End Select + Select Case BelegartenKz + Case "AR" + desc.Name = "SPEDITIONSRECHNUNG" + desc.Type = InvoiceType.ForwardersInvoice + Case "AG" + desc.Name = "GUTSCHRIFT" + desc.Type = InvoiceType.CreditNote + End Select - Dim Rechnugnsname2 As String = "" - If ROW("RechnungsName 2") IsNot DBNull.Value AndAlso ROW("RechnungsName 2") <> "" Then - Rechnugnsname2 = ROW("RechnungsName 2") + Dim Rechnugnsname2 As String = "" + If ROW("RechnungsName 2") IsNot DBNull.Value AndAlso ROW("RechnungsName 2") <> "" Then + Rechnugnsname2 = ROW("RechnungsName 2") + End If + + Dim RechnungsName_AdressZusatz As String = "" + If ROW("RechnungsName_AdressZusatz") IsNot DBNull.Value AndAlso ROW("RechnungsName_AdressZusatz") <> "" Then + RechnungsName_AdressZusatz = ROW("RechnungsName_AdressZusatz") + End If + + Dim RechnungsStraße As String = "" + If ROW("RechnungsStraße") IsNot DBNull.Value AndAlso ROW("RechnungsStraße") <> "" Then + RechnungsStraße = ROW("RechnungsStraße") + End If + + Dim RechnungsOrt As String = "" + If ROW("RechnungsOrt") IsNot DBNull.Value AndAlso ROW("RechnungsOrt") <> "" Then + RechnungsOrt = ROW("RechnungsOrt") + End If + + Dim RechnungsLandKz As String = "" + If ROW("RechnungsLandKz") IsNot DBNull.Value AndAlso ROW("RechnungsLandKz") <> "" Then + RechnungsLandKz = ROW("RechnungsLandKz") 'cProgramFunctions.getLandBez_fromISO1Land(ROW("RechnungsLandKz"), "", ROW("RechnungSprache")).ToString.ToUpper + End If + + + Dim RE_UID As String = If(ROW("RechnungsUstIdKz") IsNot DBNull.Value, ROW("RechnungsUstIdKz"), "") & If(ROW("RechnungsUstIdNr") IsNot DBNull.Value, ROW("RechnungsUstIdNr"), "") + + + '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----------------------------- + + + If RE_UID <> "" Then + desc.AddBuyerTaxRegistration(RE_UID, TaxRegistrationSchemeID.VA) + If vatBuyer Then + desc.SetBuyerElectronicAddress(RE_UID, vatBuyer) + desc.SetSellerElectronicAddress(FIRMA.Firma_UID.ToString.Replace("UID: ", ""), vatSeller) End If - Dim RechnungsName_AdressZusatz As String = "" - If ROW("RechnungsName_AdressZusatz") IsNot DBNull.Value AndAlso ROW("RechnungsName_AdressZusatz") <> "" Then - RechnungsName_AdressZusatz = ROW("RechnungsName_AdressZusatz") - End If - - Dim RechnungsStraße As String = "" - If ROW("RechnungsStraße") IsNot DBNull.Value AndAlso ROW("RechnungsStraße") <> "" Then - RechnungsStraße = ROW("RechnungsStraße") - End If - - Dim RechnungsOrt As String = "" - If ROW("RechnungsOrt") IsNot DBNull.Value AndAlso ROW("RechnungsOrt") <> "" Then - RechnungsOrt = ROW("RechnungsOrt") - End If - - Dim RechnungsLandKz As String = "" - If ROW("RechnungsLandKz") IsNot DBNull.Value AndAlso ROW("RechnungsLandKz") <> "" Then - RechnungsLandKz = ROW("RechnungsLandKz") 'cProgramFunctions.getLandBez_fromISO1Land(ROW("RechnungsLandKz"), "", ROW("RechnungSprache")).ToString.ToUpper - End If + End If - Dim RE_UID As String = If(ROW("RechnungsUstIdKz") IsNot DBNull.Value, ROW("RechnungsUstIdKz"), "") & If(ROW("RechnungsUstIdNr") IsNot DBNull.Value, ROW("RechnungsUstIdNr"), "") + Dim steuerProzent As Double = SQL.DLookup(" isnull([Steuersatz %],0)", "[Steuertabelle] ", "[Steuerschlüssel]='" & ROW("Steuerschlüssel") & "'", "FMZOLL", 0) + Dim steuerProzenFaktor As Double = 0 + If steuerProzent > 0 AndAlso steuerProzent < 1 Then + steuerProzenFaktor = steuerProzent * 100 + End If + + Dim einzelpreis As Double = 0 + Dim sumNetto As Double = 0 - 'If RECHNUNG.Besonderheiten IsNot Nothing Then - ' desc.AddNote(RECHNUNG.Besonderheiten.ToString, SubjectCodes.AAI) - 'End If + For Each pos As DataRow In SR_DT.Rows - If rpt.txtVermerk.Text IsNot Nothing AndAlso rpt.txtVermerk.Text <> "" Then desc.AddNote(rpt.txtVermerk.Text.ToString, SubjectCodes.AAI) + Dim SteuerpflichtigerBetrag As Double = 0 + Dim SteuerfreierBetrag As Double = 0 + Dim anzahl As Double = 0 + Dim bez As String = "" - desc.AddNote("Es bestehen Rabatt- und Bonusvereinbarungen.", SubjectCodes.AAK) + Dim einzepreis = 0 - 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)) + einzelpreis = IIf(pos.Item("SteuerpflichtigerBetrag") > 0, pos.Item("SteuerpflichtigerBetrag") / checkNull(pos.Item("Anzahl")), pos.Item("SteuerfreierBetrag") / checkNull(pos.Item("Anzahl"))) - 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----------------------------- - - - If RE_UID <> "" Then - desc.AddBuyerTaxRegistration(RE_UID, TaxRegistrationSchemeID.VA) - If vatBuyer Then - desc.SetBuyerElectronicAddress(RE_UID, vatBuyer) - desc.SetSellerElectronicAddress(FIRMA.Firma_UID.ToString.Replace("UID: ", ""), vatSeller) - End If - - End If - - - Dim steuerProzent As Double = SQL.DLookup(" isnull([Steuersatz %],0)", "[Steuertabelle] ", "[Steuerschlüssel]='" & ROW("Steuerschlüssel") & "'", "FMZOLL", 0) - Dim steuerProzenFaktor As Double = 0 - If steuerProzent > 0 AndAlso steuerProzent < 1 Then - steuerProzenFaktor = steuerProzent * 100 - End If - - Dim einzelpreis As Double = 0 - Dim sumNetto As Double = 0 - - - For Each pos As DataRow In SR_DT.Rows - - Dim SteuerpflichtigerBetrag As Double = 0 - Dim SteuerfreierBetrag As Double = 0 - Dim anzahl As Double = 0 - Dim bez As String = "" - - Dim einzepreis = 0 - - einzelpreis = IIf(pos.Item("SteuerpflichtigerBetrag") > 0, pos.Item("SteuerpflichtigerBetrag") / checkNull(pos.Item("Anzahl")), pos.Item("SteuerfreierBetrag") / checkNull(pos.Item("Anzahl"))) - - Dim tradeLineItemNew As TradeLineItem = desc.AddTradeLineItem( + 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 @@ -2001,68 +1998,68 @@ Public Class cFakturierung 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 + 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 + '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 + ' If search.Name = "lblSteuerpflichtig" Then + ' SteuerpflichtigerBetrag = IIf(DirectCast(search, GrapeCity.ActiveReports.SectionReportModel.Label).[Text] <> "", DirectCast(search, GrapeCity.ActiveReports.SectionReportModel.Label).[Text], 0) + ' End If - ' 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 = "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 + ' If search.Name = "txtLeistung" Then + ' bez = IIf(DirectCast(search, GrapeCity.ActiveReports.SectionReportModel.TextBox).[Text] <> "", DirectCast(search, GrapeCity.ActiveReports.SectionReportModel.TextBox).[Text], 0) + ' End If - 'If bez <> "" Then + 'If bez <> "" Then - ' einzelpreis = IIf(SteuerpflichtigerBetrag > 0, SteuerpflichtigerBetrag / checkNull(anzahl), SteuerfreierBetrag / checkNull(anzahl)) + ' einzelpreis = IIf(SteuerpflichtigerBetrag > 0, SteuerpflichtigerBetrag / checkNull(anzahl), SteuerfreierBetrag / checkNull(anzahl)) - ' 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 + ' 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 - ' bez = "" + ' bez = "" - ' End If + ' End If - 'Next + 'Next - Next + Next - '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) - ' 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) - 'Der Gesamtbetrag der Rechnung mit Umsatzsteuer - Dim grandTotalAmount = Convert.ToDecimal(Gesamt_RG_BetragSteuerfrei + Gesamt_RG_BetragSteuerpflichtig) - '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) + '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) + ' 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) + 'Der Gesamtbetrag der Rechnung mit Umsatzsteuer + Dim grandTotalAmount = Convert.ToDecimal(Gesamt_RG_BetragSteuerfrei + Gesamt_RG_BetragSteuerpflichtig) + '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) - desc.SetTotals( + desc.SetTotals( lineTotalAmount:=Convert.ToDecimal(lineTotalAmont), chargeTotalAmount:=0, 'Summe aller in der Rechnung enthaltenen Zuschläge der Dokumentenebene allowanceTotalAmount:=0, 'Summe aller in der Rechnung enthaltenen Abschläge der Dokumenteneben @@ -2074,29 +2071,29 @@ Public Class cFakturierung roundingAmount:=0 'Der Betrag, der dem Rechnungsgesamtbetrag hinzuzufügen ist, um den zu zahlenden Betrag zu runden ) - desc.AddTradePaymentTerms(rpt.Label2.Text, zahlungszieldatum) + desc.AddTradePaymentTerms(rpt.Label2.Text, zahlungszieldatum) - Dim isReverseCharge = IIf(getReverseChargeSumme(FIRMA, ROW("RechnungsLandKz"), ROW("RechnungsNr"), ROW("RechnungsDatum"), "") > 0, True, False) + Dim isReverseCharge = IIf(getReverseChargeSumme(FIRMA, ROW("RechnungsLandKz"), ROW("RechnungsNr"), ROW("RechnungsDatum"), "") > 0, True, False) - If Gesamt_RG_BetragSteuerfrei > 0 Then - desc.AddApplicableTradeTax(Convert.ToDecimal(Gesamt_RG_BetragSteuerfrei), 0, TaxTypes.VAT, TaxCategoryCodes.Z) - End If - - If Gesamt_RG_BetragSteuerpflichtig > 0 Then - desc.AddApplicableTradeTax(Convert.ToDecimal(taxBasisAmount - Gesamt_RG_BetragSteuerfrei), Convert.ToDecimal(steuerProzenFaktor), Convert.ToDecimal(taxTotalAmount), TaxTypes.VAT, IIf(isReverseCharge, TaxCategoryCodes.AE, TaxCategoryCodes.S)) - End If - - Dim tmpPathZugpferd = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("ZUGFeRD_Invoice_" & RechnungsNr, ".xml", True, False) - Dim stream As FileStream = New FileStream(tmpPathZugpferd, FileMode.Create, FileAccess.Write) - desc.Save(stream, ZUGFeRDVersion.Version20, Profile.Comfort) - - stream.Flush() - stream.Close() - Return tmpPathZugpferd - + If Gesamt_RG_BetragSteuerfrei > 0 Then + desc.AddApplicableTradeTax(Convert.ToDecimal(Gesamt_RG_BetragSteuerfrei), 0, TaxTypes.VAT, TaxCategoryCodes.Z) End If + If Gesamt_RG_BetragSteuerpflichtig > 0 Then + desc.AddApplicableTradeTax(Convert.ToDecimal(taxBasisAmount - Gesamt_RG_BetragSteuerfrei), Convert.ToDecimal(steuerProzenFaktor), Convert.ToDecimal(taxTotalAmount), TaxTypes.VAT, IIf(isReverseCharge, TaxCategoryCodes.AE, TaxCategoryCodes.S)) + End If + + Dim tmpPathZugpferd = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("ZUGFeRD_Invoice_" & RechnungsNr, ".xml", True, False) + Dim stream As FileStream = New FileStream(tmpPathZugpferd, FileMode.Create, FileAccess.Write) + desc.Save(stream, ZUGFeRDVersion.Version20, Profile.Comfort) + + stream.Flush() + stream.Close() + Return tmpPathZugpferd + + End If + @@ -3605,7 +3602,10 @@ Public Class cFakturierung Dim ROW As DataRow = dt.Rows(0) Dim rpt As New rptSammelRechnungDruck(ROW("RechnungSprache")) - Dim FIRMA As New VERAG_PROG_ALLGEMEIN.cFirmen(ROW("Firma_ID")) + Dim firmaID = ROW("Firma_ID") + firmaID.ToString.Replace("15", "19") + + Dim FIRMA As New VERAG_PROG_ALLGEMEIN.cFirmen(firmaID) Dim KD_RG As New VERAG_PROG_ALLGEMEIN.cAdressen(ROW("RechnungsKundenNr")) If FIRMA Is Nothing Then MsgBox("Keine Firma gewählt!") : Return False @@ -3908,16 +3908,17 @@ Public Class cFakturierung If enableZugpferd Then tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.addAttachementToPDF(tmpPath, createZUGFeRD(False, Nothing, dt, rpt)) Else - Dim Zugferdpath = createZUGFeRD(False, Nothing, dt, rpt) - Dim fileInfo_ZP As New FileInfo(Zugferdpath) - Dim ZUGF_DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "ZUGFERD", Now().Year & "_SR", "", "", fileInfo_ZP.Name, -1, False) - ZUGF_DS.uploadDataToDATENSERVER(Zugferdpath, fileInfo_ZP.Name, fileInfo_ZP.Extension,,,, True) + If Zugferdpath IsNot Nothing AndAlso Zugferdpath <> "" Then + Dim fileInfo_ZP As New FileInfo(Zugferdpath) + Dim ZUGF_DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "ZUGFERD", Now().Year & "_SR", "", "", fileInfo_ZP.Name, -1, False) + ZUGF_DS.uploadDataToDATENSERVER(Zugferdpath, fileInfo_ZP.Name, fileInfo_ZP.Extension,,,, True) + End If End If - Select Case If(Rechnugnsdruck > 0, Rechnugnsdruck, If(AD.Rechnungsdruck, 0))'If(AD.Rechnungsdruck, 0) + Select Case If(Rechnugnsdruck > 0, Rechnugnsdruck, If(AD.Rechnungsdruck, 0))'If(AD.Rechnungsdruck, 0) Case 0, 1 'DRUCKEN Path = tmpPath 'wird für Therefore benötigt Return cProgramFunctions.printRpt(rpt, PrinterName, False) @@ -4025,7 +4026,7 @@ Public Class cFakturierung tblFirma.Firma_BIC2, tblFirma.Firma_Ort, tblFirma.Firma_Straße, tblFirma.Firma_Telefon, tblFirma.Firma_Telefax, tblFirma.[Firma_E-Mail], tblFirma.Firma_Webadresse, MIN(Rechnungsausgang.KdAuftragsNr) as KdAuftragsNr, MIN(Rechnungsausgang.RechnungsLandKz) AS RechnungsLandKz, MIN(Rechnungsausgang.RechnungSprache) AS RechnungSprache - FROM ((Adressen INNER JOIN ((Rechnungsausgang INNER JOIN Filialen ON Rechnungsausgang.FilialenNr = Filialen.FilialenNr) INNER JOIN Steuertabelle ON Rechnungsausgang.Steuerschlüssel = Steuertabelle.Steuerschlüssel) ON Adressen.AdressenNr = Rechnungsausgang.RechnungsKundenNr) INNER JOIN tblFirma ON Rechnungsausgang.Firma_ID = tblFirma.Firma_ID) INNER JOIN RechnungsausgangPositionen ON Rechnungsausgang.RK_ID = RechnungsausgangPositionen.RK_ID + FROM ((Adressen INNER JOIN ((Rechnungsausgang INNER JOIN Filialen ON Rechnungsausgang.FilialenNr = Filialen.FilialenNr) INNER JOIN Steuertabelle ON Rechnungsausgang.Steuerschlüssel = Steuertabelle.Steuerschlüssel) ON Adressen.AdressenNr = Rechnungsausgang.RechnungsKundenNr) INNER JOIN tblFirma ON REPLACE(Rechnungsausgang.Firma_ID,15,19)= tblFirma.Firma_ID) INNER JOIN RechnungsausgangPositionen ON Rechnungsausgang.RK_ID = RechnungsausgangPositionen.RK_ID where 1=1 " diff --git a/SDL/Fakturierung/frmAbrechnungsMaske.vb b/SDL/Fakturierung/frmAbrechnungsMaske.vb index ae80d666..3997ed91 100644 --- a/SDL/Fakturierung/frmAbrechnungsMaske.vb +++ b/SDL/Fakturierung/frmAbrechnungsMaske.vb @@ -49,9 +49,9 @@ Public Class frmAbrechnungsMaske FirmaTmp = "VERAGIMEX" End If - If Not IsDBNull(VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_firmaFMZoll) AndAlso CInt(VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_firmaFMZoll) = 19 Then - FirmaTmp = "VERAG360" - End If + 'If Not IsDBNull(VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_firmaFMZoll) AndAlso CInt(VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_firmaFMZoll) = 19 Then + ' FirmaTmp = "VERAG360" + 'End If @@ -97,10 +97,10 @@ Public Class frmAbrechnungsMaske cboFirma.changeItem("24") MyComboBox2.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where mit_firma='AMBAR' and mit_gekuendigt=0 AND (mit_abteilung IN ('VRR','BH') OR (SELECT COUNT(*) FROM [tblBerechtigungsObjekteZuordnung] where [beroz_beroId]=90 AND [beroz_bergrId]=[mit_id] AND beroz_art='B')>0) order by mit_username", False, "ADMIN", True) - Case "VERAG360" - cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez] FROM [tblFirma] WHERE Firma_ID=19", False, "FMZOLL") - cboFirma.changeItem("19") - MyComboBox2.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where isnull(mit_firmaFMZoll,0)=19 and mit_gekuendigt=0 AND (mit_abteilung IN ('VRR','BH') OR (SELECT COUNT(*) FROM [tblBerechtigungsObjekteZuordnung] where [beroz_beroId]=90 AND [beroz_bergrId]=[mit_id] AND beroz_art='B')>0) order by mit_username", False, "ADMIN", True) + 'Case "VERAG360" + ' cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez] FROM [tblFirma] WHERE Firma_ID=19", False, "FMZOLL") + ' cboFirma.changeItem("19") + ' MyComboBox2.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where isnull(mit_firmaFMZoll,0)=19 and mit_gekuendigt=0 AND (mit_abteilung IN ('VRR','BH') OR (SELECT COUNT(*) FROM [tblBerechtigungsObjekteZuordnung] where [beroz_beroId]=90 AND [beroz_bergrId]=[mit_id] AND beroz_art='B')>0) order by mit_username", False, "ADMIN", True) Case "VERAGIMEX" Dim whereFirma = " AND FIRMENGRUPPE IN ('VERAG','IMEX','ATILLA','VERAGUNISPED','FRONTOFFICE') " diff --git a/SDL/Fakturierung/frmFaktSammelRgDrucken.vb b/SDL/Fakturierung/frmFaktSammelRgDrucken.vb index 1aeb31ff..bf69b784 100644 --- a/SDL/Fakturierung/frmFaktSammelRgDrucken.vb +++ b/SDL/Fakturierung/frmFaktSammelRgDrucken.vb @@ -25,7 +25,7 @@ Public Class frmFaktSammelRgDrucken Me.Firma = Firma End Sub - Private Sub RadioButton_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton.CheckedChanged, RadioButton1.CheckedChanged, RadioButton2.CheckedChanged, RadioButton3.CheckedChanged, RadioButton4.CheckedChanged, RadioButton6.CheckedChanged + Private Sub RadioButton_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton.CheckedChanged, RadioButton1.CheckedChanged, RadioButton2.CheckedChanged, RadioButton3.CheckedChanged, RadioButton4.CheckedChanged, RadioButton6.CheckedChanged, RadioButton5.CheckedChanged lblSB.Visible = False : cboSB.Visible = False cboSB.changeItem("") If DirectCast(sender, RadioButton).Checked Then Sammelrechung = sender.tag @@ -47,7 +47,9 @@ Public Class frmFaktSammelRgDrucken txtZeitraumBis.Text = CDate(Now.ToString("01.MM.yyyy")).AddDays(-1) End If Case 5 : txtZeitraumBis.Text = Now.AddDays((Now.DayOfWeek) * -1).ToShortDateString - 'Case 6 : txtZeitraumBis.Text = Now.AddDays(-1).ToShortDateString + + Case 6 : txtZeitraumBis.Text = Now.AddDays(-1).ToShortDateString + Case 7 : txtZeitraumBis.Text = Now.ToShortDateString : lblSB.Visible = True : cboSB.Visible = True : cboSB.changeItem(VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME) End Select initDGV() @@ -62,7 +64,7 @@ Public Class frmFaktSammelRgDrucken Dim sqlStr = " SELECT Rechnungsausgang.RechnungsKundenNr, max(Rechnungsausgang.[RechnungsName 1]) as [RechnungsName 1]," & If(Sammelrechung = 7, "AvisoId", "0") & " as AvisoId,max(Rechnungsausgang.[RechnungsLandKz]) as [RechnungsLandKz] , count(*) as Anzahl, SUM(Rechnungsausgang.SteuerfreierGesamtbetrag + Rechnungsausgang.SteuerpflichtigerGesamtbetrag) AS Summe" & If(Sammelrechung = 7, ",max([LKW Kennzeichen]) as LKW", "") & " ,(SELECT CASE WHEN Rechnungsdruck =0 THEN 'POST' WHEN Rechnungsdruck=1 THEN 'FAX' WHEN Rechnungsdruck=2 THEN 'E-MAIL' ELSE '-' END FROM Adressen WHERE AdressenNr=Rechnungsausgang.RechnungsKundenNr ) as Rechnungsdruck FROM Rechnungsausgang - WHERE Rechnungsausgang.Status IN (0,2) And Rechnungsausgang.Firma_ID = '" & cboFirma._value & "' And Rechnungsausgang.Sammelrechnung = '" & Sammelrechung & "' And CONVERT(DATE,Rechnungsausgang.Abfertigungsdatum,104) <= '" & txtZeitraumBis._value & "' + WHERE Rechnungsausgang.Status IN (0,2) And Rechnungsausgang.Firma_ID = '" & IIf(Sammelrechung = 6, "15", cboFirma._value) & "' And Rechnungsausgang.Sammelrechnung = '" & Sammelrechung & "' And CONVERT(DATE,Rechnungsausgang.Abfertigungsdatum,104) <= '" & txtZeitraumBis._value & "' " & If(Sammelrechung = 7 And cboSB._value <> "", " AND Rechnungsausgang.Sachbearbeiter='" & cboSB._value & "' ", "") & " " & whereAbfArt & " AND Rechnungsausgang.FakturierungsGruppe='" & cboFaktGrp._value & "' @@ -106,11 +108,16 @@ Public Class frmFaktSammelRgDrucken If Not IsDBNull(VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_firmaFMZoll) AndAlso CInt(VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_firmaFMZoll) = 19 Then FirmaTmp = "VERAG360" + RadioButton5.Enabled = True + cboAbfertigungsart.changeItem("10") + Else + RadioButton5.Enabled = False End If Label5.Visible = True cboFaktGrp.Visible = True + Select Case FirmaTmp Case "VERAG" cboFirma.fillWithSQL("Select [Firma_ID], [Firma_Bez] FROM [tblFirma] WHERE Firma_ID<>20", False, "FMZOLL") @@ -278,7 +285,7 @@ Public Class frmFaktSammelRgDrucken Dim listPDFs As New List(Of String) Dim SonstAnlagen As New List(Of String) Dim RechnungsNrisSet As Boolean = False - RechnungsNrisSet = cFakturierung.doSAMMELRechnungsDruck(cboFirma._value, Sammelrechung, CDate(txtZeitraumBis.Text), CDate(txtRechnungsdatum.Text), cboPrinter.Text, cbxEinzelAnlagen.Checked, cbxSammelbericht.Checked, getSelectionKdNr, If(ausgabeArt = 1, -1, 4), listPDFs, cboSB._value,,, getAvisoIds, cbxEVOLOG.Checked, SonstAnlagen, vorschau, cbxTransFerry.Checked, cboFaktGrp._value, cboAbfertigungsart._value) + RechnungsNrisSet = cFakturierung.doSAMMELRechnungsDruck(IIf(Sammelrechung = 6, 15, cboFirma._value), Sammelrechung, CDate(txtZeitraumBis.Text), CDate(txtRechnungsdatum.Text), cboPrinter.Text, cbxEinzelAnlagen.Checked, cbxSammelbericht.Checked, getSelectionKdNr, If(ausgabeArt = 1, -1, 4), listPDFs, cboSB._value,,, getAvisoIds, cbxEVOLOG.Checked, SonstAnlagen, vorschau, cbxTransFerry.Checked, cboFaktGrp._value, cboAbfertigungsart._value) '-------------- für PDF-Sammel-Rechnung -------------- diff --git a/SDL/Fakturierung/usrCntlFaktAbrechnung.vb b/SDL/Fakturierung/usrCntlFaktAbrechnung.vb index 10b1f7c4..289ebdc9 100644 --- a/SDL/Fakturierung/usrCntlFaktAbrechnung.vb +++ b/SDL/Fakturierung/usrCntlFaktAbrechnung.vb @@ -590,7 +590,7 @@ Public Class usrCntlFaktAbrechnung whereFirma = " AND FIRMENGRUPPE IN ('VERAG','IMEX','ATILLA','VERAGUNISPED','FRONTOFFICE','VERAGAG_DE') " End If pnlDocs.Visible = True - Case "VERA360" + Case "VERAG360" If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("FAKTURIERUNG_VERAGAG_DE", "SDL") Then whereFirma = " AND FIRMENGRUPPE IN ('VERAG360','VERAGAG_DE') " : pnlDocs.Visible = True Else @@ -598,15 +598,10 @@ Public Class usrCntlFaktAbrechnung End If End Select - Select Case FirmaTmp - Case "VERAG360" - cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez] FROM [tblFirma] WHERE Firma_ID=19", False, "FMZOLL") - cboFirma.changeItem("19") - Case Else - cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez] FROM [tblFirma] WHERE Firma_ID NOT IN(3) " & whereFirma & " ORDER BY Firma_ID ", True, "FMZOLL", firstEmpty) + cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez] FROM [tblFirma] WHERE Firma_ID NOT IN(3) " & whereFirma & " ORDER BY Firma_ID ", True, "FMZOLL", firstEmpty) cboFirma.SelectedIndex = 0 - End Select + If VERAG_PROG_ALLGEMEIN.cAllgemein.STAMMFILIALE <> "" And Not VERAG_PROG_ALLGEMEIN.cAllgemein.isCLUSTER And FirmaTmp <> "VERAGIMEX" Then If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" Then