SDL, FaktAbrechnung, Kundenblatt, etc.

This commit is contained in:
2026-02-13 09:53:34 +01:00
parent e4c594ec29
commit e5be7f0016
5 changed files with 114 additions and 92 deletions

View File

@@ -1,8 +1,5 @@

Imports System.Data.SqlClient
Imports System.Reflection
Public Class cSDLLeistung

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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