From e5be7f0016ebb53bf9a74155ac385d1bad9bebe5 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Fri, 13 Feb 2026 09:53:34 +0100 Subject: [PATCH] SDL, FaktAbrechnung, Kundenblatt, etc. --- SDL/Classes/cSDL.vb | 3 - SDL/Fakturierung/usrCntlFaktAbrechnung.vb | 178 ++++++++++-------- SDL/USTV/ustCntlUSTV_AntragPosition.vb | 4 + SDL/kunden/frmKundenblatt.vb | 2 +- .../Classes/cMDMFunctionsAllgemein.vb | 19 +- 5 files changed, 114 insertions(+), 92 deletions(-) diff --git a/SDL/Classes/cSDL.vb b/SDL/Classes/cSDL.vb index 5ab9bb6c..16899af8 100644 --- a/SDL/Classes/cSDL.vb +++ b/SDL/Classes/cSDL.vb @@ -1,8 +1,5 @@  Imports System.Data.SqlClient -Imports System.Reflection - - Public Class cSDLLeistung diff --git a/SDL/Fakturierung/usrCntlFaktAbrechnung.vb b/SDL/Fakturierung/usrCntlFaktAbrechnung.vb index 09464dcf..26f8aed2 100644 --- a/SDL/Fakturierung/usrCntlFaktAbrechnung.vb +++ b/SDL/Fakturierung/usrCntlFaktAbrechnung.vb @@ -1,4 +1,5 @@ -Imports System.Web.UI.WebControls.Expressions +Imports System.IO +Imports System.Web.UI.WebControls.Expressions Imports VERAG_PROG_ALLGEMEIN Public Class usrCntlFaktAbrechnung @@ -1906,130 +1907,147 @@ Public Class usrCntlFaktAbrechnung Dim Antrag_LandKz = "" If USTV.UStVAn_ID > 0 Then Antrag_LandKz = SQL.DLookup("LandKz", "[Länderverzeichnis für die Außenhandelsstatistik]", "Landnr='" & USTV.UStVAn_LandNr & "'", "FMZOLL") + + 'soll immer alle POS bekommen! laut Lidya! 28.04.2025 - aber nicht im Excel-Format sondern als PDF-Batinic 15.05.2025 Dim dtPOSList As New DataTable - Dim prt As String = func.generatePosList(USTV, "", "", "", False, "prt", dtPOSList, isVZ, IIf(RECHNUNG IsNot Nothing, RECHNUNG.RK_ID, -1)) - If prt <> "" Then + Dim prt As String = func.generatePosList(USTV, "", "", "", False, "prt", dtPOSList, isVZ, IIf(RECHNUNG IsNot Nothing, RECHNUNG.RK_ID, -1)) + If prt <> "" Then - Try + Try - Dim rpt As New rptMWSTListe + Dim rpt As New rptMWSTListe - rpt.DataSource = dtPOSList + rpt.DataSource = dtPOSList - rpt.GroupHeader1.DataField = "Firma_ID" 'Gruppierung + rpt.GroupHeader1.DataField = "Firma_ID" 'Gruppierung - If rpt.DataSource.rows.count > 0 Then + If rpt.DataSource.rows.count > 0 Then - Dim AD As New cAdressen(USTV.UStVAn_KuNr) - Dim sum As Double = 0 + Dim AD As New cAdressen(USTV.UStVAn_KuNr) + Dim sum As Double = 0 - rpt.lblVatNo.Text = USTV.UStVAn_Steuernummer - rpt.lblCompanyname.Text = AD.Name_1 & " " & AD.Name_2 - rpt.lblDat.Text = Now.ToShortDateString + rpt.lblVatNo.Text = USTV.UStVAn_Steuernummer + rpt.lblCompanyname.Text = AD.Name_1 & " " & AD.Name_2 + rpt.lblDat.Text = Now.ToShortDateString - AddHandler rpt.Detail.Format, Sub() + AddHandler rpt.Detail.Format, Sub() - rpt.lblNumber.Text = rpt.Fields.Item("Number").Value() - rpt.lblGoods.Text = rpt.Fields.Item("Name of service").Value() - rpt.lblName.Text = rpt.Fields.Item("Name of supplier").Value() - rpt.lblTax.Text = CDbl(rpt.Fields.Item("Amount of tax refund").Value()).ToString("N2") - rpt.lblDate.Text = CDate((rpt.Fields.Item("Date of Invoice").Value())).ToShortDateString - rpt.lblInvoiceNo.Text = rpt.Fields.Item("Number of invoice").Value() + rpt.lblNumber.Text = rpt.Fields.Item("Number").Value() + rpt.lblGoods.Text = rpt.Fields.Item("Name of service").Value() + rpt.lblName.Text = rpt.Fields.Item("Name of supplier").Value() + rpt.lblTax.Text = CDbl(rpt.Fields.Item("Amount of tax refund").Value()).ToString("N2") + rpt.lblDate.Text = CDate((rpt.Fields.Item("Date of Invoice").Value())).ToShortDateString + rpt.lblInvoiceNo.Text = rpt.Fields.Item("Number of invoice").Value() - sum += CDbl(rpt.Fields.Item("Amount of tax refund").Value()).ToString("N2") - End Sub + sum += CDbl(rpt.Fields.Item("Amount of tax refund").Value()).ToString("N2") + End Sub - AddHandler rpt.GroupFooter1.Format, Sub() - rpt.lblSumme.Text = sum.ToString("N2") - rpt.lblWahrung.Text = USTV.UStVAn_Währungscode + AddHandler rpt.GroupFooter1.Format, Sub() + rpt.lblSumme.Text = sum.ToString("N2") + rpt.lblWahrung.Text = USTV.UStVAn_Währungscode - End Sub + End Sub - Dim tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(SPEDBUCH.AbfertigungsNr, ".pdf", , False) - Dim p As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport - rpt.Run(False) - p.NeverEmbedFonts = "" - p.Export(rpt.Document, tmpPath) - rpt.Dispose() + Dim tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(SPEDBUCH.AbfertigungsNr, ".pdf", , False) + Dim p As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport + rpt.Run(False) + p.NeverEmbedFonts = "" + p.Export(rpt.Document, tmpPath) + rpt.Dispose() Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "MDM", "POS_LISTE", "", "", SPEDBUCH.AbfertigungsNr & ".pdf", USTV.UStVAn_KuNr, False) - DS.uploadDataToDATENSERVER(tmpPath,,, False,,, True) + 'If Not DS.hasITEMS Then 'immer neu generieren, falls der Antrag geändert wurde, muss der die neue POS-Liste geladen werden!!!! + DS.uploadDataToDATENSERVER(tmpPath,,, False,, True, True) + 'End If + If .Rows.Count > 0 Then - For Each r As DataGridViewRow In .Rows - If .Columns.Contains("clmnBezeichnung") AndAlso r.Cells("clmnBezeichnung").Value = DS.da_name AndAlso RECHNUNG.DruckDatumZeit Is Nothing Then - .Rows.Remove(r) - For Each ATT As cRechnungsausgangAnhaenge In RECHNUNG.ANHAENGE - If ATT.Bezeichnung = DS.da_name AndAlso RECHNUNG.DruckDatumZeit Is Nothing Then - Dim ANH_DEL As New VERAG_PROG_ALLGEMEIN.cRechnungsausgangAnhaenge() - ANH_DEL.DELETE(ATT.RK_ID, ATT.dsId) - End If - Next + For Each r As DataGridViewRow In .Rows + If .Columns.Contains("clmnBezeichnung") AndAlso r.Cells("clmnBezeichnung").Value = DS.da_name AndAlso RECHNUNG.DruckDatumZeit Is Nothing Then + .Rows.Remove(r) + For Each ATT As cRechnungsausgangAnhaenge In RECHNUNG.ANHAENGE + If ATT.Bezeichnung = DS.da_name AndAlso RECHNUNG.DruckDatumZeit Is Nothing Then + Dim ANH_DEL As New VERAG_PROG_ALLGEMEIN.cRechnungsausgangAnhaenge() + ANH_DEL.DELETE(ATT.RK_ID, ATT.dsId) + End If + Next + End If + + Next + + End If + If RECHNUNG.ANHAENGE.Count > 0 Then + If RECHNUNG.DruckDatumZeit IsNot Nothing AndAlso Not RECHNUNG.ANHAENGE.Exists(Function(c) c.Bezeichnung = DS.da_name) Or RECHNUNG.DruckDatumZeit Is Nothing Then + .Rows.Add(-1, "POS-LIST", DS.da_name, DS.da_id, -1) End If - - Next - - End If - If RECHNUNG.ANHAENGE.Count > 0 Then - If RECHNUNG.DruckDatumZeit IsNot Nothing AndAlso Not RECHNUNG.ANHAENGE.Exists(Function(c) c.Bezeichnung = DS.da_name) Or RECHNUNG.DruckDatumZeit Is Nothing Then + Else .Rows.Add(-1, "POS-LIST", DS.da_name, DS.da_id, -1) End If - Else - .Rows.Add(-1, "POS-LIST", DS.da_name, DS.da_id, -1) End If - End If - Catch ex As Exception - MsgBox(ex.Message & ex.StackTrace) - End Try - End If + Catch ex As Exception + MsgBox(ex.Message & ex.StackTrace) + End Try - If dt IsNot Nothing Then - For Each r In dt.Rows + End If - 'WARUM NOCHMAL not null??? -> weil laut lydia erst ab 2025 (und ab diesem Datum wird die daid in der USTVA_POS befüllt) die Dokumente digital mitgeschickt werden, vorher noch alles per POST!!!!!!!!!!!!!!!!!! - If Not IsDBNull(r("UStVPo_daId")) Then + If dt IsNot Nothing Then + For Each r In dt.Rows - If RECHNUNG.ANHAENGE IsNot Nothing AndAlso Not RECHNUNG.ANHAENGE.Exists(Function(c) c.dsId = r("UStVPo_daId")) Then 'wenn der Anhang schon existiert! + 'WARUM NOCHMAL not null??? -> weil laut lydia erst ab 2025 (und ab diesem Datum wird die daid in der USTVA_POS befüllt) die Dokumente digital mitgeschickt werden, vorher noch alles per POST!!!!!!!!!!!!!!!!!! + If Not IsDBNull(r("UStVPo_daId")) Then - Dim DAID As String = "" - DAID = func.getPDF(r("UStVPo_SchnittstellenNr"), r("UStVPo_ReNr"), r("UStVPo_ReDat"), r("UStVPo_daId"), False, True, Antrag_LandKz, USTV, New cFakturierung, True) + If RECHNUNG.ANHAENGE IsNot Nothing AndAlso Not RECHNUNG.ANHAENGE.Exists(Function(c) c.dsId = r("UStVPo_daId")) Then 'wenn der Anhang schon existiert! - Dim nameLief As String = "" + Dim DAID As String = "" + DAID = func.getPDF(r("UStVPo_SchnittstellenNr"), r("UStVPo_ReNr"), r("UStVPo_ReDat"), r("UStVPo_daId"), False, True, Antrag_LandKz, USTV, New cFakturierung, True) - Select Case r("UStVPo_SchnittstellenNr") - Case 1 : nameLief = "VERAG-" 'Verag360 - Case 2, 8, 12 : nameLief = "IDS-" - Case 3 : nameLief = "IT-" - Case 4, 9 : nameLief = "MSE-" - Case 5, 10 : nameLief = "UTA-" - Case 6, 11 : nameLief = "PLOSE-" - Case 7 : nameLief = "RMC-" - End Select + Dim nameLief As String = "" + + Select Case r("UStVPo_SchnittstellenNr") + Case 1 : nameLief = "VERAG-" 'Verag360 + Case 2, 8, 12 : nameLief = "IDS-" + Case 3 : nameLief = "IT-" + Case 4, 9 : nameLief = "MSE-" + Case 5, 10 : nameLief = "UTA-" + Case 6, 11 : nameLief = "PLOSE-" + Case 7 : nameLief = "RMC-" + End Select + + nameLief &= "RE" + + If DAID <> "" AndAlso IsNumeric(DAID) AndAlso r("UStVPo_SchnittstellenNr") <> 1 Then + Dim daidno As Integer = CInt(DAID) + Dim ds As New cDATENSERVER(daidno) + .Rows.Add(-1, nameLief, ds.da_name, ds.da_id, -1) + + ElseIf DAID <> "" AndAlso r("UStVPo_SchnittstellenNr") = 1 Then + + Dim DS_Eigenrechnungen As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "MDM", "VERAG-RECHNUNGEN", "", "", USTV.UStVAn_KuNr & "_" & r("UStVPo_ReNr") & ".pdf", USTV.UStVAn_KuNr, False) + + If Not DS_Eigenrechnungen.hasITEMS Then 'falls bereits vorhanden, nicht nochmals erstellen! + DS_Eigenrechnungen.uploadDataToDATENSERVER(DAID, USTV.UStVAn_KuNr & "_" & r("UStVPo_ReNr") & ".pdf",, False,, True, True) + End If + .Rows.Add(-1, nameLief, DS_Eigenrechnungen.da_name, DS_Eigenrechnungen.da_id, -1) - nameLief &= "RE" - If DAID <> "" AndAlso IsNumeric(DAID) Then - Dim daidno As Integer = CInt(DAID) - Dim ds As New cDATENSERVER(daidno) - .Rows.Add(-1, nameLief, ds.da_name, ds.da_id, -1) End If + End If End If - End If - Next + Next + End If End If End If - End If End If diff --git a/SDL/USTV/ustCntlUSTV_AntragPosition.vb b/SDL/USTV/ustCntlUSTV_AntragPosition.vb index f9eb6fe8..ed325d98 100644 --- a/SDL/USTV/ustCntlUSTV_AntragPosition.vb +++ b/SDL/USTV/ustCntlUSTV_AntragPosition.vb @@ -96,6 +96,10 @@ Public Class ustCntlUSTV_AntragPosition Else + '-------------------------------------------------------------------------------------------- + 'Bei SchnittstelleNr 1 wird die interne RK_ID der Rechnung im Feld DA_ID gespeichert, wenn es dann "aus Zufall" eine echte DA_ID mit dieser RK_ID-Nr gibt, wird dieser Name angezeigt (aber geladen wird die korrekte Rechnung)!!!!!!!!!!!!!! + '-------------------------------------------------------------------------------------------- + Select Case If(UStV_POS.UStVPo_SchnittstellenNr, -1) Case 6, 0, 11 : da_id = sql.getValueTxtBySql("SELECT TOP(1) [plInv_daId] FROM [tblPLOSE_Inv_Data] where plInv_SupplierRechnungsDatum='" & UStV_POS.UStVPo_ReDat & "' and plInv_SupplierRechnungsNr='" & UStV_POS.UStVPo_ReNr & "' and plInv_SupplierCountry='" & Antrag_LandKz & "' AND [plInv_daId] is not null", "FMZOLL",,, -1) Case 7 : da_id = sql.getValueTxtBySql("SELECT TOP(1) [rmc_daId] FROM [tblRMCImport] where rmc_reDatum='" & UStV_POS.UStVPo_ReDat & "' and rmc_reNr='" & UStV_POS.UStVPo_ReNr & "' and rmc_landKZ='" & Antrag_LandKz & "' AND [rmc_daId] is not null", "FMZOLL",,, -1) diff --git a/SDL/kunden/frmKundenblatt.vb b/SDL/kunden/frmKundenblatt.vb index d16f38e9..9cf321a3 100644 --- a/SDL/kunden/frmKundenblatt.vb +++ b/SDL/kunden/frmKundenblatt.vb @@ -2819,7 +2819,7 @@ Public Class frmKundenblatt Dim Kunde As New cKundenSDL(row("gb_adressNr"), 200) Kunde.Erfassungsdatum = Now Kunde.Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME - Kunde.SAVE + Kunde.SAVE() End If diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cMDMFunctionsAllgemein.vb b/VERAG_PROG_ALLGEMEIN/Classes/cMDMFunctionsAllgemein.vb index 13fe004f..8f929fdd 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cMDMFunctionsAllgemein.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cMDMFunctionsAllgemein.vb @@ -849,19 +849,22 @@ Public Class cMDMFunctionsAllgemein End If - If dsID < 0 Then - Return "" - ElseIf returnDSID Then - If schnittstellenNr = 8 Then 'Nr enthätl alle IDS-Rechnungen, die nicht mitgeben! - Return -1 - Else - Return dsID - End If + If Not schnittstellenNr = 1 Then + If dsID < 0 Then + Return "" + ElseIf returnDSID Then + If schnittstellenNr = 8 Then 'Nr enthätl alle IDS-Rechnungen, die nicht mitgeben! + Return -1 + Else + Return dsID + End If + End If End If + 'Anschrift Nummerierung: Dim x = 100 Dim y = 10